##// END OF EJS Templates
Merged dev into stable/default/master branch
marcink -
r3960:5293d4bb merge default
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,15 b''
1 [main]
2 host = https://www.transifex.com
3
4 [RhodeCode.pot]
5 source_file = rhodecode/i18n/rhodecode.pot
6 source_lang = en
7
8 trans.pl = rhodecode/i18n/pl/LC_MESSAGES/rhodecode.po
9 trans.ru = rhodecode/i18n/ru/LC_MESSAGES/rhodecode.po
10 trans.fr = rhodecode/i18n/fr/LC_MESSAGES/rhodecode.po
11 trans.ja = rhodecode/i18n/ja/LC_MESSAGES/rhodecode.po
12 trans.pt_BR = rhodecode/i18n/pt_BR/LC_MESSAGES/rhodecode.po
13 trans.zh_CN = rhodecode/i18n/zh_CN/LC_MESSAGES/rhodecode.po
14 trans.zh_TW = rhodecode/i18n/zh_TW/LC_MESSAGES/rhodecode.po
15 type = PO
@@ -0,0 +1,145 b''
1 """
2 Base utils for shell scripts
3 """
4 import os
5 import sys
6 import random
7 import urllib2
8 import pprint
9
10 try:
11 from rhodecode.lib.ext_json import json
12 except ImportError:
13 try:
14 import simplejson as json
15 except ImportError:
16 import json
17
18 CONFIG_NAME = '.rhodecode'
19 FORMAT_PRETTY = 'pretty'
20 FORMAT_JSON = 'json'
21
22
23 def api_call(apikey, apihost, method=None, **kw):
24 """
25 Api_call wrapper for RhodeCode.
26
27 :param apikey:
28 :param apihost:
29 :param format: formatting, pretty means prints and pprint of json
30 json returns unparsed json
31 :param method:
32 :returns: json response from server
33 """
34 def _build_data(random_id):
35 """
36 Builds API data with given random ID
37
38 :param random_id:
39 """
40 return {
41 "id": random_id,
42 "api_key": apikey,
43 "method": method,
44 "args": kw
45 }
46
47 if not method:
48 raise Exception('please specify method name !')
49
50 id_ = random.randrange(1, 9999)
51 req = urllib2.Request('%s/_admin/api' % apihost,
52 data=json.dumps(_build_data(id_)),
53 headers={'content-type': 'text/plain'})
54 ret = urllib2.urlopen(req)
55 raw_json = ret.read()
56 json_data = json.loads(raw_json)
57 id_ret = json_data['id']
58 if id_ret == id_:
59 return json_data
60
61 else:
62 _formatted_json = pprint.pformat(json_data)
63 raise Exception('something went wrong. '
64 'ID mismatch got %s, expected %s | %s' % (
65 id_ret, id_, _formatted_json))
66
67
68 class RcConf(object):
69 """
70 RhodeCode config for API
71
72 conf = RcConf()
73 conf['key']
74
75 """
76
77 def __init__(self, config_location=None, autoload=True, autocreate=False,
78 config=None):
79 HOME = os.getenv('HOME', os.getenv('USERPROFILE')) or ''
80 HOME_CONF = os.path.abspath(os.path.join(HOME, CONFIG_NAME))
81 self._conf_name = HOME_CONF if not config_location else config_location
82 self._conf = {}
83 if autocreate:
84 self.make_config(config)
85 if autoload:
86 self._conf = self.load_config()
87
88 def __getitem__(self, key):
89 return self._conf[key]
90
91 def __nonzero__(self):
92 if self._conf:
93 return True
94 return False
95
96 def __eq__(self):
97 return self._conf.__eq__()
98
99 def __repr__(self):
100 return 'RcConf<%s>' % self._conf.__repr__()
101
102 def make_config(self, config):
103 """
104 Saves given config as a JSON dump in the _conf_name location
105
106 :param config:
107 """
108 update = False
109 if os.path.exists(self._conf_name):
110 update = True
111 with open(self._conf_name, 'wb') as f:
112 json.dump(config, f, indent=4)
113
114 if update:
115 sys.stdout.write('Updated config in %s\n' % self._conf_name)
116 else:
117 sys.stdout.write('Created new config in %s\n' % self._conf_name)
118
119 def update_config(self, new_config):
120 """
121 Reads the JSON config updates it's values with new_config and
122 saves it back as JSON dump
123
124 :param new_config:
125 """
126 config = {}
127 try:
128 with open(self._conf_name, 'rb') as conf:
129 config = json.load(conf)
130 except IOError, e:
131 sys.stderr.write(str(e) + '\n')
132
133 config.update(new_config)
134 self.make_config(config)
135
136 def load_config(self):
137 """
138 Loads config from file and returns loaded JSON object
139 """
140 try:
141 with open(self._conf_name, 'rb') as conf:
142 return json.load(conf)
143 except IOError, e:
144 #sys.stderr.write(str(e) + '\n')
145 pass
@@ -0,0 +1,171 b''
1 # -*- coding: utf-8 -*-
2 """
3 rhodecode.bin.gist
4 ~~~~~~~~~~~~~~~~~~
5
6 Gist CLI client for RhodeCode
7
8 :created_on: May 9, 2013
9 :author: marcink
10 :copyright: (C) 2010-2013 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
12 """
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
17 #
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
26 from __future__ import with_statement
27 import os
28 import sys
29 import stat
30 import argparse
31 import fileinput
32
33 from rhodecode.bin.base import json, api_call, RcConf, FORMAT_JSON, FORMAT_PRETTY
34
35
36 def argparser(argv):
37 usage = (
38 "rhodecode-gist [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
39 "[--config=CONFIG] [--save-config] [GIST OPTIONS] "
40 "[filename or stdin use - for terminal stdin ]\n"
41 "Create config file: rhodecode-gist --apikey=<key> --apihost=http://rhodecode.server --save-config"
42 )
43
44 parser = argparse.ArgumentParser(description='RhodeCode Gist cli',
45 usage=usage)
46
47 ## config
48 group = parser.add_argument_group('config')
49 group.add_argument('--apikey', help='api access key')
50 group.add_argument('--apihost', help='api host')
51 group.add_argument('--config', help='config file path DEFAULT: ~/.rhodecode')
52 group.add_argument('--save-config', action='store_true',
53 help='save the given config into a file')
54
55 group = parser.add_argument_group('GIST')
56 group.add_argument('-p', '--private', action='store_true',
57 help='create private Gist')
58 group.add_argument('-f', '--filename',
59 help='set uploaded gist filename, '
60 'also defines syntax highlighting')
61 group.add_argument('-d', '--description', help='Gist description')
62 group.add_argument('-l', '--lifetime', metavar='MINUTES',
63 help='gist lifetime in minutes, -1 (DEFAULT) is forever')
64 group.add_argument('--format', dest='format', type=str,
65 help='output format DEFAULT: `%s` can '
66 'be also `%s`' % (FORMAT_PRETTY, FORMAT_JSON),
67 default=FORMAT_PRETTY
68 )
69 args, other = parser.parse_known_args()
70 return parser, args, other
71
72
73 def _run(argv):
74 conf = None
75 parser, args, other = argparser(argv)
76
77 api_credentials_given = (args.apikey and args.apihost)
78 if args.save_config:
79 if not api_credentials_given:
80 raise parser.error('--save-config requires --apikey and --apihost')
81 conf = RcConf(config_location=args.config,
82 autocreate=True, config={'apikey': args.apikey,
83 'apihost': args.apihost})
84 sys.exit()
85
86 if not conf:
87 conf = RcConf(config_location=args.config, autoload=True)
88 if not conf:
89 if not api_credentials_given:
90 parser.error('Could not find config file and missing '
91 '--apikey or --apihost in params')
92
93 apikey = args.apikey or conf['apikey']
94 host = args.apihost or conf['apihost']
95 DEFAULT_FILENAME = 'gistfile1.txt'
96 if other:
97 # skip multifiles for now
98 filename = other[0]
99 if filename == '-':
100 filename = DEFAULT_FILENAME
101 gist_content = ''
102 for line in fileinput.input('-'):
103 gist_content += line
104 else:
105 with open(filename, 'rb') as f:
106 gist_content = f.read()
107
108 else:
109 filename = DEFAULT_FILENAME
110 gist_content = None
111 # little bit hacky but cross platform check where the
112 # stdin comes from we skip the terminal case it can be handled by '-'
113 mode = os.fstat(0).st_mode
114 if stat.S_ISFIFO(mode):
115 # "stdin is piped"
116 gist_content = sys.stdin.read()
117 elif stat.S_ISREG(mode):
118 # "stdin is redirected"
119 gist_content = sys.stdin.read()
120 else:
121 # "stdin is terminal"
122 pass
123
124 # make sure we don't upload binary stuff
125 if gist_content and '\0' in gist_content:
126 raise Exception('Error: binary files upload is not possible')
127
128 filename = os.path.basename(args.filename or filename)
129 if gist_content:
130 files = {
131 filename: {
132 'content': gist_content,
133 'lexer': None
134 }
135 }
136
137 margs = dict(
138 lifetime=args.lifetime,
139 description=args.description,
140 gist_type='private' if args.private else 'public',
141 files=files
142 )
143
144 json_data = api_call(apikey, host, 'create_gist', **margs)['result']
145 if args.format == FORMAT_JSON:
146 print json.dumps(json_data)
147 elif args.format == FORMAT_PRETTY:
148 print json_data
149 print 'Created %s gist %s' % (json_data['gist']['type'],
150 json_data['gist']['url'])
151 return 0
152
153
154 def main(argv=None):
155 """
156 Main execution function for cli
157
158 :param argv:
159 """
160 if argv is None:
161 argv = sys.argv
162
163 try:
164 return _run(argv)
165 except Exception, e:
166 print e
167 return 1
168
169
170 if __name__ == '__main__':
171 sys.exit(main(sys.argv))
@@ -0,0 +1,198 b''
1 # -*- coding: utf-8 -*-
2 """
3 rhodecode.controllers.admin.gist
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
6 gist controller for RhodeCode
7
8 :created_on: May 9, 2013
9 :author: marcink
10 :copyright: (C) 2010-2013 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
12 """
13 # This program is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
17 #
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 import time
26 import logging
27 import traceback
28 import formencode
29 from formencode import htmlfill
30
31 from pylons import request, response, tmpl_context as c, url
32 from pylons.controllers.util import abort, redirect
33 from pylons.i18n.translation import _
34
35 from rhodecode.model.forms import GistForm
36 from rhodecode.model.gist import GistModel
37 from rhodecode.model.meta import Session
38 from rhodecode.model.db import Gist
39 from rhodecode.lib import helpers as h
40 from rhodecode.lib.base import BaseController, render
41 from rhodecode.lib.auth import LoginRequired, NotAnonymous
42 from rhodecode.lib.utils2 import safe_str, safe_int, time_to_datetime
43 from rhodecode.lib.helpers import Page
44 from webob.exc import HTTPNotFound, HTTPForbidden
45 from sqlalchemy.sql.expression import or_
46 from rhodecode.lib.vcs.exceptions import VCSError
47
48 log = logging.getLogger(__name__)
49
50
51 class GistsController(BaseController):
52 """REST Controller styled on the Atom Publishing Protocol"""
53
54 def __load_defaults(self):
55 c.lifetime_values = [
56 (str(-1), _('forever')),
57 (str(5), _('5 minutes')),
58 (str(60), _('1 hour')),
59 (str(60 * 24), _('1 day')),
60 (str(60 * 24 * 30), _('1 month')),
61 ]
62 c.lifetime_options = [(c.lifetime_values, _("Lifetime"))]
63
64 @LoginRequired()
65 def index(self, format='html'):
66 """GET /admin/gists: All items in the collection"""
67 # url('gists')
68 c.show_private = request.GET.get('private') and c.rhodecode_user.username != 'default'
69 c.show_public = request.GET.get('public') and c.rhodecode_user.username != 'default'
70
71 gists = Gist().query()\
72 .filter(or_(Gist.gist_expires == -1, Gist.gist_expires >= time.time()))\
73 .order_by(Gist.created_on.desc())
74 if c.show_private:
75 c.gists = gists.filter(Gist.gist_type == Gist.GIST_PRIVATE)\
76 .filter(Gist.gist_owner == c.rhodecode_user.user_id)
77 elif c.show_public:
78 c.gists = gists.filter(Gist.gist_type == Gist.GIST_PUBLIC)\
79 .filter(Gist.gist_owner == c.rhodecode_user.user_id)
80
81 else:
82 c.gists = gists.filter(Gist.gist_type == Gist.GIST_PUBLIC)
83 p = safe_int(request.GET.get('page', 1), 1)
84 c.gists_pager = Page(c.gists, page=p, items_per_page=10)
85 return render('admin/gists/index.html')
86
87 @LoginRequired()
88 @NotAnonymous()
89 def create(self):
90 """POST /admin/gists: Create a new item"""
91 # url('gists')
92 self.__load_defaults()
93 gist_form = GistForm([x[0] for x in c.lifetime_values])()
94 try:
95 form_result = gist_form.to_python(dict(request.POST))
96 #TODO: multiple files support, from the form
97 nodes = {
98 form_result['filename'] or 'gistfile1.txt': {
99 'content': form_result['content'],
100 'lexer': None # autodetect
101 }
102 }
103 _public = form_result['public']
104 gist_type = Gist.GIST_PUBLIC if _public else Gist.GIST_PRIVATE
105 gist = GistModel().create(
106 description=form_result['description'],
107 owner=c.rhodecode_user,
108 gist_mapping=nodes,
109 gist_type=gist_type,
110 lifetime=form_result['lifetime']
111 )
112 Session().commit()
113 new_gist_id = gist.gist_access_id
114 except formencode.Invalid, errors:
115 defaults = errors.value
116
117 return formencode.htmlfill.render(
118 render('admin/gists/new.html'),
119 defaults=defaults,
120 errors=errors.error_dict or {},
121 prefix_error=False,
122 encoding="UTF-8"
123 )
124
125 except Exception, e:
126 log.error(traceback.format_exc())
127 h.flash(_('Error occurred during gist creation'), category='error')
128 return redirect(url('new_gist'))
129 return redirect(url('gist', gist_id=new_gist_id))
130
131 @LoginRequired()
132 @NotAnonymous()
133 def new(self, format='html'):
134 """GET /admin/gists/new: Form to create a new item"""
135 # url('new_gist')
136 self.__load_defaults()
137 return render('admin/gists/new.html')
138
139 @LoginRequired()
140 @NotAnonymous()
141 def update(self, gist_id):
142 """PUT /admin/gists/gist_id: Update an existing item"""
143 # Forms posted to this method should contain a hidden field:
144 # <input type="hidden" name="_method" value="PUT" />
145 # Or using helpers:
146 # h.form(url('gist', gist_id=ID),
147 # method='put')
148 # url('gist', gist_id=ID)
149
150 @LoginRequired()
151 @NotAnonymous()
152 def delete(self, gist_id):
153 """DELETE /admin/gists/gist_id: Delete an existing item"""
154 # Forms posted to this method should contain a hidden field:
155 # <input type="hidden" name="_method" value="DELETE" />
156 # Or using helpers:
157 # h.form(url('gist', gist_id=ID),
158 # method='delete')
159 # url('gist', gist_id=ID)
160 gist = GistModel().get_gist(gist_id)
161 owner = gist.gist_owner == c.rhodecode_user.user_id
162 if h.HasPermissionAny('hg.admin')() or owner:
163 GistModel().delete(gist)
164 Session().commit()
165 h.flash(_('Deleted gist %s') % gist.gist_access_id, category='success')
166 else:
167 raise HTTPForbidden()
168
169 return redirect(url('gists'))
170
171 @LoginRequired()
172 def show(self, gist_id, format='html', revision='tip', f_path=None):
173 """GET /admin/gists/gist_id: Show a specific item"""
174 # url('gist', gist_id=ID)
175 c.gist = Gist.get_or_404(gist_id)
176
177 #check if this gist is not expired
178 if c.gist.gist_expires != -1:
179 if time.time() > c.gist.gist_expires:
180 log.error('Gist expired at %s' %
181 (time_to_datetime(c.gist.gist_expires)))
182 raise HTTPNotFound()
183 try:
184 c.file_changeset, c.files = GistModel().get_gist_files(gist_id)
185 except VCSError:
186 log.error(traceback.format_exc())
187 raise HTTPNotFound()
188 if format == 'raw':
189 content = '\n\n'.join([f.content for f in c.files if (f_path is None or f.path == f_path)])
190 response.content_type = 'text/plain'
191 return content
192 return render('admin/gists/show.html')
193
194 @LoginRequired()
195 @NotAnonymous()
196 def edit(self, gist_id, format='html'):
197 """GET /admin/gists/gist_id/edit: Form to edit an existing item"""
198 # url('edit_gist', gist_id=ID)
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644, binary diff hidden
NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
@@ -12,6 +12,7 b' syntax: regexp'
12 ^docs/build/
12 ^docs/build/
13 ^docs/_build/
13 ^docs/_build/
14 ^data$
14 ^data$
15 ^sql_dumps/
15 ^\.settings$
16 ^\.settings$
16 ^\.project$
17 ^\.project$
17 ^\.pydevproject$
18 ^\.pydevproject$
@@ -22,3 +23,4 b' syntax: regexp'
22 ^rc.*\.ini$
23 ^rc.*\.ini$
23 ^fabfile.py
24 ^fabfile.py
24 ^\.rhodecode$
25 ^\.rhodecode$
26 ^\.idea$
@@ -34,3 +34,5 b' List of contributors to RhodeCode projec'
34 Mads Kiilerich <madski@unity3d.com>
34 Mads Kiilerich <madski@unity3d.com>
35 Dan Sheridan <djs@adelard.com>
35 Dan Sheridan <djs@adelard.com>
36 Dennis Brakhane <brakhane@googlemail.com>
36 Dennis Brakhane <brakhane@googlemail.com>
37 Simon Lopez <simon.lopez@slopez.org>
38
@@ -74,10 +74,12 b' RhodeCode Features'
74 Proven to work with 1000s of repositories and users
74 Proven to work with 1000s of repositories and users
75 - Supports http/https, LDAP, AD, proxy-pass authentication.
75 - Supports http/https, LDAP, AD, proxy-pass authentication.
76 - Full permissions (private/read/write/admin) together with IP restrictions for each repository,
76 - Full permissions (private/read/write/admin) together with IP restrictions for each repository,
77 additional explicit forking and repository creation permissions.
77 additional explicit forking, repositories group and repository creation permissions.
78 - User groups for easier permission management
78 - User groups for easier permission management.
79 - Repository groups let you group repos and manage them easier.
79 - Repository groups let you group repos and manage them easier. They come with
80 permission delegation features, so you can delegate groups management.
80 - Users can fork other users repos, and compare them at any time.
81 - Users can fork other users repos, and compare them at any time.
82 - Built in Gist functionality for sharing code snippets.
81 - Integrates easily with other systems, with custom created mappers you can connect it to almost
83 - Integrates easily with other systems, with custom created mappers you can connect it to almost
82 any issue tracker, and with an JSON-RPC API you can make much more
84 any issue tracker, and with an JSON-RPC API you can make much more
83 - Build in commit-api let's you add, edit and commit files right from RhodeCode
85 - Build in commit-api let's you add, edit and commit files right from RhodeCode
@@ -118,7 +120,6 b' Incoming / Plans'
118 - Simple issue tracker
120 - Simple issue tracker
119 - SSH based authentication with server side key management
121 - SSH based authentication with server side key management
120 - Commit based built in wiki system
122 - Commit based built in wiki system
121 - Gist server
122 - More statistics and graph (global annotation + some more statistics)
123 - More statistics and graph (global annotation + some more statistics)
123 - Other advancements as development continues (or you can of course make
124 - Other advancements as development continues (or you can of course make
124 additions and or requests)
125 additions and or requests)
@@ -29,24 +29,38 b' pdebug = false'
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ## PASTE
32 ## PASTE ##
33 ## nr of threads to spawn
33 #use = egg:Paste#http
34 ## nr of worker threads to spawn
34 #threadpool_workers = 5
35 #threadpool_workers = 5
35
36 ## max request before thread respawn
36 ## max request before thread respawn
37 #threadpool_max_requests = 10
37 #threadpool_max_requests = 10
38
39 ## option to use threads of process
38 ## option to use threads of process
40 #use_threadpool = true
39 #use_threadpool = true
41
40
42 #use = egg:Paste#http
41 ## WAITRESS ##
43
42 use = egg:waitress#main
44 ## WAITRESS
43 ## number of worker threads
45 threads = 5
44 threads = 5
46 ## 100GB
45 ## MAX BODY SIZE 100GB
47 max_request_body_size = 107374182400
46 max_request_body_size = 107374182400
48 use = egg:waitress#main
47 ## use poll instead of select, fixes fd limits, may not work on old
48 ## windows systems.
49 #asyncore_use_poll = True
49
50
51 ## GUNICORN ##
52 #use = egg:gunicorn#main
53 ## number of process workers. You must set `instance_id = *` when this option
54 ## is set to more than one worker
55 #workers = 1
56 ## process name
57 #proc_name = rhodecode
58 ## type of worker class, one of sync, eventlet, gevent, tornado
59 ## recommended for bigger setup is using of of other than sync one
60 #worker_class = sync
61 #max_requests = 5
62
63 ## COMMON ##
50 host = 0.0.0.0
64 host = 0.0.0.0
51 port = 5000
65 port = 5000
52
66
@@ -68,6 +82,10 b' lang = en'
68 cache_dir = %(here)s/data
82 cache_dir = %(here)s/data
69 index_dir = %(here)s/data/index
83 index_dir = %(here)s/data/index
70
84
85 ## perform a full repository scan on each server start, this should be
86 ## set to false after first startup, to allow faster server restarts.
87 initial_repo_scan = true
88
71 ## uncomment and set this path to use archive download cache
89 ## uncomment and set this path to use archive download cache
72 #archive_cache_dir = /tmp/tarballcache
90 #archive_cache_dir = /tmp/tarballcache
73
91
@@ -89,9 +107,6 b' use_htsts = false'
89 ## number of commits stats will parse on each iteration
107 ## number of commits stats will parse on each iteration
90 commit_parse_limit = 25
108 commit_parse_limit = 25
91
109
92 ## number of items displayed in lightweight dashboard before paginating is shown
93 dashboard_items = 100
94
95 ## use gravatar service to display avatars
110 ## use gravatar service to display avatars
96 use_gravatar = true
111 use_gravatar = true
97
112
@@ -111,6 +126,18 b' rss_include_diff = false'
111 show_sha_length = 12
126 show_sha_length = 12
112 show_revision_number = true
127 show_revision_number = true
113
128
129 ## gist URL alias, used to create nicer urls for gist. This should be an
130 ## url that does rewrites to _admin/gists/<gistid>.
131 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
132 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/<gistid>
133 gist_alias_url =
134
135 ## white list of API enabled controllers. This allows to add list of
136 ## controllers to which access will be enabled by api_key. eg: to enable
137 ## api access to raw_files put `FilesController:raw`, to enable access to patches
138 ## add `ChangesetController:changeset_patch`. This list should be "," separated
139 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
140 api_access_controllers_whitelist =
114
141
115 ## alternative_gravatar_url allows you to use your own avatar server application
142 ## alternative_gravatar_url allows you to use your own avatar server application
116 ## the following parts of the URL will be replaced
143 ## the following parts of the URL will be replaced
@@ -186,6 +213,7 b' auth_ret_code ='
186 ## codes don't break the transactions while 4XX codes do
213 ## codes don't break the transactions while 4XX codes do
187 lock_ret_code = 423
214 lock_ret_code = 423
188
215
216 allow_repo_location_change = True
189
217
190 ####################################
218 ####################################
191 ### CELERY CONFIG ####
219 ### CELERY CONFIG ####
@@ -16,9 +16,24 b' API ACCESS FOR WEB VIEWS'
16 API access can also be turned on for each web view in RhodeCode that is
16 API access can also be turned on for each web view in RhodeCode that is
17 decorated with `@LoginRequired` decorator. To enable API access simple change
17 decorated with `@LoginRequired` decorator. To enable API access simple change
18 the standard login decorator to `@LoginRequired(api_access=True)`.
18 the standard login decorator to `@LoginRequired(api_access=True)`.
19
20 To make this operation easier, starting from version 1.7.0 there's a white list
21 of views that will have API access enabled. Simply edit `api_access_controllers_whitelist`
22 option in your .ini file, and define views that should have API access enabled.
23 Following example shows how to enable API access to patch/diff raw file and archive
24 in RhodeCode::
25
26 api_access_controllers_whitelist =
27 ChangesetController:changeset_patch,
28 ChangesetController:changeset_raw,
29 FilesController:raw,
30 FilesController:archivefile
31
32
19 After this change, a rhodecode view can be accessed without login by adding a
33 After this change, a rhodecode view can be accessed without login by adding a
20 GET parameter `?api_key=<api_key>` to url. By default this is only
34 GET parameter `?api_key=<api_key>` to url. By default this is only
21 enabled on RSS/ATOM feed views.
35 enabled on RSS/ATOM feed views. Exposing raw diffs is a good way to integrate with
36 3rd party services like code review, or build farms that could download archives.
22
37
23
38
24 API ACCESS
39 API ACCESS
@@ -171,7 +186,7 b' INPUT::'
171 OUTPUT::
186 OUTPUT::
172
187
173 id : <id_given_in_input>
188 id : <id_given_in_input>
174 result : "Cache for repository `<reponame>` was invalidated: invalidated cache keys: <list_of_cache_keys>"
189 result : "Caches of repository `<reponame>`"
175 error : null
190 error : null
176
191
177 lock
192 lock
@@ -197,7 +212,13 b' INPUT::'
197 OUTPUT::
212 OUTPUT::
198
213
199 id : <id_given_in_input>
214 id : <id_given_in_input>
200 result : "User `<username>` set lock state for repo `<reponame>` to `true|false`"
215 result : {
216 "repo": "<reponame>",
217 "locked": "<bool true|false>",
218 "locked_since": "<float lock_time>",
219 "locked_by": "<username>",
220 "msg": "User `<username>` set lock state for repo `<reponame>` to `<false|true>`"
221 }
201 error : null
222 error : null
202
223
203
224
@@ -302,6 +323,7 b' OUTPUT::'
302 result: [
323 result: [
303 {
324 {
304 "user_id" : "<user_id>",
325 "user_id" : "<user_id>",
326 "api_key" : "<api_key>",
305 "username" : "<username>",
327 "username" : "<username>",
306 "firstname": "<firstname>",
328 "firstname": "<firstname>",
307 "lastname" : "<lastname>",
329 "lastname" : "<lastname>",
@@ -333,7 +355,7 b' INPUT::'
333 args : {
355 args : {
334 "username" : "<username>",
356 "username" : "<username>",
335 "email" : "<useremail>",
357 "email" : "<useremail>",
336 "password" : "<password>",
358 "password" : "<password = Optional(None)>",
337 "firstname" : "<firstname> = Optional(None)",
359 "firstname" : "<firstname> = Optional(None)",
338 "lastname" : "<lastname> = Optional(None)",
360 "lastname" : "<lastname> = Optional(None)",
339 "active" : "<bool> = Optional(True)",
361 "active" : "<bool> = Optional(True)",
@@ -393,6 +415,7 b' OUTPUT::'
393 "msg" : "updated user ID:<userid> <username>",
415 "msg" : "updated user ID:<userid> <username>",
394 "user": {
416 "user": {
395 "user_id" : "<user_id>",
417 "user_id" : "<user_id>",
418 "api_key" : "<api_key>",
396 "username" : "<username>",
419 "username" : "<username>",
397 "firstname": "<firstname>",
420 "firstname": "<firstname>",
398 "lastname" : "<lastname>",
421 "lastname" : "<lastname>",
@@ -461,6 +484,7 b' OUTPUT::'
461 "members" : [
484 "members" : [
462 {
485 {
463 "user_id" : "<user_id>",
486 "user_id" : "<user_id>",
487 "api_key" : "<api_key>",
464 "username" : "<username>",
488 "username" : "<username>",
465 "firstname": "<firstname>",
489 "firstname": "<firstname>",
466 "lastname" : "<lastname>",
490 "lastname" : "<lastname>",
@@ -518,8 +542,9 b' INPUT::'
518 api_key : "<api_key>"
542 api_key : "<api_key>"
519 method : "create_users_group"
543 method : "create_users_group"
520 args: {
544 args: {
521 "group_name": "<groupname>",
545 "group_name": "<groupname>",
522 "active":"<bool> = Optional(True)"
546 "owner" : "<onwer_name_or_id = Optional(=apiuser)>",
547 "active": "<bool> = Optional(True)"
523 }
548 }
524
549
525 OUTPUT::
550 OUTPUT::
@@ -642,6 +667,7 b' OUTPUT::'
642 {
667 {
643 "type": "user",
668 "type": "user",
644 "user_id" : "<user_id>",
669 "user_id" : "<user_id>",
670 "api_key" : "<api_key>",
645 "username" : "<username>",
671 "username" : "<username>",
646 "firstname": "<firstname>",
672 "firstname": "<firstname>",
647 "lastname" : "<lastname>",
673 "lastname" : "<lastname>",
@@ -667,6 +693,7 b' OUTPUT::'
667 {
693 {
668 "user_id" : "<user_id>",
694 "user_id" : "<user_id>",
669 "username" : "<username>",
695 "username" : "<username>",
696 "api_key" : "<api_key>",
670 "firstname": "<firstname>",
697 "firstname": "<firstname>",
671 "lastname" : "<lastname>",
698 "lastname" : "<lastname>",
672 "email" : "<email>",
699 "email" : "<email>",
@@ -4,6 +4,45 b''
4 Changelog
4 Changelog
5 =========
5 =========
6
6
7 1.7.0 (**2013-05-XX**)
8 ----------------------
9
10 news
11 ++++
12
13 - Manage User’s Groups(teams): create, delete, rename, add/remove users inside.
14 by delegated user group admins.
15 - Implemented simple Gist functionality.
16 - External authentication got special flag to controll user activation.
17 - Created whitelist for API access. Each view can now be accessed by api_key
18 if added to whitelist.
19 - Added dedicated file history page.
20 - Added compare option into bookmarks
21 - Improved diff display for binary files and renames.
22 - Archive downloading are now stored in main action journal.
23 - Switch gravatar to always use ssl.
24 - Implements #842 RhodeCode version disclosure.
25 - Allow underscore to be the optionally first character of username.
26
27 fixes
28 +++++
29
30 - #818: Bookmarks Do Not Display on Changeset View.
31 - Fixed default permissions population during upgrades.
32 - Fixed overwrite default user group permission flag.
33 - Fixed issue with h.person() function returned prematurly giving only email
34 info from changeset metadata.
35 - get_changeset uses now mercurial revrange to filter out branches.
36 Switch to branch it's around 20% faster this way.
37 - Fixed some issues with paginators on chrome.
38 - Forbid changing of repository type.
39 - Adde missing permission checks in list of forks in repository settings.
40 - Fixes #834 hooks error on remote pulling.
41 - Fixes issues #849. Web Commits functionality failed for non-ascii files.
42 - Fixed #850. Whoosh indexer should use the default revision when doing index.
43 - Fixed #851 and #563 make-index crashes on non-ascii files.
44 - Fixes #852, flash messages had issies with non-ascii messages
45
7 1.6.0 (**2013-05-12**)
46 1.6.0 (**2013-05-12**)
8 ----------------------
47 ----------------------
9
48
@@ -20,7 +59,7 b' fixes'
20 permissions when doing upgrades
59 permissions when doing upgrades
21 - Fixed some unicode problems with git file path
60 - Fixed some unicode problems with git file path
22 - Fixed broken handling of adding an htsts headers.
61 - Fixed broken handling of adding an htsts headers.
23 - Fixed redirection loop on changelog for empty repository
62 - Fixed redirection loop on changelog for empty repository
24 - Fixed issue with web-editor that didn't preserve executable bit
63 - Fixed issue with web-editor that didn't preserve executable bit
25 after editing files
64 after editing files
26
65
@@ -29,7 +68,7 b' 1.6.0rc1 (**2013-04-07**)'
29
68
30 news
69 news
31 ++++
70 ++++
32
71
33 - Redesign UI, with lots of small improvements.
72 - Redesign UI, with lots of small improvements.
34 - Group management delegation. Group admin can manage a group, and repos
73 - Group management delegation. Group admin can manage a group, and repos
35 under it, admin can create child groups inside group he manages.
74 under it, admin can create child groups inside group he manages.
@@ -57,7 +96,7 b' news'
57 - Linaro's ldap sync scripts.
96 - Linaro's ldap sync scripts.
58 - #797 git refs filter is now configurable via .ini file.
97 - #797 git refs filter is now configurable via .ini file.
59 - New ishell paster command for easier administrative tasks.
98 - New ishell paster command for easier administrative tasks.
60
99
61 fixes
100 fixes
62 +++++
101 +++++
63
102
@@ -68,8 +107,8 b' fixes'
68 - #731 update-repoinfo sometimes failed to update data when changesets were
107 - #731 update-repoinfo sometimes failed to update data when changesets were
69 initial commits.
108 initial commits.
70 - #749,#805 and #516 Removed duplication of repo settings for rhodecode admins
109 - #749,#805 and #516 Removed duplication of repo settings for rhodecode admins
71 and repo admins.
110 and repo admins.
72 - Global permission update with "overwrite existing settings" shouldn't
111 - Global permission update with "overwrite existing settings" shouldn't
73 override private repositories.
112 override private repositories.
74 - #642 added recursion limit for stats gathering.
113 - #642 added recursion limit for stats gathering.
75 - #739 Delete/Edit repositories should only point to admin links if the user
114 - #739 Delete/Edit repositories should only point to admin links if the user
@@ -99,7 +138,7 b' fixes'
99 - Automatically assign instance_id for host and process if it has been set to *
138 - Automatically assign instance_id for host and process if it has been set to *
100 - Fixed multiple IP addresses in each of extracted IP.
139 - Fixed multiple IP addresses in each of extracted IP.
101 - Lot of other small bug fixes and improvements.
140 - Lot of other small bug fixes and improvements.
102
141
103 1.5.4 (**2013-03-13**)
142 1.5.4 (**2013-03-13**)
104 ----------------------
143 ----------------------
105
144
@@ -196,6 +196,13 b" Here's a typical ldap setup::"
196 Last Name Attribute = lastName
196 Last Name Attribute = lastName
197 E-mail Attribute = mail
197 E-mail Attribute = mail
198
198
199 If your user groups are placed in a Organisation Unit (OU) structure the Search Settings configuration differs::
200
201 Search settings
202 Base DN = DC=host,DC=example,DC=org
203 LDAP Filter = (&(memberOf=CN=your user group,OU=subunit,OU=unit,DC=host,DC=example,DC=org)(objectClass=user))
204 LDAP Search Scope = SUBTREE
205
199 .. _enable_ldap:
206 .. _enable_ldap:
200
207
201 Enable LDAP : required
208 Enable LDAP : required
@@ -444,11 +451,11 b' to define a regular expression that will'
444 messages and replace that with an url to this issue. To enable this simply
451 messages and replace that with an url to this issue. To enable this simply
445 uncomment following variables in the ini file::
452 uncomment following variables in the ini file::
446
453
447 url_pat = (?:^#|\s#)(\w+)
454 issue_pat = (?:^#|\s#)(\w+)
448 issue_server_link = https://myissueserver.com/{repo}/issue/{id}
455 issue_server_link = https://myissueserver.com/{repo}/issue/{id}
449 issue_prefix = #
456 issue_prefix = #
450
457
451 `url_pat` is the regular expression that will fetch issues from commit messages.
458 `issue_pat` is the regular expression that will fetch issues from commit messages.
452 Default regex will match issues in format of #<number> eg. #300.
459 Default regex will match issues in format of #<number> eg. #300.
453
460
454 Matched issues will be replace with the link specified as `issue_server_link`
461 Matched issues will be replace with the link specified as `issue_server_link`
@@ -527,6 +534,27 b' Sample config for nginx using proxy::'
527 #server 127.0.0.1:5002;
534 #server 127.0.0.1:5002;
528 }
535 }
529
536
537 ## gist alias
538 server {
539 listen 443;
540 server_name gist.myserver.com;
541 access_log /var/log/nginx/gist.access.log;
542 error_log /var/log/nginx/gist.error.log;
543
544 ssl on;
545 ssl_certificate gist.rhodecode.myserver.com.crt;
546 ssl_certificate_key gist.rhodecode.myserver.com.key;
547
548 ssl_session_timeout 5m;
549
550 ssl_protocols SSLv3 TLSv1;
551 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
552 ssl_prefer_server_ciphers on;
553
554 rewrite ^/(.+)$ https://rhodecode.myserver.com/_admin/gists/$1;
555 rewrite (.*) https://rhodecode.myserver.com/_admin/gists;
556 }
557
530 server {
558 server {
531 listen 443;
559 listen 443;
532 server_name rhodecode.myserver.com;
560 server_name rhodecode.myserver.com;
@@ -543,25 +571,16 b' Sample config for nginx using proxy::'
543 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
571 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5;
544 ssl_prefer_server_ciphers on;
572 ssl_prefer_server_ciphers on;
545
573
546 # uncomment if you have nginx with chunking module compiled
574 ## uncomment root directive if you want to serve static files by nginx
547 # fixes the issues of having to put postBuffer data for large git
575 ## requires static_files = false in .ini file
548 # pushes
549 #chunkin on;
550 #error_page 411 = @my_411_error;
551 #location @my_411_error {
552 # chunkin_resume;
553 #}
554
555 # uncomment if you want to serve static files by nginx
556 #root /path/to/installation/rhodecode/public;
576 #root /path/to/installation/rhodecode/public;
557
577 include /etc/nginx/proxy.conf;
558 location / {
578 location / {
559 try_files $uri @rhode;
579 try_files $uri @rhode;
560 }
580 }
561
581
562 location @rhode {
582 location @rhode {
563 proxy_pass http://rc;
583 proxy_pass http://rc;
564 include /etc/nginx/proxy.conf;
565 }
584 }
566
585
567 }
586 }
@@ -576,25 +595,14 b' pushes or large pushes::'
576 proxy_set_header X-Real-IP $remote_addr;
595 proxy_set_header X-Real-IP $remote_addr;
577 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
596 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
578 proxy_set_header Proxy-host $proxy_host;
597 proxy_set_header Proxy-host $proxy_host;
579 client_max_body_size 400m;
580 client_body_buffer_size 128k;
581 proxy_buffering off;
598 proxy_buffering off;
582 proxy_connect_timeout 7200;
599 proxy_connect_timeout 7200;
583 proxy_send_timeout 7200;
600 proxy_send_timeout 7200;
584 proxy_read_timeout 7200;
601 proxy_read_timeout 7200;
585 proxy_buffers 8 32k;
602 proxy_buffers 8 32k;
586
603 client_max_body_size 1024m;
587 Also, when using root path with nginx you might set the static files to false
604 client_body_buffer_size 128k;
588 in the production.ini file::
605 large_client_header_buffers 8 64k;
589
590 [app:main]
591 use = egg:rhodecode
592 full_stack = true
593 static_files = false
594 lang=en
595 cache_dir = %(here)s/data
596
597 In order to not have the statics served by the application. This improves speed.
598
606
599
607
600 Apache virtual host reverse proxy example
608 Apache virtual host reverse proxy example
@@ -113,3 +113,54 b' might pass the url with stored credentia'
113 using given credentials. Please take a note that they will be stored as
113 using given credentials. Please take a note that they will be stored as
114 plaintext inside the database. RhodeCode will remove auth info when showing the
114 plaintext inside the database. RhodeCode will remove auth info when showing the
115 clone url in summary page.
115 clone url in summary page.
116
117
118
119 Visual settings in admin pannel
120 -------------------------------
121
122
123 Visualisation settings in RhodeCode settings view are extra customizations
124 of server behavior. There are 3 main section in the settings.
125
126 General
127 ~~~~~~~
128
129 `Use repository extra fields` option allows to set a custom fields for each
130 repository in the system. Each new field consists of 3 attributes `field key`,
131 `field label`, `field description`. Example usage of such fields would be to
132 define company specific information into repositories eg. defining repo_manager
133 key that would add give info about a manager of each repository. There's no
134 limit for adding custom fields. Newly created fields are accessible via API.
135
136 `Show RhodeCode version` option toggles displaying exact RhodeCode version in
137 the footer
138
139
140 Dashboard items
141 ~~~~~~~~~~~~~~~
142
143 Number if items in main page dashboard before pagination is displayed
144
145
146 Icons
147 ~~~~~
148
149 Show public repo icon / Show private repo icon on repositories - defines if
150 public/private icons should be shown in the UI.
151
152
153 Meta-Tagging
154 ~~~~~~~~~~~~
155
156 With this option enabled, special metatags that are recognisible by RhodeCode
157 will be turned into colored tags. Currently available tags are::
158
159 [featured]
160 [stale]
161 [dead]
162 [lang => lang]
163 [license => License]
164 [requires => Repo]
165 [recommends => Repo]
166 [see => URI]
@@ -29,26 +29,40 b' pdebug = false'
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ## PASTE
32 ## PASTE ##
33 ## nr of threads to spawn
33 #use = egg:Paste#http
34 ## nr of worker threads to spawn
34 #threadpool_workers = 5
35 #threadpool_workers = 5
35
36 ## max request before thread respawn
36 ## max request before thread respawn
37 #threadpool_max_requests = 10
37 #threadpool_max_requests = 10
38
39 ## option to use threads of process
38 ## option to use threads of process
40 #use_threadpool = true
39 #use_threadpool = true
41
40
42 #use = egg:Paste#http
41 ## WAITRESS ##
43
42 use = egg:waitress#main
44 ## WAITRESS
43 ## number of worker threads
45 threads = 5
44 threads = 5
46 ## 100GB
45 ## MAX BODY SIZE 100GB
47 max_request_body_size = 107374182400
46 max_request_body_size = 107374182400
48 use = egg:waitress#main
47 ## use poll instead of select, fixes fd limits, may not work on old
48 ## windows systems.
49 #asyncore_use_poll = True
49
50
51 ## GUNICORN ##
52 #use = egg:gunicorn#main
53 ## number of process workers. You must set `instance_id = *` when this option
54 ## is set to more than one worker
55 #workers = 1
56 ## process name
57 #proc_name = rhodecode
58 ## type of worker class, one of sync, eventlet, gevent, tornado
59 ## recommended for bigger setup is using of of other than sync one
60 #worker_class = sync
61 #max_requests = 5
62
63 ## COMMON ##
50 host = 127.0.0.1
64 host = 127.0.0.1
51 port = 8001
65 port = 5000
52
66
53 ## prefix middleware for rc
67 ## prefix middleware for rc
54 #[filter:proxy-prefix]
68 #[filter:proxy-prefix]
@@ -68,6 +82,10 b' lang = en'
68 cache_dir = %(here)s/data
82 cache_dir = %(here)s/data
69 index_dir = %(here)s/data/index
83 index_dir = %(here)s/data/index
70
84
85 ## perform a full repository scan on each server start, this should be
86 ## set to false after first startup, to allow faster server restarts.
87 initial_repo_scan = true
88
71 ## uncomment and set this path to use archive download cache
89 ## uncomment and set this path to use archive download cache
72 #archive_cache_dir = /tmp/tarballcache
90 #archive_cache_dir = /tmp/tarballcache
73
91
@@ -89,9 +107,6 b' use_htsts = false'
89 ## number of commits stats will parse on each iteration
107 ## number of commits stats will parse on each iteration
90 commit_parse_limit = 25
108 commit_parse_limit = 25
91
109
92 ## number of items displayed in lightweight dashboard before paginating is shown
93 dashboard_items = 100
94
95 ## use gravatar service to display avatars
110 ## use gravatar service to display avatars
96 use_gravatar = true
111 use_gravatar = true
97
112
@@ -111,6 +126,18 b' rss_include_diff = false'
111 show_sha_length = 12
126 show_sha_length = 12
112 show_revision_number = true
127 show_revision_number = true
113
128
129 ## gist URL alias, used to create nicer urls for gist. This should be an
130 ## url that does rewrites to _admin/gists/<gistid>.
131 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
132 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/<gistid>
133 gist_alias_url =
134
135 ## white list of API enabled controllers. This allows to add list of
136 ## controllers to which access will be enabled by api_key. eg: to enable
137 ## api access to raw_files put `FilesController:raw`, to enable access to patches
138 ## add `ChangesetController:changeset_patch`. This list should be "," separated
139 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
140 api_access_controllers_whitelist =
114
141
115 ## alternative_gravatar_url allows you to use your own avatar server application
142 ## alternative_gravatar_url allows you to use your own avatar server application
116 ## the following parts of the URL will be replaced
143 ## the following parts of the URL will be replaced
@@ -186,6 +213,7 b' auth_ret_code ='
186 ## codes don't break the transactions while 4XX codes do
213 ## codes don't break the transactions while 4XX codes do
187 lock_ret_code = 423
214 lock_ret_code = 423
188
215
216 allow_repo_location_change = True
189
217
190 ####################################
218 ####################################
191 ### CELERY CONFIG ####
219 ### CELERY CONFIG ####
@@ -26,32 +26,7 b''
26 import sys
26 import sys
27 import platform
27 import platform
28
28
29 VERSION = (1, 6, 1)
29 VERSION = (1, 7, 0)
30
31 try:
32 from rhodecode.lib import get_current_revision
33 _rev = get_current_revision(quiet=True)
34 if _rev and len(VERSION) > 3:
35 VERSION += ('dev%s' % _rev[0],)
36 except ImportError:
37 pass
38
39 __version__ = ('.'.join((str(each) for each in VERSION[:3])) +
40 '.'.join(VERSION[3:]))
41 __dbversion__ = 11 # defines current db version for migrations
42 __platform__ = platform.system()
43 __license__ = 'GPLv3'
44 __py_version__ = sys.version_info
45 __author__ = 'Marcin Kuzminski'
46 __url__ = 'http://rhodecode.org'
47
48 PLATFORM_WIN = ('Windows')
49 PLATFORM_OTHERS = ('Linux', 'Darwin', 'FreeBSD', 'OpenBSD', 'SunOS') #depracated
50
51 is_windows = __platform__ in PLATFORM_WIN
52 is_unix = not is_windows
53
54
55 BACKENDS = {
30 BACKENDS = {
56 'hg': 'Mercurial repository',
31 'hg': 'Mercurial repository',
57 'git': 'Git repository',
32 'git': 'Git repository',
@@ -65,3 +40,23 b' CONFIG = {}'
65
40
66 # Linked module for extensions
41 # Linked module for extensions
67 EXTENSIONS = {}
42 EXTENSIONS = {}
43
44 try:
45 from rhodecode.lib import get_current_revision
46 _rev = get_current_revision(quiet=True)
47 if _rev and len(VERSION) > 3:
48 VERSION += ('%s' % _rev[0],)
49 except ImportError:
50 pass
51
52 __version__ = ('.'.join((str(each) for each in VERSION[:3])) +
53 '.'.join(VERSION[3:]))
54 __dbversion__ = 13 # defines current db version for migrations
55 __platform__ = platform.system()
56 __license__ = 'GPLv3'
57 __py_version__ = sys.version_info
58 __author__ = 'Marcin Kuzminski'
59 __url__ = 'http://rhodecode.org'
60
61 is_windows = __platform__ in ['Windows']
62 is_unix = not is_windows
@@ -14,7 +14,14 b''
14 import ldap
14 import ldap
15 import urllib2
15 import urllib2
16 import uuid
16 import uuid
17 import json
17
18 try:
19 from rhodecode.lib.compat import json
20 except ImportError:
21 try:
22 import simplejson as json
23 except ImportError:
24 import json
18
25
19 from ConfigParser import ConfigParser
26 from ConfigParser import ConfigParser
20
27
@@ -72,7 +79,7 b' class RhodecodeAPI():'
72 if uid != response["id"]:
79 if uid != response["id"]:
73 raise InvalidResponseIDError("UUID does not match.")
80 raise InvalidResponseIDError("UUID does not match.")
74
81
75 if response["error"] != None:
82 if response["error"] is not None:
76 raise RhodecodeResponseError(response["error"])
83 raise RhodecodeResponseError(response["error"])
77
84
78 return response["result"]
85 return response["result"]
@@ -1,7 +1,7 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.bin.backup_manager
3 rhodecode.bin.api
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~
5
5
6 Api CLI client for RhodeCode
6 Api CLI client for RhodeCode
7
7
@@ -24,160 +24,18 b''
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25
25
26 from __future__ import with_statement
26 from __future__ import with_statement
27 import os
28 import sys
27 import sys
29 import random
30 import urllib2
31 import pprint
32 import argparse
28 import argparse
33
29
34 try:
30 from rhodecode.bin.base import json, api_call, RcConf, FORMAT_JSON, FORMAT_PRETTY
35 from rhodecode.lib.ext_json import json
36 except ImportError:
37 try:
38 import simplejson as json
39 except ImportError:
40 import json
41
42
43 CONFIG_NAME = '.rhodecode'
44 FORMAT_PRETTY = 'pretty'
45 FORMAT_JSON = 'json'
46
47
48 class RcConf(object):
49 """
50 RhodeCode config for API
51
52 conf = RcConf()
53 conf['key']
54
55 """
56
57 def __init__(self, config_location=None, autoload=True, autocreate=False,
58 config=None):
59 self._conf_name = CONFIG_NAME if not config_location else config_location
60 self._conf = {}
61 if autocreate:
62 self.make_config(config)
63 if autoload:
64 self._conf = self.load_config()
65
66 def __getitem__(self, key):
67 return self._conf[key]
68
69 def __nonzero__(self):
70 if self._conf:
71 return True
72 return False
73
74 def __eq__(self):
75 return self._conf.__eq__()
76
77 def __repr__(self):
78 return 'RcConf<%s>' % self._conf.__repr__()
79
80 def make_config(self, config):
81 """
82 Saves given config as a JSON dump in the _conf_name location
83
84 :param config:
85 :type config:
86 """
87 update = False
88 if os.path.exists(self._conf_name):
89 update = True
90 with open(self._conf_name, 'wb') as f:
91 json.dump(config, f, indent=4)
92
93 if update:
94 sys.stdout.write('Updated config in %s\n' % self._conf_name)
95 else:
96 sys.stdout.write('Created new config in %s\n' % self._conf_name)
97
98 def update_config(self, new_config):
99 """
100 Reads the JSON config updates it's values with new_config and
101 saves it back as JSON dump
102
103 :param new_config:
104 """
105 config = {}
106 try:
107 with open(self._conf_name, 'rb') as conf:
108 config = json.load(conf)
109 except IOError, e:
110 sys.stderr.write(str(e) + '\n')
111
112 config.update(new_config)
113 self.make_config(config)
114
115 def load_config(self):
116 """
117 Loads config from file and returns loaded JSON object
118 """
119 try:
120 with open(self._conf_name, 'rb') as conf:
121 return json.load(conf)
122 except IOError, e:
123 #sys.stderr.write(str(e) + '\n')
124 pass
125
126
127 def api_call(apikey, apihost, format, method=None, **kw):
128 """
129 Api_call wrapper for RhodeCode
130
131 :param apikey:
132 :param apihost:
133 :param format: formatting, pretty means prints and pprint of json
134 json returns unparsed json
135 :param method:
136 """
137 def _build_data(random_id):
138 """
139 Builds API data with given random ID
140
141 :param random_id:
142 :type random_id:
143 """
144 return {
145 "id": random_id,
146 "api_key": apikey,
147 "method": method,
148 "args": kw
149 }
150
151 if not method:
152 raise Exception('please specify method name !')
153 id_ = random.randrange(1, 9999)
154 req = urllib2.Request('%s/_admin/api' % apihost,
155 data=json.dumps(_build_data(id_)),
156 headers={'content-type': 'text/plain'})
157 if format == FORMAT_PRETTY:
158 sys.stdout.write('calling %s to %s \n' % (req.get_data(), apihost))
159 ret = urllib2.urlopen(req)
160 raw_json = ret.read()
161 json_data = json.loads(raw_json)
162 id_ret = json_data['id']
163 _formatted_json = pprint.pformat(json_data)
164 if id_ret == id_:
165 if format == FORMAT_JSON:
166 sys.stdout.write(str(raw_json))
167 else:
168 sys.stdout.write('rhodecode returned:\n%s\n' % (_formatted_json))
169
170 else:
171 raise Exception('something went wrong. '
172 'ID mismatch got %s, expected %s | %s' % (
173 id_ret, id_, _formatted_json))
174
31
175
32
176 def argparser(argv):
33 def argparser(argv):
177 usage = (
34 usage = (
178 "rhodecode_api [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
35 "rhodecode-api [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
179 " [--config=CONFIG] "
36 "[--config=CONFIG] [--save-config] "
180 "_create_config or METHOD <key:val> <key2:val> ..."
37 "METHOD <key:val> <key2:val> ...\n"
38 "Create config file: rhodecode-gist --apikey=<key> --apihost=http://rhodecode.server --save-config"
181 )
39 )
182
40
183 parser = argparse.ArgumentParser(description='RhodeCode API cli',
41 parser = argparse.ArgumentParser(description='RhodeCode API cli',
@@ -188,14 +46,15 b' def argparser(argv):'
188 group.add_argument('--apikey', help='api access key')
46 group.add_argument('--apikey', help='api access key')
189 group.add_argument('--apihost', help='api host')
47 group.add_argument('--apihost', help='api host')
190 group.add_argument('--config', help='config file')
48 group.add_argument('--config', help='config file')
49 group.add_argument('--save-config', action='store_true', help='save the given config into a file')
191
50
192 group = parser.add_argument_group('API')
51 group = parser.add_argument_group('API')
193 group.add_argument('method', metavar='METHOD', type=str,
52 group.add_argument('method', metavar='METHOD', nargs='?', type=str, default=None,
194 help='API method name to call followed by key:value attributes',
53 help='API method name to call followed by key:value attributes',
195 )
54 )
196 group.add_argument('--format', dest='format', type=str,
55 group.add_argument('--format', dest='format', type=str,
197 help='output format default: `pretty` can '
56 help='output format default: `%s` can '
198 'be also `%s`' % FORMAT_JSON,
57 'be also `%s`' % (FORMAT_PRETTY, FORMAT_JSON),
199 default=FORMAT_PRETTY
58 default=FORMAT_PRETTY
200 )
59 )
201 args, other = parser.parse_known_args()
60 args, other = parser.parse_known_args()
@@ -207,7 +66,6 b' def main(argv=None):'
207 Main execution function for cli
66 Main execution function for cli
208
67
209 :param argv:
68 :param argv:
210 :type argv:
211 """
69 """
212 if argv is None:
70 if argv is None:
213 argv = sys.argv
71 argv = sys.argv
@@ -216,12 +74,13 b' def main(argv=None):'
216 parser, args, other = argparser(argv)
74 parser, args, other = argparser(argv)
217
75
218 api_credentials_given = (args.apikey and args.apihost)
76 api_credentials_given = (args.apikey and args.apihost)
219 if args.method == '_create_config':
77 if args.save_config:
220 if not api_credentials_given:
78 if not api_credentials_given:
221 raise parser.error('_create_config requires --apikey and --apihost')
79 raise parser.error('--save-config requires --apikey and --apihost')
222 conf = RcConf(config_location=args.config,
80 conf = RcConf(config_location=args.config,
223 autocreate=True, config={'apikey': args.apikey,
81 autocreate=True, config={'apikey': args.apikey,
224 'apihost': args.apihost})
82 'apihost': args.apihost})
83 sys.exit()
225
84
226 if not conf:
85 if not conf:
227 conf = RcConf(config_location=args.config, autoload=True)
86 conf = RcConf(config_location=args.config, autoload=True)
@@ -231,18 +90,31 b' def main(argv=None):'
231 '--apikey or --apihost in params')
90 '--apikey or --apihost in params')
232
91
233 apikey = args.apikey or conf['apikey']
92 apikey = args.apikey or conf['apikey']
234 host = args.apihost or conf['apihost']
93 apihost = args.apihost or conf['apihost']
235 method = args.method
94 method = args.method
236 if method == '_create_config':
95
237 sys.exit()
96 # if we don't have method here it's an error
97 if not method:
98 parser.error('Please specify method name')
238
99
239 try:
100 try:
240 margs = dict(map(lambda s: s.split(':', 1), other))
101 margs = dict(map(lambda s: s.split(':', 1), other))
241 except Exception:
102 except Exception:
242 sys.stderr.write('Error parsing arguments \n')
103 sys.stderr.write('Error parsing arguments \n')
243 sys.exit()
104 sys.exit()
105 if args.format == FORMAT_PRETTY:
106 print 'Calling method %s => %s' % (method, apihost)
244
107
245 api_call(apikey, host, args.format, method, **margs)
108 json_resp = api_call(apikey, apihost, method, **margs)
109 if json_resp['error']:
110 json_data = json_resp['error']
111 else:
112 json_data = json_resp['result']
113 if args.format == FORMAT_JSON:
114 print json.dumps(json_data)
115 elif args.format == FORMAT_PRETTY:
116 print 'Server response \n%s' % (
117 json.dumps(json_data, indent=4, sort_keys=True))
246 return 0
118 return 0
247
119
248 if __name__ == '__main__':
120 if __name__ == '__main__':
@@ -29,24 +29,38 b' pdebug = false'
29 #smtp_auth =
29 #smtp_auth =
30
30
31 [server:main]
31 [server:main]
32 ## PASTE
32 ## PASTE ##
33 ## nr of threads to spawn
33 #use = egg:Paste#http
34 ## nr of worker threads to spawn
34 #threadpool_workers = 5
35 #threadpool_workers = 5
35
36 ## max request before thread respawn
36 ## max request before thread respawn
37 #threadpool_max_requests = 10
37 #threadpool_max_requests = 10
38
39 ## option to use threads of process
38 ## option to use threads of process
40 #use_threadpool = true
39 #use_threadpool = true
41
40
42 #use = egg:Paste#http
41 ## WAITRESS ##
43
42 use = egg:waitress#main
44 ## WAITRESS
43 ## number of worker threads
45 threads = 5
44 threads = 5
46 ## 100GB
45 ## MAX BODY SIZE 100GB
47 max_request_body_size = 107374182400
46 max_request_body_size = 107374182400
48 use = egg:waitress#main
47 ## use poll instead of select, fixes fd limits, may not work on old
48 ## windows systems.
49 #asyncore_use_poll = True
49
50
51 ## GUNICORN ##
52 #use = egg:gunicorn#main
53 ## number of process workers. You must set `instance_id = *` when this option
54 ## is set to more than one worker
55 #workers = 1
56 ## process name
57 #proc_name = rhodecode
58 ## type of worker class, one of sync, eventlet, gevent, tornado
59 ## recommended for bigger setup is using of of other than sync one
60 #worker_class = sync
61 #max_requests = 5
62
63 ## COMMON ##
50 host = 127.0.0.1
64 host = 127.0.0.1
51 port = 5000
65 port = 5000
52
66
@@ -68,6 +82,10 b' lang = en'
68 cache_dir = %(here)s/data
82 cache_dir = %(here)s/data
69 index_dir = %(here)s/data/index
83 index_dir = %(here)s/data/index
70
84
85 ## perform a full repository scan on each server start, this should be
86 ## set to false after first startup, to allow faster server restarts.
87 initial_repo_scan = true
88
71 ## uncomment and set this path to use archive download cache
89 ## uncomment and set this path to use archive download cache
72 #archive_cache_dir = /tmp/tarballcache
90 #archive_cache_dir = /tmp/tarballcache
73
91
@@ -89,9 +107,6 b' use_htsts = false'
89 ## number of commits stats will parse on each iteration
107 ## number of commits stats will parse on each iteration
90 commit_parse_limit = 25
108 commit_parse_limit = 25
91
109
92 ## number of items displayed in lightweight dashboard before paginating is shown
93 dashboard_items = 100
94
95 ## use gravatar service to display avatars
110 ## use gravatar service to display avatars
96 use_gravatar = true
111 use_gravatar = true
97
112
@@ -111,6 +126,18 b' rss_include_diff = false'
111 show_sha_length = 12
126 show_sha_length = 12
112 show_revision_number = true
127 show_revision_number = true
113
128
129 ## gist URL alias, used to create nicer urls for gist. This should be an
130 ## url that does rewrites to _admin/gists/<gistid>.
131 ## example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
132 ## RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/<gistid>
133 gist_alias_url =
134
135 ## white list of API enabled controllers. This allows to add list of
136 ## controllers to which access will be enabled by api_key. eg: to enable
137 ## api access to raw_files put `FilesController:raw`, to enable access to patches
138 ## add `ChangesetController:changeset_patch`. This list should be "," separated
139 ## Syntax is <ControllerClass>:<function>. Check debug logs for generated names
140 api_access_controllers_whitelist =
114
141
115 ## alternative_gravatar_url allows you to use your own avatar server application
142 ## alternative_gravatar_url allows you to use your own avatar server application
116 ## the following parts of the URL will be replaced
143 ## the following parts of the URL will be replaced
@@ -186,6 +213,7 b' auth_ret_code ='
186 ## codes don't break the transactions while 4XX codes do
213 ## codes don't break the transactions while 4XX codes do
187 lock_ret_code = 423
214 lock_ret_code = 423
188
215
216 allow_repo_location_change = True
189
217
190 ####################################
218 ####################################
191 ### CELERY CONFIG ####
219 ### CELERY CONFIG ####
@@ -18,7 +18,7 b' from rhodecode.config.routing import mak'
18 from rhodecode.lib import helpers
18 from rhodecode.lib import helpers
19 from rhodecode.lib.auth import set_available_permissions
19 from rhodecode.lib.auth import set_available_permissions
20 from rhodecode.lib.utils import repo2db_mapper, make_ui, set_rhodecode_config,\
20 from rhodecode.lib.utils import repo2db_mapper, make_ui, set_rhodecode_config,\
21 load_rcextensions, check_git_version
21 load_rcextensions, check_git_version, set_vcs_config
22 from rhodecode.lib.utils2 import engine_from_config, str2bool
22 from rhodecode.lib.utils2 import engine_from_config, str2bool
23 from rhodecode.lib.db_manage import DbManage
23 from rhodecode.lib.db_manage import DbManage
24 from rhodecode.model import init_model
24 from rhodecode.model import init_model
@@ -87,18 +87,14 b' def load_environment(global_conf, app_co'
87 if not int(os.environ.get('RC_WHOOSH_TEST_DISABLE', 0)):
87 if not int(os.environ.get('RC_WHOOSH_TEST_DISABLE', 0)):
88 create_test_index(TESTS_TMP_PATH, config, True)
88 create_test_index(TESTS_TMP_PATH, config, True)
89
89
90 #check git version
91 check_git_version()
92 DbManage.check_waitress()
90 DbManage.check_waitress()
93 # MULTIPLE DB configs
91 # MULTIPLE DB configs
94 # Setup the SQLAlchemy database engine
92 # Setup the SQLAlchemy database engine
95 sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
93 sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
96 init_model(sa_engine_db1)
94 init_model(sa_engine_db1)
97
95
96 set_available_permissions(config)
98 repos_path = make_ui('db').configitems('paths')[0][1]
97 repos_path = make_ui('db').configitems('paths')[0][1]
99 repo2db_mapper(ScmModel().repo_scan(repos_path),
100 remove_obsolete=False, install_git_hook=False)
101 set_available_permissions(config)
102 config['base_path'] = repos_path
98 config['base_path'] = repos_path
103 set_rhodecode_config(config)
99 set_rhodecode_config(config)
104
100
@@ -113,4 +109,12 b' def load_environment(global_conf, app_co'
113 # store config reference into our module to skip import magic of
109 # store config reference into our module to skip import magic of
114 # pylons
110 # pylons
115 rhodecode.CONFIG.update(config)
111 rhodecode.CONFIG.update(config)
112 set_vcs_config(rhodecode.CONFIG)
113
114 #check git version
115 check_git_version()
116
117 if str2bool(config.get('initial_repo_scan', True)):
118 repo2db_mapper(ScmModel().repo_scan(repos_path),
119 remove_obsolete=False, install_git_hook=False)
116 return config
120 return config
@@ -68,6 +68,15 b' def make_map(config):'
68 return is_valid_repos_group(repos_group_name, config['base_path'],
68 return is_valid_repos_group(repos_group_name, config['base_path'],
69 skip_path_check=True)
69 skip_path_check=True)
70
70
71 def check_user_group(environ, match_dict):
72 """
73 check for valid user group for proper 404 handling
74
75 :param environ:
76 :param match_dict:
77 """
78 return True
79
71 def check_int(environ, match_dict):
80 def check_int(environ, match_dict):
72 return match_dict.get('id').isdigit()
81 return match_dict.get('id').isdigit()
73
82
@@ -122,19 +131,15 b' def make_map(config):'
122 action="show", conditions=dict(method=["GET"],
131 action="show", conditions=dict(method=["GET"],
123 function=check_repo))
132 function=check_repo))
124 #add repo perm member
133 #add repo perm member
125 m.connect('set_repo_perm_member', "/set_repo_perm_member/{repo_name:.*?}",
134 m.connect('set_repo_perm_member',
126 action="set_repo_perm_member",
135 "/repos/{repo_name:.*?}/grant_perm",
127 conditions=dict(method=["POST"], function=check_repo))
136 action="set_repo_perm_member",
137 conditions=dict(method=["POST"], function=check_repo))
128
138
129 #ajax delete repo perm user
139 #ajax delete repo perm user
130 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*?}",
140 m.connect('delete_repo_perm_member',
131 action="delete_perm_user",
141 "/repos/{repo_name:.*?}/revoke_perm",
132 conditions=dict(method=["DELETE"], function=check_repo))
142 action="delete_repo_perm_member",
133
134 #ajax delete repo perm users_group
135 m.connect('delete_repo_users_group',
136 "/repos_delete_users_group/{repo_name:.*?}",
137 action="delete_perm_users_group",
138 conditions=dict(method=["DELETE"], function=check_repo))
143 conditions=dict(method=["DELETE"], function=check_repo))
139
144
140 #settings actions
145 #settings actions
@@ -184,6 +189,18 b' def make_map(config):'
184 m.connect("update_repos_group", "/repos_groups/{group_name:.*?}",
189 m.connect("update_repos_group", "/repos_groups/{group_name:.*?}",
185 action="update", conditions=dict(method=["PUT"],
190 action="update", conditions=dict(method=["PUT"],
186 function=check_group))
191 function=check_group))
192 #add repo group perm member
193 m.connect('set_repo_group_perm_member',
194 "/repos_groups/{group_name:.*?}/grant_perm",
195 action="set_repo_group_perm_member",
196 conditions=dict(method=["POST"], function=check_group))
197
198 #ajax delete repo group perm
199 m.connect('delete_repo_group_perm_member',
200 "/repos_groups/{group_name:.*?}/revoke_perm",
201 action="delete_repo_group_perm_member",
202 conditions=dict(method=["DELETE"], function=check_group))
203
187 m.connect("delete_repos_group", "/repos_groups/{group_name:.*?}",
204 m.connect("delete_repos_group", "/repos_groups/{group_name:.*?}",
188 action="delete", conditions=dict(method=["DELETE"],
205 action="delete", conditions=dict(method=["DELETE"],
189 function=check_group_skip_path))
206 function=check_group_skip_path))
@@ -200,17 +217,6 b' def make_map(config):'
200 m.connect("formatted_repos_group", "/repos_groups/{group_name:.*?}.{format}",
217 m.connect("formatted_repos_group", "/repos_groups/{group_name:.*?}.{format}",
201 action="show", conditions=dict(method=["GET"],
218 action="show", conditions=dict(method=["GET"],
202 function=check_group))
219 function=check_group))
203 # ajax delete repository group perm user
204 m.connect('delete_repos_group_user_perm',
205 "/delete_repos_group_user_perm/{group_name:.*?}",
206 action="delete_repos_group_user_perm",
207 conditions=dict(method=["DELETE"], function=check_group))
208
209 # ajax delete repository group perm users_group
210 m.connect('delete_repos_group_users_group_perm',
211 "/delete_repos_group_users_group_perm/{group_name:.*?}",
212 action="delete_repos_group_users_group_perm",
213 conditions=dict(method=["DELETE"], function=check_group))
214
220
215 #ADMIN USER REST ROUTES
221 #ADMIN USER REST ROUTES
216 with rmap.submapper(path_prefix=ADMIN_PREFIX,
222 with rmap.submapper(path_prefix=ADMIN_PREFIX,
@@ -269,7 +275,8 b' def make_map(config):'
269 m.connect("delete_users_group", "/users_groups/{id}",
275 m.connect("delete_users_group", "/users_groups/{id}",
270 action="delete", conditions=dict(method=["DELETE"]))
276 action="delete", conditions=dict(method=["DELETE"]))
271 m.connect("edit_users_group", "/users_groups/{id}/edit",
277 m.connect("edit_users_group", "/users_groups/{id}/edit",
272 action="edit", conditions=dict(method=["GET"]))
278 action="edit", conditions=dict(method=["GET"]),
279 function=check_user_group)
273 m.connect("formatted_edit_users_group",
280 m.connect("formatted_edit_users_group",
274 "/users_groups/{id}.{format}/edit",
281 "/users_groups/{id}.{format}/edit",
275 action="edit", conditions=dict(method=["GET"]))
282 action="edit", conditions=dict(method=["GET"]))
@@ -279,9 +286,20 b' def make_map(config):'
279 action="show", conditions=dict(method=["GET"]))
286 action="show", conditions=dict(method=["GET"]))
280
287
281 #EXTRAS USER ROUTES
288 #EXTRAS USER ROUTES
282 m.connect("users_group_perm", "/users_groups_perm/{id}",
289 # update
290 m.connect("users_group_perm", "/users_groups/{id}/update_global_perm",
283 action="update_perm", conditions=dict(method=["PUT"]))
291 action="update_perm", conditions=dict(method=["PUT"]))
284
292
293 #add user group perm member
294 m.connect('set_user_group_perm_member', "/users_groups/{id}/grant_perm",
295 action="set_user_group_perm_member",
296 conditions=dict(method=["POST"]))
297
298 #ajax delete user group perm
299 m.connect('delete_user_group_perm_member', "/users_groups/{id}/revoke_perm",
300 action="delete_user_group_perm_member",
301 conditions=dict(method=["DELETE"]))
302
285 #ADMIN GROUP REST ROUTES
303 #ADMIN GROUP REST ROUTES
286 rmap.resource('group', 'groups',
304 rmap.resource('group', 'groups',
287 controller='admin/groups', path_prefix=ADMIN_PREFIX)
305 controller='admin/groups', path_prefix=ADMIN_PREFIX)
@@ -352,27 +370,55 b' def make_map(config):'
352 action="new", conditions=dict(method=["GET"]))
370 action="new", conditions=dict(method=["GET"]))
353 m.connect("formatted_new_notification", "/notifications/new.{format}",
371 m.connect("formatted_new_notification", "/notifications/new.{format}",
354 action="new", conditions=dict(method=["GET"]))
372 action="new", conditions=dict(method=["GET"]))
355 m.connect("/notification/{notification_id}",
373 m.connect("/notifications/{notification_id}",
356 action="update", conditions=dict(method=["PUT"]))
374 action="update", conditions=dict(method=["PUT"]))
357 m.connect("/notification/{notification_id}",
375 m.connect("/notifications/{notification_id}",
358 action="delete", conditions=dict(method=["DELETE"]))
376 action="delete", conditions=dict(method=["DELETE"]))
359 m.connect("edit_notification", "/notification/{notification_id}/edit",
377 m.connect("edit_notification", "/notifications/{notification_id}/edit",
360 action="edit", conditions=dict(method=["GET"]))
378 action="edit", conditions=dict(method=["GET"]))
361 m.connect("formatted_edit_notification",
379 m.connect("formatted_edit_notification",
362 "/notification/{notification_id}.{format}/edit",
380 "/notifications/{notification_id}.{format}/edit",
363 action="edit", conditions=dict(method=["GET"]))
381 action="edit", conditions=dict(method=["GET"]))
364 m.connect("notification", "/notification/{notification_id}",
382 m.connect("notification", "/notifications/{notification_id}",
365 action="show", conditions=dict(method=["GET"]))
383 action="show", conditions=dict(method=["GET"]))
366 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
384 m.connect("formatted_notification", "/notifications/{notification_id}.{format}",
367 action="show", conditions=dict(method=["GET"]))
385 action="show", conditions=dict(method=["GET"]))
368
386
387 #ADMIN GIST
388 with rmap.submapper(path_prefix=ADMIN_PREFIX,
389 controller='admin/gists') as m:
390 m.connect("gists", "/gists",
391 action="create", conditions=dict(method=["POST"]))
392 m.connect("gists", "/gists",
393 action="index", conditions=dict(method=["GET"]))
394 m.connect("new_gist", "/gists/new",
395 action="new", conditions=dict(method=["GET"]))
396 m.connect("formatted_new_gist", "/gists/new.{format}",
397 action="new", conditions=dict(method=["GET"]))
398 m.connect("formatted_gists", "/gists.{format}",
399 action="index", conditions=dict(method=["GET"]))
400 m.connect("/gists/{gist_id}",
401 action="update", conditions=dict(method=["PUT"]))
402 m.connect("/gists/{gist_id}",
403 action="delete", conditions=dict(method=["DELETE"]))
404 m.connect("edit_gist", "/gists/{gist_id}/edit",
405 action="edit", conditions=dict(method=["GET"]))
406 m.connect("formatted_edit_gist",
407 "/gists/{gist_id}/{format}/edit",
408 action="edit", conditions=dict(method=["GET"]))
409 m.connect("gist", "/gists/{gist_id}",
410 action="show", conditions=dict(method=["GET"]))
411 m.connect("formatted_gist", "/gists/{gist_id}/{format}",
412 action="show", conditions=dict(method=["GET"]))
413 m.connect("formatted_gist_file", "/gists/{gist_id}/{format}/{revision}/{f_path:.*}",
414 action="show", conditions=dict(method=["GET"]))
415
369 #ADMIN MAIN PAGES
416 #ADMIN MAIN PAGES
370 with rmap.submapper(path_prefix=ADMIN_PREFIX,
417 with rmap.submapper(path_prefix=ADMIN_PREFIX,
371 controller='admin/admin') as m:
418 controller='admin/admin') as m:
372 m.connect('admin_home', '', action='index')
419 m.connect('admin_home', '', action='index')
373 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
420 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
374 action='add_repo')
421 action='add_repo')
375
376 #==========================================================================
422 #==========================================================================
377 # API V2
423 # API V2
378 #==========================================================================
424 #==========================================================================
@@ -500,6 +546,11 b' def make_map(config):'
500 controller='changeset', revision='tip', action='comment',
546 controller='changeset', revision='tip', action='comment',
501 conditions=dict(function=check_repo))
547 conditions=dict(function=check_repo))
502
548
549 rmap.connect('changeset_comment_preview',
550 '/{repo_name:.*?}/changeset/comment/preview',
551 controller='changeset', action='preview_comment',
552 conditions=dict(function=check_repo, method=["POST"]))
553
503 rmap.connect('changeset_comment_delete',
554 rmap.connect('changeset_comment_delete',
504 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
555 '/{repo_name:.*?}/changeset/comment/{comment_id}/delete',
505 controller='changeset', action='delete_comment',
556 controller='changeset', action='delete_comment',
@@ -563,13 +614,6 b' def make_map(config):'
563 rmap.connect('summary_home_summary', '/{repo_name:.*?}/summary',
614 rmap.connect('summary_home_summary', '/{repo_name:.*?}/summary',
564 controller='summary', conditions=dict(function=check_repo))
615 controller='summary', conditions=dict(function=check_repo))
565
616
566 rmap.connect('shortlog_home', '/{repo_name:.*?}/shortlog',
567 controller='shortlog', conditions=dict(function=check_repo))
568
569 rmap.connect('shortlog_file_home', '/{repo_name:.*?}/shortlog/{revision}/{f_path:.*}',
570 controller='shortlog', f_path=None,
571 conditions=dict(function=check_repo))
572
573 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
617 rmap.connect('branches_home', '/{repo_name:.*?}/branches',
574 controller='branches', conditions=dict(function=check_repo))
618 controller='branches', conditions=dict(function=check_repo))
575
619
@@ -582,6 +626,14 b' def make_map(config):'
582 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
626 rmap.connect('changelog_home', '/{repo_name:.*?}/changelog',
583 controller='changelog', conditions=dict(function=check_repo))
627 controller='changelog', conditions=dict(function=check_repo))
584
628
629 rmap.connect('changelog_summary_home', '/{repo_name:.*?}/changelog_summary',
630 controller='changelog', action='changelog_summary',
631 conditions=dict(function=check_repo))
632
633 rmap.connect('changelog_file_home', '/{repo_name:.*?}/changelog/{revision}/{f_path:.*}',
634 controller='changelog', f_path=None,
635 conditions=dict(function=check_repo))
636
585 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
637 rmap.connect('changelog_details', '/{repo_name:.*?}/changelog_details/{cs}',
586 controller='changelog', action='changelog_details',
638 controller='changelog', action='changelog_details',
587 conditions=dict(function=check_repo))
639 conditions=dict(function=check_repo))
@@ -27,17 +27,17 b' import logging'
27
27
28 from pylons import request, tmpl_context as c, url
28 from pylons import request, tmpl_context as c, url
29 from sqlalchemy.orm import joinedload
29 from sqlalchemy.orm import joinedload
30 from webhelpers.paginate import Page
31 from whoosh.qparser.default import QueryParser
30 from whoosh.qparser.default import QueryParser
31 from whoosh.qparser.dateparse import DateParserPlugin
32 from whoosh import query
32 from whoosh import query
33 from sqlalchemy.sql.expression import or_, and_, func
33 from sqlalchemy.sql.expression import or_, and_, func
34
34
35 from rhodecode.model.db import UserLog, User
35 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
36 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
36 from rhodecode.lib.base import BaseController, render
37 from rhodecode.lib.base import BaseController, render
37 from rhodecode.model.db import UserLog, User
38 from rhodecode.lib.utils2 import safe_int, remove_prefix, remove_suffix
38 from rhodecode.lib.utils2 import safe_int, remove_prefix, remove_suffix
39 from rhodecode.lib.indexers import JOURNAL_SCHEMA
39 from rhodecode.lib.indexers import JOURNAL_SCHEMA
40 from whoosh.qparser.dateparse import DateParserPlugin
40 from rhodecode.lib.helpers import Page
41
41
42
42
43 log = logging.getLogger(__name__)
43 log = logging.getLogger(__name__)
@@ -71,8 +71,6 b' class LdapSettingsController(BaseControl'
71 @LoginRequired()
71 @LoginRequired()
72 @HasPermissionAllDecorator('hg.admin')
72 @HasPermissionAllDecorator('hg.admin')
73 def __before__(self):
73 def __before__(self):
74 c.admin_user = session.get('admin_user')
75 c.admin_username = session.get('admin_username')
76 c.search_scope_choices = self.search_scope_choices
74 c.search_scope_choices = self.search_scope_choices
77 c.tls_reqcert_choices = self.tls_reqcert_choices
75 c.tls_reqcert_choices = self.tls_reqcert_choices
78 c.tls_kind_choices = self.tls_kind_choices
76 c.tls_kind_choices = self.tls_kind_choices
@@ -30,15 +30,13 b' from pylons import request'
30 from pylons import tmpl_context as c, url
30 from pylons import tmpl_context as c, url
31 from pylons.controllers.util import redirect, abort
31 from pylons.controllers.util import redirect, abort
32
32
33 from webhelpers.paginate import Page
33 from rhodecode.model.db import Notification
34
34 from rhodecode.model.notification import NotificationModel
35 from rhodecode.model.meta import Session
36 from rhodecode.lib.auth import LoginRequired, NotAnonymous
35 from rhodecode.lib.base import BaseController, render
37 from rhodecode.lib.base import BaseController, render
36 from rhodecode.model.db import Notification
37
38 from rhodecode.model.notification import NotificationModel
39 from rhodecode.lib.auth import LoginRequired, NotAnonymous
40 from rhodecode.lib import helpers as h
38 from rhodecode.lib import helpers as h
41 from rhodecode.model.meta import Session
39 from rhodecode.lib.helpers import Page
42 from rhodecode.lib.utils2 import safe_int
40 from rhodecode.lib.utils2 import safe_int
43
41
44
42
@@ -38,7 +38,7 b' from rhodecode.lib.auth import LoginRequ'
38 from rhodecode.lib.base import BaseController, render
38 from rhodecode.lib.base import BaseController, render
39 from rhodecode.model.forms import DefaultPermissionsForm
39 from rhodecode.model.forms import DefaultPermissionsForm
40 from rhodecode.model.permission import PermissionModel
40 from rhodecode.model.permission import PermissionModel
41 from rhodecode.model.db import User, UserIpMap
41 from rhodecode.model.db import User, UserIpMap, Permission
42 from rhodecode.model.meta import Session
42 from rhodecode.model.meta import Session
43
43
44 log = logging.getLogger(__name__)
44 log = logging.getLogger(__name__)
@@ -53,19 +53,21 b' class PermissionsController(BaseControll'
53 @LoginRequired()
53 @LoginRequired()
54 @HasPermissionAllDecorator('hg.admin')
54 @HasPermissionAllDecorator('hg.admin')
55 def __before__(self):
55 def __before__(self):
56 c.admin_user = session.get('admin_user')
57 c.admin_username = session.get('admin_username')
58 super(PermissionsController, self).__before__()
56 super(PermissionsController, self).__before__()
59
57
60 self.repo_perms_choices = [('repository.none', _('None'),),
58 c.repo_perms_choices = [('repository.none', _('None'),),
61 ('repository.read', _('Read'),),
59 ('repository.read', _('Read'),),
62 ('repository.write', _('Write'),),
60 ('repository.write', _('Write'),),
63 ('repository.admin', _('Admin'),)]
61 ('repository.admin', _('Admin'),)]
64 self.group_perms_choices = [('group.none', _('None'),),
62 c.group_perms_choices = [('group.none', _('None'),),
65 ('group.read', _('Read'),),
63 ('group.read', _('Read'),),
66 ('group.write', _('Write'),),
64 ('group.write', _('Write'),),
67 ('group.admin', _('Admin'),)]
65 ('group.admin', _('Admin'),)]
68 self.register_choices = [
66 c.user_group_perms_choices = [('usergroup.none', _('None'),),
67 ('usergroup.read', _('Read'),),
68 ('usergroup.write', _('Write'),),
69 ('usergroup.admin', _('Admin'),)]
70 c.register_choices = [
69 ('hg.register.none',
71 ('hg.register.none',
70 _('Disabled')),
72 _('Disabled')),
71 ('hg.register.manual_activate',
73 ('hg.register.manual_activate',
@@ -73,18 +75,22 b' class PermissionsController(BaseControll'
73 ('hg.register.auto_activate',
75 ('hg.register.auto_activate',
74 _('Allowed with automatic account activation')), ]
76 _('Allowed with automatic account activation')), ]
75
77
76 self.create_choices = [('hg.create.none', _('Disabled')),
78 c.extern_activate_choices = [
77 ('hg.create.repository', _('Enabled'))]
79 ('hg.extern_activate.manual', _('Manual activation of external account')),
80 ('hg.extern_activate.auto', _('Automatic activation of external account')),
81 ]
78
82
79 self.fork_choices = [('hg.fork.none', _('Disabled')),
83 c.repo_create_choices = [('hg.create.none', _('Disabled')),
80 ('hg.fork.repository', _('Enabled'))]
84 ('hg.create.repository', _('Enabled'))]
81
85
82 # set the global template variables
86 c.user_group_create_choices = [('hg.usergroup.create.false', _('Disabled')),
83 c.repo_perms_choices = self.repo_perms_choices
87 ('hg.usergroup.create.true', _('Enabled'))]
84 c.group_perms_choices = self.group_perms_choices
88
85 c.register_choices = self.register_choices
89 c.repo_group_create_choices = [('hg.repogroup.create.false', _('Disabled')),
86 c.create_choices = self.create_choices
90 ('hg.repogroup.create.true', _('Enabled'))]
87 c.fork_choices = self.fork_choices
91
92 c.fork_choices = [('hg.fork.none', _('Disabled')),
93 ('hg.fork.repository', _('Enabled'))]
88
94
89 def index(self, format='html'):
95 def index(self, format='html'):
90 """GET /permissions: All items in the collection"""
96 """GET /permissions: All items in the collection"""
@@ -107,23 +113,27 b' class PermissionsController(BaseControll'
107 # method='put')
113 # method='put')
108 # url('permission', id=ID)
114 # url('permission', id=ID)
109 if id == 'default':
115 if id == 'default':
110 c.user = default_user = User.get_by_username('default')
116 c.user = default_user = User.get_default_user()
111 c.perm_user = AuthUser(user_id=default_user.user_id)
117 c.perm_user = AuthUser(user_id=default_user.user_id)
112 c.user_ip_map = UserIpMap.query()\
118 c.user_ip_map = UserIpMap.query()\
113 .filter(UserIpMap.user == default_user).all()
119 .filter(UserIpMap.user == default_user).all()
114 permission_model = PermissionModel()
115
120
116 _form = DefaultPermissionsForm(
121 _form = DefaultPermissionsForm(
117 [x[0] for x in self.repo_perms_choices],
122 [x[0] for x in c.repo_perms_choices],
118 [x[0] for x in self.group_perms_choices],
123 [x[0] for x in c.group_perms_choices],
119 [x[0] for x in self.register_choices],
124 [x[0] for x in c.user_group_perms_choices],
120 [x[0] for x in self.create_choices],
125 [x[0] for x in c.repo_create_choices],
121 [x[0] for x in self.fork_choices])()
126 [x[0] for x in c.repo_group_create_choices],
127 [x[0] for x in c.user_group_create_choices],
128 [x[0] for x in c.fork_choices],
129 [x[0] for x in c.register_choices],
130 [x[0] for x in c.extern_activate_choices],
131 )()
122
132
123 try:
133 try:
124 form_result = _form.to_python(dict(request.POST))
134 form_result = _form.to_python(dict(request.POST))
125 form_result.update({'perm_user_name': id})
135 form_result.update({'perm_user_name': id})
126 permission_model.update(form_result)
136 PermissionModel().update(form_result)
127 Session().commit()
137 Session().commit()
128 h.flash(_('Default permissions updated successfully'),
138 h.flash(_('Default permissions updated successfully'),
129 category='success')
139 category='success')
@@ -156,6 +166,7 b' class PermissionsController(BaseControll'
156 def show(self, id, format='html'):
166 def show(self, id, format='html'):
157 """GET /permissions/id: Show a specific item"""
167 """GET /permissions/id: Show a specific item"""
158 # url('permission', id=ID)
168 # url('permission', id=ID)
169 Permission.get_or_404(-1)
159
170
160 def edit(self, id, format='html'):
171 def edit(self, id, format='html'):
161 """GET /permissions/id/edit: Form to edit an existing item"""
172 """GET /permissions/id/edit: Form to edit an existing item"""
@@ -163,23 +174,35 b' class PermissionsController(BaseControll'
163
174
164 #this form can only edit default user permissions
175 #this form can only edit default user permissions
165 if id == 'default':
176 if id == 'default':
166 c.user = default_user = User.get_by_username('default')
177 c.user = User.get_default_user()
167 defaults = {'anonymous': default_user.active}
178 defaults = {'anonymous': c.user.active}
168 c.perm_user = AuthUser(user_id=default_user.user_id)
179 c.perm_user = c.user.AuthUser
169 c.user_ip_map = UserIpMap.query()\
180 c.user_ip_map = UserIpMap.query()\
170 .filter(UserIpMap.user == default_user).all()
181 .filter(UserIpMap.user == c.user).all()
171 for p in default_user.user_perms:
182 for p in c.user.user_perms:
172 if p.permission.permission_name.startswith('repository.'):
183 if p.permission.permission_name.startswith('repository.'):
173 defaults['default_repo_perm'] = p.permission.permission_name
184 defaults['default_repo_perm'] = p.permission.permission_name
174
185
175 if p.permission.permission_name.startswith('group.'):
186 if p.permission.permission_name.startswith('group.'):
176 defaults['default_group_perm'] = p.permission.permission_name
187 defaults['default_group_perm'] = p.permission.permission_name
177
188
189 if p.permission.permission_name.startswith('usergroup.'):
190 defaults['default_user_group_perm'] = p.permission.permission_name
191
192 if p.permission.permission_name.startswith('hg.create.'):
193 defaults['default_repo_create'] = p.permission.permission_name
194
195 if p.permission.permission_name.startswith('hg.repogroup.'):
196 defaults['default_repo_group_create'] = p.permission.permission_name
197
198 if p.permission.permission_name.startswith('hg.usergroup.'):
199 defaults['default_user_group_create'] = p.permission.permission_name
200
178 if p.permission.permission_name.startswith('hg.register.'):
201 if p.permission.permission_name.startswith('hg.register.'):
179 defaults['default_register'] = p.permission.permission_name
202 defaults['default_register'] = p.permission.permission_name
180
203
181 if p.permission.permission_name.startswith('hg.create.'):
204 if p.permission.permission_name.startswith('hg.extern_activate.'):
182 defaults['default_create'] = p.permission.permission_name
205 defaults['default_extern_activate'] = p.permission.permission_name
183
206
184 if p.permission.permission_name.startswith('hg.fork.'):
207 if p.permission.permission_name.startswith('hg.fork.'):
185 defaults['default_fork'] = p.permission.permission_name
208 defaults['default_fork'] = p.permission.permission_name
@@ -40,17 +40,18 b' from rhodecode.lib.auth import LoginRequ'
40 HasPermissionAnyDecorator, HasRepoPermissionAllDecorator, NotAnonymous,\
40 HasPermissionAnyDecorator, HasRepoPermissionAllDecorator, NotAnonymous,\
41 HasPermissionAny, HasReposGroupPermissionAny, HasRepoPermissionAnyDecorator
41 HasPermissionAny, HasReposGroupPermissionAny, HasRepoPermissionAnyDecorator
42 from rhodecode.lib.base import BaseRepoController, render
42 from rhodecode.lib.base import BaseRepoController, render
43 from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug
43 from rhodecode.lib.utils import action_logger, repo_name_slug
44 from rhodecode.lib.helpers import get_token
44 from rhodecode.lib.helpers import get_token
45 from rhodecode.model.meta import Session
45 from rhodecode.model.meta import Session
46 from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\
46 from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup,\
47 RhodeCodeSetting, RepositoryField
47 RhodeCodeSetting, RepositoryField
48 from rhodecode.model.forms import RepoForm, RepoFieldForm, RepoPermsForm
48 from rhodecode.model.forms import RepoForm, RepoFieldForm, RepoPermsForm
49 from rhodecode.model.scm import ScmModel, GroupList
49 from rhodecode.model.scm import ScmModel, RepoGroupList, RepoList
50 from rhodecode.model.repo import RepoModel
50 from rhodecode.model.repo import RepoModel
51 from rhodecode.lib.compat import json
51 from rhodecode.lib.compat import json
52 from sqlalchemy.sql.expression import func
52 from sqlalchemy.sql.expression import func
53 from rhodecode.lib.exceptions import AttachedForksError
53 from rhodecode.lib.exceptions import AttachedForksError
54 from rhodecode.lib.utils2 import safe_int
54
55
55 log = logging.getLogger(__name__)
56 log = logging.getLogger(__name__)
56
57
@@ -64,12 +65,10 b' class ReposController(BaseRepoController'
64
65
65 @LoginRequired()
66 @LoginRequired()
66 def __before__(self):
67 def __before__(self):
67 c.admin_user = session.get('admin_user')
68 c.admin_username = session.get('admin_username')
69 super(ReposController, self).__before__()
68 super(ReposController, self).__before__()
70
69
71 def __load_defaults(self):
70 def __load_defaults(self):
72 acl_groups = GroupList(RepoGroup.query().all(),
71 acl_groups = RepoGroupList(RepoGroup.query().all(),
73 perm_set=['group.write', 'group.admin'])
72 perm_set=['group.write', 'group.admin'])
74 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
73 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
75 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
74 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
@@ -99,7 +98,7 b' class ReposController(BaseRepoController'
99 choices, c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
98 choices, c.landing_revs = ScmModel().get_repo_landing_revs(c.repo_info)
100 c.landing_revs_choices = choices
99 c.landing_revs_choices = choices
101
100
102 c.default_user_id = User.get_by_username('default').user_id
101 c.default_user_id = User.get_default_user().user_id
103 c.in_public_journal = UserFollowing.query()\
102 c.in_public_journal = UserFollowing.query()\
104 .filter(UserFollowing.user_id == c.default_user_id)\
103 .filter(UserFollowing.user_id == c.default_user_id)\
105 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
104 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
@@ -124,23 +123,24 b' class ReposController(BaseRepoController'
124
123
125 defaults = RepoModel()._get_defaults(repo_name)
124 defaults = RepoModel()._get_defaults(repo_name)
126
125
126 _repos = Repository.query().order_by(Repository.repo_name).all()
127 read_access_repos = RepoList(_repos)
127 c.repos_list = [('', _('--REMOVE FORK--'))]
128 c.repos_list = [('', _('--REMOVE FORK--'))]
128 c.repos_list += [(x.repo_id, x.repo_name) for x in
129 c.repos_list += [(x.repo_id, x.repo_name)
129 Repository.query().order_by(Repository.repo_name).all()
130 for x in read_access_repos
130 if x.repo_id != c.repo_info.repo_id]
131 if x.repo_id != c.repo_info.repo_id]
131
132
132 defaults['id_fork_of'] = db_repo.fork.repo_id if db_repo.fork else ''
133 defaults['id_fork_of'] = db_repo.fork.repo_id if db_repo.fork else ''
133 return defaults
134 return defaults
134
135
135 @HasPermissionAllDecorator('hg.admin')
136 def index(self, format='html'):
136 def index(self, format='html'):
137 """GET /repos: All items in the collection"""
137 """GET /repos: All items in the collection"""
138 # url('repos')
138 # url('repos')
139 repo_list = Repository.query()\
140 .order_by(func.lower(Repository.repo_name))\
141 .all()
139
142
140 c.repos_list = Repository.query()\
143 c.repos_list = RepoList(repo_list, perm_set=['repository.admin'])
141 .order_by(func.lower(Repository.repo_name))\
142 .all()
143
144 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
144 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
145 admin=True,
145 admin=True,
146 super_user_actions=True)
146 super_user_actions=True)
@@ -216,7 +216,7 b' class ReposController(BaseRepoController'
216 if not HasReposGroupPermissionAny('group.admin', 'group.write')(group_name=gr_name):
216 if not HasReposGroupPermissionAny('group.admin', 'group.write')(group_name=gr_name):
217 raise HTTPForbidden
217 raise HTTPForbidden
218
218
219 acl_groups = GroupList(RepoGroup.query().all(),
219 acl_groups = RepoGroupList(RepoGroup.query().all(),
220 perm_set=['group.write', 'group.admin'])
220 perm_set=['group.write', 'group.admin'])
221 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
221 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
222 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
222 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
@@ -266,7 +266,7 b' class ReposController(BaseRepoController'
266 try:
266 try:
267 form_result = _form.to_python(dict(request.POST))
267 form_result = _form.to_python(dict(request.POST))
268 repo = repo_model.update(repo_name, **form_result)
268 repo = repo_model.update(repo_name, **form_result)
269 invalidate_cache('get_repo_cached_%s' % repo_name)
269 ScmModel().mark_for_invalidation(repo_name)
270 h.flash(_('Repository %s updated successfully') % repo_name,
270 h.flash(_('Repository %s updated successfully') % repo_name,
271 category='success')
271 category='success')
272 changed_name = repo.repo_name
272 changed_name = repo.repo_name
@@ -319,7 +319,7 b' class ReposController(BaseRepoController'
319 repo_model.delete(repo, forks=handle_forks)
319 repo_model.delete(repo, forks=handle_forks)
320 action_logger(self.rhodecode_user, 'admin_deleted_repo',
320 action_logger(self.rhodecode_user, 'admin_deleted_repo',
321 repo_name, self.ip_addr, self.sa)
321 repo_name, self.ip_addr, self.sa)
322 invalidate_cache('get_repo_cached_%s' % repo_name)
322 ScmModel().mark_for_invalidation(repo_name)
323 h.flash(_('Deleted repository %s') % repo_name, category='success')
323 h.flash(_('Deleted repository %s') % repo_name, category='success')
324 Session().commit()
324 Session().commit()
325 except AttachedForksError:
325 except AttachedForksError:
@@ -336,32 +336,8 b' class ReposController(BaseRepoController'
336 @HasRepoPermissionAllDecorator('repository.admin')
336 @HasRepoPermissionAllDecorator('repository.admin')
337 def set_repo_perm_member(self, repo_name):
337 def set_repo_perm_member(self, repo_name):
338 form = RepoPermsForm()().to_python(request.POST)
338 form = RepoPermsForm()().to_python(request.POST)
339
339 RepoModel()._update_permissions(repo_name, form['perms_new'],
340 perms_new = form['perms_new']
340 form['perms_updates'])
341 perms_updates = form['perms_updates']
342 cur_repo = repo_name
343
344 # update permissions
345 for member, perm, member_type in perms_updates:
346 if member_type == 'user':
347 # this updates existing one
348 RepoModel().grant_user_permission(
349 repo=cur_repo, user=member, perm=perm
350 )
351 else:
352 RepoModel().grant_users_group_permission(
353 repo=cur_repo, group_name=member, perm=perm
354 )
355 # set new permissions
356 for member, perm, member_type in perms_new:
357 if member_type == 'user':
358 RepoModel().grant_user_permission(
359 repo=cur_repo, user=member, perm=perm
360 )
361 else:
362 RepoModel().grant_users_group_permission(
363 repo=cur_repo, group_name=member, perm=perm
364 )
365 #TODO: implement this
341 #TODO: implement this
366 #action_logger(self.rhodecode_user, 'admin_changed_repo_permissions',
342 #action_logger(self.rhodecode_user, 'admin_changed_repo_permissions',
367 # repo_name, self.ip_addr, self.sa)
343 # repo_name, self.ip_addr, self.sa)
@@ -370,42 +346,33 b' class ReposController(BaseRepoController'
370 return redirect(url('edit_repo', repo_name=repo_name))
346 return redirect(url('edit_repo', repo_name=repo_name))
371
347
372 @HasRepoPermissionAllDecorator('repository.admin')
348 @HasRepoPermissionAllDecorator('repository.admin')
373 def delete_perm_user(self, repo_name):
349 def delete_repo_perm_member(self, repo_name):
374 """
350 """
375 DELETE an existing repository permission user
351 DELETE an existing repository permission user
376
352
377 :param repo_name:
353 :param repo_name:
378 """
354 """
379 try:
355 try:
380 RepoModel().revoke_user_permission(repo=repo_name,
356 obj_type = request.POST.get('obj_type')
381 user=request.POST['user_id'])
357 obj_id = None
358 if obj_type == 'user':
359 obj_id = safe_int(request.POST.get('user_id'))
360 elif obj_type == 'user_group':
361 obj_id = safe_int(request.POST.get('user_group_id'))
362
363 if obj_type == 'user':
364 RepoModel().revoke_user_permission(repo=repo_name, user=obj_id)
365 elif obj_type == 'user_group':
366 RepoModel().revoke_users_group_permission(
367 repo=repo_name, group_name=obj_id
368 )
382 #TODO: implement this
369 #TODO: implement this
383 #action_logger(self.rhodecode_user, 'admin_revoked_repo_permissions',
370 #action_logger(self.rhodecode_user, 'admin_revoked_repo_permissions',
384 # repo_name, self.ip_addr, self.sa)
371 # repo_name, self.ip_addr, self.sa)
385 Session().commit()
372 Session().commit()
386 except Exception:
373 except Exception:
387 log.error(traceback.format_exc())
374 log.error(traceback.format_exc())
388 h.flash(_('An error occurred during deletion of repository user'),
375 h.flash(_('An error occurred during revoking of permission'),
389 category='error')
390 raise HTTPInternalServerError()
391
392 @HasRepoPermissionAllDecorator('repository.admin')
393 def delete_perm_users_group(self, repo_name):
394 """
395 DELETE an existing repository permission user group
396
397 :param repo_name:
398 """
399
400 try:
401 RepoModel().revoke_users_group_permission(
402 repo=repo_name, group_name=request.POST['users_group_id']
403 )
404 Session().commit()
405 except Exception:
406 log.error(traceback.format_exc())
407 h.flash(_('An error occurred during deletion of repository'
408 ' user groups'),
409 category='error')
376 category='error')
410 raise HTTPInternalServerError()
377 raise HTTPInternalServerError()
411
378
@@ -504,7 +471,7 b' class ReposController(BaseRepoController'
504 if cur_token == token:
471 if cur_token == token:
505 try:
472 try:
506 repo_id = Repository.get_by_repo_name(repo_name).repo_id
473 repo_id = Repository.get_by_repo_name(repo_name).repo_id
507 user_id = User.get_by_username('default').user_id
474 user_id = User.get_default_user().user_id
508 self.scm_model.toggle_following_repo(repo_id, user_id)
475 self.scm_model.toggle_following_repo(repo_id, user_id)
509 h.flash(_('Updated repository visibility in public journal'),
476 h.flash(_('Updated repository visibility in public journal'),
510 category='success')
477 category='success')
@@ -530,6 +497,7 b' class ReposController(BaseRepoController'
530 ScmModel().pull_changes(repo_name, self.rhodecode_user.username)
497 ScmModel().pull_changes(repo_name, self.rhodecode_user.username)
531 h.flash(_('Pulled from remote location'), category='success')
498 h.flash(_('Pulled from remote location'), category='success')
532 except Exception, e:
499 except Exception, e:
500 log.error(traceback.format_exc())
533 h.flash(_('An error occurred during pull from remote location'),
501 h.flash(_('An error occurred during pull from remote location'),
534 category='error')
502 category='error')
535
503
@@ -37,20 +37,21 b' from sqlalchemy.exc import IntegrityErro'
37
37
38 import rhodecode
38 import rhodecode
39 from rhodecode.lib import helpers as h
39 from rhodecode.lib import helpers as h
40 from rhodecode.lib.ext_json import json
40 from rhodecode.lib.compat import json
41 from rhodecode.lib.auth import LoginRequired, HasPermissionAnyDecorator,\
41 from rhodecode.lib.auth import LoginRequired, HasPermissionAnyDecorator,\
42 HasReposGroupPermissionAnyDecorator, HasReposGroupPermissionAll,\
42 HasReposGroupPermissionAnyDecorator, HasReposGroupPermissionAll,\
43 HasPermissionAll
43 HasPermissionAll
44 from rhodecode.lib.base import BaseController, render
44 from rhodecode.lib.base import BaseController, render
45 from rhodecode.model.db import RepoGroup, Repository
45 from rhodecode.model.db import RepoGroup, Repository
46 from rhodecode.model.scm import RepoGroupList
46 from rhodecode.model.repos_group import ReposGroupModel
47 from rhodecode.model.repos_group import ReposGroupModel
47 from rhodecode.model.forms import ReposGroupForm
48 from rhodecode.model.forms import ReposGroupForm, RepoGroupPermsForm
48 from rhodecode.model.meta import Session
49 from rhodecode.model.meta import Session
49 from rhodecode.model.repo import RepoModel
50 from rhodecode.model.repo import RepoModel
50 from webob.exc import HTTPInternalServerError, HTTPNotFound
51 from webob.exc import HTTPInternalServerError, HTTPNotFound
51 from rhodecode.lib.utils2 import str2bool, safe_int
52 from rhodecode.lib.utils2 import str2bool, safe_int
52 from sqlalchemy.sql.expression import func
53 from sqlalchemy.sql.expression import func
53 from rhodecode.model.scm import GroupList
54
54
55
55 log = logging.getLogger(__name__)
56 log = logging.getLogger(__name__)
56
57
@@ -72,7 +73,7 b' class ReposGroupsController(BaseControll'
72
73
73 #override the choices for this form, we need to filter choices
74 #override the choices for this form, we need to filter choices
74 #and display only those we have ADMIN right
75 #and display only those we have ADMIN right
75 groups_with_admin_rights = GroupList(RepoGroup.query().all(),
76 groups_with_admin_rights = RepoGroupList(RepoGroup.query().all(),
76 perm_set=['group.admin'])
77 perm_set=['group.admin'])
77 c.repo_groups = RepoGroup.groups_choices(groups=groups_with_admin_rights,
78 c.repo_groups = RepoGroup.groups_choices(groups=groups_with_admin_rights,
78 show_empty_group=allow_empty_group)
79 show_empty_group=allow_empty_group)
@@ -94,12 +95,12 b' class ReposGroupsController(BaseControll'
94 data = repo_group.get_dict()
95 data = repo_group.get_dict()
95 data['group_name'] = repo_group.name
96 data['group_name'] = repo_group.name
96
97
97 # fill repository users
98 # fill repository group users
98 for p in repo_group.repo_group_to_perm:
99 for p in repo_group.repo_group_to_perm:
99 data.update({'u_perm_%s' % p.user.username:
100 data.update({'u_perm_%s' % p.user.username:
100 p.permission.permission_name})
101 p.permission.permission_name})
101
102
102 # fill repository groups
103 # fill repository group groups
103 for p in repo_group.users_group_to_perm:
104 for p in repo_group.users_group_to_perm:
104 data.update({'g_perm_%s' % p.users_group.users_group_name:
105 data.update({'g_perm_%s' % p.users_group.users_group_name:
105 p.permission.permission_name})
106 p.permission.permission_name})
@@ -118,7 +119,8 b' class ReposGroupsController(BaseControll'
118 def index(self, format='html'):
119 def index(self, format='html'):
119 """GET /repos_groups: All items in the collection"""
120 """GET /repos_groups: All items in the collection"""
120 # url('repos_groups')
121 # url('repos_groups')
121 group_iter = GroupList(RepoGroup.query().all(), perm_set=['group.admin'])
122 group_iter = RepoGroupList(RepoGroup.query().all(),
123 perm_set=['group.admin'])
122 sk = lambda g: g.parents[0].group_name if g.parents else g.group_name
124 sk = lambda g: g.parents[0].group_name if g.parents else g.group_name
123 c.groups = sorted(group_iter, key=sk)
125 c.groups = sorted(group_iter, key=sk)
124 return render('admin/repos_groups/repos_groups_show.html')
126 return render('admin/repos_groups/repos_groups_show.html')
@@ -190,7 +192,7 b' class ReposGroupsController(BaseControll'
190 # method='put')
192 # method='put')
191 # url('repos_group', group_name=GROUP_NAME)
193 # url('repos_group', group_name=GROUP_NAME)
192
194
193 c.repos_group = ReposGroupModel()._get_repos_group(group_name)
195 c.repos_group = ReposGroupModel()._get_repo_group(group_name)
194 if HasPermissionAll('hg.admin')('group edit'):
196 if HasPermissionAll('hg.admin')('group edit'):
195 #we're global admin, we're ok and we can create TOP level groups
197 #we're global admin, we're ok and we can create TOP level groups
196 allow_empty_group = True
198 allow_empty_group = True
@@ -209,11 +211,6 b' class ReposGroupsController(BaseControll'
209 )()
211 )()
210 try:
212 try:
211 form_result = repos_group_form.to_python(dict(request.POST))
213 form_result = repos_group_form.to_python(dict(request.POST))
212 if not c.rhodecode_user.is_admin:
213 if self._revoke_perms_on_yourself(form_result):
214 msg = _('Cannot revoke permission for yourself as admin')
215 h.flash(msg, category='warning')
216 raise Exception('revoke admin permission on self')
217
214
218 new_gr = ReposGroupModel().update(group_name, form_result)
215 new_gr = ReposGroupModel().update(group_name, form_result)
219 Session().commit()
216 Session().commit()
@@ -247,7 +244,7 b' class ReposGroupsController(BaseControll'
247 # method='delete')
244 # method='delete')
248 # url('repos_group', group_name=GROUP_NAME)
245 # url('repos_group', group_name=GROUP_NAME)
249
246
250 gr = c.repos_group = ReposGroupModel()._get_repos_group(group_name)
247 gr = c.repos_group = ReposGroupModel()._get_repo_group(group_name)
251 repos = gr.repositories.all()
248 repos = gr.repositories.all()
252 if repos:
249 if repos:
253 h.flash(_('This group contains %s repositores and cannot be '
250 h.flash(_('This group contains %s repositores and cannot be '
@@ -268,55 +265,71 b' class ReposGroupsController(BaseControll'
268 #TODO: in future action_logger(, '', '', '', self.sa)
265 #TODO: in future action_logger(, '', '', '', self.sa)
269 except Exception:
266 except Exception:
270 log.error(traceback.format_exc())
267 log.error(traceback.format_exc())
271 h.flash(_('Error occurred during deletion of repos '
268 h.flash(_('Error occurred during deletion of repository group %s')
272 'group %s') % group_name, category='error')
269 % group_name, category='error')
273
270
274 return redirect(url('repos_groups'))
271 return redirect(url('repos_groups'))
275
272
276 @HasReposGroupPermissionAnyDecorator('group.admin')
273 @HasReposGroupPermissionAnyDecorator('group.admin')
277 def delete_repos_group_user_perm(self, group_name):
274 def set_repo_group_perm_member(self, group_name):
275 c.repos_group = ReposGroupModel()._get_repo_group(group_name)
276 form_result = RepoGroupPermsForm()().to_python(request.POST)
277 if not c.rhodecode_user.is_admin:
278 if self._revoke_perms_on_yourself(form_result):
279 msg = _('Cannot revoke permission for yourself as admin')
280 h.flash(msg, category='warning')
281 return redirect(url('edit_repos_group', group_name=group_name))
282 recursive = form_result['recursive']
283 # iterate over all members(if in recursive mode) of this groups and
284 # set the permissions !
285 # this can be potentially heavy operation
286 ReposGroupModel()._update_permissions(c.repos_group,
287 form_result['perms_new'],
288 form_result['perms_updates'],
289 recursive)
290 #TODO: implement this
291 #action_logger(self.rhodecode_user, 'admin_changed_repo_permissions',
292 # repo_name, self.ip_addr, self.sa)
293 Session().commit()
294 h.flash(_('Repository Group permissions updated'), category='success')
295 return redirect(url('edit_repos_group', group_name=group_name))
296
297 @HasReposGroupPermissionAnyDecorator('group.admin')
298 def delete_repo_group_perm_member(self, group_name):
278 """
299 """
279 DELETE an existing repository group permission user
300 DELETE an existing repository group permission user
280
301
281 :param group_name:
302 :param group_name:
282 """
303 """
283 try:
304 try:
305 obj_type = request.POST.get('obj_type')
306 obj_id = None
307 if obj_type == 'user':
308 obj_id = safe_int(request.POST.get('user_id'))
309 elif obj_type == 'user_group':
310 obj_id = safe_int(request.POST.get('user_group_id'))
311
284 if not c.rhodecode_user.is_admin:
312 if not c.rhodecode_user.is_admin:
285 if c.rhodecode_user.user_id == safe_int(request.POST['user_id']):
313 if obj_type == 'user' and c.rhodecode_user.user_id == obj_id:
286 msg = _('Cannot revoke permission for yourself as admin')
314 msg = _('Cannot revoke permission for yourself as admin')
287 h.flash(msg, category='warning')
315 h.flash(msg, category='warning')
288 raise Exception('revoke admin permission on self')
316 raise Exception('revoke admin permission on self')
289 recursive = str2bool(request.POST.get('recursive', False))
317 recursive = str2bool(request.POST.get('recursive', False))
290 ReposGroupModel().delete_permission(
318 if obj_type == 'user':
291 repos_group=group_name, obj=request.POST['user_id'],
319 ReposGroupModel().delete_permission(
292 obj_type='user', recursive=recursive
320 repos_group=group_name, obj=obj_id,
293 )
321 obj_type='user', recursive=recursive
322 )
323 elif obj_type == 'user_group':
324 ReposGroupModel().delete_permission(
325 repos_group=group_name, obj=obj_id,
326 obj_type='users_group', recursive=recursive
327 )
328
294 Session().commit()
329 Session().commit()
295 except Exception:
330 except Exception:
296 log.error(traceback.format_exc())
331 log.error(traceback.format_exc())
297 h.flash(_('An error occurred during deletion of group user'),
332 h.flash(_('An error occurred during revoking of permission'),
298 category='error')
299 raise HTTPInternalServerError()
300
301 @HasReposGroupPermissionAnyDecorator('group.admin')
302 def delete_repos_group_users_group_perm(self, group_name):
303 """
304 DELETE an existing repository group permission user group
305
306 :param group_name:
307 """
308
309 try:
310 recursive = str2bool(request.POST.get('recursive', False))
311 ReposGroupModel().delete_permission(
312 repos_group=group_name, obj=request.POST['users_group_id'],
313 obj_type='users_group', recursive=recursive
314 )
315 Session().commit()
316 except Exception:
317 log.error(traceback.format_exc())
318 h.flash(_('An error occurred during deletion of group'
319 ' user groups'),
320 category='error')
333 category='error')
321 raise HTTPInternalServerError()
334 raise HTTPInternalServerError()
322
335
@@ -337,7 +350,7 b' class ReposGroupsController(BaseControll'
337 """GET /repos_groups/group_name: Show a specific item"""
350 """GET /repos_groups/group_name: Show a specific item"""
338 # url('repos_group', group_name=GROUP_NAME)
351 # url('repos_group', group_name=GROUP_NAME)
339
352
340 c.group = c.repos_group = ReposGroupModel()._get_repos_group(group_name)
353 c.group = c.repos_group = ReposGroupModel()._get_repo_group(group_name)
341 c.group_repos = c.group.repositories.all()
354 c.group_repos = c.group.repositories.all()
342
355
343 #overwrite our cached list with current filter
356 #overwrite our cached list with current filter
@@ -348,19 +361,15 b' class ReposGroupsController(BaseControll'
348 .filter(RepoGroup.group_parent_id == c.group.group_id).all()
361 .filter(RepoGroup.group_parent_id == c.group.group_id).all()
349 c.groups = self.scm_model.get_repos_groups(groups)
362 c.groups = self.scm_model.get_repos_groups(groups)
350
363
351 if not c.visual.lightweight_dashboard:
364 c.repos_list = Repository.query()\
352 c.repos_list = self.scm_model.get_repos(all_repos=gr_filter)
365 .filter(Repository.group_id == c.group.group_id)\
353 ## lightweight version of dashboard
366 .order_by(func.lower(Repository.repo_name))\
354 else:
367 .all()
355 c.repos_list = Repository.query()\
356 .filter(Repository.group_id == c.group.group_id)\
357 .order_by(func.lower(Repository.repo_name))\
358 .all()
359
368
360 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
369 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
361 admin=False)
370 admin=False)
362 #json used to render the grid
371 #json used to render the grid
363 c.data = json.dumps(repos_data)
372 c.data = json.dumps(repos_data)
364
373
365 return render('admin/repos_groups/repos_groups.html')
374 return render('admin/repos_groups/repos_groups.html')
366
375
@@ -369,7 +378,7 b' class ReposGroupsController(BaseControll'
369 """GET /repos_groups/group_name/edit: Form to edit an existing item"""
378 """GET /repos_groups/group_name/edit: Form to edit an existing item"""
370 # url('edit_repos_group', group_name=GROUP_NAME)
379 # url('edit_repos_group', group_name=GROUP_NAME)
371
380
372 c.repos_group = ReposGroupModel()._get_repos_group(group_name)
381 c.repos_group = ReposGroupModel()._get_repo_group(group_name)
373 #we can only allow moving empty group if it's already a top-level
382 #we can only allow moving empty group if it's already a top-level
374 #group, ie has no parents, or we're admin
383 #group, ie has no parents, or we're admin
375 if HasPermissionAll('hg.admin')('group edit'):
384 if HasPermissionAll('hg.admin')('group edit'):
@@ -41,13 +41,13 b' from rhodecode.lib.auth import LoginRequ'
41 HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser
41 HasReposGroupPermissionAll, HasReposGroupPermissionAny, AuthUser
42 from rhodecode.lib.base import BaseController, render
42 from rhodecode.lib.base import BaseController, render
43 from rhodecode.lib.celerylib import tasks, run_task
43 from rhodecode.lib.celerylib import tasks, run_task
44 from rhodecode.lib.utils import repo2db_mapper, invalidate_cache, \
44 from rhodecode.lib.utils import repo2db_mapper, set_rhodecode_config, \
45 set_rhodecode_config, repo_name_slug, check_git_version
45 check_git_version
46 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \
46 from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \
47 RhodeCodeSetting, PullRequest, PullRequestReviewers
47 RhodeCodeSetting, PullRequest, PullRequestReviewers
48 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
48 from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
49 ApplicationUiSettingsForm, ApplicationVisualisationForm
49 ApplicationUiSettingsForm, ApplicationVisualisationForm
50 from rhodecode.model.scm import ScmModel, GroupList
50 from rhodecode.model.scm import ScmModel, RepoGroupList
51 from rhodecode.model.user import UserModel
51 from rhodecode.model.user import UserModel
52 from rhodecode.model.repo import RepoModel
52 from rhodecode.model.repo import RepoModel
53 from rhodecode.model.db import User
53 from rhodecode.model.db import User
@@ -55,7 +55,6 b' from rhodecode.model.notification import'
55 from rhodecode.model.meta import Session
55 from rhodecode.model.meta import Session
56 from rhodecode.lib.utils2 import str2bool, safe_unicode
56 from rhodecode.lib.utils2 import str2bool, safe_unicode
57 from rhodecode.lib.compat import json
57 from rhodecode.lib.compat import json
58 from webob.exc import HTTPForbidden
59 log = logging.getLogger(__name__)
58 log = logging.getLogger(__name__)
60
59
61
60
@@ -68,15 +67,13 b' class SettingsController(BaseController)'
68
67
69 @LoginRequired()
68 @LoginRequired()
70 def __before__(self):
69 def __before__(self):
71 c.admin_user = session.get('admin_user')
70 super(SettingsController, self).__before__()
72 c.admin_username = session.get('admin_username')
73 c.modules = sorted([(p.project_name, p.version)
71 c.modules = sorted([(p.project_name, p.version)
74 for p in pkg_resources.working_set]
72 for p in pkg_resources.working_set]
75 + [('git', check_git_version())],
73 + [('git', check_git_version())],
76 key=lambda k: k[0].lower())
74 key=lambda k: k[0].lower())
77 c.py_version = platform.python_version()
75 c.py_version = platform.python_version()
78 c.platform = platform.platform()
76 c.platform = platform.platform()
79 super(SettingsController, self).__before__()
80
77
81 @HasPermissionAllDecorator('hg.admin')
78 @HasPermissionAllDecorator('hg.admin')
82 def index(self, format='html'):
79 def index(self, format='html'):
@@ -115,13 +112,17 b' class SettingsController(BaseController)'
115
112
116 if setting_id == 'mapping':
113 if setting_id == 'mapping':
117 rm_obsolete = request.POST.get('destroy', False)
114 rm_obsolete = request.POST.get('destroy', False)
118 log.debug('Rescanning directories with destroy=%s' % rm_obsolete)
115 invalidate_cache = request.POST.get('invalidate', False)
119 initial = ScmModel().repo_scan()
116 log.debug('rescanning repo location with destroy obsolete=%s'
120 log.debug('invalidating all repositories')
117 % (rm_obsolete,))
121 for repo_name in initial.keys():
122 invalidate_cache('get_repo_cached_%s' % repo_name)
123
118
124 added, removed = repo2db_mapper(initial, rm_obsolete)
119 if invalidate_cache:
120 log.debug('invalidating all repositories cache')
121 for repo in Repository.get_all():
122 ScmModel().mark_for_invalidation(repo.repo_name)
123
124 filesystem_repos = ScmModel().repo_scan()
125 added, removed = repo2db_mapper(filesystem_repos, rm_obsolete)
125 _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-'
126 _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-'
126 h.flash(_('Repositories successfully '
127 h.flash(_('Repositories successfully '
127 'rescanned added: %s ; removed: %s') %
128 'rescanned added: %s ; removed: %s') %
@@ -186,6 +187,7 b' class SettingsController(BaseController)'
186 )
187 )
187
188
188 try:
189 try:
190 #TODO: rewrite this to something less ugly
189 sett1 = RhodeCodeSetting.get_by_name_or_create('show_public_icon')
191 sett1 = RhodeCodeSetting.get_by_name_or_create('show_public_icon')
190 sett1.app_settings_value = \
192 sett1.app_settings_value = \
191 form_result['rhodecode_show_public_icon']
193 form_result['rhodecode_show_public_icon']
@@ -201,16 +203,21 b' class SettingsController(BaseController)'
201 form_result['rhodecode_stylify_metatags']
203 form_result['rhodecode_stylify_metatags']
202 Session().add(sett3)
204 Session().add(sett3)
203
205
204 sett4 = RhodeCodeSetting.get_by_name_or_create('lightweight_dashboard')
205 sett4.app_settings_value = \
206 form_result['rhodecode_lightweight_dashboard']
207 Session().add(sett4)
208
209 sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields')
206 sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields')
210 sett4.app_settings_value = \
207 sett4.app_settings_value = \
211 form_result['rhodecode_repository_fields']
208 form_result['rhodecode_repository_fields']
212 Session().add(sett4)
209 Session().add(sett4)
213
210
211 sett5 = RhodeCodeSetting.get_by_name_or_create('dashboard_items')
212 sett5.app_settings_value = \
213 form_result['rhodecode_dashboard_items']
214 Session().add(sett5)
215
216 sett6 = RhodeCodeSetting.get_by_name_or_create('show_version')
217 sett6.app_settings_value = \
218 form_result['rhodecode_show_version']
219 Session().add(sett6)
220
214 Session().commit()
221 Session().commit()
215 set_rhodecode_config(config)
222 set_rhodecode_config(config)
216 h.flash(_('Updated visualisation settings'),
223 h.flash(_('Updated visualisation settings'),
@@ -239,10 +246,10 b' class SettingsController(BaseController)'
239 sett = RhodeCodeUi.get_by_key('push_ssl')
246 sett = RhodeCodeUi.get_by_key('push_ssl')
240 sett.ui_value = form_result['web_push_ssl']
247 sett.ui_value = form_result['web_push_ssl']
241 Session().add(sett)
248 Session().add(sett)
242
249 if c.visual.allow_repo_location_change:
243 sett = RhodeCodeUi.get_by_key('/')
250 sett = RhodeCodeUi.get_by_key('/')
244 sett.ui_value = form_result['paths_root_path']
251 sett.ui_value = form_result['paths_root_path']
245 Session().add(sett)
252 Session().add(sett)
246
253
247 #HOOKS
254 #HOOKS
248 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE)
255 sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE)
@@ -41,8 +41,8 b' from rhodecode.lib.auth import LoginRequ'
41 AuthUser
41 AuthUser
42 from rhodecode.lib.base import BaseController, render
42 from rhodecode.lib.base import BaseController, render
43
43
44 from rhodecode.model.db import User, UserEmailMap, UserIpMap
44 from rhodecode.model.db import User, UserEmailMap, UserIpMap, UserToPerm
45 from rhodecode.model.forms import UserForm
45 from rhodecode.model.forms import UserForm, CustomDefaultPermissionsForm
46 from rhodecode.model.user import UserModel
46 from rhodecode.model.user import UserModel
47 from rhodecode.model.meta import Session
47 from rhodecode.model.meta import Session
48 from rhodecode.lib.utils import action_logger
48 from rhodecode.lib.utils import action_logger
@@ -61,8 +61,6 b' class UsersController(BaseController):'
61 @LoginRequired()
61 @LoginRequired()
62 @HasPermissionAllDecorator('hg.admin')
62 @HasPermissionAllDecorator('hg.admin')
63 def __before__(self):
63 def __before__(self):
64 c.admin_user = session.get('admin_user')
65 c.admin_username = session.get('admin_username')
66 super(UsersController, self).__before__()
64 super(UsersController, self).__before__()
67 c.available_permissions = config['available_permissions']
65 c.available_permissions = config['available_permissions']
68
66
@@ -70,7 +68,9 b' class UsersController(BaseController):'
70 """GET /users: All items in the collection"""
68 """GET /users: All items in the collection"""
71 # url('users')
69 # url('users')
72
70
73 c.users_list = User.query().order_by(User.username).all()
71 c.users_list = User.query().order_by(User.username)\
72 .filter(User.username != User.DEFAULT_USER)\
73 .all()
74
74
75 users_data = []
75 users_data = []
76 total_records = len(c.users_list)
76 total_records = len(c.users_list)
@@ -223,6 +223,7 b' class UsersController(BaseController):'
223 def show(self, id, format='html'):
223 def show(self, id, format='html'):
224 """GET /users/id: Show a specific item"""
224 """GET /users/id: Show a specific item"""
225 # url('user', id=ID)
225 # url('user', id=ID)
226 User.get_or_404(-1)
226
227
227 def edit(self, id, format='html'):
228 def edit(self, id, format='html'):
228 """GET /users/id/edit: Form to edit an existing item"""
229 """GET /users/id/edit: Form to edit an existing item"""
@@ -241,12 +242,13 b' class UsersController(BaseController):'
241 .filter(UserEmailMap.user == c.user).all()
242 .filter(UserEmailMap.user == c.user).all()
242 c.user_ip_map = UserIpMap.query()\
243 c.user_ip_map = UserIpMap.query()\
243 .filter(UserIpMap.user == c.user).all()
244 .filter(UserIpMap.user == c.user).all()
244 user_model = UserModel()
245 umodel = UserModel()
245 c.ldap_dn = c.user.ldap_dn
246 c.ldap_dn = c.user.ldap_dn
246 defaults = c.user.get_dict()
247 defaults = c.user.get_dict()
247 defaults.update({
248 defaults.update({
248 'create_repo_perm': user_model.has_perm(id, 'hg.create.repository'),
249 'create_repo_perm': umodel.has_perm(c.user, 'hg.create.repository'),
249 'fork_repo_perm': user_model.has_perm(id, 'hg.fork.repository'),
250 'create_user_group_perm': umodel.has_perm(c.user, 'hg.usergroup.create.true'),
251 'fork_repo_perm': umodel.has_perm(c.user, 'hg.fork.repository'),
250 })
252 })
251
253
252 return htmlfill.render(
254 return htmlfill.render(
@@ -259,39 +261,36 b' class UsersController(BaseController):'
259 def update_perm(self, id):
261 def update_perm(self, id):
260 """PUT /users_perm/id: Update an existing item"""
262 """PUT /users_perm/id: Update an existing item"""
261 # url('user_perm', id=ID, method='put')
263 # url('user_perm', id=ID, method='put')
262 usr = User.get_or_404(id)
264 user = User.get_or_404(id)
263 grant_create_perm = str2bool(request.POST.get('create_repo_perm'))
264 grant_fork_perm = str2bool(request.POST.get('fork_repo_perm'))
265 inherit_perms = str2bool(request.POST.get('inherit_default_permissions'))
266
267 user_model = UserModel()
268
265
269 try:
266 try:
270 usr.inherit_default_permissions = inherit_perms
267 form = CustomDefaultPermissionsForm()()
271 Session().add(usr)
268 form_result = form.to_python(request.POST)
269
270 inherit_perms = form_result['inherit_default_permissions']
271 user.inherit_default_permissions = inherit_perms
272 Session().add(user)
273 user_model = UserModel()
272
274
273 if grant_create_perm:
275 defs = UserToPerm.query()\
274 user_model.revoke_perm(usr, 'hg.create.none')
276 .filter(UserToPerm.user == user)\
275 user_model.grant_perm(usr, 'hg.create.repository')
277 .all()
276 h.flash(_("Granted 'repository create' permission to user"),
278 for ug in defs:
277 category='success')
279 Session().delete(ug)
280
281 if form_result['create_repo_perm']:
282 user_model.grant_perm(id, 'hg.create.repository')
278 else:
283 else:
279 user_model.revoke_perm(usr, 'hg.create.repository')
284 user_model.grant_perm(id, 'hg.create.none')
280 user_model.grant_perm(usr, 'hg.create.none')
285 if form_result['create_user_group_perm']:
281 h.flash(_("Revoked 'repository create' permission to user"),
286 user_model.grant_perm(id, 'hg.usergroup.create.true')
282 category='success')
283
284 if grant_fork_perm:
285 user_model.revoke_perm(usr, 'hg.fork.none')
286 user_model.grant_perm(usr, 'hg.fork.repository')
287 h.flash(_("Granted 'repository fork' permission to user"),
288 category='success')
289 else:
287 else:
290 user_model.revoke_perm(usr, 'hg.fork.repository')
288 user_model.grant_perm(id, 'hg.usergroup.create.false')
291 user_model.grant_perm(usr, 'hg.fork.none')
289 if form_result['fork_repo_perm']:
292 h.flash(_("Revoked 'repository fork' permission to user"),
290 user_model.grant_perm(id, 'hg.fork.repository')
293 category='success')
291 else:
294
292 user_model.grant_perm(id, 'hg.fork.none')
293 h.flash(_("Updated permissions"), category='success')
295 Session().commit()
294 Session().commit()
296 except Exception:
295 except Exception:
297 log.error(traceback.format_exc())
296 log.error(traceback.format_exc())
@@ -33,19 +33,23 b' from pylons.controllers.util import abor'
33 from pylons.i18n.translation import _
33 from pylons.i18n.translation import _
34
34
35 from rhodecode.lib import helpers as h
35 from rhodecode.lib import helpers as h
36 from rhodecode.lib.exceptions import UserGroupsAssignedException
36 from rhodecode.lib.exceptions import UserGroupsAssignedException,\
37 from rhodecode.lib.utils2 import safe_unicode, str2bool
37 RepoGroupAssignmentError
38 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
38 from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int
39 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator,\
40 HasUserGroupPermissionAnyDecorator, HasPermissionAnyDecorator
39 from rhodecode.lib.base import BaseController, render
41 from rhodecode.lib.base import BaseController, render
40
42 from rhodecode.model.scm import UserGroupList
41 from rhodecode.model.users_group import UserGroupModel
43 from rhodecode.model.users_group import UserGroupModel
42
44 from rhodecode.model.repo import RepoModel
43 from rhodecode.model.db import User, UserGroup, UserGroupToPerm,\
45 from rhodecode.model.db import User, UserGroup, UserGroupToPerm,\
44 UserGroupRepoToPerm, UserGroupRepoGroupToPerm
46 UserGroupRepoToPerm, UserGroupRepoGroupToPerm
45 from rhodecode.model.forms import UserGroupForm
47 from rhodecode.model.forms import UserGroupForm, UserGroupPermsForm,\
48 CustomDefaultPermissionsForm
46 from rhodecode.model.meta import Session
49 from rhodecode.model.meta import Session
47 from rhodecode.lib.utils import action_logger
50 from rhodecode.lib.utils import action_logger
48 from sqlalchemy.orm import joinedload
51 from sqlalchemy.orm import joinedload
52 from webob.exc import HTTPInternalServerError
49
53
50 log = logging.getLogger(__name__)
54 log = logging.getLogger(__name__)
51
55
@@ -57,19 +61,89 b' class UsersGroupsController(BaseControll'
57 # map.resource('users_group', 'users_groups')
61 # map.resource('users_group', 'users_groups')
58
62
59 @LoginRequired()
63 @LoginRequired()
60 @HasPermissionAllDecorator('hg.admin')
61 def __before__(self):
64 def __before__(self):
62 c.admin_user = session.get('admin_user')
63 c.admin_username = session.get('admin_username')
64 super(UsersGroupsController, self).__before__()
65 super(UsersGroupsController, self).__before__()
65 c.available_permissions = config['available_permissions']
66 c.available_permissions = config['available_permissions']
66
67
68 def __load_data(self, user_group_id):
69 permissions = {
70 'repositories': {},
71 'repositories_groups': {}
72 }
73 ugroup_repo_perms = UserGroupRepoToPerm.query()\
74 .options(joinedload(UserGroupRepoToPerm.permission))\
75 .options(joinedload(UserGroupRepoToPerm.repository))\
76 .filter(UserGroupRepoToPerm.users_group_id == user_group_id)\
77 .all()
78
79 for gr in ugroup_repo_perms:
80 permissions['repositories'][gr.repository.repo_name] \
81 = gr.permission.permission_name
82
83 ugroup_group_perms = UserGroupRepoGroupToPerm.query()\
84 .options(joinedload(UserGroupRepoGroupToPerm.permission))\
85 .options(joinedload(UserGroupRepoGroupToPerm.group))\
86 .filter(UserGroupRepoGroupToPerm.users_group_id == user_group_id)\
87 .all()
88
89 for gr in ugroup_group_perms:
90 permissions['repositories_groups'][gr.group.group_name] \
91 = gr.permission.permission_name
92 c.permissions = permissions
93 c.group_members_obj = sorted((x.user for x in c.users_group.members),
94 key=lambda u: u.username.lower())
95
96 c.group_members = [(x.user_id, x.username) for x in c.group_members_obj]
97 c.available_members = sorted(((x.user_id, x.username) for x in
98 User.query().all()),
99 key=lambda u: u[1].lower())
100 repo_model = RepoModel()
101 c.users_array = repo_model.get_users_js()
102 c.users_groups_array = repo_model.get_users_groups_js()
103 c.available_permissions = config['available_permissions']
104
105 def __load_defaults(self, user_group_id):
106 """
107 Load defaults settings for edit, and update
108
109 :param user_group_id:
110 """
111 user_group = UserGroup.get_or_404(user_group_id)
112 data = user_group.get_dict()
113
114 ug_model = UserGroupModel()
115
116 data.update({
117 'create_repo_perm': ug_model.has_perm(user_group,
118 'hg.create.repository'),
119 'create_user_group_perm': ug_model.has_perm(user_group,
120 'hg.usergroup.create.true'),
121 'fork_repo_perm': ug_model.has_perm(user_group,
122 'hg.fork.repository'),
123 })
124
125 # fill user group users
126 for p in user_group.user_user_group_to_perm:
127 data.update({'u_perm_%s' % p.user.username:
128 p.permission.permission_name})
129
130 for p in user_group.user_group_user_group_to_perm:
131 data.update({'g_perm_%s' % p.user_group.users_group_name:
132 p.permission.permission_name})
133
134 return data
135
67 def index(self, format='html'):
136 def index(self, format='html'):
68 """GET /users_groups: All items in the collection"""
137 """GET /users_groups: All items in the collection"""
69 # url('users_groups')
138 # url('users_groups')
70 c.users_groups_list = UserGroup().query().all()
139
140 group_iter = UserGroupList(UserGroup().query().all(),
141 perm_set=['usergroup.admin'])
142 sk = lambda g: g.users_group_name
143 c.users_groups_list = sorted(group_iter, key=sk)
71 return render('admin/users_groups/users_groups.html')
144 return render('admin/users_groups/users_groups.html')
72
145
146 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
73 def create(self):
147 def create(self):
74 """POST /users_groups: Create a new item"""
148 """POST /users_groups: Create a new item"""
75 # url('users_groups')
149 # url('users_groups')
@@ -78,7 +152,9 b' class UsersGroupsController(BaseControll'
78 try:
152 try:
79 form_result = users_group_form.to_python(dict(request.POST))
153 form_result = users_group_form.to_python(dict(request.POST))
80 UserGroupModel().create(name=form_result['users_group_name'],
154 UserGroupModel().create(name=form_result['users_group_name'],
81 active=form_result['users_group_active'])
155 owner=self.rhodecode_user.user_id,
156 active=form_result['users_group_active'])
157
82 gr = form_result['users_group_name']
158 gr = form_result['users_group_name']
83 action_logger(self.rhodecode_user,
159 action_logger(self.rhodecode_user,
84 'admin_created_users_group:%s' % gr,
160 'admin_created_users_group:%s' % gr,
@@ -99,45 +175,13 b' class UsersGroupsController(BaseControll'
99
175
100 return redirect(url('users_groups'))
176 return redirect(url('users_groups'))
101
177
178 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
102 def new(self, format='html'):
179 def new(self, format='html'):
103 """GET /users_groups/new: Form to create a new item"""
180 """GET /users_groups/new: Form to create a new item"""
104 # url('new_users_group')
181 # url('new_users_group')
105 return render('admin/users_groups/users_group_add.html')
182 return render('admin/users_groups/users_group_add.html')
106
183
107 def _load_data(self, id):
184 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
108 c.users_group.permissions = {
109 'repositories': {},
110 'repositories_groups': {}
111 }
112
113 ugroup_repo_perms = UserGroupRepoToPerm.query()\
114 .options(joinedload(UserGroupRepoToPerm.permission))\
115 .options(joinedload(UserGroupRepoToPerm.repository))\
116 .filter(UserGroupRepoToPerm.users_group_id == id)\
117 .all()
118
119 for gr in ugroup_repo_perms:
120 c.users_group.permissions['repositories'][gr.repository.repo_name] \
121 = gr.permission.permission_name
122
123 ugroup_group_perms = UserGroupRepoGroupToPerm.query()\
124 .options(joinedload(UserGroupRepoGroupToPerm.permission))\
125 .options(joinedload(UserGroupRepoGroupToPerm.group))\
126 .filter(UserGroupRepoGroupToPerm.users_group_id == id)\
127 .all()
128
129 for gr in ugroup_group_perms:
130 c.users_group.permissions['repositories_groups'][gr.group.group_name] \
131 = gr.permission.permission_name
132
133 c.group_members_obj = sorted((x.user for x in c.users_group.members),
134 key=lambda u: u.username.lower())
135 c.group_members = [(x.user_id, x.username) for x in
136 c.group_members_obj]
137 c.available_members = sorted(((x.user_id, x.username) for x in
138 User.query().all()),
139 key=lambda u: u[1].lower())
140
141 def update(self, id):
185 def update(self, id):
142 """PUT /users_groups/id: Update an existing item"""
186 """PUT /users_groups/id: Update an existing item"""
143 # Forms posted to this method should contain a hidden field:
187 # Forms posted to this method should contain a hidden field:
@@ -148,7 +192,7 b' class UsersGroupsController(BaseControll'
148 # url('users_group', id=ID)
192 # url('users_group', id=ID)
149
193
150 c.users_group = UserGroup.get_or_404(id)
194 c.users_group = UserGroup.get_or_404(id)
151 self._load_data(id)
195 self.__load_data(id)
152
196
153 available_members = [safe_unicode(x[0]) for x in c.available_members]
197 available_members = [safe_unicode(x[0]) for x in c.available_members]
154
198
@@ -190,6 +234,7 b' class UsersGroupsController(BaseControll'
190
234
191 return redirect(url('edit_users_group', id=id))
235 return redirect(url('edit_users_group', id=id))
192
236
237 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
193 def delete(self, id):
238 def delete(self, id):
194 """DELETE /users_groups/id: Delete an existing item"""
239 """DELETE /users_groups/id: Delete an existing item"""
195 # Forms posted to this method should contain a hidden field:
240 # Forms posted to this method should contain a hidden field:
@@ -211,25 +256,76 b' class UsersGroupsController(BaseControll'
211 category='error')
256 category='error')
212 return redirect(url('users_groups'))
257 return redirect(url('users_groups'))
213
258
259 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
260 def set_user_group_perm_member(self, id):
261 """
262 grant permission for given usergroup
263
264 :param id:
265 """
266 user_group = UserGroup.get_or_404(id)
267 form = UserGroupPermsForm()().to_python(request.POST)
268
269 # set the permissions !
270 try:
271 UserGroupModel()._update_permissions(user_group, form['perms_new'],
272 form['perms_updates'])
273 except RepoGroupAssignmentError:
274 h.flash(_('Target group cannot be the same'), category='error')
275 return redirect(url('edit_users_group', id=id))
276 #TODO: implement this
277 #action_logger(self.rhodecode_user, 'admin_changed_repo_permissions',
278 # repo_name, self.ip_addr, self.sa)
279 Session().commit()
280 h.flash(_('User Group permissions updated'), category='success')
281 return redirect(url('edit_users_group', id=id))
282
283 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
284 def delete_user_group_perm_member(self, id):
285 """
286 DELETE an existing repository group permission user
287
288 :param group_name:
289 """
290 try:
291 obj_type = request.POST.get('obj_type')
292 obj_id = None
293 if obj_type == 'user':
294 obj_id = safe_int(request.POST.get('user_id'))
295 elif obj_type == 'user_group':
296 obj_id = safe_int(request.POST.get('user_group_id'))
297
298 if not c.rhodecode_user.is_admin:
299 if obj_type == 'user' and c.rhodecode_user.user_id == obj_id:
300 msg = _('Cannot revoke permission for yourself as admin')
301 h.flash(msg, category='warning')
302 raise Exception('revoke admin permission on self')
303 if obj_type == 'user':
304 UserGroupModel().revoke_user_permission(user_group=id,
305 user=obj_id)
306 elif obj_type == 'user_group':
307 UserGroupModel().revoke_users_group_permission(target_user_group=id,
308 user_group=obj_id)
309 Session().commit()
310 except Exception:
311 log.error(traceback.format_exc())
312 h.flash(_('An error occurred during revoking of permission'),
313 category='error')
314 raise HTTPInternalServerError()
315
214 def show(self, id, format='html'):
316 def show(self, id, format='html'):
215 """GET /users_groups/id: Show a specific item"""
317 """GET /users_groups/id: Show a specific item"""
216 # url('users_group', id=ID)
318 # url('users_group', id=ID)
217
319
320 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
218 def edit(self, id, format='html'):
321 def edit(self, id, format='html'):
219 """GET /users_groups/id/edit: Form to edit an existing item"""
322 """GET /users_groups/id/edit: Form to edit an existing item"""
220 # url('edit_users_group', id=ID)
323 # url('edit_users_group', id=ID)
221
324
222 c.users_group = UserGroup.get_or_404(id)
325 c.users_group = UserGroup.get_or_404(id)
223 self._load_data(id)
326 self.__load_data(id)
224
327
225 ug_model = UserGroupModel()
328 defaults = self.__load_defaults(id)
226 defaults = c.users_group.get_dict()
227 defaults.update({
228 'create_repo_perm': ug_model.has_perm(c.users_group,
229 'hg.create.repository'),
230 'fork_repo_perm': ug_model.has_perm(c.users_group,
231 'hg.fork.repository'),
232 })
233
329
234 return htmlfill.render(
330 return htmlfill.render(
235 render('admin/users_groups/users_group_edit.html'),
331 render('admin/users_groups/users_group_edit.html'),
@@ -238,43 +334,42 b' class UsersGroupsController(BaseControll'
238 force_defaults=False
334 force_defaults=False
239 )
335 )
240
336
337 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
241 def update_perm(self, id):
338 def update_perm(self, id):
242 """PUT /users_perm/id: Update an existing item"""
339 """PUT /users_perm/id: Update an existing item"""
243 # url('users_group_perm', id=ID, method='put')
340 # url('users_group_perm', id=ID, method='put')
244
341
245 users_group = UserGroup.get_or_404(id)
342 users_group = UserGroup.get_or_404(id)
246 grant_create_perm = str2bool(request.POST.get('create_repo_perm'))
247 grant_fork_perm = str2bool(request.POST.get('fork_repo_perm'))
248 inherit_perms = str2bool(request.POST.get('inherit_default_permissions'))
249
250 usergroup_model = UserGroupModel()
251
343
252 try:
344 try:
345 form = CustomDefaultPermissionsForm()()
346 form_result = form.to_python(request.POST)
347
348 inherit_perms = form_result['inherit_default_permissions']
253 users_group.inherit_default_permissions = inherit_perms
349 users_group.inherit_default_permissions = inherit_perms
254 Session().add(users_group)
350 Session().add(users_group)
351 usergroup_model = UserGroupModel()
255
352
256 if grant_create_perm:
353 defs = UserGroupToPerm.query()\
257 usergroup_model.revoke_perm(id, 'hg.create.none')
354 .filter(UserGroupToPerm.users_group == users_group)\
258 usergroup_model.grant_perm(id, 'hg.create.repository')
355 .all()
259 h.flash(_("Granted 'repository create' permission to user group"),
356 for ug in defs:
260 category='success')
357 Session().delete(ug)
261 else:
262 usergroup_model.revoke_perm(id, 'hg.create.repository')
263 usergroup_model.grant_perm(id, 'hg.create.none')
264 h.flash(_("Revoked 'repository create' permission to user group"),
265 category='success')
266
358
267 if grant_fork_perm:
359 if form_result['create_repo_perm']:
268 usergroup_model.revoke_perm(id, 'hg.fork.none')
360 usergroup_model.grant_perm(id, 'hg.create.repository')
269 usergroup_model.grant_perm(id, 'hg.fork.repository')
361 else:
270 h.flash(_("Granted 'repository fork' permission to user group"),
362 usergroup_model.grant_perm(id, 'hg.create.none')
271 category='success')
363 if form_result['create_user_group_perm']:
364 usergroup_model.grant_perm(id, 'hg.usergroup.create.true')
272 else:
365 else:
273 usergroup_model.revoke_perm(id, 'hg.fork.repository')
366 usergroup_model.grant_perm(id, 'hg.usergroup.create.false')
367 if form_result['fork_repo_perm']:
368 usergroup_model.grant_perm(id, 'hg.fork.repository')
369 else:
274 usergroup_model.grant_perm(id, 'hg.fork.none')
370 usergroup_model.grant_perm(id, 'hg.fork.none')
275 h.flash(_("Revoked 'repository fork' permission to user group"),
276 category='success')
277
371
372 h.flash(_("Updated permissions"), category='success')
278 Session().commit()
373 Session().commit()
279 except Exception:
374 except Exception:
280 log.error(traceback.format_exc())
375 log.error(traceback.format_exc())
@@ -25,6 +25,7 b''
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26 # MA 02110-1301, USA.
26 # MA 02110-1301, USA.
27
27
28 import time
28 import traceback
29 import traceback
29 import logging
30 import logging
30
31
@@ -34,19 +35,30 b' from rhodecode.lib.auth import PasswordG'
34 HasPermissionAnyApi, HasRepoPermissionAnyApi
35 HasPermissionAnyApi, HasRepoPermissionAnyApi
35 from rhodecode.lib.utils import map_groups, repo2db_mapper
36 from rhodecode.lib.utils import map_groups, repo2db_mapper
36 from rhodecode.lib.utils2 import str2bool, time_to_datetime, safe_int
37 from rhodecode.lib.utils2 import str2bool, time_to_datetime, safe_int
37 from rhodecode.lib import helpers as h
38 from rhodecode.model.meta import Session
38 from rhodecode.model.meta import Session
39 from rhodecode.model.scm import ScmModel
39 from rhodecode.model.scm import ScmModel
40 from rhodecode.model.repo import RepoModel
40 from rhodecode.model.repo import RepoModel
41 from rhodecode.model.user import UserModel
41 from rhodecode.model.user import UserModel
42 from rhodecode.model.users_group import UserGroupModel
42 from rhodecode.model.users_group import UserGroupModel
43 from rhodecode.model.repos_group import ReposGroupModel
43 from rhodecode.model.db import Repository, RhodeCodeSetting, UserIpMap,\
44 from rhodecode.model.db import Repository, RhodeCodeSetting, UserIpMap,\
44 Permission
45 Permission, User, Gist
45 from rhodecode.lib.compat import json
46 from rhodecode.lib.compat import json
47 from rhodecode.lib.exceptions import DefaultUserException
48 from rhodecode.model.gist import GistModel
46
49
47 log = logging.getLogger(__name__)
50 log = logging.getLogger(__name__)
48
51
49
52
53 def store_update(updates, attr, name):
54 """
55 Stores param in updates dict if it's not instance of Optional
56 allows easy updates of passed in params
57 """
58 if not isinstance(attr, Optional):
59 updates[name] = attr
60
61
50 class OptionalAttr(object):
62 class OptionalAttr(object):
51 """
63 """
52 Special Optional Option that defines other attribute
64 Special Optional Option that defines other attribute
@@ -113,7 +125,7 b' def get_repo_or_error(repoid):'
113 """
125 """
114 Get repo by id or name or return JsonRPCError if not found
126 Get repo by id or name or return JsonRPCError if not found
115
127
116 :param userid:
128 :param repoid:
117 """
129 """
118 repo = RepoModel().get_repo(repoid)
130 repo = RepoModel().get_repo(repoid)
119 if repo is None:
131 if repo is None:
@@ -121,6 +133,19 b' def get_repo_or_error(repoid):'
121 return repo
133 return repo
122
134
123
135
136 def get_repo_group_or_error(repogroupid):
137 """
138 Get repo group by id or name or return JsonRPCError if not found
139
140 :param repogroupid:
141 """
142 repo_group = ReposGroupModel()._get_repo_group(repogroupid)
143 if repo_group is None:
144 raise JSONRPCError(
145 'repository group `%s` does not exist' % (repogroupid,))
146 return repo_group
147
148
124 def get_users_group_or_error(usersgroupid):
149 def get_users_group_or_error(usersgroupid):
125 """
150 """
126 Get user group by id or name or return JsonRPCError if not found
151 Get user group by id or name or return JsonRPCError if not found
@@ -212,7 +237,7 b' class ApiController(JSONRPCController):'
212 :param repoid:
237 :param repoid:
213 """
238 """
214 repo = get_repo_or_error(repoid)
239 repo = get_repo_or_error(repoid)
215 if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
240 if not HasPermissionAnyApi('hg.admin')(user=apiuser):
216 # check if we have admin permission for this repo !
241 # check if we have admin permission for this repo !
217 if HasRepoPermissionAnyApi('repository.admin',
242 if HasRepoPermissionAnyApi('repository.admin',
218 'repository.write')(user=apiuser,
243 'repository.write')(user=apiuser,
@@ -220,16 +245,15 b' class ApiController(JSONRPCController):'
220 raise JSONRPCError('repository `%s` does not exist' % (repoid))
245 raise JSONRPCError('repository `%s` does not exist' % (repoid))
221
246
222 try:
247 try:
223 invalidated_keys = ScmModel().mark_for_invalidation(repo.repo_name)
248 ScmModel().mark_for_invalidation(repo.repo_name)
224 Session().commit()
249 return ('Caches of repository `%s` was invalidated' % repoid)
225 return ('Cache for repository `%s` was invalidated: '
226 'invalidated cache keys: %s' % (repoid, invalidated_keys))
227 except Exception:
250 except Exception:
228 log.error(traceback.format_exc())
251 log.error(traceback.format_exc())
229 raise JSONRPCError(
252 raise JSONRPCError(
230 'Error occurred during cache invalidation action'
253 'Error occurred during cache invalidation action'
231 )
254 )
232
255
256 # permission check inside
233 def lock(self, apiuser, repoid, locked=Optional(None),
257 def lock(self, apiuser, repoid, locked=Optional(None),
234 userid=Optional(OAttr('apiuser'))):
258 userid=Optional(OAttr('apiuser'))):
235 """
259 """
@@ -266,27 +290,47 b' class ApiController(JSONRPCController):'
266 lockobj = Repository.getlock(repo)
290 lockobj = Repository.getlock(repo)
267
291
268 if lockobj[0] is None:
292 if lockobj[0] is None:
269 return ('Repo `%s` not locked. Locked=`False`.'
293 _d = {
270 % (repo.repo_name))
294 'repo': repo.repo_name,
295 'locked': False,
296 'locked_since': None,
297 'locked_by': None,
298 'msg': 'Repo `%s` not locked.' % repo.repo_name
299 }
300 return _d
271 else:
301 else:
272 userid, time_ = lockobj
302 userid, time_ = lockobj
273 user = get_user_or_error(userid)
303 lock_user = get_user_or_error(userid)
304 _d = {
305 'repo': repo.repo_name,
306 'locked': True,
307 'locked_since': time_,
308 'locked_by': lock_user.username,
309 'msg': ('Repo `%s` locked by `%s`. '
310 % (repo.repo_name,
311 json.dumps(time_to_datetime(time_))))
312 }
313 return _d
274
314
275 return ('Repo `%s` locked by `%s`. Locked=`True`. '
315 # force locked state through a flag
276 'Locked since: `%s`'
277 % (repo.repo_name, user.username,
278 json.dumps(time_to_datetime(time_))))
279
280 else:
316 else:
281 locked = str2bool(locked)
317 locked = str2bool(locked)
282 try:
318 try:
283 if locked:
319 if locked:
284 Repository.lock(repo, user.user_id)
320 lock_time = time.time()
321 Repository.lock(repo, user.user_id, lock_time)
285 else:
322 else:
323 lock_time = None
286 Repository.unlock(repo)
324 Repository.unlock(repo)
287
325 _d = {
288 return ('User `%s` set lock state for repo `%s` to `%s`'
326 'repo': repo.repo_name,
289 % (user.username, repo.repo_name, locked))
327 'locked': locked,
328 'locked_since': lock_time,
329 'locked_by': user.username,
330 'msg': ('User `%s` set lock state for repo `%s` to `%s`'
331 % (user.username, repo.repo_name, locked))
332 }
333 return _d
290 except Exception:
334 except Exception:
291 log.error(traceback.format_exc())
335 log.error(traceback.format_exc())
292 raise JSONRPCError(
336 raise JSONRPCError(
@@ -302,9 +346,8 b' class ApiController(JSONRPCController):'
302 :param apiuser:
346 :param apiuser:
303 :param userid:
347 :param userid:
304 """
348 """
305 if HasPermissionAnyApi('hg.admin')(user=apiuser):
349
306 pass
350 if not HasPermissionAnyApi('hg.admin')(user=apiuser):
307 else:
308 #make sure normal user does not pass someone else userid,
351 #make sure normal user does not pass someone else userid,
309 #he is not allowed to do that
352 #he is not allowed to do that
310 if not isinstance(userid, Optional) and userid != apiuser.user_id:
353 if not isinstance(userid, Optional) and userid != apiuser.user_id:
@@ -354,7 +397,7 b' class ApiController(JSONRPCController):'
354 :param apiuser:
397 :param apiuser:
355 :param userid:
398 :param userid:
356 """
399 """
357 if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
400 if not HasPermissionAnyApi('hg.admin')(user=apiuser):
358 #make sure normal user does not pass someone else userid,
401 #make sure normal user does not pass someone else userid,
359 #he is not allowed to do that
402 #he is not allowed to do that
360 if not isinstance(userid, Optional) and userid != apiuser.user_id:
403 if not isinstance(userid, Optional) and userid != apiuser.user_id:
@@ -379,12 +422,15 b' class ApiController(JSONRPCController):'
379 """
422 """
380
423
381 result = []
424 result = []
382 for user in UserModel().get_all():
425 users_list = User.query().order_by(User.username)\
426 .filter(User.username != User.DEFAULT_USER)\
427 .all()
428 for user in users_list:
383 result.append(user.get_api_data())
429 result.append(user.get_api_data())
384 return result
430 return result
385
431
386 @HasPermissionAllDecorator('hg.admin')
432 @HasPermissionAllDecorator('hg.admin')
387 def create_user(self, apiuser, username, email, password,
433 def create_user(self, apiuser, username, email, password=Optional(None),
388 firstname=Optional(None), lastname=Optional(None),
434 firstname=Optional(None), lastname=Optional(None),
389 active=Optional(True), admin=Optional(False),
435 active=Optional(True), admin=Optional(False),
390 ldap_dn=Optional(None)):
436 ldap_dn=Optional(None)):
@@ -479,6 +525,9 b' class ApiController(JSONRPCController):'
479 msg='updated user ID:%s %s' % (user.user_id, user.username),
525 msg='updated user ID:%s %s' % (user.user_id, user.username),
480 user=user.get_api_data()
526 user=user.get_api_data()
481 )
527 )
528 except DefaultUserException:
529 log.error(traceback.format_exc())
530 raise JSONRPCError('editing default user is forbidden')
482 except Exception:
531 except Exception:
483 log.error(traceback.format_exc())
532 log.error(traceback.format_exc())
484 raise JSONRPCError('failed to update user `%s`' % userid)
533 raise JSONRPCError('failed to update user `%s`' % userid)
@@ -538,12 +587,15 b' class ApiController(JSONRPCController):'
538 return result
587 return result
539
588
540 @HasPermissionAllDecorator('hg.admin')
589 @HasPermissionAllDecorator('hg.admin')
541 def create_users_group(self, apiuser, group_name, active=Optional(True)):
590 def create_users_group(self, apiuser, group_name,
591 owner=Optional(OAttr('apiuser')),
592 active=Optional(True)):
542 """
593 """
543 Creates an new usergroup
594 Creates an new usergroup
544
595
545 :param apiuser:
596 :param apiuser:
546 :param group_name:
597 :param group_name:
598 :param owner:
547 :param active:
599 :param active:
548 """
600 """
549
601
@@ -551,8 +603,14 b' class ApiController(JSONRPCController):'
551 raise JSONRPCError("user group `%s` already exist" % group_name)
603 raise JSONRPCError("user group `%s` already exist" % group_name)
552
604
553 try:
605 try:
606 if isinstance(owner, Optional):
607 owner = apiuser.user_id
608
609 owner = get_user_or_error(owner)
554 active = Optional.extract(active)
610 active = Optional.extract(active)
555 ug = UserGroupModel().create(name=group_name, active=active)
611 ug = UserGroupModel().create(name=group_name,
612 owner=owner,
613 active=active)
556 Session().commit()
614 Session().commit()
557 return dict(
615 return dict(
558 msg='created new user group `%s`' % group_name,
616 msg='created new user group `%s`' % group_name,
@@ -633,10 +691,10 b' class ApiController(JSONRPCController):'
633 """
691 """
634 repo = get_repo_or_error(repoid)
692 repo = get_repo_or_error(repoid)
635
693
636 if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
694 if not HasPermissionAnyApi('hg.admin')(user=apiuser):
637 # check if we have admin permission for this repo !
695 # check if we have admin permission for this repo !
638 if HasRepoPermissionAnyApi('repository.admin')(user=apiuser,
696 if not HasRepoPermissionAnyApi('repository.admin')(user=apiuser,
639 repo_name=repo.repo_name) is False:
697 repo_name=repo.repo_name):
640 raise JSONRPCError('repository `%s` does not exist' % (repoid))
698 raise JSONRPCError('repository `%s` does not exist' % (repoid))
641
699
642 members = []
700 members = []
@@ -665,6 +723,7 b' class ApiController(JSONRPCController):'
665 data['followers'] = followers
723 data['followers'] = followers
666 return data
724 return data
667
725
726 # permission check inside
668 def get_repos(self, apiuser):
727 def get_repos(self, apiuser):
669 """"
728 """"
670 Get all repositories
729 Get all repositories
@@ -792,6 +851,71 b' class ApiController(JSONRPCController):'
792 log.error(traceback.format_exc())
851 log.error(traceback.format_exc())
793 raise JSONRPCError('failed to create repository `%s`' % repo_name)
852 raise JSONRPCError('failed to create repository `%s`' % repo_name)
794
853
854 # permission check inside
855 def update_repo(self, apiuser, repoid, name=Optional(None),
856 owner=Optional(OAttr('apiuser')),
857 group=Optional(None),
858 description=Optional(''), private=Optional(False),
859 clone_uri=Optional(None), landing_rev=Optional('tip'),
860 enable_statistics=Optional(False),
861 enable_locking=Optional(False),
862 enable_downloads=Optional(False)):
863
864 """
865 Updates repo
866
867 :param apiuser: filled automatically from apikey
868 :type apiuser: AuthUser
869 :param repoid: repository name or repository id
870 :type repoid: str or int
871 :param name:
872 :param owner:
873 :param group:
874 :param description:
875 :param private:
876 :param clone_uri:
877 :param landing_rev:
878 :param enable_statistics:
879 :param enable_locking:
880 :param enable_downloads:
881 """
882 repo = get_repo_or_error(repoid)
883 if not HasPermissionAnyApi('hg.admin')(user=apiuser):
884 # check if we have admin permission for this repo !
885 if not HasRepoPermissionAnyApi('repository.admin')(user=apiuser,
886 repo_name=repo.repo_name):
887 raise JSONRPCError('repository `%s` does not exist' % (repoid,))
888
889 updates = {
890 # update function requires this.
891 'repo_name': repo.repo_name
892 }
893 repo_group = group
894 if not isinstance(repo_group, Optional):
895 repo_group = get_repo_group_or_error(repo_group)
896 repo_group = repo_group.group_id
897 try:
898 store_update(updates, name, 'repo_name')
899 store_update(updates, repo_group, 'repo_group')
900 store_update(updates, owner, 'user')
901 store_update(updates, description, 'repo_description')
902 store_update(updates, private, 'repo_private')
903 store_update(updates, clone_uri, 'clone_uri')
904 store_update(updates, landing_rev, 'repo_landing_rev')
905 store_update(updates, enable_statistics, 'repo_enable_statistics')
906 store_update(updates, enable_locking, 'repo_enable_locking')
907 store_update(updates, enable_downloads, 'repo_enable_downloads')
908
909 RepoModel().update(repo, **updates)
910 Session().commit()
911 return dict(
912 msg='updated repo ID:%s %s' % (repo.repo_id, repo.repo_name),
913 repository=repo.get_api_data()
914 )
915 except Exception:
916 log.error(traceback.format_exc())
917 raise JSONRPCError('failed to update repo `%s`' % repoid)
918
795 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
919 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
796 def fork_repo(self, apiuser, repoid, fork_name, owner=Optional(OAttr('apiuser')),
920 def fork_repo(self, apiuser, repoid, fork_name, owner=Optional(OAttr('apiuser')),
797 description=Optional(''), copy_permissions=Optional(False),
921 description=Optional(''), copy_permissions=Optional(False),
@@ -853,6 +977,7 b' class ApiController(JSONRPCController):'
853 fork_name)
977 fork_name)
854 )
978 )
855
979
980 # perms handled inside
856 def delete_repo(self, apiuser, repoid, forks=Optional(None)):
981 def delete_repo(self, apiuser, repoid, forks=Optional(None)):
857 """
982 """
858 Deletes a given repository
983 Deletes a given repository
@@ -874,9 +999,9 b' class ApiController(JSONRPCController):'
874 _forks_msg = ''
999 _forks_msg = ''
875 _forks = [f for f in repo.forks]
1000 _forks = [f for f in repo.forks]
876 if handle_forks == 'detach':
1001 if handle_forks == 'detach':
877 _forks_msg = ' ' + _('Detached %s forks') % len(_forks)
1002 _forks_msg = ' ' + 'Detached %s forks' % len(_forks)
878 elif handle_forks == 'delete':
1003 elif handle_forks == 'delete':
879 _forks_msg = ' ' + _('Deleted %s forks') % len(_forks)
1004 _forks_msg = ' ' + 'Deleted %s forks' % len(_forks)
880 elif _forks:
1005 elif _forks:
881 raise JSONRPCError(
1006 raise JSONRPCError(
882 'Cannot delete `%s` it still contains attached forks'
1007 'Cannot delete `%s` it still contains attached forks'
@@ -1029,3 +1154,34 b' class ApiController(JSONRPCController):'
1029 users_group.users_group_name, repo.repo_name
1154 users_group.users_group_name, repo.repo_name
1030 )
1155 )
1031 )
1156 )
1157
1158 def create_gist(self, apiuser, files, owner=Optional(OAttr('apiuser')),
1159 gist_type=Optional(Gist.GIST_PUBLIC), lifetime=Optional(-1),
1160 description=Optional('')):
1161
1162 try:
1163 if isinstance(owner, Optional):
1164 owner = apiuser.user_id
1165
1166 owner = get_user_or_error(owner)
1167 description = Optional.extract(description)
1168 gist_type = Optional.extract(gist_type)
1169 lifetime = Optional.extract(lifetime)
1170
1171 # files: {
1172 # 'filename': {'content':'...', 'lexer': null},
1173 # 'filename2': {'content':'...', 'lexer': null}
1174 #}
1175 gist = GistModel().create(description=description,
1176 owner=owner,
1177 gist_mapping=files,
1178 gist_type=gist_type,
1179 lifetime=lifetime)
1180 Session().commit()
1181 return dict(
1182 msg='created new gist',
1183 gist=gist.get_api_data()
1184 )
1185 except Exception:
1186 log.error(traceback.format_exc())
1187 raise JSONRPCError('failed to create gist')
@@ -36,12 +36,12 b' log = logging.getLogger(__name__)'
36
36
37 class BookmarksController(BaseRepoController):
37 class BookmarksController(BaseRepoController):
38
38
39 def __before__(self):
40 super(BookmarksController, self).__before__()
41
39 @LoginRequired()
42 @LoginRequired()
40 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
43 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
41 'repository.admin')
44 'repository.admin')
42 def __before__(self):
43 super(BookmarksController, self).__before__()
44
45 def index(self):
45 def index(self):
46 if c.rhodecode_repo.alias != 'hg':
46 if c.rhodecode_repo.alias != 'hg':
47 raise HTTPNotFound()
47 raise HTTPNotFound()
@@ -38,12 +38,12 b' log = logging.getLogger(__name__)'
38
38
39 class BranchesController(BaseRepoController):
39 class BranchesController(BaseRepoController):
40
40
41 def __before__(self):
42 super(BranchesController, self).__before__()
43
41 @LoginRequired()
44 @LoginRequired()
42 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
45 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
43 'repository.admin')
46 'repository.admin')
44 def __before__(self):
45 super(BranchesController, self).__before__()
46
47 def index(self):
47 def index(self):
48
48
49 def _branchtags(localrepo):
49 def _branchtags(localrepo):
@@ -72,5 +72,4 b' class BranchesController(BaseRepoControl'
72 key=lambda ctx: ctx[0],
72 key=lambda ctx: ctx[0],
73 reverse=False))
73 reverse=False))
74
74
75
76 return render('branches/branches.html')
75 return render('branches/branches.html')
@@ -37,22 +37,65 b' from rhodecode.lib.helpers import RepoPa'
37 from rhodecode.lib.compat import json
37 from rhodecode.lib.compat import json
38 from rhodecode.lib.graphmod import _colored, _dagwalker
38 from rhodecode.lib.graphmod import _colored, _dagwalker
39 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetDoesNotExistError,\
39 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetDoesNotExistError,\
40 EmptyRepositoryError
40 ChangesetError, NodeDoesNotExistError, EmptyRepositoryError
41 from rhodecode.lib.utils2 import safe_int
41 from rhodecode.lib.utils2 import safe_int
42 from webob.exc import HTTPNotFound
42
43
43 log = logging.getLogger(__name__)
44 log = logging.getLogger(__name__)
44
45
45
46
47 def _load_changelog_summary():
48 p = safe_int(request.GET.get('page'), 1)
49 size = safe_int(request.GET.get('size'), 10)
50
51 def url_generator(**kw):
52 return url('changelog_summary_home',
53 repo_name=c.rhodecode_db_repo.repo_name, size=size, **kw)
54
55 collection = c.rhodecode_repo
56
57 c.repo_changesets = RepoPage(collection, page=p,
58 items_per_page=size,
59 url=url_generator)
60 page_revisions = [x.raw_id for x in list(c.repo_changesets)]
61 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
62 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
63
64
46 class ChangelogController(BaseRepoController):
65 class ChangelogController(BaseRepoController):
47
66
48 @LoginRequired()
49 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
50 'repository.admin')
51 def __before__(self):
67 def __before__(self):
52 super(ChangelogController, self).__before__()
68 super(ChangelogController, self).__before__()
53 c.affected_files_cut_off = 60
69 c.affected_files_cut_off = 60
54
70
55 def index(self):
71 def _graph(self, repo, revs_int, repo_size, size, p):
72 """
73 Generates a DAG graph for repo
74
75 :param repo:
76 :param revs_int:
77 :param repo_size:
78 :param size:
79 :param p:
80 """
81 if not revs_int:
82 c.jsdata = json.dumps([])
83 return
84
85 data = []
86 revs = revs_int
87
88 dag = _dagwalker(repo, revs, repo.alias)
89 dag = _colored(dag)
90 for (id, type, ctx, vtx, edges) in dag:
91 data.append(['', vtx, edges])
92
93 c.jsdata = json.dumps(data)
94
95 @LoginRequired()
96 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
97 'repository.admin')
98 def index(self, repo_name, revision=None, f_path=None):
56 limit = 100
99 limit = 100
57 default = 20
100 default = 20
58 if request.GET.get('size'):
101 if request.GET.get('size'):
@@ -65,20 +108,33 b' class ChangelogController(BaseRepoContro'
65 c.size = max(c.size, 1)
108 c.size = max(c.size, 1)
66 p = safe_int(request.GET.get('page', 1), 1)
109 p = safe_int(request.GET.get('page', 1), 1)
67 branch_name = request.GET.get('branch', None)
110 branch_name = request.GET.get('branch', None)
111 c.changelog_for_path = f_path
68 try:
112 try:
69 if branch_name:
113
70 collection = [z for z in
114 if f_path:
71 c.rhodecode_repo.get_changesets(start=0,
115 log.debug('generating changelog for path %s' % f_path)
72 branch_name=branch_name)]
116 # get the history for the file !
73 c.total_cs = len(collection)
117 tip_cs = c.rhodecode_repo.get_changeset()
118 try:
119 collection = tip_cs.get_file_history(f_path)
120 except (NodeDoesNotExistError, ChangesetError):
121 #this node is not present at tip !
122 try:
123 cs = self.__get_cs_or_redirect(revision, repo_name)
124 collection = cs.get_file_history(f_path)
125 except RepositoryError, e:
126 h.flash(str(e), category='warning')
127 redirect(h.url('changelog_home', repo_name=repo_name))
128 collection = list(reversed(collection))
74 else:
129 else:
75 collection = c.rhodecode_repo
130 collection = c.rhodecode_repo.get_changesets(start=0,
76 c.total_cs = len(c.rhodecode_repo)
131 branch_name=branch_name)
132 c.total_cs = len(collection)
77
133
78 c.pagination = RepoPage(collection, page=p, item_count=c.total_cs,
134 c.pagination = RepoPage(collection, page=p, item_count=c.total_cs,
79 items_per_page=c.size, branch=branch_name)
135 items_per_page=c.size, branch=branch_name,)
80 collection = list(c.pagination)
136 collection = list(c.pagination)
81 page_revisions = [x.raw_id for x in collection]
137 page_revisions = [x.raw_id for x in c.pagination]
82 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
138 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
83 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
139 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
84 except (EmptyRepositoryError), e:
140 except (EmptyRepositoryError), e:
@@ -89,37 +145,31 b' class ChangelogController(BaseRepoContro'
89 h.flash(str(e), category='error')
145 h.flash(str(e), category='error')
90 return redirect(url('changelog_home', repo_name=c.repo_name))
146 return redirect(url('changelog_home', repo_name=c.repo_name))
91
147
92 self._graph(c.rhodecode_repo, collection, c.total_cs, c.size, p)
93
94 c.branch_name = branch_name
148 c.branch_name = branch_name
95 c.branch_filters = [('', _('All Branches'))] + \
149 c.branch_filters = [('', _('All Branches'))] + \
96 [(k, k) for k in c.rhodecode_repo.branches.keys()]
150 [(k, k) for k in c.rhodecode_repo.branches.keys()]
151 _revs = []
152 if not f_path:
153 _revs = [x.revision for x in c.pagination]
154 self._graph(c.rhodecode_repo, _revs, c.total_cs, c.size, p)
97
155
98 return render('changelog/changelog.html')
156 return render('changelog/changelog.html')
99
157
158 @LoginRequired()
159 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
160 'repository.admin')
100 def changelog_details(self, cs):
161 def changelog_details(self, cs):
101 if request.environ.get('HTTP_X_PARTIAL_XHR'):
162 if request.environ.get('HTTP_X_PARTIAL_XHR'):
102 c.cs = c.rhodecode_repo.get_changeset(cs)
163 c.cs = c.rhodecode_repo.get_changeset(cs)
103 return render('changelog/changelog_details.html')
164 return render('changelog/changelog_details.html')
104
165 raise HTTPNotFound()
105 def _graph(self, repo, collection, repo_size, size, p):
106 """
107 Generates a DAG graph for mercurial
108
166
109 :param repo: repo instance
167 @LoginRequired()
110 :param size: number of commits to show
168 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
111 :param p: page number
169 'repository.admin')
112 """
170 def changelog_summary(self, repo_name):
113 if not collection:
171 if request.environ.get('HTTP_X_PARTIAL_XHR'):
114 c.jsdata = json.dumps([])
172 _load_changelog_summary()
115 return
116
173
117 data = []
174 return render('changelog/changelog_summary_data.html')
118 revs = [x.revision for x in collection]
175 raise HTTPNotFound()
119
120 dag = _dagwalker(repo, revs, repo.alias)
121 dag = _colored(dag)
122 for (id, type, ctx, vtx, edges) in dag:
123 data.append(['', vtx, edges])
124
125 c.jsdata = json.dumps(data)
@@ -37,7 +37,8 b' from rhodecode.lib.vcs.exceptions import'
37 ChangesetDoesNotExistError
37 ChangesetDoesNotExistError
38
38
39 import rhodecode.lib.helpers as h
39 import rhodecode.lib.helpers as h
40 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
40 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\
41 NotAnonymous
41 from rhodecode.lib.base import BaseRepoController, render
42 from rhodecode.lib.base import BaseRepoController, render
42 from rhodecode.lib.utils import action_logger
43 from rhodecode.lib.utils import action_logger
43 from rhodecode.lib.compat import OrderedDict
44 from rhodecode.lib.compat import OrderedDict
@@ -169,9 +170,6 b' def _context_url(GET, fileid=None):'
169
170
170 class ChangesetController(BaseRepoController):
171 class ChangesetController(BaseRepoController):
171
172
172 @LoginRequired()
173 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
174 'repository.admin')
175 def __before__(self):
173 def __before__(self):
176 super(ChangesetController, self).__before__()
174 super(ChangesetController, self).__before__()
177 c.affected_files_cut_off = 60
175 c.affected_files_cut_off = 60
@@ -179,7 +177,7 b' class ChangesetController(BaseRepoContro'
179 c.users_array = repo_model.get_users_js()
177 c.users_array = repo_model.get_users_js()
180 c.users_groups_array = repo_model.get_users_groups_js()
178 c.users_groups_array = repo_model.get_users_groups_js()
181
179
182 def index(self, revision, method='show'):
180 def _index(self, revision, method):
183 c.anchor_url = anchor_url
181 c.anchor_url = anchor_url
184 c.ignorews_url = _ignorews_url
182 c.ignorews_url = _ignorews_url
185 c.context_url = _context_url
183 c.context_url = _context_url
@@ -236,7 +234,7 b' class ChangesetController(BaseRepoContro'
236 # show comments from them
234 # show comments from them
237
235
238 prs = set([x.pull_request for x in
236 prs = set([x.pull_request for x in
239 filter(lambda x: x.pull_request != None, st)])
237 filter(lambda x: x.pull_request is not None, st)])
240
238
241 for pr in prs:
239 for pr in prs:
242 c.comments.extend(pr.comments)
240 c.comments.extend(pr.comments)
@@ -267,9 +265,8 b' class ChangesetController(BaseRepoContro'
267 c.limited_diff = True
265 c.limited_diff = True
268 for f in _parsed:
266 for f in _parsed:
269 st = f['stats']
267 st = f['stats']
270 if st[0] != 'b':
268 c.lines_added += st['added']
271 c.lines_added += st[0]
269 c.lines_deleted += st['deleted']
272 c.lines_deleted += st[1]
273 fid = h.FID(changeset.raw_id, f['filename'])
270 fid = h.FID(changeset.raw_id, f['filename'])
274 diff = diff_processor.as_html(enable_comments=enable_comments,
271 diff = diff_processor.as_html(enable_comments=enable_comments,
275 parsed_lines=[f])
272 parsed_lines=[f])
@@ -311,15 +308,34 b' class ChangesetController(BaseRepoContro'
311 else:
308 else:
312 return render('changeset/changeset_range.html')
309 return render('changeset/changeset_range.html')
313
310
311 @LoginRequired()
312 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
313 'repository.admin')
314 def index(self, revision, method='show'):
315 return self._index(revision, method=method)
316
317 @LoginRequired()
318 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
319 'repository.admin')
314 def changeset_raw(self, revision):
320 def changeset_raw(self, revision):
315 return self.index(revision, method='raw')
321 return self._index(revision, method='raw')
316
322
323 @LoginRequired()
324 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
325 'repository.admin')
317 def changeset_patch(self, revision):
326 def changeset_patch(self, revision):
318 return self.index(revision, method='patch')
327 return self._index(revision, method='patch')
319
328
329 @LoginRequired()
330 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
331 'repository.admin')
320 def changeset_download(self, revision):
332 def changeset_download(self, revision):
321 return self.index(revision, method='download')
333 return self._index(revision, method='download')
322
334
335 @LoginRequired()
336 @NotAnonymous()
337 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
338 'repository.admin')
323 @jsonify
339 @jsonify
324 def comment(self, repo_name, revision):
340 def comment(self, repo_name, revision):
325 status = request.POST.get('changeset_status')
341 status = request.POST.get('changeset_status')
@@ -382,6 +398,22 b' class ChangesetController(BaseRepoContro'
382
398
383 return data
399 return data
384
400
401 @LoginRequired()
402 @NotAnonymous()
403 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
404 'repository.admin')
405 def preview_comment(self):
406 if not request.environ.get('HTTP_X_PARTIAL_XHR'):
407 raise HTTPBadRequest()
408 text = request.POST.get('text')
409 if text:
410 return h.rst_w_mentions(text)
411 return ''
412
413 @LoginRequired()
414 @NotAnonymous()
415 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
416 'repository.admin')
385 @jsonify
417 @jsonify
386 def delete_comment(self, repo_name, comment_id):
418 def delete_comment(self, repo_name, comment_id):
387 co = ChangesetComment.get(comment_id)
419 co = ChangesetComment.get(comment_id)
@@ -393,6 +425,9 b' class ChangesetController(BaseRepoContro'
393 else:
425 else:
394 raise HTTPForbidden()
426 raise HTTPForbidden()
395
427
428 @LoginRequired()
429 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
430 'repository.admin')
396 @jsonify
431 @jsonify
397 def changeset_info(self, repo_name, revision):
432 def changeset_info(self, repo_name, revision):
398 if request.is_xhr:
433 if request.is_xhr:
@@ -23,8 +23,10 b''
23 #
23 #
24 # You should have received a copy of the GNU General Public License
24 # You should have received a copy of the GNU General Public License
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
26
26 import logging
27 import logging
27 import traceback
28 import traceback
29 import re
28
30
29 from webob.exc import HTTPNotFound
31 from webob.exc import HTTPNotFound
30 from pylons import request, response, session, tmpl_context as c, url
32 from pylons import request, response, session, tmpl_context as c, url
@@ -32,25 +34,23 b' from pylons.controllers.util import abor'
32 from pylons.i18n.translation import _
34 from pylons.i18n.translation import _
33
35
34 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError, RepositoryError
36 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError, RepositoryError
37 from rhodecode.lib.vcs.utils import safe_str
38 from rhodecode.lib.vcs.utils.hgcompat import scmutil
35 from rhodecode.lib import helpers as h
39 from rhodecode.lib import helpers as h
36 from rhodecode.lib.base import BaseRepoController, render
40 from rhodecode.lib.base import BaseRepoController, render
37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
41 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
38 from rhodecode.lib import diffs
42 from rhodecode.lib import diffs, unionrepo
39
43
40 from rhodecode.model.db import Repository
44 from rhodecode.model.db import Repository
41 from rhodecode.model.pull_request import PullRequestModel
42 from webob.exc import HTTPBadRequest
45 from webob.exc import HTTPBadRequest
43 from rhodecode.lib.diffs import LimitedDiffContainer
46 from rhodecode.lib.diffs import LimitedDiffContainer
44 from rhodecode.lib.vcs.backends.base import EmptyChangeset
47
45
48
46 log = logging.getLogger(__name__)
49 log = logging.getLogger(__name__)
47
50
48
51
49 class CompareController(BaseRepoController):
52 class CompareController(BaseRepoController):
50
53
51 @LoginRequired()
52 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
53 'repository.admin')
54 def __before__(self):
54 def __before__(self):
55 super(CompareController, self).__before__()
55 super(CompareController, self).__before__()
56
56
@@ -82,6 +82,81 b' class CompareController(BaseRepoControll'
82 redirect(h.url('summary_home', repo_name=repo.repo_name))
82 redirect(h.url('summary_home', repo_name=repo.repo_name))
83 raise HTTPBadRequest()
83 raise HTTPBadRequest()
84
84
85 def _get_changesets(self, alias, org_repo, org_ref, other_repo, other_ref, merge):
86 """
87 Returns a list of changesets that can be merged from org_repo@org_ref
88 to other_repo@other_ref ... and the ancestor that would be used for merge
89
90 :param org_repo:
91 :param org_ref:
92 :param other_repo:
93 :param other_ref:
94 :param tmp:
95 """
96
97 ancestor = None
98
99 if alias == 'hg':
100 # lookup up the exact node id
101 _revset_predicates = {
102 'branch': 'branch',
103 'book': 'bookmark',
104 'tag': 'tag',
105 'rev': 'id',
106 }
107
108 org_rev_spec = "max(%s(%%s))" % _revset_predicates[org_ref[0]]
109 org_revs = org_repo._repo.revs(org_rev_spec, safe_str(org_ref[1]))
110 org_rev = org_repo._repo[org_revs[-1] if org_revs else -1].hex()
111
112 other_revs_spec = "max(%s(%%s))" % _revset_predicates[other_ref[0]]
113 other_revs = other_repo._repo.revs(other_revs_spec, safe_str(other_ref[1]))
114 other_rev = other_repo._repo[other_revs[-1] if other_revs else -1].hex()
115
116 #case two independent repos
117 if org_repo != other_repo:
118 hgrepo = unionrepo.unionrepository(other_repo.baseui,
119 other_repo.path,
120 org_repo.path)
121 # all the changesets we are looking for will be in other_repo,
122 # so rev numbers from hgrepo can be used in other_repo
123
124 #no remote compare do it on the same repository
125 else:
126 hgrepo = other_repo._repo
127
128 if merge:
129 revs = hgrepo.revs("ancestors(id(%s)) and not ancestors(id(%s)) and not id(%s)",
130 other_rev, org_rev, org_rev)
131
132 ancestors = hgrepo.revs("ancestor(id(%s), id(%s))", org_rev, other_rev)
133 if ancestors:
134 # pick arbitrary ancestor - but there is usually only one
135 ancestor = hgrepo[ancestors[0]].hex()
136 else:
137 # TODO: have both + and - changesets
138 revs = hgrepo.revs("id(%s) :: id(%s) - id(%s)",
139 org_rev, other_rev, org_rev)
140
141 changesets = [other_repo.get_changeset(rev) for rev in revs]
142
143 elif alias == 'git':
144 if org_repo != other_repo:
145 raise Exception('Comparing of different GIT repositories is not'
146 'allowed. Got %s != %s' % (org_repo, other_repo))
147
148 so, se = org_repo.run_git_command(
149 'log --reverse --pretty="format: %%H" -s -p %s..%s'
150 % (org_ref[1], other_ref[1])
151 )
152 changesets = [org_repo.get_changeset(cs)
153 for cs in re.findall(r'[0-9a-fA-F]{40}', so)]
154
155 return changesets, ancestor
156
157 @LoginRequired()
158 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
159 'repository.admin')
85 def index(self, org_ref_type, org_ref, other_ref_type, other_ref):
160 def index(self, org_ref_type, org_ref, other_ref_type, other_ref):
86 # org_ref will be evaluated in org_repo
161 # org_ref will be evaluated in org_repo
87 org_repo = c.rhodecode_db_repo.repo_name
162 org_repo = c.rhodecode_db_repo.repo_name
@@ -140,13 +215,17 b' class CompareController(BaseRepoControll'
140 c.org_ref_type = org_ref[0]
215 c.org_ref_type = org_ref[0]
141 c.other_ref_type = other_ref[0]
216 c.other_ref_type = other_ref[0]
142
217
143 c.cs_ranges, c.ancestor = PullRequestModel().get_compare_data(
218 c.cs_ranges, c.ancestor = self._get_changesets(org_repo.scm_instance.alias,
144 org_repo, org_ref, other_repo, other_ref, merge)
219 org_repo.scm_instance, org_ref,
220 other_repo.scm_instance, other_ref,
221 merge)
145
222
146 c.statuses = c.rhodecode_db_repo.statuses([x.raw_id for x in
223 c.statuses = c.rhodecode_db_repo.statuses([x.raw_id for x in
147 c.cs_ranges])
224 c.cs_ranges])
225 if not c.ancestor:
226 log.warning('Unable to find ancestor revision')
227
148 if partial:
228 if partial:
149 assert c.ancestor
150 return render('compare/compare_cs.html')
229 return render('compare/compare_cs.html')
151
230
152 if c.ancestor:
231 if c.ancestor:
@@ -161,9 +240,11 b' class CompareController(BaseRepoControll'
161
240
162 diff_limit = self.cut_off_limit if not c.fulldiff else None
241 diff_limit = self.cut_off_limit if not c.fulldiff else None
163
242
164 _diff = diffs.differ(org_repo, org_ref, other_repo, other_ref)
243 log.debug('running diff between %s and %s in %s'
244 % (org_ref, other_ref, org_repo.scm_instance.path))
245 txtdiff = org_repo.scm_instance.get_diff(rev1=safe_str(org_ref[1]), rev2=safe_str(other_ref[1]))
165
246
166 diff_processor = diffs.DiffProcessor(_diff or '', format='gitdiff',
247 diff_processor = diffs.DiffProcessor(txtdiff or '', format='gitdiff',
167 diff_limit=diff_limit)
248 diff_limit=diff_limit)
168 _parsed = diff_processor.prepare()
249 _parsed = diff_processor.prepare()
169
250
@@ -177,12 +258,12 b' class CompareController(BaseRepoControll'
177 c.lines_deleted = 0
258 c.lines_deleted = 0
178 for f in _parsed:
259 for f in _parsed:
179 st = f['stats']
260 st = f['stats']
180 if st[0] != 'b':
261 if not st['binary']:
181 c.lines_added += st[0]
262 c.lines_added += st['added']
182 c.lines_deleted += st[1]
263 c.lines_deleted += st['deleted']
183 fid = h.FID('', f['filename'])
264 fid = h.FID('', f['filename'])
184 c.files.append([fid, f['operation'], f['filename'], f['stats']])
265 c.files.append([fid, f['operation'], f['filename'], f['stats']])
185 diff = diff_processor.as_html(enable_comments=False, parsed_lines=[f])
266 htmldiff = diff_processor.as_html(enable_comments=False, parsed_lines=[f])
186 c.changes[fid] = [f['operation'], f['filename'], diff]
267 c.changes[fid] = [f['operation'], f['filename'], htmldiff]
187
268
188 return render('compare/compare_diff.html')
269 return render('compare/compare_diff.html')
@@ -87,8 +87,8 b' class ErrorController(BaseController):'
87 return fapp(request.environ, self.start_response)
87 return fapp(request.environ, self.start_response)
88
88
89 def get_error_explanation(self, code):
89 def get_error_explanation(self, code):
90 ''' get the error explanations of int codes
90 """ get the error explanations of int codes
91 [400, 401, 403, 404, 500]'''
91 [400, 401, 403, 404, 500]"""
92 try:
92 try:
93 code = int(code)
93 code = int(code)
94 except Exception:
94 except Exception:
@@ -76,8 +76,8 b' class FeedController(BaseRepoController)'
76 limited_diff = True
76 limited_diff = True
77
77
78 for st in _parsed:
78 for st in _parsed:
79 st.update({'added': st['stats'][0],
79 st.update({'added': st['stats']['added'],
80 'removed': st['stats'][1]})
80 'removed': st['stats']['deleted']})
81 changes.append('\n %(operation)s %(filename)s '
81 changes.append('\n %(operation)s %(filename)s '
82 '(%(added)s lines added, %(removed)s lines removed)'
82 '(%(added)s lines added, %(removed)s lines removed)'
83 % st)
83 % st)
@@ -87,9 +87,8 b' class FeedController(BaseRepoController)'
87 return diff_processor, changes
87 return diff_processor, changes
88
88
89 def __get_desc(self, cs):
89 def __get_desc(self, cs):
90 desc_msg = []
90 desc_msg = [(_('%s committed on %s')
91 desc_msg.append((_('%s committed on %s')
91 % (h.person(cs.author), h.fmt_date(cs.date))) + '<br/>']
92 % (h.person(cs.author), h.fmt_date(cs.date))) + '<br/>')
93 #branches, tags, bookmarks
92 #branches, tags, bookmarks
94 if cs.branch:
93 if cs.branch:
95 desc_msg.append('branch: %s<br/>' % cs.branch)
94 desc_msg.append('branch: %s<br/>' % cs.branch)
@@ -118,7 +117,7 b' class FeedController(BaseRepoController)'
118 """Produce an atom-1.0 feed via feedgenerator module"""
117 """Produce an atom-1.0 feed via feedgenerator module"""
119
118
120 @cache_region('long_term')
119 @cache_region('long_term')
121 def _get_feed_from_cache(key):
120 def _get_feed_from_cache(key, kind):
122 feed = Atom1Feed(
121 feed = Atom1Feed(
123 title=self.title % repo_name,
122 title=self.title % repo_name,
124 link=url('summary_home', repo_name=repo_name,
123 link=url('summary_home', repo_name=repo_name,
@@ -140,18 +139,17 b' class FeedController(BaseRepoController)'
140 response.content_type = feed.mime_type
139 response.content_type = feed.mime_type
141 return feed.writeString('utf-8')
140 return feed.writeString('utf-8')
142
141
143 key = repo_name + '_ATOM'
142 kind = 'ATOM'
144 inv = CacheInvalidation.invalidate(key)
143 valid = CacheInvalidation.test_and_set_valid(repo_name, kind)
145 if inv is not None:
144 if not valid:
146 region_invalidate(_get_feed_from_cache, None, key)
145 region_invalidate(_get_feed_from_cache, None, repo_name, kind)
147 CacheInvalidation.set_valid(inv.cache_key)
146 return _get_feed_from_cache(repo_name, kind)
148 return _get_feed_from_cache(key)
149
147
150 def rss(self, repo_name):
148 def rss(self, repo_name):
151 """Produce an rss2 feed via feedgenerator module"""
149 """Produce an rss2 feed via feedgenerator module"""
152
150
153 @cache_region('long_term')
151 @cache_region('long_term')
154 def _get_feed_from_cache(key):
152 def _get_feed_from_cache(key, kind):
155 feed = Rss201rev2Feed(
153 feed = Rss201rev2Feed(
156 title=self.title % repo_name,
154 title=self.title % repo_name,
157 link=url('summary_home', repo_name=repo_name,
155 link=url('summary_home', repo_name=repo_name,
@@ -173,9 +171,8 b' class FeedController(BaseRepoController)'
173 response.content_type = feed.mime_type
171 response.content_type = feed.mime_type
174 return feed.writeString('utf-8')
172 return feed.writeString('utf-8')
175
173
176 key = repo_name + '_RSS'
174 kind = 'RSS'
177 inv = CacheInvalidation.invalidate(key)
175 valid = CacheInvalidation.test_and_set_valid(repo_name, kind)
178 if inv is not None:
176 if not valid:
179 region_invalidate(_get_feed_from_cache, None, key)
177 region_invalidate(_get_feed_from_cache, None, repo_name, kind)
180 CacheInvalidation.set_valid(inv.cache_key)
178 return _get_feed_from_cache(repo_name, kind)
181 return _get_feed_from_cache(key)
@@ -32,7 +32,7 b' import shutil'
32 from pylons import request, response, tmpl_context as c, url
32 from pylons import request, response, tmpl_context as c, url
33 from pylons.i18n.translation import _
33 from pylons.i18n.translation import _
34 from pylons.controllers.util import redirect
34 from pylons.controllers.util import redirect
35 from rhodecode.lib.utils import jsonify
35 from rhodecode.lib.utils import jsonify, action_logger
36
36
37 from rhodecode.lib import diffs
37 from rhodecode.lib import diffs
38 from rhodecode.lib import helpers as h
38 from rhodecode.lib import helpers as h
@@ -57,6 +57,7 b' from rhodecode.model.db import Repositor'
57 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
57 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\
58 _context_url, get_line_ctx, get_ignore_ws
58 _context_url, get_line_ctx, get_ignore_ws
59 from webob.exc import HTTPNotFound
59 from webob.exc import HTTPNotFound
60 from rhodecode.lib.exceptions import NonRelativePathError
60
61
61
62
62 log = logging.getLogger(__name__)
63 log = logging.getLogger(__name__)
@@ -303,7 +304,7 b' class FilesController(BaseRepoController'
303 first_line = sl[0] if sl else ''
304 first_line = sl[0] if sl else ''
304 # modes: 0 - Unix, 1 - Mac, 2 - DOS
305 # modes: 0 - Unix, 1 - Mac, 2 - DOS
305 mode = detect_mode(first_line, 0)
306 mode = detect_mode(first_line, 0)
306 content = convert_line_endings(r_post.get('content'), mode)
307 content = convert_line_endings(r_post.get('content', ''), mode)
307
308
308 message = r_post.get('message') or c.default_message
309 message = r_post.get('message') or c.default_message
309 author = self.rhodecode_user.full_contact
310 author = self.rhodecode_user.full_contact
@@ -352,11 +353,11 b' class FilesController(BaseRepoController'
352
353
353 if r_post:
354 if r_post:
354 unix_mode = 0
355 unix_mode = 0
355 content = convert_line_endings(r_post.get('content'), unix_mode)
356 content = convert_line_endings(r_post.get('content', ''), unix_mode)
356
357
357 message = r_post.get('message') or c.default_message
358 message = r_post.get('message') or c.default_message
358 filename = r_post.get('filename')
359 filename = r_post.get('filename')
359 location = r_post.get('location')
360 location = r_post.get('location', '')
360 file_obj = r_post.get('upload_file', None)
361 file_obj = r_post.get('upload_file', None)
361
362
362 if file_obj is not None and hasattr(file_obj, 'filename'):
363 if file_obj is not None and hasattr(file_obj, 'filename'):
@@ -371,25 +372,32 b' class FilesController(BaseRepoController'
371 h.flash(_('No filename'), category='warning')
372 h.flash(_('No filename'), category='warning')
372 return redirect(url('changeset_home', repo_name=c.repo_name,
373 return redirect(url('changeset_home', repo_name=c.repo_name,
373 revision='tip'))
374 revision='tip'))
374 if location.startswith('/') or location.startswith('.') or '../' in location:
375 #strip all crap out of file, just leave the basename
375 h.flash(_('Location must be relative path and must not '
376 'contain .. in path'), category='warning')
377 return redirect(url('changeset_home', repo_name=c.repo_name,
378 revision='tip'))
379 if location:
380 location = os.path.normpath(location)
381 filename = os.path.basename(filename)
376 filename = os.path.basename(filename)
382 node_path = os.path.join(location, filename)
377 node_path = os.path.join(location, filename)
383 author = self.rhodecode_user.full_contact
378 author = self.rhodecode_user.full_contact
384
379
385 try:
380 try:
386 self.scm_model.create_node(repo=c.rhodecode_repo,
381 nodes = {
387 repo_name=repo_name, cs=c.cs,
382 node_path: {
388 user=self.rhodecode_user.user_id,
383 'content': content
389 author=author, message=message,
384 }
390 content=content, f_path=node_path)
385 }
386 self.scm_model.create_nodes(
387 user=c.rhodecode_user.user_id, repo=c.rhodecode_db_repo,
388 message=message,
389 nodes=nodes,
390 parent_cs=c.cs,
391 author=author,
392 )
393
391 h.flash(_('Successfully committed to %s') % node_path,
394 h.flash(_('Successfully committed to %s') % node_path,
392 category='success')
395 category='success')
396 except NonRelativePathError, e:
397 h.flash(_('Location must be relative path and must not '
398 'contain .. in path'), category='warning')
399 return redirect(url('changeset_home', repo_name=c.repo_name,
400 revision='tip'))
393 except (NodeError, NodeAlreadyExistsError), e:
401 except (NodeError, NodeAlreadyExistsError), e:
394 h.flash(_(e), category='error')
402 h.flash(_(e), category='error')
395 except Exception:
403 except Exception:
@@ -484,7 +492,10 b' class FilesController(BaseRepoController'
484 os.remove(archive)
492 os.remove(archive)
485 break
493 break
486 yield data
494 yield data
487
495 # store download action
496 action_logger(user=c.rhodecode_user,
497 action='user_downloaded_archive:%s' % (archive_name),
498 repo=repo_name, ipaddr=self.ip_addr, commit=True)
488 response.content_disposition = str('attachment; filename=%s' % (archive_name))
499 response.content_disposition = str('attachment; filename=%s' % (archive_name))
489 response.content_type = str(content_type)
500 response.content_type = str(content_type)
490 return get_chunked_archive(archive)
501 return get_chunked_archive(archive)
@@ -37,12 +37,12 b' log = logging.getLogger(__name__)'
37
37
38 class FollowersController(BaseRepoController):
38 class FollowersController(BaseRepoController):
39
39
40 def __before__(self):
41 super(FollowersController, self).__before__()
42
40 @LoginRequired()
43 @LoginRequired()
41 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
44 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
42 'repository.admin')
45 'repository.admin')
43 def __before__(self):
44 super(FollowersController, self).__before__()
45
46 def followers(self, repo_name):
46 def followers(self, repo_name):
47 p = safe_int(request.GET.get('page', 1), 1)
47 p = safe_int(request.GET.get('page', 1), 1)
48 repo_id = c.rhodecode_db_repo.repo_id
48 repo_id = c.rhodecode_db_repo.repo_id
@@ -42,7 +42,7 b' from rhodecode.model.db import Repositor'
42 RhodeCodeUi
42 RhodeCodeUi
43 from rhodecode.model.repo import RepoModel
43 from rhodecode.model.repo import RepoModel
44 from rhodecode.model.forms import RepoForkForm
44 from rhodecode.model.forms import RepoForkForm
45 from rhodecode.model.scm import ScmModel, GroupList
45 from rhodecode.model.scm import ScmModel, RepoGroupList
46 from rhodecode.lib.utils2 import safe_int
46 from rhodecode.lib.utils2 import safe_int
47
47
48 log = logging.getLogger(__name__)
48 log = logging.getLogger(__name__)
@@ -50,12 +50,11 b' log = logging.getLogger(__name__)'
50
50
51 class ForksController(BaseRepoController):
51 class ForksController(BaseRepoController):
52
52
53 @LoginRequired()
54 def __before__(self):
53 def __before__(self):
55 super(ForksController, self).__before__()
54 super(ForksController, self).__before__()
56
55
57 def __load_defaults(self):
56 def __load_defaults(self):
58 acl_groups = GroupList(RepoGroup.query().all(),
57 acl_groups = RepoGroupList(RepoGroup.query().all(),
59 perm_set=['group.write', 'group.admin'])
58 perm_set=['group.write', 'group.admin'])
60 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
59 c.repo_groups = RepoGroup.groups_choices(groups=acl_groups)
61 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
60 c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups)
@@ -78,7 +77,7 b' class ForksController(BaseRepoController'
78 h.not_mapped_error(repo_name)
77 h.not_mapped_error(repo_name)
79 return redirect(url('repos'))
78 return redirect(url('repos'))
80
79
81 c.default_user_id = User.get_by_username('default').user_id
80 c.default_user_id = User.get_default_user().user_id
82 c.in_public_journal = UserFollowing.query()\
81 c.in_public_journal = UserFollowing.query()\
83 .filter(UserFollowing.user_id == c.default_user_id)\
82 .filter(UserFollowing.user_id == c.default_user_id)\
84 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
83 .filter(UserFollowing.follows_repository == c.repo_info).scalar()
@@ -107,6 +106,7 b' class ForksController(BaseRepoController'
107
106
108 return defaults
107 return defaults
109
108
109 @LoginRequired()
110 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
110 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
111 'repository.admin')
111 'repository.admin')
112 def forks(self, repo_name):
112 def forks(self, repo_name):
@@ -128,6 +128,7 b' class ForksController(BaseRepoController'
128
128
129 return render('/forks/forks.html')
129 return render('/forks/forks.html')
130
130
131 @LoginRequired()
131 @NotAnonymous()
132 @NotAnonymous()
132 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
133 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
133 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
134 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
@@ -147,6 +148,7 b' class ForksController(BaseRepoController'
147 force_defaults=False
148 force_defaults=False
148 )
149 )
149
150
151 @LoginRequired()
150 @NotAnonymous()
152 @NotAnonymous()
151 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
153 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
152 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
154 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
@@ -32,7 +32,7 b' from sqlalchemy.sql.expression import fu'
32
32
33 import rhodecode
33 import rhodecode
34 from rhodecode.lib import helpers as h
34 from rhodecode.lib import helpers as h
35 from rhodecode.lib.ext_json import json
35 from rhodecode.lib.compat import json
36 from rhodecode.lib.auth import LoginRequired
36 from rhodecode.lib.auth import LoginRequired
37 from rhodecode.lib.base import BaseController, render
37 from rhodecode.lib.base import BaseController, render
38 from rhodecode.model.db import Repository
38 from rhodecode.model.db import Repository
@@ -44,30 +44,27 b' log = logging.getLogger(__name__)'
44
44
45 class HomeController(BaseController):
45 class HomeController(BaseController):
46
46
47 @LoginRequired()
48 def __before__(self):
47 def __before__(self):
49 super(HomeController, self).__before__()
48 super(HomeController, self).__before__()
50
49
50 @LoginRequired()
51 def index(self):
51 def index(self):
52 c.groups = self.scm_model.get_repos_groups()
52 c.groups = self.scm_model.get_repos_groups()
53 c.group = None
53 c.group = None
54
54
55 if not c.visual.lightweight_dashboard:
55 c.repos_list = Repository.query()\
56 c.repos_list = self.scm_model.get_repos()
56 .filter(Repository.group_id == None)\
57 ## lightweight version of dashboard
57 .order_by(func.lower(Repository.repo_name))\
58 else:
58 .all()
59 c.repos_list = Repository.query()\
60 .filter(Repository.group_id == None)\
61 .order_by(func.lower(Repository.repo_name))\
62 .all()
63
59
64 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
60 repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
65 admin=False)
61 admin=False)
66 #json used to render the grid
62 #json used to render the grid
67 c.data = json.dumps(repos_data)
63 c.data = json.dumps(repos_data)
68
64
69 return render('/index.html')
65 return render('/index.html')
70
66
67 @LoginRequired()
71 def repo_switcher(self):
68 def repo_switcher(self):
72 if request.is_xhr:
69 if request.is_xhr:
73 all_repos = Repository.query().order_by(Repository.repo_name).all()
70 all_repos = Repository.query().order_by(Repository.repo_name).all()
@@ -78,6 +75,7 b' class HomeController(BaseController):'
78 else:
75 else:
79 raise HTTPBadRequest()
76 raise HTTPBadRequest()
80
77
78 @LoginRequired()
81 def branch_tag_switcher(self, repo_name):
79 def branch_tag_switcher(self, repo_name):
82 if request.is_xhr:
80 if request.is_xhr:
83 c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name)
81 c.rhodecode_db_repo = Repository.get_by_repo_name(c.repo_name)
@@ -29,21 +29,21 b' from sqlalchemy import or_'
29 from sqlalchemy.orm import joinedload
29 from sqlalchemy.orm import joinedload
30 from sqlalchemy.sql.expression import func
30 from sqlalchemy.sql.expression import func
31
31
32 from webhelpers.paginate import Page
33 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
32 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
34
33
35 from webob.exc import HTTPBadRequest
34 from webob.exc import HTTPBadRequest
36 from pylons import request, tmpl_context as c, response, url
35 from pylons import request, tmpl_context as c, response, url
37 from pylons.i18n.translation import _
36 from pylons.i18n.translation import _
38
37
38 from rhodecode.controllers.admin.admin import _journal_filter
39 from rhodecode.model.db import UserLog, UserFollowing, Repository, User
40 from rhodecode.model.meta import Session
41 from rhodecode.model.repo import RepoModel
39 import rhodecode.lib.helpers as h
42 import rhodecode.lib.helpers as h
43 from rhodecode.lib.helpers import Page
40 from rhodecode.lib.auth import LoginRequired, NotAnonymous
44 from rhodecode.lib.auth import LoginRequired, NotAnonymous
41 from rhodecode.lib.base import BaseController, render
45 from rhodecode.lib.base import BaseController, render
42 from rhodecode.model.db import UserLog, UserFollowing, Repository, User
43 from rhodecode.model.meta import Session
44 from rhodecode.lib.utils2 import safe_int, AttributeDict
46 from rhodecode.lib.utils2 import safe_int, AttributeDict
45 from rhodecode.controllers.admin.admin import _journal_filter
46 from rhodecode.model.repo import RepoModel
47 from rhodecode.lib.compat import json
47 from rhodecode.lib.compat import json
48
48
49 log = logging.getLogger(__name__)
49 log = logging.getLogger(__name__)
@@ -58,6 +58,137 b' class JournalController(BaseController):'
58 self.feed_nr = 20
58 self.feed_nr = 20
59 c.search_term = request.GET.get('filter')
59 c.search_term = request.GET.get('filter')
60
60
61 def _get_daily_aggregate(self, journal):
62 groups = []
63 for k, g in groupby(journal, lambda x: x.action_as_day):
64 user_group = []
65 #groupby username if it's a present value, else fallback to journal username
66 for _, g2 in groupby(list(g), lambda x: x.user.username if x.user else x.username):
67 l = list(g2)
68 user_group.append((l[0].user, l))
69
70 groups.append((k, user_group,))
71
72 return groups
73
74 def _get_journal_data(self, following_repos):
75 repo_ids = [x.follows_repository.repo_id for x in following_repos
76 if x.follows_repository is not None]
77 user_ids = [x.follows_user.user_id for x in following_repos
78 if x.follows_user is not None]
79
80 filtering_criterion = None
81
82 if repo_ids and user_ids:
83 filtering_criterion = or_(UserLog.repository_id.in_(repo_ids),
84 UserLog.user_id.in_(user_ids))
85 if repo_ids and not user_ids:
86 filtering_criterion = UserLog.repository_id.in_(repo_ids)
87 if not repo_ids and user_ids:
88 filtering_criterion = UserLog.user_id.in_(user_ids)
89 if filtering_criterion is not None:
90 journal = self.sa.query(UserLog)\
91 .options(joinedload(UserLog.user))\
92 .options(joinedload(UserLog.repository))
93 #filter
94 try:
95 journal = _journal_filter(journal, c.search_term)
96 except Exception:
97 # we want this to crash for now
98 raise
99 journal = journal.filter(filtering_criterion)\
100 .order_by(UserLog.action_date.desc())
101 else:
102 journal = []
103
104 return journal
105
106 def _atom_feed(self, repos, public=True):
107 journal = self._get_journal_data(repos)
108 if public:
109 _link = url('public_journal_atom', qualified=True)
110 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'),
111 'atom feed')
112 else:
113 _link = url('journal_atom', qualified=True)
114 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'atom feed')
115
116 feed = Atom1Feed(title=_desc,
117 link=_link,
118 description=_desc,
119 language=self.language,
120 ttl=self.ttl)
121
122 for entry in journal[:self.feed_nr]:
123 user = entry.user
124 if user is None:
125 #fix deleted users
126 user = AttributeDict({'short_contact': entry.username,
127 'email': '',
128 'full_contact': ''})
129 action, action_extra, ico = h.action_parser(entry, feed=True)
130 title = "%s - %s %s" % (user.short_contact, action(),
131 entry.repository.repo_name)
132 desc = action_extra()
133 _url = None
134 if entry.repository is not None:
135 _url = url('changelog_home',
136 repo_name=entry.repository.repo_name,
137 qualified=True)
138
139 feed.add_item(title=title,
140 pubdate=entry.action_date,
141 link=_url or url('', qualified=True),
142 author_email=user.email,
143 author_name=user.full_contact,
144 description=desc)
145
146 response.content_type = feed.mime_type
147 return feed.writeString('utf-8')
148
149 def _rss_feed(self, repos, public=True):
150 journal = self._get_journal_data(repos)
151 if public:
152 _link = url('public_journal_atom', qualified=True)
153 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'),
154 'rss feed')
155 else:
156 _link = url('journal_atom', qualified=True)
157 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'rss feed')
158
159 feed = Rss201rev2Feed(title=_desc,
160 link=_link,
161 description=_desc,
162 language=self.language,
163 ttl=self.ttl)
164
165 for entry in journal[:self.feed_nr]:
166 user = entry.user
167 if user is None:
168 #fix deleted users
169 user = AttributeDict({'short_contact': entry.username,
170 'email': '',
171 'full_contact': ''})
172 action, action_extra, ico = h.action_parser(entry, feed=True)
173 title = "%s - %s %s" % (user.short_contact, action(),
174 entry.repository.repo_name)
175 desc = action_extra()
176 _url = None
177 if entry.repository is not None:
178 _url = url('changelog_home',
179 repo_name=entry.repository.repo_name,
180 qualified=True)
181
182 feed.add_item(title=title,
183 pubdate=entry.action_date,
184 link=_url or url('', qualified=True),
185 author_email=user.email,
186 author_name=user.full_contact,
187 description=desc)
188
189 response.content_type = feed.mime_type
190 return feed.writeString('utf-8')
191
61 @LoginRequired()
192 @LoginRequired()
62 @NotAnonymous()
193 @NotAnonymous()
63 def index(self):
194 def index(self):
@@ -172,51 +303,6 b' class JournalController(BaseController):'
172 .all()
303 .all()
173 return self._rss_feed(following, public=False)
304 return self._rss_feed(following, public=False)
174
305
175 def _get_daily_aggregate(self, journal):
176 groups = []
177 for k, g in groupby(journal, lambda x: x.action_as_day):
178 user_group = []
179 #groupby username if it's a present value, else fallback to journal username
180 for _, g2 in groupby(list(g), lambda x: x.user.username if x.user else x.username):
181 l = list(g2)
182 user_group.append((l[0].user, l))
183
184 groups.append((k, user_group,))
185
186 return groups
187
188 def _get_journal_data(self, following_repos):
189 repo_ids = [x.follows_repository.repo_id for x in following_repos
190 if x.follows_repository is not None]
191 user_ids = [x.follows_user.user_id for x in following_repos
192 if x.follows_user is not None]
193
194 filtering_criterion = None
195
196 if repo_ids and user_ids:
197 filtering_criterion = or_(UserLog.repository_id.in_(repo_ids),
198 UserLog.user_id.in_(user_ids))
199 if repo_ids and not user_ids:
200 filtering_criterion = UserLog.repository_id.in_(repo_ids)
201 if not repo_ids and user_ids:
202 filtering_criterion = UserLog.user_id.in_(user_ids)
203 if filtering_criterion is not None:
204 journal = self.sa.query(UserLog)\
205 .options(joinedload(UserLog.user))\
206 .options(joinedload(UserLog.repository))
207 #filter
208 try:
209 journal = _journal_filter(journal, c.search_term)
210 except Exception:
211 # we want this to crash for now
212 raise
213 journal = journal.filter(filtering_criterion)\
214 .order_by(UserLog.action_date.desc())
215 else:
216 journal = []
217
218 return journal
219
220 @LoginRequired()
306 @LoginRequired()
221 @NotAnonymous()
307 @NotAnonymous()
222 def toggle_following(self):
308 def toggle_following(self):
@@ -268,92 +354,6 b' class JournalController(BaseController):'
268 return c.journal_data
354 return c.journal_data
269 return render('journal/public_journal.html')
355 return render('journal/public_journal.html')
270
356
271 def _atom_feed(self, repos, public=True):
272 journal = self._get_journal_data(repos)
273 if public:
274 _link = url('public_journal_atom', qualified=True)
275 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'),
276 'atom feed')
277 else:
278 _link = url('journal_atom', qualified=True)
279 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'atom feed')
280
281 feed = Atom1Feed(title=_desc,
282 link=_link,
283 description=_desc,
284 language=self.language,
285 ttl=self.ttl)
286
287 for entry in journal[:self.feed_nr]:
288 user = entry.user
289 if user is None:
290 #fix deleted users
291 user = AttributeDict({'short_contact': entry.username,
292 'email': '',
293 'full_contact': ''})
294 action, action_extra, ico = h.action_parser(entry, feed=True)
295 title = "%s - %s %s" % (user.short_contact, action(),
296 entry.repository.repo_name)
297 desc = action_extra()
298 _url = None
299 if entry.repository is not None:
300 _url = url('changelog_home',
301 repo_name=entry.repository.repo_name,
302 qualified=True)
303
304 feed.add_item(title=title,
305 pubdate=entry.action_date,
306 link=_url or url('', qualified=True),
307 author_email=user.email,
308 author_name=user.full_contact,
309 description=desc)
310
311 response.content_type = feed.mime_type
312 return feed.writeString('utf-8')
313
314 def _rss_feed(self, repos, public=True):
315 journal = self._get_journal_data(repos)
316 if public:
317 _link = url('public_journal_atom', qualified=True)
318 _desc = '%s %s %s' % (c.rhodecode_name, _('public journal'),
319 'rss feed')
320 else:
321 _link = url('journal_atom', qualified=True)
322 _desc = '%s %s %s' % (c.rhodecode_name, _('journal'), 'rss feed')
323
324 feed = Rss201rev2Feed(title=_desc,
325 link=_link,
326 description=_desc,
327 language=self.language,
328 ttl=self.ttl)
329
330 for entry in journal[:self.feed_nr]:
331 user = entry.user
332 if user is None:
333 #fix deleted users
334 user = AttributeDict({'short_contact': entry.username,
335 'email': '',
336 'full_contact': ''})
337 action, action_extra, ico = h.action_parser(entry, feed=True)
338 title = "%s - %s %s" % (user.short_contact, action(),
339 entry.repository.repo_name)
340 desc = action_extra()
341 _url = None
342 if entry.repository is not None:
343 _url = url('changelog_home',
344 repo_name=entry.repository.repo_name,
345 qualified=True)
346
347 feed.add_item(title=title,
348 pubdate=entry.action_date,
349 link=_url or url('', qualified=True),
350 author_email=user.email,
351 author_name=user.full_contact,
352 description=desc)
353
354 response.content_type = feed.mime_type
355 return feed.writeString('utf-8')
356
357 @LoginRequired(api_access=True)
357 @LoginRequired(api_access=True)
358 def public_journal_atom(self):
358 def public_journal_atom(self):
359 """
359 """
@@ -126,7 +126,7 b' class LoginController(BaseController):'
126 @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate',
126 @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate',
127 'hg.register.manual_activate')
127 'hg.register.manual_activate')
128 def register(self):
128 def register(self):
129 c.auto_active = 'hg.register.auto_activate' in User.get_by_username('default')\
129 c.auto_active = 'hg.register.auto_activate' in User.get_default_user()\
130 .AuthUser.permissions['global']
130 .AuthUser.permissions['global']
131
131
132 if request.POST:
132 if request.POST:
@@ -30,8 +30,8 b' from webob.exc import HTTPNotFound, HTTP'
30 from collections import defaultdict
30 from collections import defaultdict
31 from itertools import groupby
31 from itertools import groupby
32
32
33 from pylons import request, response, session, tmpl_context as c, url
33 from pylons import request, tmpl_context as c, url
34 from pylons.controllers.util import abort, redirect
34 from pylons.controllers.util import redirect
35 from pylons.i18n.translation import _
35 from pylons.i18n.translation import _
36
36
37 from rhodecode.lib.compat import json
37 from rhodecode.lib.compat import json
@@ -42,18 +42,16 b' from rhodecode.lib.helpers import Page'
42 from rhodecode.lib import helpers as h
42 from rhodecode.lib import helpers as h
43 from rhodecode.lib import diffs
43 from rhodecode.lib import diffs
44 from rhodecode.lib.utils import action_logger, jsonify
44 from rhodecode.lib.utils import action_logger, jsonify
45 from rhodecode.lib.vcs.utils import safe_str
45 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError
46 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError
46 from rhodecode.lib.vcs.backends.base import EmptyChangeset
47 from rhodecode.lib.diffs import LimitedDiffContainer
47 from rhodecode.lib.diffs import LimitedDiffContainer
48 from rhodecode.model.db import User, PullRequest, ChangesetStatus,\
48 from rhodecode.model.db import PullRequest, ChangesetStatus, ChangesetComment
49 ChangesetComment
50 from rhodecode.model.pull_request import PullRequestModel
49 from rhodecode.model.pull_request import PullRequestModel
51 from rhodecode.model.meta import Session
50 from rhodecode.model.meta import Session
52 from rhodecode.model.repo import RepoModel
51 from rhodecode.model.repo import RepoModel
53 from rhodecode.model.comment import ChangesetCommentsModel
52 from rhodecode.model.comment import ChangesetCommentsModel
54 from rhodecode.model.changeset_status import ChangesetStatusModel
53 from rhodecode.model.changeset_status import ChangesetStatusModel
55 from rhodecode.model.forms import PullRequestForm
54 from rhodecode.model.forms import PullRequestForm
56 from mercurial import scmutil
57 from rhodecode.lib.utils2 import safe_int
55 from rhodecode.lib.utils2 import safe_int
58
56
59 log = logging.getLogger(__name__)
57 log = logging.getLogger(__name__)
@@ -61,47 +59,67 b' log = logging.getLogger(__name__)'
61
59
62 class PullrequestsController(BaseRepoController):
60 class PullrequestsController(BaseRepoController):
63
61
64 @LoginRequired()
65 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
66 'repository.admin')
67 def __before__(self):
62 def __before__(self):
68 super(PullrequestsController, self).__before__()
63 super(PullrequestsController, self).__before__()
69 repo_model = RepoModel()
64 repo_model = RepoModel()
70 c.users_array = repo_model.get_users_js()
65 c.users_array = repo_model.get_users_js()
71 c.users_groups_array = repo_model.get_users_groups_js()
66 c.users_groups_array = repo_model.get_users_groups_js()
72
67
73 def _get_repo_refs(self, repo, rev=None, branch_rev=None):
68 def _get_repo_refs(self, repo, rev=None, branch=None, branch_rev=None):
74 """return a structure with repo's interesting changesets, suitable for
69 """return a structure with repo's interesting changesets, suitable for
75 the selectors in pullrequest.html"""
70 the selectors in pullrequest.html
76
71
72 rev: a revision that must be in the list somehow and selected by default
73 branch: a branch that must be in the list and selected by default - even if closed
74 branch_rev: a revision of which peers should be preferred and available."""
77 # list named branches that has been merged to this named branch - it should probably merge back
75 # list named branches that has been merged to this named branch - it should probably merge back
78 peers = []
76 peers = []
77
78 if rev:
79 rev = safe_str(rev)
80
81 if branch:
82 branch = safe_str(branch)
83
79 if branch_rev:
84 if branch_rev:
85 branch_rev = safe_str(branch_rev)
80 # not restricting to merge() would also get branch point and be better
86 # not restricting to merge() would also get branch point and be better
81 # (especially because it would get the branch point) ... but is currently too expensive
87 # (especially because it would get the branch point) ... but is currently too expensive
82 revs = ["sort(parents(branch(id('%s')) and merge()) - branch(id('%s')))" %
83 (branch_rev, branch_rev)]
84 otherbranches = {}
88 otherbranches = {}
85 for i in scmutil.revrange(repo._repo, revs):
89 for i in repo._repo.revs(
90 "sort(parents(branch(id(%s)) and merge()) - branch(id(%s)))",
91 branch_rev, branch_rev):
86 cs = repo.get_changeset(i)
92 cs = repo.get_changeset(i)
87 otherbranches[cs.branch] = cs.raw_id
93 otherbranches[cs.branch] = cs.raw_id
88 for branch, node in otherbranches.iteritems():
94 for abranch, node in otherbranches.iteritems():
89 selected = 'branch:%s:%s' % (branch, node)
95 selected = 'branch:%s:%s' % (abranch, node)
90 peers.append((selected, branch))
96 peers.append((selected, abranch))
91
97
92 selected = None
98 selected = None
99
93 branches = []
100 branches = []
94 for branch, branchrev in repo.branches.iteritems():
101 for abranch, branchrev in repo.branches.iteritems():
95 n = 'branch:%s:%s' % (branch, branchrev)
102 n = 'branch:%s:%s' % (abranch, branchrev)
96 branches.append((n, branch))
103 branches.append((n, abranch))
97 if rev == branchrev:
104 if rev == branchrev:
98 selected = n
105 selected = n
106 if branch == abranch:
107 selected = n
108 branch = None
109 if branch: # branch not in list - it is probably closed
110 revs = repo._repo.revs('max(branch(%s))', branch)
111 if revs:
112 cs = repo.get_changeset(revs[0])
113 selected = 'branch:%s:%s' % (branch, cs.raw_id)
114 branches.append((selected, branch))
115
99 bookmarks = []
116 bookmarks = []
100 for bookmark, bookmarkrev in repo.bookmarks.iteritems():
117 for bookmark, bookmarkrev in repo.bookmarks.iteritems():
101 n = 'book:%s:%s' % (bookmark, bookmarkrev)
118 n = 'book:%s:%s' % (bookmark, bookmarkrev)
102 bookmarks.append((n, bookmark))
119 bookmarks.append((n, bookmark))
103 if rev == bookmarkrev:
120 if rev == bookmarkrev:
104 selected = n
121 selected = n
122
105 tags = []
123 tags = []
106 for tag, tagrev in repo.tags.iteritems():
124 for tag, tagrev in repo.tags.iteritems():
107 n = 'tag:%s:%s' % (tag, tagrev)
125 n = 'tag:%s:%s' % (tag, tagrev)
@@ -139,6 +157,74 b' class PullrequestsController(BaseRepoCon'
139 pull_request.reviewers]
157 pull_request.reviewers]
140 return (self.rhodecode_user.admin or owner or reviewer)
158 return (self.rhodecode_user.admin or owner or reviewer)
141
159
160 def _load_compare_data(self, pull_request, enable_comments=True):
161 """
162 Load context data needed for generating compare diff
163
164 :param pull_request:
165 """
166 org_repo = pull_request.org_repo
167 (org_ref_type,
168 org_ref_name,
169 org_ref_rev) = pull_request.org_ref.split(':')
170
171 other_repo = org_repo
172 (other_ref_type,
173 other_ref_name,
174 other_ref_rev) = pull_request.other_ref.split(':')
175
176 # despite opening revisions for bookmarks/branches/tags, we always
177 # convert this to rev to prevent changes after bookmark or branch change
178 org_ref = ('rev', org_ref_rev)
179 other_ref = ('rev', other_ref_rev)
180
181 c.org_repo = org_repo
182 c.other_repo = other_repo
183
184 c.fulldiff = fulldiff = request.GET.get('fulldiff')
185
186 c.cs_ranges = [org_repo.get_changeset(x) for x in pull_request.revisions]
187
188 c.statuses = org_repo.statuses([x.raw_id for x in c.cs_ranges])
189
190 c.org_ref = org_ref[1]
191 c.org_ref_type = org_ref[0]
192 c.other_ref = other_ref[1]
193 c.other_ref_type = other_ref[0]
194
195 diff_limit = self.cut_off_limit if not fulldiff else None
196
197 # we swap org/other ref since we run a simple diff on one repo
198 log.debug('running diff between %s and %s in %s'
199 % (other_ref, org_ref, org_repo.scm_instance.path))
200 txtdiff = org_repo.scm_instance.get_diff(rev1=safe_str(other_ref[1]), rev2=safe_str(org_ref[1]))
201
202 diff_processor = diffs.DiffProcessor(txtdiff or '', format='gitdiff',
203 diff_limit=diff_limit)
204 _parsed = diff_processor.prepare()
205
206 c.limited_diff = False
207 if isinstance(_parsed, LimitedDiffContainer):
208 c.limited_diff = True
209
210 c.files = []
211 c.changes = {}
212 c.lines_added = 0
213 c.lines_deleted = 0
214
215 for f in _parsed:
216 st = f['stats']
217 c.lines_added += st['added']
218 c.lines_deleted += st['deleted']
219 fid = h.FID('', f['filename'])
220 c.files.append([fid, f['operation'], f['filename'], f['stats']])
221 htmldiff = diff_processor.as_html(enable_comments=enable_comments,
222 parsed_lines=[f])
223 c.changes[fid] = [f['operation'], f['filename'], htmldiff]
224
225 @LoginRequired()
226 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
227 'repository.admin')
142 def show_all(self, repo_name):
228 def show_all(self, repo_name):
143 c.pull_requests = PullRequestModel().get_all(repo_name)
229 c.pull_requests = PullRequestModel().get_all(repo_name)
144 c.repo_name = repo_name
230 c.repo_name = repo_name
@@ -153,7 +239,10 b' class PullrequestsController(BaseRepoCon'
153
239
154 return render('/pullrequests/pullrequest_show_all.html')
240 return render('/pullrequests/pullrequest_show_all.html')
155
241
242 @LoginRequired()
156 @NotAnonymous()
243 @NotAnonymous()
244 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
245 'repository.admin')
157 def index(self):
246 def index(self):
158 org_repo = c.rhodecode_db_repo
247 org_repo = c.rhodecode_db_repo
159
248
@@ -172,11 +261,12 b' class PullrequestsController(BaseRepoCon'
172 # rev_start is not directly useful - its parent could however be used
261 # rev_start is not directly useful - its parent could however be used
173 # as default for other and thus give a simple compare view
262 # as default for other and thus give a simple compare view
174 #other_rev = request.POST.get('rev_start')
263 #other_rev = request.POST.get('rev_start')
264 branch = request.GET.get('branch')
175
265
176 c.org_repos = []
266 c.org_repos = []
177 c.org_repos.append((org_repo.repo_name, org_repo.repo_name))
267 c.org_repos.append((org_repo.repo_name, org_repo.repo_name))
178 c.default_org_repo = org_repo.repo_name
268 c.default_org_repo = org_repo.repo_name
179 c.org_refs, c.default_org_ref = self._get_repo_refs(org_repo.scm_instance, org_rev)
269 c.org_refs, c.default_org_ref = self._get_repo_refs(org_repo.scm_instance, rev=org_rev, branch=branch)
180
270
181 c.other_repos = []
271 c.other_repos = []
182 other_repos_info = {}
272 other_repos_info = {}
@@ -215,7 +305,10 b' class PullrequestsController(BaseRepoCon'
215
305
216 return render('/pullrequests/pullrequest.html')
306 return render('/pullrequests/pullrequest.html')
217
307
308 @LoginRequired()
218 @NotAnonymous()
309 @NotAnonymous()
310 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
311 'repository.admin')
219 def create(self, repo_name):
312 def create(self, repo_name):
220 repo = RepoModel()._get_repo(repo_name)
313 repo = RepoModel()._get_repo(repo_name)
221 try:
314 try:
@@ -236,12 +329,11 b' class PullrequestsController(BaseRepoCon'
236 org_ref = 'rev:merge:%s' % _form['merge_rev']
329 org_ref = 'rev:merge:%s' % _form['merge_rev']
237 other_repo = _form['other_repo']
330 other_repo = _form['other_repo']
238 other_ref = 'rev:ancestor:%s' % _form['ancestor_rev']
331 other_ref = 'rev:ancestor:%s' % _form['ancestor_rev']
239 revisions = _form['revisions']
332 revisions = [x for x in reversed(_form['revisions'])]
240 reviewers = _form['review_members']
333 reviewers = _form['review_members']
241
334
242 title = _form['pullrequest_title']
335 title = _form['pullrequest_title']
243 description = _form['pullrequest_desc']
336 description = _form['pullrequest_desc']
244
245 try:
337 try:
246 pull_request = PullRequestModel().create(
338 pull_request = PullRequestModel().create(
247 self.rhodecode_user.user_id, org_repo, org_ref, other_repo,
339 self.rhodecode_user.user_id, org_repo, org_ref, other_repo,
@@ -259,7 +351,10 b' class PullrequestsController(BaseRepoCon'
259 return redirect(url('pullrequest_show', repo_name=other_repo,
351 return redirect(url('pullrequest_show', repo_name=other_repo,
260 pull_request_id=pull_request.pull_request_id))
352 pull_request_id=pull_request.pull_request_id))
261
353
354 @LoginRequired()
262 @NotAnonymous()
355 @NotAnonymous()
356 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
357 'repository.admin')
263 @jsonify
358 @jsonify
264 def update(self, repo_name, pull_request_id):
359 def update(self, repo_name, pull_request_id):
265 pull_request = PullRequest.get_or_404(pull_request_id)
360 pull_request = PullRequest.get_or_404(pull_request_id)
@@ -276,7 +371,10 b' class PullrequestsController(BaseRepoCon'
276 return True
371 return True
277 raise HTTPForbidden()
372 raise HTTPForbidden()
278
373
374 @LoginRequired()
279 @NotAnonymous()
375 @NotAnonymous()
376 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
377 'repository.admin')
280 @jsonify
378 @jsonify
281 def delete(self, repo_name, pull_request_id):
379 def delete(self, repo_name, pull_request_id):
282 pull_request = PullRequest.get_or_404(pull_request_id)
380 pull_request = PullRequest.get_or_404(pull_request_id)
@@ -289,70 +387,9 b' class PullrequestsController(BaseRepoCon'
289 return redirect(url('admin_settings_my_account', anchor='pullrequests'))
387 return redirect(url('admin_settings_my_account', anchor='pullrequests'))
290 raise HTTPForbidden()
388 raise HTTPForbidden()
291
389
292 def _load_compare_data(self, pull_request, enable_comments=True):
390 @LoginRequired()
293 """
391 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
294 Load context data needed for generating compare diff
392 'repository.admin')
295
296 :param pull_request:
297 :type pull_request:
298 """
299 org_repo = pull_request.org_repo
300 (org_ref_type,
301 org_ref_name,
302 org_ref_rev) = pull_request.org_ref.split(':')
303
304 other_repo = org_repo
305 (other_ref_type,
306 other_ref_name,
307 other_ref_rev) = pull_request.other_ref.split(':')
308
309 # despite opening revisions for bookmarks/branches/tags, we always
310 # convert this to rev to prevent changes after bookmark or branch change
311 org_ref = ('rev', org_ref_rev)
312 other_ref = ('rev', other_ref_rev)
313
314 c.org_repo = org_repo
315 c.other_repo = other_repo
316
317 c.fulldiff = fulldiff = request.GET.get('fulldiff')
318
319 c.cs_ranges = [org_repo.get_changeset(x) for x in pull_request.revisions]
320
321 c.statuses = org_repo.statuses([x.raw_id for x in c.cs_ranges])
322
323 c.org_ref = org_ref[1]
324 c.org_ref_type = org_ref[0]
325 c.other_ref = other_ref[1]
326 c.other_ref_type = other_ref[0]
327
328 diff_limit = self.cut_off_limit if not fulldiff else None
329
330 #we swap org/other ref since we run a simple diff on one repo
331 _diff = diffs.differ(org_repo, other_ref, other_repo, org_ref)
332
333 diff_processor = diffs.DiffProcessor(_diff or '', format='gitdiff',
334 diff_limit=diff_limit)
335 _parsed = diff_processor.prepare()
336
337 c.limited_diff = False
338 if isinstance(_parsed, LimitedDiffContainer):
339 c.limited_diff = True
340
341 c.files = []
342 c.changes = {}
343 c.lines_added = 0
344 c.lines_deleted = 0
345 for f in _parsed:
346 st = f['stats']
347 if st[0] != 'b':
348 c.lines_added += st[0]
349 c.lines_deleted += st[1]
350 fid = h.FID('', f['filename'])
351 c.files.append([fid, f['operation'], f['filename'], f['stats']])
352 diff = diff_processor.as_html(enable_comments=enable_comments,
353 parsed_lines=[f])
354 c.changes[fid] = [f['operation'], f['filename'], diff]
355
356 def show(self, repo_name, pull_request_id):
393 def show(self, repo_name, pull_request_id):
357 repo_model = RepoModel()
394 repo_model = RepoModel()
358 c.users_array = repo_model.get_users_js()
395 c.users_array = repo_model.get_users_js()
@@ -421,7 +458,10 b' class PullrequestsController(BaseRepoCon'
421 c.ancestor = None # there is one - but right here we don't know which
458 c.ancestor = None # there is one - but right here we don't know which
422 return render('/pullrequests/pullrequest_show.html')
459 return render('/pullrequests/pullrequest_show.html')
423
460
461 @LoginRequired()
424 @NotAnonymous()
462 @NotAnonymous()
463 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
464 'repository.admin')
425 @jsonify
465 @jsonify
426 def comment(self, repo_name, pull_request_id):
466 def comment(self, repo_name, pull_request_id):
427 pull_request = PullRequest.get_or_404(pull_request_id)
467 pull_request = PullRequest.get_or_404(pull_request_id)
@@ -496,7 +536,10 b' class PullrequestsController(BaseRepoCon'
496
536
497 return data
537 return data
498
538
539 @LoginRequired()
499 @NotAnonymous()
540 @NotAnonymous()
541 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
542 'repository.admin')
500 @jsonify
543 @jsonify
501 def delete_comment(self, repo_name, comment_id):
544 def delete_comment(self, repo_name, comment_id):
502 co = ChangesetComment.get(comment_id)
545 co = ChangesetComment.get(comment_id)
@@ -28,30 +28,28 b' import urllib'
28 from pylons.i18n.translation import _
28 from pylons.i18n.translation import _
29 from pylons import request, config, tmpl_context as c
29 from pylons import request, config, tmpl_context as c
30
30
31 from whoosh.index import open_dir, EmptyIndexError
32 from whoosh.qparser import QueryParser, QueryParserError
33 from whoosh.query import Phrase, Wildcard, Term, Prefix
34 from webhelpers.util import update_params
35
31 from rhodecode.lib.auth import LoginRequired
36 from rhodecode.lib.auth import LoginRequired
32 from rhodecode.lib.base import BaseRepoController, render
37 from rhodecode.lib.base import BaseRepoController, render
33 from rhodecode.lib.indexers import CHGSETS_SCHEMA, SCHEMA, CHGSET_IDX_NAME, \
38 from rhodecode.lib.indexers import CHGSETS_SCHEMA, SCHEMA, CHGSET_IDX_NAME, \
34 IDX_NAME, WhooshResultWrapper
39 IDX_NAME, WhooshResultWrapper
35
36 from webhelpers.paginate import Page
37 from webhelpers.util import update_params
38
39 from whoosh.index import open_dir, EmptyIndexError
40 from whoosh.qparser import QueryParser, QueryParserError
41 from whoosh.query import Phrase, Wildcard, Term, Prefix
42 from rhodecode.model.repo import RepoModel
40 from rhodecode.model.repo import RepoModel
43 from rhodecode.lib.utils2 import safe_str, safe_int
41 from rhodecode.lib.utils2 import safe_str, safe_int
44
42 from rhodecode.lib.helpers import Page
45
43
46 log = logging.getLogger(__name__)
44 log = logging.getLogger(__name__)
47
45
48
46
49 class SearchController(BaseRepoController):
47 class SearchController(BaseRepoController):
50
48
51 @LoginRequired()
52 def __before__(self):
49 def __before__(self):
53 super(SearchController, self).__before__()
50 super(SearchController, self).__before__()
54
51
52 @LoginRequired()
55 def index(self, repo_name=None):
53 def index(self, repo_name=None):
56 c.repo_name = repo_name
54 c.repo_name = repo_name
57 c.formated_results = []
55 c.formated_results = []
@@ -55,6 +55,7 b' from rhodecode.lib.celerylib.tasks impor'
55 from rhodecode.lib.helpers import RepoPage
55 from rhodecode.lib.helpers import RepoPage
56 from rhodecode.lib.compat import json, OrderedDict
56 from rhodecode.lib.compat import json, OrderedDict
57 from rhodecode.lib.vcs.nodes import FileNode
57 from rhodecode.lib.vcs.nodes import FileNode
58 from rhodecode.controllers.changelog import _load_changelog_summary
58
59
59 log = logging.getLogger(__name__)
60 log = logging.getLogger(__name__)
60
61
@@ -65,23 +66,76 b" README_FILES = [''.join([x[0][0], x[1][0"
65
66
66 class SummaryController(BaseRepoController):
67 class SummaryController(BaseRepoController):
67
68
68 @LoginRequired()
69 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
70 'repository.admin')
71 def __before__(self):
69 def __before__(self):
72 super(SummaryController, self).__before__()
70 super(SummaryController, self).__before__()
73
71
72 def _get_download_links(self, repo):
73
74 download_l = []
75
76 branches_group = ([], _("Branches"))
77 tags_group = ([], _("Tags"))
78
79 for name, chs in c.rhodecode_repo.branches.items():
80 #chs = chs.split(':')[-1]
81 branches_group[0].append((chs, name),)
82 download_l.append(branches_group)
83
84 for name, chs in c.rhodecode_repo.tags.items():
85 #chs = chs.split(':')[-1]
86 tags_group[0].append((chs, name),)
87 download_l.append(tags_group)
88
89 return download_l
90
91 def __get_readme_data(self, db_repo):
92 repo_name = db_repo.repo_name
93
94 @cache_region('long_term')
95 def _get_readme_from_cache(key, kind):
96 readme_data = None
97 readme_file = None
98 log.debug('Looking for README file')
99 try:
100 # get's the landing revision! or tip if fails
101 cs = db_repo.get_landing_changeset()
102 if isinstance(cs, EmptyChangeset):
103 raise EmptyRepositoryError()
104 renderer = MarkupRenderer()
105 for f in README_FILES:
106 try:
107 readme = cs.get_node(f)
108 if not isinstance(readme, FileNode):
109 continue
110 readme_file = f
111 log.debug('Found README file `%s` rendering...' %
112 readme_file)
113 readme_data = renderer.render(readme.content, f)
114 break
115 except NodeDoesNotExistError:
116 continue
117 except ChangesetError:
118 log.error(traceback.format_exc())
119 pass
120 except EmptyRepositoryError:
121 pass
122 except Exception:
123 log.error(traceback.format_exc())
124
125 return readme_data, readme_file
126
127 kind = 'README'
128 valid = CacheInvalidation.test_and_set_valid(repo_name, kind)
129 if not valid:
130 region_invalidate(_get_readme_from_cache, None, repo_name, kind)
131 return _get_readme_from_cache(repo_name, kind)
132
133 @LoginRequired()
134 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
135 'repository.admin')
74 def index(self, repo_name):
136 def index(self, repo_name):
75 c.dbrepo = dbrepo = c.rhodecode_db_repo
137 c.dbrepo = dbrepo = c.rhodecode_db_repo
76
138 _load_changelog_summary()
77 def url_generator(**kw):
78 return url('shortlog_home', repo_name=repo_name, size=10, **kw)
79
80 c.repo_changesets = RepoPage(c.rhodecode_repo, page=1,
81 items_per_page=10, url=url_generator)
82 page_revisions = [x.raw_id for x in list(c.repo_changesets)]
83 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
84
85 if self.rhodecode_user.username == 'default':
139 if self.rhodecode_user.username == 'default':
86 # for default(anonymous) user we don't need to pass credentials
140 # for default(anonymous) user we don't need to pass credentials
87 username = ''
141 username = ''
@@ -114,19 +168,6 b' class SummaryController(BaseRepoControll'
114
168
115 c.clone_repo_url = uri
169 c.clone_repo_url = uri
116 c.clone_repo_url_id = uri_id
170 c.clone_repo_url_id = uri_id
117 c.repo_tags = OrderedDict()
118 for name, hash_ in c.rhodecode_repo.tags.items()[:10]:
119 try:
120 c.repo_tags[name] = c.rhodecode_repo.get_changeset(hash_)
121 except ChangesetError:
122 c.repo_tags[name] = EmptyChangeset(hash_)
123
124 c.repo_branches = OrderedDict()
125 for name, hash_ in c.rhodecode_repo.branches.items()[:10]:
126 try:
127 c.repo_branches[name] = c.rhodecode_repo.get_changeset(hash_)
128 except ChangesetError:
129 c.repo_branches[name] = EmptyChangeset(hash_)
130
171
131 td = date.today() + timedelta(days=1)
172 td = date.today() + timedelta(days=1)
132 td_1m = td - timedelta(days=calendar.mdays[td.month])
173 td_1m = td - timedelta(days=calendar.mdays[td.month])
@@ -189,72 +230,13 b' class SummaryController(BaseRepoControll'
189 self.__get_readme_data(c.rhodecode_db_repo)
230 self.__get_readme_data(c.rhodecode_db_repo)
190 return render('summary/summary.html')
231 return render('summary/summary.html')
191
232
233 @LoginRequired()
192 @NotAnonymous()
234 @NotAnonymous()
235 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
236 'repository.admin')
193 @jsonify
237 @jsonify
194 def repo_size(self, repo_name):
238 def repo_size(self, repo_name):
195 if request.is_xhr:
239 if request.is_xhr:
196 return c.rhodecode_db_repo._repo_size()
240 return c.rhodecode_db_repo._repo_size()
197 else:
241 else:
198 raise HTTPBadRequest()
242 raise HTTPBadRequest()
199
200 def __get_readme_data(self, db_repo):
201 repo_name = db_repo.repo_name
202
203 @cache_region('long_term')
204 def _get_readme_from_cache(key):
205 readme_data = None
206 readme_file = None
207 log.debug('Looking for README file')
208 try:
209 # get's the landing revision! or tip if fails
210 cs = db_repo.get_landing_changeset()
211 if isinstance(cs, EmptyChangeset):
212 raise EmptyRepositoryError()
213 renderer = MarkupRenderer()
214 for f in README_FILES:
215 try:
216 readme = cs.get_node(f)
217 if not isinstance(readme, FileNode):
218 continue
219 readme_file = f
220 log.debug('Found README file `%s` rendering...' %
221 readme_file)
222 readme_data = renderer.render(readme.content, f)
223 break
224 except NodeDoesNotExistError:
225 continue
226 except ChangesetError:
227 log.error(traceback.format_exc())
228 pass
229 except EmptyRepositoryError:
230 pass
231 except Exception:
232 log.error(traceback.format_exc())
233
234 return readme_data, readme_file
235
236 key = repo_name + '_README'
237 inv = CacheInvalidation.invalidate(key)
238 if inv is not None:
239 region_invalidate(_get_readme_from_cache, None, key)
240 CacheInvalidation.set_valid(inv.cache_key)
241 return _get_readme_from_cache(key)
242
243 def _get_download_links(self, repo):
244
245 download_l = []
246
247 branches_group = ([], _("Branches"))
248 tags_group = ([], _("Tags"))
249
250 for name, chs in c.rhodecode_repo.branches.items():
251 #chs = chs.split(':')[-1]
252 branches_group[0].append((chs, name),)
253 download_l.append(branches_group)
254
255 for name, chs in c.rhodecode_repo.tags.items():
256 #chs = chs.split(':')[-1]
257 tags_group[0].append((chs, name),)
258 download_l.append(tags_group)
259
260 return download_l
@@ -35,12 +35,12 b' log = logging.getLogger(__name__)'
35
35
36 class TagsController(BaseRepoController):
36 class TagsController(BaseRepoController):
37
37
38 def __before__(self):
39 super(TagsController, self).__before__()
40
38 @LoginRequired()
41 @LoginRequired()
39 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
42 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
40 'repository.admin')
43 'repository.admin')
41 def __before__(self):
42 super(TagsController, self).__before__()
43
44 def index(self):
44 def index(self):
45 c.repo_tags = OrderedDict()
45 c.repo_tags = OrderedDict()
46
46
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
This diff has been collapsed as it changes many lines, (2265 lines changed) Show them Hide them
@@ -7,7 +7,7 b' msgid ""'
7 msgstr ""
7 msgstr ""
8 "Project-Id-Version: rhodecode 0.1\n"
8 "Project-Id-Version: rhodecode 0.1\n"
9 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
9 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10 "POT-Creation-Date: 2013-04-05 10:19-0700\n"
10 "POT-Creation-Date: 2013-06-01 18:38+0200\n"
11 "PO-Revision-Date: 2011-02-25 19:13+0100\n"
11 "PO-Revision-Date: 2011-02-25 19:13+0100\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: en <LL@li.org>\n"
13 "Language-Team: en <LL@li.org>\n"
@@ -17,38 +17,37 b' msgstr ""'
17 "Content-Transfer-Encoding: 8bit\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Generated-By: Babel 0.9.6\n"
18 "Generated-By: Babel 0.9.6\n"
19
19
20 #: rhodecode/controllers/changelog.py:95
20 #: rhodecode/controllers/changelog.py:149
21 msgid "All Branches"
21 msgid "All Branches"
22 msgstr ""
22 msgstr ""
23
23
24 #: rhodecode/controllers/changeset.py:83
24 #: rhodecode/controllers/changeset.py:84
25 msgid "Show white space"
25 msgid "Show white space"
26 msgstr ""
26 msgstr ""
27
27
28 #: rhodecode/controllers/changeset.py:90 rhodecode/controllers/changeset.py:97
28 #: rhodecode/controllers/changeset.py:91 rhodecode/controllers/changeset.py:98
29 msgid "Ignore white space"
29 msgid "Ignore white space"
30 msgstr ""
30 msgstr ""
31
31
32 #: rhodecode/controllers/changeset.py:163
32 #: rhodecode/controllers/changeset.py:164
33 #, python-format
33 #, python-format
34 msgid "%s line context"
34 msgid "%s line context"
35 msgstr ""
35 msgstr ""
36
36
37 #: rhodecode/controllers/changeset.py:329
37 #: rhodecode/controllers/changeset.py:345
38 #: rhodecode/controllers/pullrequests.py:438
38 #: rhodecode/controllers/pullrequests.py:481
39 #, python-format
39 #, python-format
40 msgid "Status change -> %s"
40 msgid "Status change -> %s"
41 msgstr ""
41 msgstr ""
42
42
43 #: rhodecode/controllers/changeset.py:360
43 #: rhodecode/controllers/changeset.py:376
44 msgid ""
44 msgid ""
45 "Changing status on a changeset associated with a closed pull request is "
45 "Changing status on a changeset associated with a closed pull request is "
46 "not allowed"
46 "not allowed"
47 msgstr ""
47 msgstr ""
48
48
49 #: rhodecode/controllers/compare.py:74
49 #: rhodecode/controllers/compare.py:74
50 #: rhodecode/controllers/pullrequests.py:167
50 #: rhodecode/controllers/pullrequests.py:259
51 #: rhodecode/controllers/shortlog.py:100
52 msgid "There are no changesets yet"
51 msgid "There are no changesets yet"
53 msgstr ""
52 msgstr ""
54
53
@@ -89,8 +88,8 b' msgid "%s %s feed"'
89 msgstr ""
88 msgstr ""
90
89
91 #: rhodecode/controllers/feed.py:86
90 #: rhodecode/controllers/feed.py:86
92 #: rhodecode/templates/changeset/changeset.html:134
91 #: rhodecode/templates/changeset/changeset.html:141
93 #: rhodecode/templates/changeset/changeset.html:146
92 #: rhodecode/templates/changeset/changeset.html:153
94 #: rhodecode/templates/compare/compare_diff.html:58
93 #: rhodecode/templates/compare/compare_diff.html:58
95 #: rhodecode/templates/compare/compare_diff.html:69
94 #: rhodecode/templates/compare/compare_diff.html:69
96 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
95 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
@@ -98,115 +97,116 b' msgstr ""'
98 msgid "Changeset was too big and was cut off..."
97 msgid "Changeset was too big and was cut off..."
99 msgstr ""
98 msgstr ""
100
99
101 #: rhodecode/controllers/feed.py:91
100 #: rhodecode/controllers/feed.py:90
102 #, python-format
101 #, python-format
103 msgid "%s committed on %s"
102 msgid "%s committed on %s"
104 msgstr ""
103 msgstr ""
105
104
106 #: rhodecode/controllers/files.py:88
107 msgid "Click here to add new file"
108 msgstr ""
109
110 #: rhodecode/controllers/files.py:89
105 #: rhodecode/controllers/files.py:89
106 msgid "Click here to add new file"
107 msgstr ""
108
109 #: rhodecode/controllers/files.py:90
111 #, python-format
110 #, python-format
112 msgid "There are no files yet %s"
111 msgid "There are no files yet %s"
113 msgstr ""
112 msgstr ""
114
113
115 #: rhodecode/controllers/files.py:267 rhodecode/controllers/files.py:335
114 #: rhodecode/controllers/files.py:271 rhodecode/controllers/files.py:339
116 #, python-format
115 #, python-format
117 msgid "This repository is has been locked by %s on %s"
116 msgid "This repository is has been locked by %s on %s"
118 msgstr ""
117 msgstr ""
119
118
120 #: rhodecode/controllers/files.py:279
119 #: rhodecode/controllers/files.py:283
121 msgid "You can only edit files with revision being a valid branch "
120 msgid "You can only edit files with revision being a valid branch "
122 msgstr ""
121 msgstr ""
123
122
124 #: rhodecode/controllers/files.py:293
123 #: rhodecode/controllers/files.py:297
125 #, python-format
124 #, python-format
126 msgid "Edited file %s via RhodeCode"
125 msgid "Edited file %s via RhodeCode"
127 msgstr ""
126 msgstr ""
128
127
129 #: rhodecode/controllers/files.py:309
128 #: rhodecode/controllers/files.py:313
130 msgid "No changes"
129 msgid "No changes"
131 msgstr ""
130 msgstr ""
132
131
133 #: rhodecode/controllers/files.py:318 rhodecode/controllers/files.py:388
132 #: rhodecode/controllers/files.py:322 rhodecode/controllers/files.py:394
134 #, python-format
133 #, python-format
135 msgid "Successfully committed to %s"
134 msgid "Successfully committed to %s"
136 msgstr ""
135 msgstr ""
137
136
138 #: rhodecode/controllers/files.py:323 rhodecode/controllers/files.py:394
137 #: rhodecode/controllers/files.py:327 rhodecode/controllers/files.py:405
139 msgid "Error occurred during commit"
138 msgid "Error occurred during commit"
140 msgstr ""
139 msgstr ""
141
140
142 #: rhodecode/controllers/files.py:347
141 #: rhodecode/controllers/files.py:351
143 msgid "Added file via RhodeCode"
142 msgid "Added file via RhodeCode"
144 msgstr ""
143 msgstr ""
145
144
146 #: rhodecode/controllers/files.py:364
147 msgid "No content"
148 msgstr ""
149
150 #: rhodecode/controllers/files.py:368
145 #: rhodecode/controllers/files.py:368
151 msgid "No filename"
146 msgid "No content"
152 msgstr ""
147 msgstr ""
153
148
154 #: rhodecode/controllers/files.py:372
149 #: rhodecode/controllers/files.py:372
150 msgid "No filename"
151 msgstr ""
152
153 #: rhodecode/controllers/files.py:397
155 msgid "Location must be relative path and must not contain .. in path"
154 msgid "Location must be relative path and must not contain .. in path"
156 msgstr ""
155 msgstr ""
157
156
158 #: rhodecode/controllers/files.py:420
159 msgid "Downloads disabled"
160 msgstr ""
161
162 #: rhodecode/controllers/files.py:431
157 #: rhodecode/controllers/files.py:431
158 msgid "Downloads disabled"
159 msgstr ""
160
161 #: rhodecode/controllers/files.py:442
163 #, python-format
162 #, python-format
164 msgid "Unknown revision %s"
163 msgid "Unknown revision %s"
165 msgstr ""
164 msgstr ""
166
165
167 #: rhodecode/controllers/files.py:433
166 #: rhodecode/controllers/files.py:444
168 msgid "Empty repository"
167 msgid "Empty repository"
169 msgstr ""
168 msgstr ""
170
169
171 #: rhodecode/controllers/files.py:435
170 #: rhodecode/controllers/files.py:446
172 msgid "Unknown archive type"
171 msgid "Unknown archive type"
173 msgstr ""
172 msgstr ""
174
173
175 #: rhodecode/controllers/files.py:617
174 #: rhodecode/controllers/files.py:631
176 #: rhodecode/templates/changeset/changeset_range.html:9
175 #: rhodecode/templates/changeset/changeset_range.html:9
176 #: rhodecode/templates/email_templates/pull_request.html:12
177 #: rhodecode/templates/pullrequests/pullrequest.html:124
177 msgid "Changesets"
178 msgid "Changesets"
178 msgstr ""
179 msgstr ""
179
180
180 #: rhodecode/controllers/files.py:618 rhodecode/controllers/pullrequests.py:131
181 #: rhodecode/controllers/files.py:632 rhodecode/controllers/pullrequests.py:152
181 #: rhodecode/controllers/summary.py:247 rhodecode/model/scm.py:606
182 #: rhodecode/controllers/summary.py:76 rhodecode/model/scm.py:682
182 #: rhodecode/templates/switch_to_list.html:3
183 #: rhodecode/templates/switch_to_list.html:3
183 #: rhodecode/templates/branches/branches.html:10
184 #: rhodecode/templates/branches/branches.html:10
184 msgid "Branches"
185 msgid "Branches"
185 msgstr ""
186 msgstr ""
186
187
187 #: rhodecode/controllers/files.py:619 rhodecode/controllers/pullrequests.py:132
188 #: rhodecode/controllers/files.py:633 rhodecode/controllers/pullrequests.py:153
188 #: rhodecode/controllers/summary.py:248 rhodecode/model/scm.py:617
189 #: rhodecode/controllers/summary.py:77 rhodecode/model/scm.py:693
189 #: rhodecode/templates/switch_to_list.html:15
190 #: rhodecode/templates/switch_to_list.html:15
190 #: rhodecode/templates/shortlog/shortlog_data.html:10
191 #: rhodecode/templates/tags/tags.html:10
191 #: rhodecode/templates/tags/tags.html:10
192 msgid "Tags"
192 msgid "Tags"
193 msgstr ""
193 msgstr ""
194
194
195 #: rhodecode/controllers/forks.py:175
195 #: rhodecode/controllers/forks.py:176
196 #, python-format
196 #, python-format
197 msgid "Forked repository %s as %s"
197 msgid "Forked repository %s as %s"
198 msgstr ""
198 msgstr ""
199
199
200 #: rhodecode/controllers/forks.py:189
200 #: rhodecode/controllers/forks.py:190
201 #, python-format
201 #, python-format
202 msgid "An error occurred during repository forking %s"
202 msgid "An error occurred during repository forking %s"
203 msgstr ""
203 msgstr ""
204
204
205 #: rhodecode/controllers/journal.py:275 rhodecode/controllers/journal.py:318
205 #: rhodecode/controllers/journal.py:110 rhodecode/controllers/journal.py:153
206 msgid "public journal"
206 msgid "public journal"
207 msgstr ""
207 msgstr ""
208
208
209 #: rhodecode/controllers/journal.py:279 rhodecode/controllers/journal.py:322
209 #: rhodecode/controllers/journal.py:114 rhodecode/controllers/journal.py:157
210 #: rhodecode/templates/journal/journal.html:12
210 #: rhodecode/templates/journal/journal.html:12
211 msgid "journal"
211 msgid "journal"
212 msgstr ""
212 msgstr ""
@@ -225,71 +225,71 b' msgid ""'
225 "email"
225 "email"
226 msgstr ""
226 msgstr ""
227
227
228 #: rhodecode/controllers/pullrequests.py:118
228 #: rhodecode/controllers/pullrequests.py:139
229 #: rhodecode/templates/changeset/changeset.html:10
229 #: rhodecode/templates/changeset/changeset.html:10
230 #: rhodecode/templates/email_templates/changeset_comment.html:15
230 #: rhodecode/templates/email_templates/changeset_comment.html:8
231 msgid "Changeset"
231 msgid "Changeset"
232 msgstr ""
232 msgstr ""
233
233
234 #: rhodecode/controllers/pullrequests.py:128
234 #: rhodecode/controllers/pullrequests.py:149
235 msgid "Special"
235 msgid "Special"
236 msgstr ""
236 msgstr ""
237
237
238 #: rhodecode/controllers/pullrequests.py:129
238 #: rhodecode/controllers/pullrequests.py:150
239 msgid "Peer branches"
239 msgid "Peer branches"
240 msgstr ""
240 msgstr ""
241
241
242 #: rhodecode/controllers/pullrequests.py:130 rhodecode/model/scm.py:612
242 #: rhodecode/controllers/pullrequests.py:151 rhodecode/model/scm.py:688
243 #: rhodecode/templates/switch_to_list.html:28
243 #: rhodecode/templates/switch_to_list.html:28
244 #: rhodecode/templates/bookmarks/bookmarks.html:10
244 #: rhodecode/templates/bookmarks/bookmarks.html:10
245 msgid "Bookmarks"
245 msgid "Bookmarks"
246 msgstr ""
246 msgstr ""
247
247
248 #: rhodecode/controllers/pullrequests.py:228
248 #: rhodecode/controllers/pullrequests.py:324
249 msgid "Pull request requires a title with min. 3 chars"
249 msgid "Pull request requires a title with min. 3 chars"
250 msgstr ""
250 msgstr ""
251
251
252 #: rhodecode/controllers/pullrequests.py:230
252 #: rhodecode/controllers/pullrequests.py:326
253 msgid "Error creating pull request"
253 msgid "Error creating pull request"
254 msgstr ""
254 msgstr ""
255
255
256 #: rhodecode/controllers/pullrequests.py:251
256 #: rhodecode/controllers/pullrequests.py:346
257 msgid "Successfully opened new pull request"
257 msgid "Successfully opened new pull request"
258 msgstr ""
258 msgstr ""
259
259
260 #: rhodecode/controllers/pullrequests.py:254
260 #: rhodecode/controllers/pullrequests.py:349
261 msgid "Error occurred during sending pull request"
261 msgid "Error occurred during sending pull request"
262 msgstr ""
262 msgstr ""
263
263
264 #: rhodecode/controllers/pullrequests.py:287
264 #: rhodecode/controllers/pullrequests.py:388
265 msgid "Successfully deleted pull request"
265 msgid "Successfully deleted pull request"
266 msgstr ""
266 msgstr ""
267
267
268 #: rhodecode/controllers/pullrequests.py:441
268 #: rhodecode/controllers/pullrequests.py:484
269 msgid "Closing with"
269 msgid "Closing with"
270 msgstr ""
270 msgstr ""
271
271
272 #: rhodecode/controllers/pullrequests.py:478
272 #: rhodecode/controllers/pullrequests.py:521
273 msgid "Closing pull request on other statuses than rejected or approved forbidden"
273 msgid "Closing pull request on other statuses than rejected or approved forbidden"
274 msgstr ""
274 msgstr ""
275
275
276 #: rhodecode/controllers/search.py:134
276 #: rhodecode/controllers/search.py:132
277 msgid "Invalid search query. Try quoting it."
277 msgid "Invalid search query. Try quoting it."
278 msgstr ""
278 msgstr ""
279
279
280 #: rhodecode/controllers/search.py:139
280 #: rhodecode/controllers/search.py:137
281 msgid "There is no index to search in. Please run whoosh indexer"
281 msgid "There is no index to search in. Please run whoosh indexer"
282 msgstr ""
282 msgstr ""
283
283
284 #: rhodecode/controllers/search.py:143
284 #: rhodecode/controllers/search.py:141
285 msgid "An error occurred during this search operation"
285 msgid "An error occurred during this search operation"
286 msgstr ""
286 msgstr ""
287
287
288 #: rhodecode/controllers/summary.py:141
288 #: rhodecode/controllers/summary.py:182
289 msgid "No data loaded yet"
289 msgid "No data loaded yet"
290 msgstr ""
290 msgstr ""
291
291
292 #: rhodecode/controllers/summary.py:147
292 #: rhodecode/controllers/summary.py:188
293 #: rhodecode/templates/summary/summary.html:149
293 #: rhodecode/templates/summary/summary.html:149
294 msgid "Statistics are disabled for this repository"
294 msgid "Statistics are disabled for this repository"
295 msgstr ""
295 msgstr ""
@@ -302,6 +302,43 b' msgstr ""'
302 msgid "Error occurred during update of defaults"
302 msgid "Error occurred during update of defaults"
303 msgstr ""
303 msgstr ""
304
304
305 #: rhodecode/controllers/admin/gists.py:56
306 msgid "forever"
307 msgstr ""
308
309 #: rhodecode/controllers/admin/gists.py:57
310 #, fuzzy
311 msgid "5 minutes"
312 msgstr ""
313
314 #: rhodecode/controllers/admin/gists.py:58
315 #, fuzzy
316 msgid "1 hour"
317 msgstr ""
318
319 #: rhodecode/controllers/admin/gists.py:59
320 #, fuzzy
321 msgid "1 day"
322 msgstr ""
323
324 #: rhodecode/controllers/admin/gists.py:60
325 #, fuzzy
326 msgid "1 month"
327 msgstr ""
328
329 #: rhodecode/controllers/admin/gists.py:62
330 msgid "Lifetime"
331 msgstr ""
332
333 #: rhodecode/controllers/admin/gists.py:127
334 msgid "Error occurred during gist creation"
335 msgstr ""
336
337 #: rhodecode/controllers/admin/gists.py:165
338 #, python-format
339 msgid "Deleted gist %s"
340 msgstr ""
341
305 #: rhodecode/controllers/admin/ldap_settings.py:50
342 #: rhodecode/controllers/admin/ldap_settings.py:50
306 msgid "BASE"
343 msgid "BASE"
307 msgstr ""
344 msgstr ""
@@ -346,35 +383,39 b' msgstr ""'
346 msgid "START_TLS on LDAP connection"
383 msgid "START_TLS on LDAP connection"
347 msgstr ""
384 msgstr ""
348
385
349 #: rhodecode/controllers/admin/ldap_settings.py:126
386 #: rhodecode/controllers/admin/ldap_settings.py:124
350 msgid "LDAP settings updated successfully"
387 msgid "LDAP settings updated successfully"
351 msgstr ""
388 msgstr ""
352
389
353 #: rhodecode/controllers/admin/ldap_settings.py:130
390 #: rhodecode/controllers/admin/ldap_settings.py:128
354 msgid "Unable to activate ldap. The \"python-ldap\" library is missing."
391 msgid "Unable to activate ldap. The \"python-ldap\" library is missing."
355 msgstr ""
392 msgstr ""
356
393
357 #: rhodecode/controllers/admin/ldap_settings.py:147
394 #: rhodecode/controllers/admin/ldap_settings.py:145
358 msgid "Error occurred during update of ldap settings"
395 msgid "Error occurred during update of ldap settings"
359 msgstr ""
396 msgstr ""
360
397
398 #: rhodecode/controllers/admin/permissions.py:58
399 #: rhodecode/controllers/admin/permissions.py:62
400 #: rhodecode/controllers/admin/permissions.py:66
401 msgid "None"
402 msgstr ""
403
404 #: rhodecode/controllers/admin/permissions.py:59
405 #: rhodecode/controllers/admin/permissions.py:63
406 #: rhodecode/controllers/admin/permissions.py:67
407 msgid "Read"
408 msgstr ""
409
361 #: rhodecode/controllers/admin/permissions.py:60
410 #: rhodecode/controllers/admin/permissions.py:60
362 #: rhodecode/controllers/admin/permissions.py:64
411 #: rhodecode/controllers/admin/permissions.py:64
363 msgid "None"
412 #: rhodecode/controllers/admin/permissions.py:68
413 msgid "Write"
364 msgstr ""
414 msgstr ""
365
415
366 #: rhodecode/controllers/admin/permissions.py:61
416 #: rhodecode/controllers/admin/permissions.py:61
367 #: rhodecode/controllers/admin/permissions.py:65
417 #: rhodecode/controllers/admin/permissions.py:65
368 msgid "Read"
418 #: rhodecode/controllers/admin/permissions.py:69
369 msgstr ""
370
371 #: rhodecode/controllers/admin/permissions.py:62
372 #: rhodecode/controllers/admin/permissions.py:66
373 msgid "Write"
374 msgstr ""
375
376 #: rhodecode/controllers/admin/permissions.py:63
377 #: rhodecode/controllers/admin/permissions.py:67
378 #: rhodecode/templates/admin/defaults/defaults.html:9
419 #: rhodecode/templates/admin/defaults/defaults.html:9
379 #: rhodecode/templates/admin/ldap/ldap.html:9
420 #: rhodecode/templates/admin/ldap/ldap.html:9
380 #: rhodecode/templates/admin/permissions/permissions.html:9
421 #: rhodecode/templates/admin/permissions/permissions.html:9
@@ -395,41 +436,55 b' msgstr ""'
395 #: rhodecode/templates/admin/users_groups/users_group_add.html:8
436 #: rhodecode/templates/admin/users_groups/users_group_add.html:8
396 #: rhodecode/templates/admin/users_groups/users_group_edit.html:9
437 #: rhodecode/templates/admin/users_groups/users_group_edit.html:9
397 #: rhodecode/templates/admin/users_groups/users_groups.html:9
438 #: rhodecode/templates/admin/users_groups/users_groups.html:9
398 #: rhodecode/templates/base/base.html:292
439 #: rhodecode/templates/base/base.html:317
399 #: rhodecode/templates/base/base.html:293
440 #: rhodecode/templates/base/base.html:318
400 #: rhodecode/templates/base/base.html:299
441 #: rhodecode/templates/base/base.html:324
401 #: rhodecode/templates/base/base.html:300
442 #: rhodecode/templates/base/base.html:325
402 msgid "Admin"
443 msgid "Admin"
403 msgstr ""
444 msgstr ""
404
445
405 #: rhodecode/controllers/admin/permissions.py:70
406 #: rhodecode/controllers/admin/permissions.py:76
407 #: rhodecode/controllers/admin/permissions.py:79
408 msgid "Disabled"
409 msgstr ""
410
411 #: rhodecode/controllers/admin/permissions.py:72
446 #: rhodecode/controllers/admin/permissions.py:72
412 msgid "Allowed with manual account activation"
447 #: rhodecode/controllers/admin/permissions.py:83
448 #: rhodecode/controllers/admin/permissions.py:86
449 #: rhodecode/controllers/admin/permissions.py:89
450 #: rhodecode/controllers/admin/permissions.py:92
451 msgid "Disabled"
413 msgstr ""
452 msgstr ""
414
453
415 #: rhodecode/controllers/admin/permissions.py:74
454 #: rhodecode/controllers/admin/permissions.py:74
455 msgid "Allowed with manual account activation"
456 msgstr ""
457
458 #: rhodecode/controllers/admin/permissions.py:76
416 msgid "Allowed with automatic account activation"
459 msgid "Allowed with automatic account activation"
417 msgstr ""
460 msgstr ""
418
461
419 #: rhodecode/controllers/admin/permissions.py:77
462 #: rhodecode/controllers/admin/permissions.py:79
463 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1439 rhodecode/model/db.py:1444
464 msgid "Manual activation of external account"
465 msgstr ""
466
420 #: rhodecode/controllers/admin/permissions.py:80
467 #: rhodecode/controllers/admin/permissions.py:80
468 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1440 rhodecode/model/db.py:1445
469 msgid "Automatic activation of external account"
470 msgstr ""
471
472 #: rhodecode/controllers/admin/permissions.py:84
473 #: rhodecode/controllers/admin/permissions.py:87
474 #: rhodecode/controllers/admin/permissions.py:90
475 #: rhodecode/controllers/admin/permissions.py:93
421 msgid "Enabled"
476 msgid "Enabled"
422 msgstr ""
477 msgstr ""
423
478
424 #: rhodecode/controllers/admin/permissions.py:128
479 #: rhodecode/controllers/admin/permissions.py:138
425 msgid "Default permissions updated successfully"
480 msgid "Default permissions updated successfully"
426 msgstr ""
481 msgstr ""
427
482
428 #: rhodecode/controllers/admin/permissions.py:142
483 #: rhodecode/controllers/admin/permissions.py:152
429 msgid "Error occurred during update of permissions"
484 msgid "Error occurred during update of permissions"
430 msgstr ""
485 msgstr ""
431
486
432 #: rhodecode/controllers/admin/repos.py:127
487 #: rhodecode/controllers/admin/repos.py:128
433 msgid "--REMOVE FORK--"
488 msgid "--REMOVE FORK--"
434 msgstr ""
489 msgstr ""
435
490
@@ -448,230 +503,223 b' msgstr ""'
448 msgid "Error creating repository %s"
503 msgid "Error creating repository %s"
449 msgstr ""
504 msgstr ""
450
505
451 #: rhodecode/controllers/admin/repos.py:266
506 #: rhodecode/controllers/admin/repos.py:270
452 #, python-format
507 #, python-format
453 msgid "Repository %s updated successfully"
508 msgid "Repository %s updated successfully"
454 msgstr ""
509 msgstr ""
455
510
456 #: rhodecode/controllers/admin/repos.py:284
511 #: rhodecode/controllers/admin/repos.py:288
457 #, python-format
512 #, python-format
458 msgid "Error occurred during update of repository %s"
513 msgid "Error occurred during update of repository %s"
459 msgstr ""
514 msgstr ""
460
515
461 #: rhodecode/controllers/admin/repos.py:311
516 #: rhodecode/controllers/admin/repos.py:315
462 #: rhodecode/controllers/api/api.py:877
463 #, python-format
517 #, python-format
464 msgid "Detached %s forks"
518 msgid "Detached %s forks"
465 msgstr ""
519 msgstr ""
466
520
467 #: rhodecode/controllers/admin/repos.py:314
521 #: rhodecode/controllers/admin/repos.py:318
468 #: rhodecode/controllers/api/api.py:879
469 #, python-format
522 #, python-format
470 msgid "Deleted %s forks"
523 msgid "Deleted %s forks"
471 msgstr ""
524 msgstr ""
472
525
473 #: rhodecode/controllers/admin/repos.py:319
526 #: rhodecode/controllers/admin/repos.py:323
474 #, python-format
527 #, python-format
475 msgid "Deleted repository %s"
528 msgid "Deleted repository %s"
476 msgstr ""
529 msgstr ""
477
530
478 #: rhodecode/controllers/admin/repos.py:322
531 #: rhodecode/controllers/admin/repos.py:326
479 #, python-format
532 #, python-format
480 msgid "Cannot delete %s it still contains attached forks"
533 msgid "Cannot delete %s it still contains attached forks"
481 msgstr ""
534 msgstr ""
482
535
483 #: rhodecode/controllers/admin/repos.py:327
536 #: rhodecode/controllers/admin/repos.py:331
484 #, python-format
537 #, python-format
485 msgid "An error occurred during deletion of %s"
538 msgid "An error occurred during deletion of %s"
486 msgstr ""
539 msgstr ""
487
540
488 #: rhodecode/controllers/admin/repos.py:365
541 #: rhodecode/controllers/admin/repos.py:345
489 msgid "Repository permissions updated"
542 msgid "Repository permissions updated"
490 msgstr ""
543 msgstr ""
491
544
492 #: rhodecode/controllers/admin/repos.py:384
545 #: rhodecode/controllers/admin/repos.py:375
493 msgid "An error occurred during deletion of repository user"
546 #: rhodecode/controllers/admin/repos_groups.py:332
494 msgstr ""
547 #: rhodecode/controllers/admin/users_groups.py:312
495
548 msgid "An error occurred during revoking of permission"
496 #: rhodecode/controllers/admin/repos.py:403
549 msgstr ""
497 msgid "An error occurred during deletion of repository user groups"
550
498 msgstr ""
551 #: rhodecode/controllers/admin/repos.py:392
499
500 #: rhodecode/controllers/admin/repos.py:421
501 msgid "An error occurred during deletion of repository stats"
552 msgid "An error occurred during deletion of repository stats"
502 msgstr ""
553 msgstr ""
503
554
504 #: rhodecode/controllers/admin/repos.py:438
555 #: rhodecode/controllers/admin/repos.py:409
505 msgid "An error occurred during cache invalidation"
556 msgid "An error occurred during cache invalidation"
506 msgstr ""
557 msgstr ""
507
558
508 #: rhodecode/controllers/admin/repos.py:458
559 #: rhodecode/controllers/admin/repos.py:429
509 #: rhodecode/controllers/admin/repos.py:485
560 #: rhodecode/controllers/admin/repos.py:456
510 msgid "An error occurred during unlocking"
561 msgid "An error occurred during unlocking"
511 msgstr ""
562 msgstr ""
512
563
564 #: rhodecode/controllers/admin/repos.py:447
565 msgid "Unlocked"
566 msgstr ""
567
568 #: rhodecode/controllers/admin/repos.py:450
569 msgid "Locked"
570 msgstr ""
571
572 #: rhodecode/controllers/admin/repos.py:452
573 #, python-format
574 msgid "Repository has been %s"
575 msgstr ""
576
513 #: rhodecode/controllers/admin/repos.py:476
577 #: rhodecode/controllers/admin/repos.py:476
514 msgid "Unlocked"
515 msgstr ""
516
517 #: rhodecode/controllers/admin/repos.py:479
518 msgid "Locked"
519 msgstr ""
520
521 #: rhodecode/controllers/admin/repos.py:481
522 #, python-format
523 msgid "Repository has been %s"
524 msgstr ""
525
526 #: rhodecode/controllers/admin/repos.py:505
527 msgid "Updated repository visibility in public journal"
578 msgid "Updated repository visibility in public journal"
528 msgstr ""
579 msgstr ""
529
580
530 #: rhodecode/controllers/admin/repos.py:509
581 #: rhodecode/controllers/admin/repos.py:480
531 msgid "An error occurred during setting this repository in public journal"
582 msgid "An error occurred during setting this repository in public journal"
532 msgstr ""
583 msgstr ""
533
584
534 #: rhodecode/controllers/admin/repos.py:514 rhodecode/model/validators.py:302
585 #: rhodecode/controllers/admin/repos.py:485 rhodecode/model/validators.py:302
535 msgid "Token mismatch"
586 msgid "Token mismatch"
536 msgstr ""
587 msgstr ""
537
588
538 #: rhodecode/controllers/admin/repos.py:527
589 #: rhodecode/controllers/admin/repos.py:498
539 msgid "Pulled from remote location"
590 msgid "Pulled from remote location"
540 msgstr ""
591 msgstr ""
541
592
542 #: rhodecode/controllers/admin/repos.py:529
593 #: rhodecode/controllers/admin/repos.py:501
543 msgid "An error occurred during pull from remote location"
594 msgid "An error occurred during pull from remote location"
544 msgstr ""
595 msgstr ""
545
596
546 #: rhodecode/controllers/admin/repos.py:545
597 #: rhodecode/controllers/admin/repos.py:517
547 msgid "Nothing"
598 msgid "Nothing"
548 msgstr ""
599 msgstr ""
549
600
550 #: rhodecode/controllers/admin/repos.py:547
601 #: rhodecode/controllers/admin/repos.py:519
551 #, python-format
602 #, python-format
552 msgid "Marked repo %s as fork of %s"
603 msgid "Marked repo %s as fork of %s"
553 msgstr ""
604 msgstr ""
554
605
555 #: rhodecode/controllers/admin/repos.py:551
606 #: rhodecode/controllers/admin/repos.py:523
556 msgid "An error occurred during this operation"
607 msgid "An error occurred during this operation"
557 msgstr ""
608 msgstr ""
558
609
559 #: rhodecode/controllers/admin/repos.py:590
610 #: rhodecode/controllers/admin/repos.py:562
560 msgid "An error occurred during creation of field"
611 msgid "An error occurred during creation of field"
561 msgstr ""
612 msgstr ""
562
613
563 #: rhodecode/controllers/admin/repos.py:604
614 #: rhodecode/controllers/admin/repos.py:576
564 msgid "An error occurred during removal of field"
615 msgid "An error occurred during removal of field"
565 msgstr ""
616 msgstr ""
566
617
567 #: rhodecode/controllers/admin/repos_groups.py:145
618 #: rhodecode/controllers/admin/repos_groups.py:147
568 #, python-format
619 #, python-format
569 msgid "Created repository group %s"
620 msgid "Created repository group %s"
570 msgstr ""
621 msgstr ""
571
622
572 #: rhodecode/controllers/admin/repos_groups.py:157
623 #: rhodecode/controllers/admin/repos_groups.py:159
573 #, python-format
624 #, python-format
574 msgid "Error occurred during creation of repository group %s"
625 msgid "Error occurred during creation of repository group %s"
575 msgstr ""
626 msgstr ""
576
627
577 #: rhodecode/controllers/admin/repos_groups.py:214
628 #: rhodecode/controllers/admin/repos_groups.py:217
578 #: rhodecode/controllers/admin/repos_groups.py:286
579 msgid "Cannot revoke permission for yourself as admin"
580 msgstr ""
581
582 #: rhodecode/controllers/admin/repos_groups.py:220
583 #, python-format
629 #, python-format
584 msgid "Updated repository group %s"
630 msgid "Updated repository group %s"
585 msgstr ""
631 msgstr ""
586
632
587 #: rhodecode/controllers/admin/repos_groups.py:235
633 #: rhodecode/controllers/admin/repos_groups.py:232
588 #, python-format
634 #, python-format
589 msgid "Error occurred during update of repository group %s"
635 msgid "Error occurred during update of repository group %s"
590 msgstr ""
636 msgstr ""
591
637
592 #: rhodecode/controllers/admin/repos_groups.py:253
638 #: rhodecode/controllers/admin/repos_groups.py:250
593 #, python-format
639 #, python-format
594 msgid "This group contains %s repositores and cannot be deleted"
640 msgid "This group contains %s repositores and cannot be deleted"
595 msgstr ""
641 msgstr ""
596
642
597 #: rhodecode/controllers/admin/repos_groups.py:260
643 #: rhodecode/controllers/admin/repos_groups.py:257
598 #, python-format
644 #, python-format
599 msgid "This group contains %s subgroups and cannot be deleted"
645 msgid "This group contains %s subgroups and cannot be deleted"
600 msgstr ""
646 msgstr ""
601
647
602 #: rhodecode/controllers/admin/repos_groups.py:266
648 #: rhodecode/controllers/admin/repos_groups.py:263
603 #, python-format
649 #, python-format
604 msgid "Removed repository group %s"
650 msgid "Removed repository group %s"
605 msgstr ""
651 msgstr ""
606
652
607 #: rhodecode/controllers/admin/repos_groups.py:271
653 #: rhodecode/controllers/admin/repos_groups.py:268
608 #, python-format
654 #, python-format
609 msgid "Error occurred during deletion of repos group %s"
655 msgid "Error occurred during deletion of repos group %s"
610 msgstr ""
656 msgstr ""
611
657
612 #: rhodecode/controllers/admin/repos_groups.py:297
658 #: rhodecode/controllers/admin/repos_groups.py:279
613 msgid "An error occurred during deletion of group user"
659 #: rhodecode/controllers/admin/repos_groups.py:314
614 msgstr ""
660 #: rhodecode/controllers/admin/users_groups.py:300
615
661 msgid "Cannot revoke permission for yourself as admin"
616 #: rhodecode/controllers/admin/repos_groups.py:318
662 msgstr ""
617 msgid "An error occurred during deletion of group user groups"
663
618 msgstr ""
664 #: rhodecode/controllers/admin/repos_groups.py:294
619
665 msgid "Repository Group permissions updated"
620 #: rhodecode/controllers/admin/settings.py:126
666 msgstr ""
667
668 #: rhodecode/controllers/admin/settings.py:123
621 #, python-format
669 #, python-format
622 msgid "Repositories successfully rescanned added: %s ; removed: %s"
670 msgid "Repositories successfully rescanned added: %s ; removed: %s"
623 msgstr ""
671 msgstr ""
624
672
625 #: rhodecode/controllers/admin/settings.py:135
673 #: rhodecode/controllers/admin/settings.py:132
626 msgid "Whoosh reindex task scheduled"
674 msgid "Whoosh reindex task scheduled"
627 msgstr ""
675 msgstr ""
628
676
629 #: rhodecode/controllers/admin/settings.py:166
677 #: rhodecode/controllers/admin/settings.py:163
630 msgid "Updated application settings"
678 msgid "Updated application settings"
631 msgstr ""
679 msgstr ""
632
680
633 #: rhodecode/controllers/admin/settings.py:170
681 #: rhodecode/controllers/admin/settings.py:167
634 #: rhodecode/controllers/admin/settings.py:301
682 #: rhodecode/controllers/admin/settings.py:304
635 msgid "Error occurred during updating application settings"
683 msgid "Error occurred during updating application settings"
636 msgstr ""
684 msgstr ""
637
685
638 #: rhodecode/controllers/admin/settings.py:216
686 #: rhodecode/controllers/admin/settings.py:219
639 msgid "Updated visualisation settings"
687 msgid "Updated visualisation settings"
640 msgstr ""
688 msgstr ""
641
689
642 #: rhodecode/controllers/admin/settings.py:221
690 #: rhodecode/controllers/admin/settings.py:224
643 msgid "Error occurred during updating visualisation settings"
691 msgid "Error occurred during updating visualisation settings"
644 msgstr ""
692 msgstr ""
645
693
646 #: rhodecode/controllers/admin/settings.py:297
694 #: rhodecode/controllers/admin/settings.py:300
647 msgid "Updated VCS settings"
695 msgid "Updated VCS settings"
648 msgstr ""
696 msgstr ""
649
697
650 #: rhodecode/controllers/admin/settings.py:311
698 #: rhodecode/controllers/admin/settings.py:314
651 msgid "Added new hook"
699 msgid "Added new hook"
652 msgstr ""
700 msgstr ""
653
701
654 #: rhodecode/controllers/admin/settings.py:323
702 #: rhodecode/controllers/admin/settings.py:326
655 msgid "Updated hooks"
703 msgid "Updated hooks"
656 msgstr ""
704 msgstr ""
657
705
658 #: rhodecode/controllers/admin/settings.py:327
706 #: rhodecode/controllers/admin/settings.py:330
659 msgid "Error occurred during hook creation"
707 msgid "Error occurred during hook creation"
660 msgstr ""
708 msgstr ""
661
709
662 #: rhodecode/controllers/admin/settings.py:346
710 #: rhodecode/controllers/admin/settings.py:349
663 msgid "Email task created"
711 msgid "Email task created"
664 msgstr ""
712 msgstr ""
665
713
666 #: rhodecode/controllers/admin/settings.py:410
714 #: rhodecode/controllers/admin/settings.py:413
667 msgid "You can't edit this user since it's crucial for entire application"
715 msgid "You can't edit this user since it's crucial for entire application"
668 msgstr ""
716 msgstr ""
669
717
670 #: rhodecode/controllers/admin/settings.py:452
718 #: rhodecode/controllers/admin/settings.py:455
671 msgid "Your account was updated successfully"
719 msgid "Your account was updated successfully"
672 msgstr ""
720 msgstr ""
673
721
674 #: rhodecode/controllers/admin/settings.py:467
722 #: rhodecode/controllers/admin/settings.py:470
675 #: rhodecode/controllers/admin/users.py:198
723 #: rhodecode/controllers/admin/users.py:198
676 #, python-format
724 #, python-format
677 msgid "Error occurred during update of user %s"
725 msgid "Error occurred during update of user %s"
@@ -699,111 +747,92 b' msgstr ""'
699 msgid "An error occurred during deletion of user"
747 msgid "An error occurred during deletion of user"
700 msgstr ""
748 msgstr ""
701
749
702 #: rhodecode/controllers/admin/users.py:233
750 #: rhodecode/controllers/admin/users.py:234
703 msgid "You can't edit this user"
751 msgid "You can't edit this user"
704 msgstr ""
752 msgstr ""
705
753
706 #: rhodecode/controllers/admin/users.py:276
754 #: rhodecode/controllers/admin/users.py:293
707 msgid "Granted 'repository create' permission to user"
755 #: rhodecode/controllers/admin/users_groups.py:372
708 msgstr ""
756 msgid "Updated permissions"
709
757 msgstr ""
710 #: rhodecode/controllers/admin/users.py:281
758
711 msgid "Revoked 'repository create' permission to user"
759 #: rhodecode/controllers/admin/users.py:297
712 msgstr ""
760 #: rhodecode/controllers/admin/users_groups.py:376
713
714 #: rhodecode/controllers/admin/users.py:287
715 msgid "Granted 'repository fork' permission to user"
716 msgstr ""
717
718 #: rhodecode/controllers/admin/users.py:292
719 msgid "Revoked 'repository fork' permission to user"
720 msgstr ""
721
722 #: rhodecode/controllers/admin/users.py:298
723 #: rhodecode/controllers/admin/users_groups.py:281
724 msgid "An error occurred during permissions saving"
761 msgid "An error occurred during permissions saving"
725 msgstr ""
762 msgstr ""
726
763
727 #: rhodecode/controllers/admin/users.py:312
764 #: rhodecode/controllers/admin/users.py:311
728 #, python-format
765 #, python-format
729 msgid "Added email %s to user"
766 msgid "Added email %s to user"
730 msgstr ""
767 msgstr ""
731
768
732 #: rhodecode/controllers/admin/users.py:318
769 #: rhodecode/controllers/admin/users.py:317
733 msgid "An error occurred during email saving"
770 msgid "An error occurred during email saving"
734 msgstr ""
771 msgstr ""
735
772
736 #: rhodecode/controllers/admin/users.py:328
773 #: rhodecode/controllers/admin/users.py:327
737 msgid "Removed email from user"
774 msgid "Removed email from user"
738 msgstr ""
775 msgstr ""
739
776
740 #: rhodecode/controllers/admin/users.py:341
777 #: rhodecode/controllers/admin/users.py:340
741 #, python-format
778 #, python-format
742 msgid "Added ip %s to user"
779 msgid "Added ip %s to user"
743 msgstr ""
780 msgstr ""
744
781
745 #: rhodecode/controllers/admin/users.py:347
782 #: rhodecode/controllers/admin/users.py:346
746 msgid "An error occurred during ip saving"
783 msgid "An error occurred during ip saving"
747 msgstr ""
784 msgstr ""
748
785
749 #: rhodecode/controllers/admin/users.py:359
786 #: rhodecode/controllers/admin/users.py:358
750 msgid "Removed ip from user"
787 msgid "Removed ip from user"
751 msgstr ""
788 msgstr ""
752
789
753 #: rhodecode/controllers/admin/users_groups.py:86
790 #: rhodecode/controllers/admin/users_groups.py:162
754 #, python-format
791 #, python-format
755 msgid "Created user group %s"
792 msgid "Created user group %s"
756 msgstr ""
793 msgstr ""
757
794
758 #: rhodecode/controllers/admin/users_groups.py:97
795 #: rhodecode/controllers/admin/users_groups.py:173
759 #, python-format
796 #, python-format
760 msgid "Error occurred during creation of user group %s"
797 msgid "Error occurred during creation of user group %s"
761 msgstr ""
798 msgstr ""
762
799
763 #: rhodecode/controllers/admin/users_groups.py:166
764 #, python-format
765 msgid "Updated user group %s"
766 msgstr ""
767
768 #: rhodecode/controllers/admin/users_groups.py:188
769 #, python-format
770 msgid "Error occurred during update of user group %s"
771 msgstr ""
772
773 #: rhodecode/controllers/admin/users_groups.py:205
774 msgid "Successfully deleted user group"
775 msgstr ""
776
777 #: rhodecode/controllers/admin/users_groups.py:210
800 #: rhodecode/controllers/admin/users_groups.py:210
801 #, python-format
802 msgid "Updated user group %s"
803 msgstr ""
804
805 #: rhodecode/controllers/admin/users_groups.py:232
806 #, python-format
807 msgid "Error occurred during update of user group %s"
808 msgstr ""
809
810 #: rhodecode/controllers/admin/users_groups.py:250
811 msgid "Successfully deleted user group"
812 msgstr ""
813
814 #: rhodecode/controllers/admin/users_groups.py:255
778 msgid "An error occurred during deletion of user group"
815 msgid "An error occurred during deletion of user group"
779 msgstr ""
816 msgstr ""
780
817
781 #: rhodecode/controllers/admin/users_groups.py:259
818 #: rhodecode/controllers/admin/users_groups.py:274
782 msgid "Granted 'repository create' permission to user group"
819 msgid "Target group cannot be the same"
783 msgstr ""
820 msgstr ""
784
821
785 #: rhodecode/controllers/admin/users_groups.py:264
822 #: rhodecode/controllers/admin/users_groups.py:280
786 msgid "Revoked 'repository create' permission to user group"
823 msgid "User Group permissions updated"
787 msgstr ""
824 msgstr ""
788
825
789 #: rhodecode/controllers/admin/users_groups.py:270
826 #: rhodecode/lib/auth.py:544
790 msgid "Granted 'repository fork' permission to user group"
791 msgstr ""
792
793 #: rhodecode/controllers/admin/users_groups.py:275
794 msgid "Revoked 'repository fork' permission to user group"
795 msgstr ""
796
797 #: rhodecode/lib/auth.py:530
798 #, python-format
827 #, python-format
799 msgid "IP %s not allowed"
828 msgid "IP %s not allowed"
800 msgstr ""
829 msgstr ""
801
830
802 #: rhodecode/lib/auth.py:579
831 #: rhodecode/lib/auth.py:593
803 msgid "You need to be a registered user to perform this action"
832 msgid "You need to be a registered user to perform this action"
804 msgstr ""
833 msgstr ""
805
834
806 #: rhodecode/lib/auth.py:620
835 #: rhodecode/lib/auth.py:634
807 msgid "You need to be a signed in to view this page"
836 msgid "You need to be a signed in to view this page"
808 msgstr ""
837 msgstr ""
809
838
@@ -819,152 +848,176 b' msgstr ""'
819 msgid "No changes detected"
848 msgid "No changes detected"
820 msgstr ""
849 msgstr ""
821
850
822 #: rhodecode/lib/helpers.py:394
851 #: rhodecode/lib/helpers.py:428
823 #, python-format
852 #, python-format
824 msgid "%a, %d %b %Y %H:%M:%S"
853 msgid "%a, %d %b %Y %H:%M:%S"
825 msgstr ""
854 msgstr ""
826
855
827 #: rhodecode/lib/helpers.py:506
856 #: rhodecode/lib/helpers.py:539
828 msgid "True"
857 msgid "True"
829 msgstr ""
858 msgstr ""
830
859
831 #: rhodecode/lib/helpers.py:509
860 #: rhodecode/lib/helpers.py:542
832 msgid "False"
861 msgid "False"
833 msgstr ""
862 msgstr ""
834
863
835 #: rhodecode/lib/helpers.py:547
864 #: rhodecode/lib/helpers.py:580
836 #, python-format
865 #, python-format
837 msgid "Deleted branch: %s"
866 msgid "Deleted branch: %s"
838 msgstr ""
867 msgstr ""
839
868
840 #: rhodecode/lib/helpers.py:550
869 #: rhodecode/lib/helpers.py:583
841 #, python-format
870 #, python-format
842 msgid "Created tag: %s"
871 msgid "Created tag: %s"
843 msgstr ""
872 msgstr ""
844
873
845 #: rhodecode/lib/helpers.py:563
874 #: rhodecode/lib/helpers.py:596
846 msgid "Changeset not found"
875 msgid "Changeset not found"
847 msgstr ""
876 msgstr ""
848
877
849 #: rhodecode/lib/helpers.py:615
878 #: rhodecode/lib/helpers.py:646
850 #, python-format
879 #, python-format
851 msgid "Show all combined changesets %s->%s"
880 msgid "Show all combined changesets %s->%s"
852 msgstr ""
881 msgstr ""
853
882
854 #: rhodecode/lib/helpers.py:621
883 #: rhodecode/lib/helpers.py:652
855 msgid "compare view"
884 msgid "compare view"
856 msgstr ""
885 msgstr ""
857
886
858 #: rhodecode/lib/helpers.py:641
887 #: rhodecode/lib/helpers.py:672
859 msgid "and"
888 msgid "and"
860 msgstr ""
889 msgstr ""
861
890
862 #: rhodecode/lib/helpers.py:642
891 #: rhodecode/lib/helpers.py:673
863 #, python-format
892 #, python-format
864 msgid "%s more"
893 msgid "%s more"
865 msgstr ""
894 msgstr ""
866
895
867 #: rhodecode/lib/helpers.py:643 rhodecode/templates/changelog/changelog.html:44
896 #: rhodecode/lib/helpers.py:674 rhodecode/templates/changelog/changelog.html:53
868 msgid "revisions"
897 msgid "revisions"
869 msgstr ""
898 msgstr ""
870
899
871 #: rhodecode/lib/helpers.py:667
900 #: rhodecode/lib/helpers.py:698
872 #, python-format
901 #, python-format
873 msgid "fork name %s"
902 msgid "fork name %s"
874 msgstr ""
903 msgstr ""
875
904
876 #: rhodecode/lib/helpers.py:684
905 #: rhodecode/lib/helpers.py:715
877 #: rhodecode/templates/pullrequests/pullrequest_show.html:8
906 #: rhodecode/templates/pullrequests/pullrequest_show.html:8
878 #, python-format
907 #, python-format
879 msgid "Pull request #%s"
908 msgid "Pull request #%s"
880 msgstr ""
909 msgstr ""
881
910
882 #: rhodecode/lib/helpers.py:690
911 #: rhodecode/lib/helpers.py:725
883 msgid "[deleted] repository"
912 msgid "[deleted] repository"
884 msgstr ""
913 msgstr ""
885
914
886 #: rhodecode/lib/helpers.py:692 rhodecode/lib/helpers.py:702
915 #: rhodecode/lib/helpers.py:727 rhodecode/lib/helpers.py:739
887 msgid "[created] repository"
916 msgid "[created] repository"
888 msgstr ""
917 msgstr ""
889
918
890 #: rhodecode/lib/helpers.py:694
919 #: rhodecode/lib/helpers.py:729
891 msgid "[created] repository as fork"
920 msgid "[created] repository as fork"
892 msgstr ""
921 msgstr ""
893
922
894 #: rhodecode/lib/helpers.py:696 rhodecode/lib/helpers.py:704
923 #: rhodecode/lib/helpers.py:731 rhodecode/lib/helpers.py:741
895 msgid "[forked] repository"
924 msgid "[forked] repository"
896 msgstr ""
925 msgstr ""
897
926
898 #: rhodecode/lib/helpers.py:698 rhodecode/lib/helpers.py:706
927 #: rhodecode/lib/helpers.py:733 rhodecode/lib/helpers.py:743
899 msgid "[updated] repository"
928 msgid "[updated] repository"
900 msgstr ""
929 msgstr ""
901
930
902 #: rhodecode/lib/helpers.py:700
931 #: rhodecode/lib/helpers.py:735
932 msgid "[downloaded] archive from repository"
933 msgstr ""
934
935 #: rhodecode/lib/helpers.py:737
903 msgid "[delete] repository"
936 msgid "[delete] repository"
904 msgstr ""
937 msgstr ""
905
938
906 #: rhodecode/lib/helpers.py:708
939 #: rhodecode/lib/helpers.py:745
907 msgid "[created] user"
940 msgid "[created] user"
908 msgstr ""
941 msgstr ""
909
942
910 #: rhodecode/lib/helpers.py:710
943 #: rhodecode/lib/helpers.py:747
911 msgid "[updated] user"
944 msgid "[updated] user"
912 msgstr ""
945 msgstr ""
913
946
914 #: rhodecode/lib/helpers.py:712
947 #: rhodecode/lib/helpers.py:749
915 msgid "[created] user group"
948 msgid "[created] user group"
916 msgstr ""
949 msgstr ""
917
950
918 #: rhodecode/lib/helpers.py:714
951 #: rhodecode/lib/helpers.py:751
919 msgid "[updated] user group"
952 msgid "[updated] user group"
920 msgstr ""
953 msgstr ""
921
954
922 #: rhodecode/lib/helpers.py:716
955 #: rhodecode/lib/helpers.py:753
923 msgid "[commented] on revision in repository"
956 msgid "[commented] on revision in repository"
924 msgstr ""
957 msgstr ""
925
958
926 #: rhodecode/lib/helpers.py:718
959 #: rhodecode/lib/helpers.py:755
927 msgid "[commented] on pull request for"
960 msgid "[commented] on pull request for"
928 msgstr ""
961 msgstr ""
929
962
930 #: rhodecode/lib/helpers.py:720
963 #: rhodecode/lib/helpers.py:757
931 msgid "[closed] pull request for"
964 msgid "[closed] pull request for"
932 msgstr ""
965 msgstr ""
933
966
934 #: rhodecode/lib/helpers.py:722
967 #: rhodecode/lib/helpers.py:759
935 msgid "[pushed] into"
968 msgid "[pushed] into"
936 msgstr ""
969 msgstr ""
937
970
938 #: rhodecode/lib/helpers.py:724
971 #: rhodecode/lib/helpers.py:761
939 msgid "[committed via RhodeCode] into repository"
972 msgid "[committed via RhodeCode] into repository"
940 msgstr ""
973 msgstr ""
941
974
942 #: rhodecode/lib/helpers.py:726
975 #: rhodecode/lib/helpers.py:763
943 msgid "[pulled from remote] into repository"
976 msgid "[pulled from remote] into repository"
944 msgstr ""
977 msgstr ""
945
978
946 #: rhodecode/lib/helpers.py:728
979 #: rhodecode/lib/helpers.py:765
947 msgid "[pulled] from"
980 msgid "[pulled] from"
948 msgstr ""
981 msgstr ""
949
982
950 #: rhodecode/lib/helpers.py:730
983 #: rhodecode/lib/helpers.py:767
951 msgid "[started following] repository"
984 msgid "[started following] repository"
952 msgstr ""
985 msgstr ""
953
986
954 #: rhodecode/lib/helpers.py:732
987 #: rhodecode/lib/helpers.py:769
955 msgid "[stopped following] repository"
988 msgid "[stopped following] repository"
956 msgstr ""
989 msgstr ""
957
990
958 #: rhodecode/lib/helpers.py:910
991 #: rhodecode/lib/helpers.py:1088
959 #, python-format
992 #, python-format
960 msgid " and %s more"
993 msgid " and %s more"
961 msgstr ""
994 msgstr ""
962
995
963 #: rhodecode/lib/helpers.py:914
996 #: rhodecode/lib/helpers.py:1092
964 msgid "No Files"
997 msgid "No Files"
965 msgstr ""
998 msgstr ""
966
999
967 #: rhodecode/lib/helpers.py:1198
1000 #: rhodecode/lib/helpers.py:1158
1001 msgid "new file"
1002 msgstr ""
1003
1004 #: rhodecode/lib/helpers.py:1161
1005 msgid "mod"
1006 msgstr ""
1007
1008 #: rhodecode/lib/helpers.py:1164
1009 msgid "del"
1010 msgstr ""
1011
1012 #: rhodecode/lib/helpers.py:1167
1013 msgid "rename"
1014 msgstr ""
1015
1016 #: rhodecode/lib/helpers.py:1172
1017 msgid "chmod"
1018 msgstr ""
1019
1020 #: rhodecode/lib/helpers.py:1404
968 #, python-format
1021 #, python-format
969 msgid ""
1022 msgid ""
970 "%s repository is not mapped to db perhaps it was created or renamed from "
1023 "%s repository is not mapped to db perhaps it was created or renamed from "
@@ -976,221 +1029,299 b' msgstr ""'
976 msgid "cannot create new union repository"
1029 msgid "cannot create new union repository"
977 msgstr ""
1030 msgstr ""
978
1031
979 #: rhodecode/lib/utils2.py:411
1032 #: rhodecode/lib/utils2.py:410
980 #, python-format
1033 #, python-format
981 msgid "%d year"
1034 msgid "%d year"
982 msgid_plural "%d years"
1035 msgid_plural "%d years"
983 msgstr[0] ""
1036 msgstr[0] ""
984 msgstr[1] ""
1037 msgstr[1] ""
985
1038
986 #: rhodecode/lib/utils2.py:412
1039 #: rhodecode/lib/utils2.py:411
987 #, python-format
1040 #, python-format
988 msgid "%d month"
1041 msgid "%d month"
989 msgid_plural "%d months"
1042 msgid_plural "%d months"
990 msgstr[0] ""
1043 msgstr[0] ""
991 msgstr[1] ""
1044 msgstr[1] ""
992
1045
1046 #: rhodecode/lib/utils2.py:412
1047 #, python-format
1048 msgid "%d day"
1049 msgid_plural "%d days"
1050 msgstr[0] ""
1051 msgstr[1] ""
1052
993 #: rhodecode/lib/utils2.py:413
1053 #: rhodecode/lib/utils2.py:413
994 #, python-format
1054 #, python-format
995 msgid "%d day"
1055 msgid "%d hour"
996 msgid_plural "%d days"
1056 msgid_plural "%d hours"
997 msgstr[0] ""
1057 msgstr[0] ""
998 msgstr[1] ""
1058 msgstr[1] ""
999
1059
1000 #: rhodecode/lib/utils2.py:414
1060 #: rhodecode/lib/utils2.py:414
1001 #, python-format
1061 #, python-format
1002 msgid "%d hour"
1062 msgid "%d minute"
1003 msgid_plural "%d hours"
1063 msgid_plural "%d minutes"
1004 msgstr[0] ""
1064 msgstr[0] ""
1005 msgstr[1] ""
1065 msgstr[1] ""
1006
1066
1007 #: rhodecode/lib/utils2.py:415
1067 #: rhodecode/lib/utils2.py:415
1008 #, python-format
1068 #, python-format
1009 msgid "%d minute"
1010 msgid_plural "%d minutes"
1011 msgstr[0] ""
1012 msgstr[1] ""
1013
1014 #: rhodecode/lib/utils2.py:416
1015 #, python-format
1016 msgid "%d second"
1069 msgid "%d second"
1017 msgid_plural "%d seconds"
1070 msgid_plural "%d seconds"
1018 msgstr[0] ""
1071 msgstr[0] ""
1019 msgstr[1] ""
1072 msgstr[1] ""
1020
1073
1021 #: rhodecode/lib/utils2.py:432
1074 #: rhodecode/lib/utils2.py:431
1022 #, python-format
1075 #, python-format
1023 msgid "in %s"
1076 msgid "in %s"
1024 msgstr ""
1077 msgstr ""
1025
1078
1026 #: rhodecode/lib/utils2.py:434
1079 #: rhodecode/lib/utils2.py:433
1027 #, python-format
1080 #, python-format
1028 msgid "%s ago"
1081 msgid "%s ago"
1029 msgstr ""
1082 msgstr ""
1030
1083
1031 #: rhodecode/lib/utils2.py:436
1084 #: rhodecode/lib/utils2.py:435
1032 #, python-format
1085 #, python-format
1033 msgid "in %s and %s"
1086 msgid "in %s and %s"
1034 msgstr ""
1087 msgstr ""
1035
1088
1036 #: rhodecode/lib/utils2.py:439
1089 #: rhodecode/lib/utils2.py:438
1037 #, python-format
1090 #, python-format
1038 msgid "%s and %s ago"
1091 msgid "%s and %s ago"
1039 msgstr ""
1092 msgstr ""
1040
1093
1041 #: rhodecode/lib/utils2.py:442
1094 #: rhodecode/lib/utils2.py:441
1042 msgid "just now"
1095 msgid "just now"
1043 msgstr ""
1096 msgstr ""
1044
1097
1045 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163
1098 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163
1046 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1183
1099 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1183
1047 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1289 rhodecode/model/db.py:1388
1100 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1303
1101 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1388
1102 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1408 rhodecode/model/db.py:1413
1048 msgid "Repository no access"
1103 msgid "Repository no access"
1049 msgstr ""
1104 msgstr ""
1050
1105
1051 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164
1106 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164
1052 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1184
1107 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1184
1053 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1290 rhodecode/model/db.py:1389
1108 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1304
1109 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1389
1110 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1409 rhodecode/model/db.py:1414
1054 msgid "Repository read access"
1111 msgid "Repository read access"
1055 msgstr ""
1112 msgstr ""
1056
1113
1057 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165
1114 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165
1058 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1185
1115 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1185
1059 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1291 rhodecode/model/db.py:1390
1116 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1305
1117 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1390
1118 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1410 rhodecode/model/db.py:1415
1060 msgid "Repository write access"
1119 msgid "Repository write access"
1061 msgstr ""
1120 msgstr ""
1062
1121
1063 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166
1122 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166
1064 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1186
1123 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1186
1065 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1292 rhodecode/model/db.py:1391
1124 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1306
1125 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1391
1126 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1411 rhodecode/model/db.py:1416
1066 msgid "Repository admin access"
1127 msgid "Repository admin access"
1067 msgstr ""
1128 msgstr ""
1068
1129
1069 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168
1130 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168
1070 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1188
1131 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1188
1071 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1294
1132 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1308
1072 msgid "Repositories Group no access"
1133 msgid "Repositories Group no access"
1073 msgstr ""
1134 msgstr ""
1074
1135
1075 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169
1136 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169
1076 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1189
1137 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1189
1077 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1295
1138 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1309
1078 msgid "Repositories Group read access"
1139 msgid "Repositories Group read access"
1079 msgstr ""
1140 msgstr ""
1080
1141
1081 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170
1142 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170
1082 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1190
1143 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1190
1083 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1296
1144 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1310
1084 msgid "Repositories Group write access"
1145 msgid "Repositories Group write access"
1085 msgstr ""
1146 msgstr ""
1086
1147
1087 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171
1148 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171
1088 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1191
1149 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1191
1089 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1297
1150 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1311
1090 msgid "Repositories Group admin access"
1151 msgid "Repositories Group admin access"
1091 msgstr ""
1152 msgstr ""
1092
1153
1093 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173
1154 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173
1094 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1193
1155 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1193
1095 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1299 rhodecode/model/db.py:1398
1156 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1313
1157 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1398
1158 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1406 rhodecode/model/db.py:1411
1096 msgid "RhodeCode Administrator"
1159 msgid "RhodeCode Administrator"
1097 msgstr ""
1160 msgstr ""
1098
1161
1099 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174
1162 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174
1100 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1194
1163 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1194
1101 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1300 rhodecode/model/db.py:1399
1164 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1314
1165 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1399
1166 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1429 rhodecode/model/db.py:1434
1102 msgid "Repository creation disabled"
1167 msgid "Repository creation disabled"
1103 msgstr ""
1168 msgstr ""
1104
1169
1105 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175
1170 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175
1106 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1195
1171 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1195
1107 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1301 rhodecode/model/db.py:1400
1172 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1315
1173 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1400
1174 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1430 rhodecode/model/db.py:1435
1108 msgid "Repository creation enabled"
1175 msgid "Repository creation enabled"
1109 msgstr ""
1176 msgstr ""
1110
1177
1111 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176
1178 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176
1112 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1196
1179 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1196
1113 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1302 rhodecode/model/db.py:1401
1180 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1316
1181 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1401
1182 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1432 rhodecode/model/db.py:1437
1114 msgid "Repository forking disabled"
1183 msgid "Repository forking disabled"
1115 msgstr ""
1184 msgstr ""
1116
1185
1117 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177
1186 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177
1118 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1197
1187 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1197
1119 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1303 rhodecode/model/db.py:1402
1188 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1317
1189 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1402
1190 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1433 rhodecode/model/db.py:1438
1120 msgid "Repository forking enabled"
1191 msgid "Repository forking enabled"
1121 msgstr ""
1192 msgstr ""
1122
1193
1123 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178
1194 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178
1124 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1198
1195 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1198
1125 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1304 rhodecode/model/db.py:1403
1196 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1318
1197 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1403
1126 msgid "Register disabled"
1198 msgid "Register disabled"
1127 msgstr ""
1199 msgstr ""
1128
1200
1129 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179
1201 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179
1130 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1199
1202 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1199
1131 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1305 rhodecode/model/db.py:1404
1203 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1319
1204 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1404
1132 msgid "Register new user with RhodeCode with manual activation"
1205 msgid "Register new user with RhodeCode with manual activation"
1133 msgstr ""
1206 msgstr ""
1134
1207
1135 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182
1208 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182
1136 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1202
1209 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1202
1137 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1308 rhodecode/model/db.py:1407
1210 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1322
1211 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1407
1138 msgid "Register new user with RhodeCode with auto activation"
1212 msgid "Register new user with RhodeCode with auto activation"
1139 msgstr ""
1213 msgstr ""
1140
1214
1141 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623
1215 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623
1142 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1643
1216 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1643
1143 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1749 rhodecode/model/db.py:1838
1217 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1763
1218 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1838
1219 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1934 rhodecode/model/db.py:1939
1144 msgid "Not Reviewed"
1220 msgid "Not Reviewed"
1145 msgstr ""
1221 msgstr ""
1146
1222
1147 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624
1223 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624
1148 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1644
1224 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1644
1149 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1750 rhodecode/model/db.py:1839
1225 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1764
1226 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1839
1227 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1935 rhodecode/model/db.py:1940
1150 msgid "Approved"
1228 msgid "Approved"
1151 msgstr ""
1229 msgstr ""
1152
1230
1153 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625
1231 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625
1154 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1645
1232 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1645
1155 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1751 rhodecode/model/db.py:1840
1233 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1765
1234 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1840
1235 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1936 rhodecode/model/db.py:1941
1156 msgid "Rejected"
1236 msgid "Rejected"
1157 msgstr ""
1237 msgstr ""
1158
1238
1159 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626
1239 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626
1160 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1646
1240 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1646
1161 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1752 rhodecode/model/db.py:1841
1241 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1766
1242 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1841
1243 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1937 rhodecode/model/db.py:1942
1162 msgid "Under Review"
1244 msgid "Under Review"
1163 msgstr ""
1245 msgstr ""
1164
1246
1247 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1252
1248 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1270 rhodecode/model/db.py:1275
1249 msgid "top level"
1250 msgstr ""
1251
1252 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1393
1253 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1413 rhodecode/model/db.py:1418
1254 msgid "Repository group no access"
1255 msgstr ""
1256
1257 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1394
1258 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1414 rhodecode/model/db.py:1419
1259 msgid "Repository group read access"
1260 msgstr ""
1261
1262 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1395
1263 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1415 rhodecode/model/db.py:1420
1264 msgid "Repository group write access"
1265 msgstr ""
1266
1267 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1396
1268 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1416 rhodecode/model/db.py:1421
1269 msgid "Repository group admin access"
1270 msgstr ""
1271
1272 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1418 rhodecode/model/db.py:1423
1273 msgid "User group no access"
1274 msgstr ""
1275
1276 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1419 rhodecode/model/db.py:1424
1277 msgid "User group read access"
1278 msgstr ""
1279
1280 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1420 rhodecode/model/db.py:1425
1281 msgid "User group write access"
1282 msgstr ""
1283
1284 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1421 rhodecode/model/db.py:1426
1285 msgid "User group admin access"
1286 msgstr ""
1287
1288 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1423 rhodecode/model/db.py:1428
1289 msgid "Repository Group creation disabled"
1290 msgstr ""
1291
1292 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1424 rhodecode/model/db.py:1429
1293 msgid "Repository Group creation enabled"
1294 msgstr ""
1295
1296 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1426 rhodecode/model/db.py:1431
1297 msgid "User Group creation disabled"
1298 msgstr ""
1299
1300 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1427 rhodecode/model/db.py:1432
1301 msgid "User Group creation enabled"
1302 msgstr ""
1303
1304 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1435 rhodecode/model/db.py:1440
1305 msgid "Registration disabled"
1306 msgstr ""
1307
1308 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1436 rhodecode/model/db.py:1441
1309 msgid "User Registration with manual account activation"
1310 msgstr ""
1311
1312 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1437 rhodecode/model/db.py:1442
1313 msgid "User Registration with automatic account activation"
1314 msgstr ""
1315
1165 #: rhodecode/model/comment.py:75
1316 #: rhodecode/model/comment.py:75
1166 #, python-format
1317 #, python-format
1167 msgid "on line %s"
1318 msgid "on line %s"
1168 msgstr ""
1319 msgstr ""
1169
1320
1170 #: rhodecode/model/comment.py:219
1321 #: rhodecode/model/comment.py:220
1171 msgid "[Mention]"
1322 msgid "[Mention]"
1172 msgstr ""
1323 msgstr ""
1173
1324
1174 #: rhodecode/model/db.py:1252
1175 msgid "top level"
1176 msgstr ""
1177
1178 #: rhodecode/model/db.py:1393
1179 msgid "Repository group no access"
1180 msgstr ""
1181
1182 #: rhodecode/model/db.py:1394
1183 msgid "Repository group read access"
1184 msgstr ""
1185
1186 #: rhodecode/model/db.py:1395
1187 msgid "Repository group write access"
1188 msgstr ""
1189
1190 #: rhodecode/model/db.py:1396
1191 msgid "Repository group admin access"
1192 msgstr ""
1193
1194 #: rhodecode/model/forms.py:43
1325 #: rhodecode/model/forms.py:43
1195 msgid "Please enter a login"
1326 msgid "Please enter a login"
1196 msgstr ""
1327 msgstr ""
@@ -1209,42 +1340,42 b' msgstr ""'
1209 msgid "Enter %(min)i characters or more"
1340 msgid "Enter %(min)i characters or more"
1210 msgstr ""
1341 msgstr ""
1211
1342
1212 #: rhodecode/model/notification.py:224
1343 #: rhodecode/model/notification.py:228
1213 #, python-format
1344 #, python-format
1214 msgid "%(user)s commented on changeset at %(when)s"
1345 msgid "%(user)s commented on changeset at %(when)s"
1215 msgstr ""
1346 msgstr ""
1216
1347
1217 #: rhodecode/model/notification.py:225
1218 #, python-format
1219 msgid "%(user)s sent message at %(when)s"
1220 msgstr ""
1221
1222 #: rhodecode/model/notification.py:226
1223 #, python-format
1224 msgid "%(user)s mentioned you at %(when)s"
1225 msgstr ""
1226
1227 #: rhodecode/model/notification.py:227
1228 #, python-format
1229 msgid "%(user)s registered in RhodeCode at %(when)s"
1230 msgstr ""
1231
1232 #: rhodecode/model/notification.py:228
1233 #, python-format
1234 msgid "%(user)s opened new pull request at %(when)s"
1235 msgstr ""
1236
1237 #: rhodecode/model/notification.py:229
1348 #: rhodecode/model/notification.py:229
1238 #, python-format
1349 #, python-format
1350 msgid "%(user)s sent message at %(when)s"
1351 msgstr ""
1352
1353 #: rhodecode/model/notification.py:230
1354 #, python-format
1355 msgid "%(user)s mentioned you at %(when)s"
1356 msgstr ""
1357
1358 #: rhodecode/model/notification.py:231
1359 #, python-format
1360 msgid "%(user)s registered in RhodeCode at %(when)s"
1361 msgstr ""
1362
1363 #: rhodecode/model/notification.py:232
1364 #, python-format
1365 msgid "%(user)s opened new pull request at %(when)s"
1366 msgstr ""
1367
1368 #: rhodecode/model/notification.py:233
1369 #, python-format
1239 msgid "%(user)s commented on pull request at %(when)s"
1370 msgid "%(user)s commented on pull request at %(when)s"
1240 msgstr ""
1371 msgstr ""
1241
1372
1242 #: rhodecode/model/pull_request.py:104
1373 #: rhodecode/model/pull_request.py:98
1243 #, python-format
1374 #, python-format
1244 msgid "%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s"
1375 msgid "%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s"
1245 msgstr ""
1376 msgstr ""
1246
1377
1247 #: rhodecode/model/scm.py:598
1378 #: rhodecode/model/scm.py:674
1248 msgid "latest tip"
1379 msgid "latest tip"
1249 msgstr ""
1380 msgstr ""
1250
1381
@@ -1297,7 +1428,7 b' msgstr ""'
1297 #: rhodecode/model/validators.py:89
1428 #: rhodecode/model/validators.py:89
1298 msgid ""
1429 msgid ""
1299 "Username may only contain alphanumeric characters underscores, periods or"
1430 "Username may only contain alphanumeric characters underscores, periods or"
1300 " dashes and must begin with alphanumeric character"
1431 " dashes and must begin with alphanumeric character or underscore"
1301 msgstr ""
1432 msgstr ""
1302
1433
1303 #: rhodecode/model/validators.py:117
1434 #: rhodecode/model/validators.py:117
@@ -1398,47 +1529,51 b' msgstr ""'
1398 msgid "You don't have permissions to create a group in this location"
1529 msgid "You don't have permissions to create a group in this location"
1399 msgstr ""
1530 msgstr ""
1400
1531
1401 #: rhodecode/model/validators.py:557
1532 #: rhodecode/model/validators.py:559
1402 msgid "This username or user group name is not valid"
1533 msgid "This username or user group name is not valid"
1403 msgstr ""
1534 msgstr ""
1404
1535
1405 #: rhodecode/model/validators.py:650
1536 #: rhodecode/model/validators.py:652
1406 msgid "This is not a valid path"
1537 msgid "This is not a valid path"
1407 msgstr ""
1538 msgstr ""
1408
1539
1409 #: rhodecode/model/validators.py:665
1540 #: rhodecode/model/validators.py:667
1410 msgid "This e-mail address is already taken"
1541 msgid "This e-mail address is already taken"
1411 msgstr ""
1542 msgstr ""
1412
1543
1413 #: rhodecode/model/validators.py:685
1544 #: rhodecode/model/validators.py:687
1414 #, python-format
1545 #, python-format
1415 msgid "e-mail \"%(email)s\" does not exist."
1546 msgid "e-mail \"%(email)s\" does not exist."
1416 msgstr ""
1547 msgstr ""
1417
1548
1418 #: rhodecode/model/validators.py:722
1549 #: rhodecode/model/validators.py:724
1419 msgid ""
1550 msgid ""
1420 "The LDAP Login attribute of the CN must be specified - this is the name "
1551 "The LDAP Login attribute of the CN must be specified - this is the name "
1421 "of the attribute that is equivalent to \"username\""
1552 "of the attribute that is equivalent to \"username\""
1422 msgstr ""
1553 msgstr ""
1423
1554
1424 #: rhodecode/model/validators.py:735
1555 #: rhodecode/model/validators.py:737
1425 #, python-format
1556 #, python-format
1426 msgid "Revisions %(revs)s are already part of pull request or have set status"
1557 msgid "Revisions %(revs)s are already part of pull request or have set status"
1427 msgstr ""
1558 msgstr ""
1428
1559
1429 #: rhodecode/model/validators.py:767
1560 #: rhodecode/model/validators.py:769
1430 msgid "Please enter a valid IPv4 or IpV6 address"
1561 msgid "Please enter a valid IPv4 or IpV6 address"
1431 msgstr ""
1562 msgstr ""
1432
1563
1433 #: rhodecode/model/validators.py:768
1564 #: rhodecode/model/validators.py:770
1434 #, python-format
1565 #, python-format
1435 msgid "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1566 msgid "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1436 msgstr ""
1567 msgstr ""
1437
1568
1438 #: rhodecode/model/validators.py:800
1569 #: rhodecode/model/validators.py:803
1439 msgid "Key name can only consist of letters, underscore, dash or numbers"
1570 msgid "Key name can only consist of letters, underscore, dash or numbers"
1440 msgstr ""
1571 msgstr ""
1441
1572
1573 #: rhodecode/model/validators.py:817
1574 msgid "Filename cannot be inside a directory"
1575 msgstr ""
1576
1442 #: rhodecode/templates/index.html:5
1577 #: rhodecode/templates/index.html:5
1443 msgid "Dashboard"
1578 msgid "Dashboard"
1444 msgstr ""
1579 msgstr ""
@@ -1484,29 +1619,28 b' msgid "You have admin right to this grou'
1484 msgstr ""
1619 msgstr ""
1485
1620
1486 #: rhodecode/templates/index_base.html:40
1621 #: rhodecode/templates/index_base.html:40
1487 #: rhodecode/templates/index_base.html:140
1488 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:33
1622 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:33
1489 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:38
1623 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:38
1490 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:43
1624 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:43
1491 #: rhodecode/templates/admin/users_groups/users_group_add.html:32
1625 #: rhodecode/templates/admin/users_groups/users_group_add.html:32
1492 #: rhodecode/templates/admin/users_groups/users_group_edit.html:33
1626 #: rhodecode/templates/admin/users_groups/users_group_edit.html:33
1493 #: rhodecode/templates/admin/users_groups/users_groups.html:34
1627 #: rhodecode/templates/admin/users_groups/users_groups.html:37
1494 msgid "Group name"
1628 msgid "Group name"
1495 msgstr ""
1629 msgstr ""
1496
1630
1497 #: rhodecode/templates/index_base.html:41
1631 #: rhodecode/templates/index_base.html:41
1498 #: rhodecode/templates/index_base.html:83
1632 #: rhodecode/templates/index_base.html:123
1499 #: rhodecode/templates/index_base.html:142
1500 #: rhodecode/templates/index_base.html:180
1501 #: rhodecode/templates/index_base.html:270
1502 #: rhodecode/templates/admin/repos/repo_add_base.html:56
1633 #: rhodecode/templates/admin/repos/repo_add_base.html:56
1503 #: rhodecode/templates/admin/repos/repo_edit.html:75
1634 #: rhodecode/templates/admin/repos/repo_edit.html:68
1504 #: rhodecode/templates/admin/repos/repos.html:73
1635 #: rhodecode/templates/admin/repos/repos.html:73
1505 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:42
1636 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:42
1506 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:47
1637 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:47
1507 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:44
1638 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:44
1639 #: rhodecode/templates/email_templates/changeset_comment.html:9
1640 #: rhodecode/templates/email_templates/pull_request.html:9
1508 #: rhodecode/templates/forks/fork.html:56
1641 #: rhodecode/templates/forks/fork.html:56
1509 #: rhodecode/templates/pullrequests/pullrequest.html:101
1642 #: rhodecode/templates/pullrequests/pullrequest.html:43
1643 #: rhodecode/templates/pullrequests/pullrequest_show.html:81
1510 #: rhodecode/templates/summary/summary.html:106
1644 #: rhodecode/templates/summary/summary.html:106
1511 msgid "Description"
1645 msgid "Description"
1512 msgstr ""
1646 msgstr ""
@@ -1514,27 +1648,25 b' msgstr ""'
1514 #: rhodecode/templates/index_base.html:51
1648 #: rhodecode/templates/index_base.html:51
1515 #: rhodecode/templates/admin/permissions/permissions.html:55
1649 #: rhodecode/templates/admin/permissions/permissions.html:55
1516 #: rhodecode/templates/admin/repos/repo_add_base.html:29
1650 #: rhodecode/templates/admin/repos/repo_add_base.html:29
1517 #: rhodecode/templates/admin/repos/repo_edit.html:49
1651 #: rhodecode/templates/admin/repos/repo_edit.html:50
1518 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:57
1652 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:57
1519 #: rhodecode/templates/forks/fork.html:47
1653 #: rhodecode/templates/forks/fork.html:47
1520 msgid "Repository group"
1654 msgid "Repository group"
1521 msgstr ""
1655 msgstr ""
1522
1656
1523 #: rhodecode/templates/index_base.html:82
1657 #: rhodecode/templates/index_base.html:121
1524 #: rhodecode/templates/index_base.html:178
1525 #: rhodecode/templates/index_base.html:268
1526 #: rhodecode/templates/admin/repos/repo_add_base.html:9
1658 #: rhodecode/templates/admin/repos/repo_add_base.html:9
1527 #: rhodecode/templates/admin/repos/repo_edit.html:32
1659 #: rhodecode/templates/admin/repos/repo_edit.html:32
1528 #: rhodecode/templates/admin/repos/repos.html:71
1660 #: rhodecode/templates/admin/repos/repos.html:71
1529 #: rhodecode/templates/admin/users/user_edit_my_account.html:172
1661 #: rhodecode/templates/admin/users/user_edit_my_account.html:172
1530 #: rhodecode/templates/base/perms_summary.html:14
1662 #: rhodecode/templates/base/perms_summary.html:37
1531 #: rhodecode/templates/bookmarks/bookmarks.html:34
1663 #: rhodecode/templates/bookmarks/bookmarks.html:48
1532 #: rhodecode/templates/bookmarks/bookmarks_data.html:6
1664 #: rhodecode/templates/bookmarks/bookmarks_data.html:6
1533 #: rhodecode/templates/branches/branches.html:47
1665 #: rhodecode/templates/branches/branches.html:47
1534 #: rhodecode/templates/branches/branches_data.html:6
1666 #: rhodecode/templates/branches/branches_data.html:6
1535 #: rhodecode/templates/files/files_browser.html:47
1667 #: rhodecode/templates/files/files_browser.html:47
1536 #: rhodecode/templates/journal/journal.html:193
1668 #: rhodecode/templates/journal/journal.html:193
1537 #: rhodecode/templates/journal/journal.html:296
1669 #: rhodecode/templates/journal/journal.html:283
1538 #: rhodecode/templates/summary/summary.html:55
1670 #: rhodecode/templates/summary/summary.html:55
1539 #: rhodecode/templates/summary/summary.html:124
1671 #: rhodecode/templates/summary/summary.html:124
1540 #: rhodecode/templates/tags/tags.html:48
1672 #: rhodecode/templates/tags/tags.html:48
@@ -1542,109 +1674,78 b' msgstr ""'
1542 msgid "Name"
1674 msgid "Name"
1543 msgstr ""
1675 msgstr ""
1544
1676
1545 #: rhodecode/templates/index_base.html:84
1677 #: rhodecode/templates/index_base.html:124
1546 msgid "Last change"
1678 msgid "Last Change"
1547 msgstr ""
1679 msgstr ""
1548
1680
1549 #: rhodecode/templates/index_base.html:85
1681 #: rhodecode/templates/index_base.html:126
1550 #: rhodecode/templates/index_base.html:183
1551 #: rhodecode/templates/index_base.html:273
1552 #: rhodecode/templates/admin/repos/repos.html:74
1682 #: rhodecode/templates/admin/repos/repos.html:74
1553 #: rhodecode/templates/admin/users/user_edit_my_account.html:174
1683 #: rhodecode/templates/admin/users/user_edit_my_account.html:174
1554 #: rhodecode/templates/journal/journal.html:195
1684 #: rhodecode/templates/journal/journal.html:195
1555 #: rhodecode/templates/journal/journal.html:298
1685 #: rhodecode/templates/journal/journal.html:285
1556 msgid "Tip"
1686 msgid "Tip"
1557 msgstr ""
1687 msgstr ""
1558
1688
1559 #: rhodecode/templates/index_base.html:86
1689 #: rhodecode/templates/index_base.html:128
1560 #: rhodecode/templates/index_base.html:185
1690 #: rhodecode/templates/admin/repos/repo_edit.html:114
1561 #: rhodecode/templates/index_base.html:275
1562 #: rhodecode/templates/admin/repos/repo_edit.html:121
1563 #: rhodecode/templates/admin/repos/repos.html:76
1691 #: rhodecode/templates/admin/repos/repos.html:76
1564 msgid "Owner"
1692 msgid "Owner"
1565 msgstr ""
1693 msgstr ""
1566
1694
1567 #: rhodecode/templates/index_base.html:87
1695 #: rhodecode/templates/index_base.html:136
1568 msgid "Atom"
1696 #: rhodecode/templates/admin/repos/repos.html:84
1569 msgstr ""
1697 #: rhodecode/templates/admin/users/user_edit_my_account.html:183
1570
1571 #: rhodecode/templates/index_base.html:171
1572 #: rhodecode/templates/index_base.html:209
1573 #: rhodecode/templates/index_base.html:296
1574 #: rhodecode/templates/admin/repos/repos.html:97
1575 #: rhodecode/templates/admin/users/user_edit_my_account.html:196
1576 #: rhodecode/templates/admin/users/users.html:107
1698 #: rhodecode/templates/admin/users/users.html:107
1577 #: rhodecode/templates/bookmarks/bookmarks.html:58
1699 #: rhodecode/templates/bookmarks/bookmarks.html:74
1578 #: rhodecode/templates/branches/branches.html:73
1700 #: rhodecode/templates/branches/branches.html:73
1579 #: rhodecode/templates/journal/journal.html:217
1701 #: rhodecode/templates/journal/journal.html:204
1580 #: rhodecode/templates/journal/journal.html:320
1702 #: rhodecode/templates/journal/journal.html:294
1581 #: rhodecode/templates/tags/tags.html:74
1703 #: rhodecode/templates/tags/tags.html:74
1582 msgid "Click to sort ascending"
1704 msgid "Click to sort ascending"
1583 msgstr ""
1705 msgstr ""
1584
1706
1585 #: rhodecode/templates/index_base.html:172
1707 #: rhodecode/templates/index_base.html:137
1586 #: rhodecode/templates/index_base.html:210
1708 #: rhodecode/templates/admin/repos/repos.html:85
1587 #: rhodecode/templates/index_base.html:297
1709 #: rhodecode/templates/admin/users/user_edit_my_account.html:184
1588 #: rhodecode/templates/admin/repos/repos.html:98
1589 #: rhodecode/templates/admin/users/user_edit_my_account.html:197
1590 #: rhodecode/templates/admin/users/users.html:108
1710 #: rhodecode/templates/admin/users/users.html:108
1591 #: rhodecode/templates/bookmarks/bookmarks.html:59
1711 #: rhodecode/templates/bookmarks/bookmarks.html:75
1592 #: rhodecode/templates/branches/branches.html:74
1712 #: rhodecode/templates/branches/branches.html:74
1593 #: rhodecode/templates/journal/journal.html:218
1713 #: rhodecode/templates/journal/journal.html:205
1594 #: rhodecode/templates/journal/journal.html:321
1714 #: rhodecode/templates/journal/journal.html:295
1595 #: rhodecode/templates/tags/tags.html:75
1715 #: rhodecode/templates/tags/tags.html:75
1596 msgid "Click to sort descending"
1716 msgid "Click to sort descending"
1597 msgstr ""
1717 msgstr ""
1598
1718
1599 #: rhodecode/templates/index_base.html:181
1719 #: rhodecode/templates/index_base.html:138
1600 #: rhodecode/templates/index_base.html:271
1720 msgid "No repositories found."
1601 msgid "Last Change"
1721 msgstr ""
1602 msgstr ""
1722
1603
1723 #: rhodecode/templates/index_base.html:139
1604 #: rhodecode/templates/index_base.html:211
1724 #: rhodecode/templates/admin/repos/repos.html:87
1605 #: rhodecode/templates/admin/repos/repos.html:99
1725 #: rhodecode/templates/admin/users/user_edit_my_account.html:186
1606 #: rhodecode/templates/admin/users/user_edit_my_account.html:198
1607 #: rhodecode/templates/admin/users/users.html:109
1608 #: rhodecode/templates/bookmarks/bookmarks.html:60
1609 #: rhodecode/templates/branches/branches.html:75
1610 #: rhodecode/templates/journal/journal.html:219
1611 #: rhodecode/templates/journal/journal.html:322
1612 #: rhodecode/templates/tags/tags.html:76
1613 msgid "No records found."
1614 msgstr ""
1615
1616 #: rhodecode/templates/index_base.html:212
1617 #: rhodecode/templates/index_base.html:299
1618 #: rhodecode/templates/admin/repos/repos.html:100
1619 #: rhodecode/templates/admin/users/user_edit_my_account.html:199
1620 #: rhodecode/templates/admin/users/users.html:110
1726 #: rhodecode/templates/admin/users/users.html:110
1621 #: rhodecode/templates/bookmarks/bookmarks.html:61
1727 #: rhodecode/templates/bookmarks/bookmarks.html:77
1622 #: rhodecode/templates/branches/branches.html:76
1728 #: rhodecode/templates/branches/branches.html:76
1623 #: rhodecode/templates/journal/journal.html:220
1729 #: rhodecode/templates/journal/journal.html:207
1624 #: rhodecode/templates/journal/journal.html:323
1730 #: rhodecode/templates/journal/journal.html:297
1625 #: rhodecode/templates/tags/tags.html:77
1731 #: rhodecode/templates/tags/tags.html:77
1626 msgid "Data error."
1732 msgid "Data error."
1627 msgstr ""
1733 msgstr ""
1628
1734
1629 #: rhodecode/templates/index_base.html:213
1735 #: rhodecode/templates/index_base.html:140
1630 #: rhodecode/templates/index_base.html:300
1736 #: rhodecode/templates/admin/repos/repos.html:88
1631 #: rhodecode/templates/admin/repos/repos.html:101
1632 #: rhodecode/templates/admin/users/user_edit_my_account.html:58
1737 #: rhodecode/templates/admin/users/user_edit_my_account.html:58
1633 #: rhodecode/templates/admin/users/user_edit_my_account.html:200
1738 #: rhodecode/templates/admin/users/user_edit_my_account.html:187
1634 #: rhodecode/templates/admin/users/users.html:111
1739 #: rhodecode/templates/admin/users/users.html:111
1635 #: rhodecode/templates/bookmarks/bookmarks.html:62
1740 #: rhodecode/templates/bookmarks/bookmarks.html:78
1636 #: rhodecode/templates/branches/branches.html:77
1741 #: rhodecode/templates/branches/branches.html:77
1637 #: rhodecode/templates/journal/journal.html:221
1742 #: rhodecode/templates/journal/journal.html:208
1638 #: rhodecode/templates/journal/journal.html:324
1743 #: rhodecode/templates/journal/journal.html:298
1639 #: rhodecode/templates/tags/tags.html:78
1744 #: rhodecode/templates/tags/tags.html:78
1640 msgid "Loading..."
1745 msgid "Loading..."
1641 msgstr ""
1746 msgstr ""
1642
1747
1643 #: rhodecode/templates/index_base.html:298
1748 #: rhodecode/templates/login.html:5 rhodecode/templates/base/base.html:239
1644 msgid "No repositories found."
1645 msgstr ""
1646
1647 #: rhodecode/templates/login.html:5 rhodecode/templates/base/base.html:227
1648 msgid "Log In"
1749 msgid "Log In"
1649 msgstr ""
1750 msgstr ""
1650
1751
@@ -1659,7 +1760,7 b' msgstr ""'
1659 #: rhodecode/templates/admin/users/user_edit.html:57
1760 #: rhodecode/templates/admin/users/user_edit.html:57
1660 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:31
1761 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:31
1661 #: rhodecode/templates/admin/users/users.html:77
1762 #: rhodecode/templates/admin/users/users.html:77
1662 #: rhodecode/templates/base/base.html:203
1763 #: rhodecode/templates/base/base.html:215
1663 #: rhodecode/templates/summary/summary.html:123
1764 #: rhodecode/templates/summary/summary.html:123
1664 msgid "Username"
1765 msgid "Username"
1665 msgstr ""
1766 msgstr ""
@@ -1667,7 +1768,7 b' msgstr ""'
1667 #: rhodecode/templates/login.html:40 rhodecode/templates/register.html:29
1768 #: rhodecode/templates/login.html:40 rhodecode/templates/register.html:29
1668 #: rhodecode/templates/admin/ldap/ldap.html:46
1769 #: rhodecode/templates/admin/ldap/ldap.html:46
1669 #: rhodecode/templates/admin/users/user_add.html:41
1770 #: rhodecode/templates/admin/users/user_add.html:41
1670 #: rhodecode/templates/base/base.html:212
1771 #: rhodecode/templates/base/base.html:224
1671 msgid "Password"
1772 msgid "Password"
1672 msgstr ""
1773 msgstr ""
1673
1774
@@ -1683,7 +1784,7 b' msgstr ""'
1683 msgid "Forgot your password ?"
1784 msgid "Forgot your password ?"
1684 msgstr ""
1785 msgstr ""
1685
1786
1686 #: rhodecode/templates/login.html:63 rhodecode/templates/base/base.html:223
1787 #: rhodecode/templates/login.html:63 rhodecode/templates/base/base.html:235
1687 msgid "Don't have an account ?"
1788 msgid "Don't have an account ?"
1688 msgstr ""
1789 msgstr ""
1689
1790
@@ -1752,7 +1853,7 b' msgstr ""'
1752 #: rhodecode/templates/repo_switcher_list.html:10
1853 #: rhodecode/templates/repo_switcher_list.html:10
1753 #: rhodecode/templates/admin/defaults/defaults.html:44
1854 #: rhodecode/templates/admin/defaults/defaults.html:44
1754 #: rhodecode/templates/admin/repos/repo_add_base.html:65
1855 #: rhodecode/templates/admin/repos/repo_add_base.html:65
1755 #: rhodecode/templates/admin/repos/repo_edit.html:85
1856 #: rhodecode/templates/admin/repos/repo_edit.html:78
1756 #: rhodecode/templates/data_table/_dt_elements.html:61
1857 #: rhodecode/templates/data_table/_dt_elements.html:61
1757 #: rhodecode/templates/summary/summary.html:77
1858 #: rhodecode/templates/summary/summary.html:77
1758 msgid "Private repository"
1859 msgid "Private repository"
@@ -1775,13 +1876,13 b' msgid "There are no tags yet"'
1775 msgstr ""
1876 msgstr ""
1776
1877
1777 #: rhodecode/templates/switch_to_list.html:35
1878 #: rhodecode/templates/switch_to_list.html:35
1778 #: rhodecode/templates/bookmarks/bookmarks_data.html:32
1879 #: rhodecode/templates/bookmarks/bookmarks_data.html:37
1779 msgid "There are no bookmarks yet"
1880 msgid "There are no bookmarks yet"
1780 msgstr ""
1881 msgstr ""
1781
1882
1782 #: rhodecode/templates/admin/admin.html:5
1883 #: rhodecode/templates/admin/admin.html:5
1783 #: rhodecode/templates/admin/admin.html:13
1884 #: rhodecode/templates/admin/admin.html:13
1784 #: rhodecode/templates/base/base.html:68
1885 #: rhodecode/templates/base/base.html:73
1785 msgid "Admin journal"
1886 msgid "Admin journal"
1786 msgstr ""
1887 msgstr ""
1787
1888
@@ -1807,9 +1908,9 b' msgstr[1] ""'
1807 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:46
1908 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:46
1808 #: rhodecode/templates/admin/users/user_edit_my_account.html:176
1909 #: rhodecode/templates/admin/users/user_edit_my_account.html:176
1809 #: rhodecode/templates/admin/users/users.html:87
1910 #: rhodecode/templates/admin/users/users.html:87
1810 #: rhodecode/templates/admin/users_groups/users_groups.html:37
1911 #: rhodecode/templates/admin/users_groups/users_groups.html:40
1811 #: rhodecode/templates/journal/journal.html:197
1912 #: rhodecode/templates/journal/journal.html:197
1812 #: rhodecode/templates/journal/journal.html:300
1913 #: rhodecode/templates/journal/journal.html:287
1813 msgid "Action"
1914 msgid "Action"
1814 msgstr ""
1915 msgstr ""
1815
1916
@@ -1819,7 +1920,7 b' msgid "Repository"'
1819 msgstr ""
1920 msgstr ""
1820
1921
1821 #: rhodecode/templates/admin/admin_log.html:8
1922 #: rhodecode/templates/admin/admin_log.html:8
1822 #: rhodecode/templates/bookmarks/bookmarks.html:35
1923 #: rhodecode/templates/bookmarks/bookmarks.html:49
1823 #: rhodecode/templates/bookmarks/bookmarks_data.html:7
1924 #: rhodecode/templates/bookmarks/bookmarks_data.html:7
1824 #: rhodecode/templates/branches/branches.html:48
1925 #: rhodecode/templates/branches/branches.html:48
1825 #: rhodecode/templates/branches/branches_data.html:7
1926 #: rhodecode/templates/branches/branches_data.html:7
@@ -1842,19 +1943,18 b' msgid "Repositories defaults"'
1842 msgstr ""
1943 msgstr ""
1843
1944
1844 #: rhodecode/templates/admin/defaults/defaults.html:11
1945 #: rhodecode/templates/admin/defaults/defaults.html:11
1845 #: rhodecode/templates/base/base.html:75
1946 #: rhodecode/templates/base/base.html:80
1846 msgid "Defaults"
1947 msgid "Defaults"
1847 msgstr ""
1948 msgstr ""
1848
1949
1849 #: rhodecode/templates/admin/defaults/defaults.html:35
1950 #: rhodecode/templates/admin/defaults/defaults.html:35
1850 #: rhodecode/templates/admin/repos/repo_add_base.html:38
1951 #: rhodecode/templates/admin/repos/repo_add_base.html:38
1851 #: rhodecode/templates/admin/repos/repo_edit.html:58
1852 msgid "Type"
1952 msgid "Type"
1853 msgstr ""
1953 msgstr ""
1854
1954
1855 #: rhodecode/templates/admin/defaults/defaults.html:48
1955 #: rhodecode/templates/admin/defaults/defaults.html:48
1856 #: rhodecode/templates/admin/repos/repo_add_base.html:69
1956 #: rhodecode/templates/admin/repos/repo_add_base.html:69
1857 #: rhodecode/templates/admin/repos/repo_edit.html:89
1957 #: rhodecode/templates/admin/repos/repo_edit.html:82
1858 #: rhodecode/templates/forks/fork.html:69
1958 #: rhodecode/templates/forks/fork.html:69
1859 msgid ""
1959 msgid ""
1860 "Private repositories are only visible to people explicitly added as "
1960 "Private repositories are only visible to people explicitly added as "
@@ -1862,60 +1962,185 b' msgid ""'
1862 msgstr ""
1962 msgstr ""
1863
1963
1864 #: rhodecode/templates/admin/defaults/defaults.html:55
1964 #: rhodecode/templates/admin/defaults/defaults.html:55
1865 #: rhodecode/templates/admin/repos/repo_edit.html:94
1965 #: rhodecode/templates/admin/repos/repo_edit.html:87
1866 msgid "Enable statistics"
1966 msgid "Enable statistics"
1867 msgstr ""
1967 msgstr ""
1868
1968
1869 #: rhodecode/templates/admin/defaults/defaults.html:59
1969 #: rhodecode/templates/admin/defaults/defaults.html:59
1870 #: rhodecode/templates/admin/repos/repo_edit.html:98
1970 #: rhodecode/templates/admin/repos/repo_edit.html:91
1871 msgid "Enable statistics window on summary page."
1971 msgid "Enable statistics window on summary page."
1872 msgstr ""
1972 msgstr ""
1873
1973
1874 #: rhodecode/templates/admin/defaults/defaults.html:65
1974 #: rhodecode/templates/admin/defaults/defaults.html:65
1875 #: rhodecode/templates/admin/repos/repo_edit.html:103
1975 #: rhodecode/templates/admin/repos/repo_edit.html:96
1876 msgid "Enable downloads"
1976 msgid "Enable downloads"
1877 msgstr ""
1977 msgstr ""
1878
1978
1879 #: rhodecode/templates/admin/defaults/defaults.html:69
1979 #: rhodecode/templates/admin/defaults/defaults.html:69
1880 #: rhodecode/templates/admin/repos/repo_edit.html:107
1980 #: rhodecode/templates/admin/repos/repo_edit.html:100
1881 msgid "Enable download menu on summary page."
1981 msgid "Enable download menu on summary page."
1882 msgstr ""
1982 msgstr ""
1883
1983
1884 #: rhodecode/templates/admin/defaults/defaults.html:75
1984 #: rhodecode/templates/admin/defaults/defaults.html:75
1885 #: rhodecode/templates/admin/repos/repo_edit.html:112
1985 #: rhodecode/templates/admin/repos/repo_edit.html:105
1886 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:72
1986 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:64
1887 msgid "Enable locking"
1987 msgid "Enable locking"
1888 msgstr ""
1988 msgstr ""
1889
1989
1890 #: rhodecode/templates/admin/defaults/defaults.html:79
1990 #: rhodecode/templates/admin/defaults/defaults.html:79
1891 #: rhodecode/templates/admin/repos/repo_edit.html:116
1991 #: rhodecode/templates/admin/repos/repo_edit.html:109
1892 msgid "Enable lock-by-pulling on repository."
1992 msgid "Enable lock-by-pulling on repository."
1893 msgstr ""
1993 msgstr ""
1894
1994
1895 #: rhodecode/templates/admin/defaults/defaults.html:84
1995 #: rhodecode/templates/admin/defaults/defaults.html:84
1896 #: rhodecode/templates/admin/ldap/ldap.html:89
1996 #: rhodecode/templates/admin/ldap/ldap.html:89
1897 #: rhodecode/templates/admin/permissions/permissions.html:92
1997 #: rhodecode/templates/admin/permissions/permissions.html:122
1898 #: rhodecode/templates/admin/repos/repo_edit.html:148
1998 #: rhodecode/templates/admin/repos/repo_edit.html:141
1899 #: rhodecode/templates/admin/repos/repo_edit.html:173
1999 #: rhodecode/templates/admin/repos/repo_edit.html:166
1900 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:80
2000 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:72
2001 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:96
1901 #: rhodecode/templates/admin/settings/hooks.html:73
2002 #: rhodecode/templates/admin/settings/hooks.html:73
1902 #: rhodecode/templates/admin/users/user_add.html:94
2003 #: rhodecode/templates/admin/users/user_add.html:94
1903 #: rhodecode/templates/admin/users/user_edit.html:140
2004 #: rhodecode/templates/admin/users/user_edit.html:140
1904 #: rhodecode/templates/admin/users/user_edit.html:185
1905 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:88
2005 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:88
1906 #: rhodecode/templates/admin/users_groups/users_group_add.html:49
2006 #: rhodecode/templates/admin/users_groups/users_group_add.html:49
1907 #: rhodecode/templates/admin/users_groups/users_group_edit.html:90
2007 #: rhodecode/templates/admin/users_groups/users_group_edit.html:90
1908 #: rhodecode/templates/admin/users_groups/users_group_edit.html:135
2008 #: rhodecode/templates/admin/users_groups/users_group_edit.html:143
2009 #: rhodecode/templates/base/default_perms_box.html:53
1909 msgid "Save"
2010 msgid "Save"
1910 msgstr ""
2011 msgstr ""
1911
2012
2013 #: rhodecode/templates/admin/gists/index.html:5
2014 #: rhodecode/templates/base/base.html:299
2015 msgid "Gists"
2016 msgstr ""
2017
2018 #: rhodecode/templates/admin/gists/index.html:10
2019 #, python-format
2020 msgid "Private Gists for user %s"
2021 msgstr ""
2022
2023 #: rhodecode/templates/admin/gists/index.html:12
2024 #, python-format
2025 msgid "Public Gists for user %s"
2026 msgstr ""
2027
2028 #: rhodecode/templates/admin/gists/index.html:14
2029 msgid "Public Gists"
2030 msgstr ""
2031
2032 #: rhodecode/templates/admin/gists/index.html:31
2033 #: rhodecode/templates/admin/gists/show.html:24
2034 #: rhodecode/templates/base/base.html:302
2035 msgid "Create new gist"
2036 msgstr ""
2037
2038 #: rhodecode/templates/admin/gists/index.html:48
2039 msgid "Created"
2040 msgstr ""
2041
2042 #: rhodecode/templates/admin/gists/index.html:51
2043 #: rhodecode/templates/admin/gists/index.html:53
2044 #: rhodecode/templates/admin/gists/show.html:43
2045 #: rhodecode/templates/admin/gists/show.html:45
2046 msgid "Expires"
2047 msgstr ""
2048
2049 #: rhodecode/templates/admin/gists/index.html:51
2050 #: rhodecode/templates/admin/gists/show.html:43
2051 msgid "never"
2052 msgstr ""
2053
2054 #: rhodecode/templates/admin/gists/index.html:68
2055 msgid "There are no gists yet"
2056 msgstr ""
2057
2058 #: rhodecode/templates/admin/gists/new.html:5
2059 #: rhodecode/templates/admin/gists/new.html:16
2060 msgid "New gist"
2061 msgstr ""
2062
2063 #: rhodecode/templates/admin/gists/new.html:37
2064 msgid "Gist description ..."
2065 msgstr ""
2066
2067 #: rhodecode/templates/admin/gists/new.html:52
2068 msgid "Create private gist"
2069 msgstr ""
2070
2071 #: rhodecode/templates/admin/gists/new.html:53
2072 msgid "Create public gist"
2073 msgstr ""
2074
2075 #: rhodecode/templates/admin/gists/new.html:54
2076 #: rhodecode/templates/admin/permissions/permissions.html:123
2077 #: rhodecode/templates/admin/permissions/permissions.html:185
2078 #: rhodecode/templates/admin/repos/repo_edit.html:142
2079 #: rhodecode/templates/admin/repos/repo_edit.html:167
2080 #: rhodecode/templates/admin/repos/repo_edit.html:381
2081 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:73
2082 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:97
2083 #: rhodecode/templates/admin/settings/settings.html:115
2084 #: rhodecode/templates/admin/settings/settings.html:196
2085 #: rhodecode/templates/admin/settings/settings.html:288
2086 #: rhodecode/templates/admin/users/user_edit.html:141
2087 #: rhodecode/templates/admin/users/user_edit.html:198
2088 #: rhodecode/templates/admin/users/user_edit.html:246
2089 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:89
2090 #: rhodecode/templates/admin/users_groups/users_group_edit.html:144
2091 #: rhodecode/templates/base/default_perms_box.html:54
2092 #: rhodecode/templates/files/files_add.html:80
2093 #: rhodecode/templates/files/files_edit.html:66
2094 #: rhodecode/templates/pullrequests/pullrequest.html:86
2095 msgid "Reset"
2096 msgstr ""
2097
2098 #: rhodecode/templates/admin/gists/show.html:5
2099 msgid "gist"
2100 msgstr ""
2101
2102 #: rhodecode/templates/admin/gists/show.html:9
2103 msgid "Gist"
2104 msgstr ""
2105
2106 #: rhodecode/templates/admin/gists/show.html:36
2107 msgid "Public gist"
2108 msgstr ""
2109
2110 #: rhodecode/templates/admin/gists/show.html:38
2111 msgid "Private gist"
2112 msgstr ""
2113
2114 #: rhodecode/templates/admin/gists/show.html:54
2115 #: rhodecode/templates/admin/repos/repo_edit.html:299
2116 #: rhodecode/templates/changeset/changeset_file_comment.html:40
2117 msgid "Delete"
2118 msgstr ""
2119
2120 #: rhodecode/templates/admin/gists/show.html:54
2121 #, fuzzy
2122 msgid "Confirm to delete this gist"
2123 msgstr ""
2124
2125 #: rhodecode/templates/admin/gists/show.html:63
2126 #: rhodecode/templates/admin/gists/show.html:84
2127 #: rhodecode/templates/files/files_edit.html:48
2128 #: rhodecode/templates/files/files_source.html:25
2129 #: rhodecode/templates/files/files_source.html:55
2130 msgid "Show as raw"
2131 msgstr ""
2132
2133 #: rhodecode/templates/admin/gists/show.html:71
2134 msgid "created"
2135 msgstr ""
2136
1912 #: rhodecode/templates/admin/ldap/ldap.html:5
2137 #: rhodecode/templates/admin/ldap/ldap.html:5
1913 msgid "LDAP administration"
2138 msgid "LDAP administration"
1914 msgstr ""
2139 msgstr ""
1915
2140
1916 #: rhodecode/templates/admin/ldap/ldap.html:11
2141 #: rhodecode/templates/admin/ldap/ldap.html:11
1917 #: rhodecode/templates/admin/users/users.html:86
2142 #: rhodecode/templates/admin/users/users.html:86
1918 #: rhodecode/templates/base/base.html:74
2143 #: rhodecode/templates/base/base.html:79
1919 msgid "LDAP"
2144 msgid "LDAP"
1920 msgstr ""
2145 msgstr ""
1921
2146
@@ -2016,7 +2241,7 b' msgid "Show notification"'
2016 msgstr ""
2241 msgstr ""
2017
2242
2018 #: rhodecode/templates/admin/notifications/show_notification.html:9
2243 #: rhodecode/templates/admin/notifications/show_notification.html:9
2019 #: rhodecode/templates/base/base.html:241
2244 #: rhodecode/templates/base/base.html:253
2020 msgid "Notifications"
2245 msgid "Notifications"
2021 msgstr ""
2246 msgstr ""
2022
2247
@@ -2025,12 +2250,14 b' msgid "Permissions administration"'
2025 msgstr ""
2250 msgstr ""
2026
2251
2027 #: rhodecode/templates/admin/permissions/permissions.html:11
2252 #: rhodecode/templates/admin/permissions/permissions.html:11
2253 #: rhodecode/templates/admin/repos/repo_edit.html:151
2028 #: rhodecode/templates/admin/repos/repo_edit.html:158
2254 #: rhodecode/templates/admin/repos/repo_edit.html:158
2029 #: rhodecode/templates/admin/repos/repo_edit.html:165
2255 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:81
2030 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:64
2256 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:88
2031 #: rhodecode/templates/admin/users/user_edit.html:150
2257 #: rhodecode/templates/admin/users/user_edit.html:150
2032 #: rhodecode/templates/admin/users_groups/users_group_edit.html:100
2258 #: rhodecode/templates/admin/users_groups/users_group_edit.html:129
2033 #: rhodecode/templates/base/base.html:73
2259 #: rhodecode/templates/admin/users_groups/users_group_edit.html:136
2260 #: rhodecode/templates/base/base.html:78
2034 msgid "Permissions"
2261 msgid "Permissions"
2035 msgstr ""
2262 msgstr ""
2036
2263
@@ -2051,6 +2278,7 b' msgstr ""'
2051
2278
2052 #: rhodecode/templates/admin/permissions/permissions.html:50
2279 #: rhodecode/templates/admin/permissions/permissions.html:50
2053 #: rhodecode/templates/admin/permissions/permissions.html:63
2280 #: rhodecode/templates/admin/permissions/permissions.html:63
2281 #: rhodecode/templates/admin/permissions/permissions.html:77
2054 msgid "Overwrite existing settings"
2282 msgid "Overwrite existing settings"
2055 msgstr ""
2283 msgstr ""
2056
2284
@@ -2062,86 +2290,85 b' msgid ""'
2062 msgstr ""
2290 msgstr ""
2063
2291
2064 #: rhodecode/templates/admin/permissions/permissions.html:69
2292 #: rhodecode/templates/admin/permissions/permissions.html:69
2065 msgid "Registration"
2293 msgid "User group"
2066 msgstr ""
2294 msgstr ""
2067
2295
2068 #: rhodecode/templates/admin/permissions/permissions.html:77
2296 #: rhodecode/templates/admin/permissions/permissions.html:76
2297 msgid ""
2298 "All default permissions on each user group will be reset to chosen "
2299 "permission, note that all custom default permission on repository groups "
2300 "will be lost"
2301 msgstr ""
2302
2303 #: rhodecode/templates/admin/permissions/permissions.html:83
2069 msgid "Repository creation"
2304 msgid "Repository creation"
2070 msgstr ""
2305 msgstr ""
2071
2306
2072 #: rhodecode/templates/admin/permissions/permissions.html:85
2307 #: rhodecode/templates/admin/permissions/permissions.html:91
2308 msgid "User group creation"
2309 msgstr ""
2310
2311 #: rhodecode/templates/admin/permissions/permissions.html:99
2073 msgid "Repository forking"
2312 msgid "Repository forking"
2074 msgstr ""
2313 msgstr ""
2075
2314
2076 #: rhodecode/templates/admin/permissions/permissions.html:93
2315 #: rhodecode/templates/admin/permissions/permissions.html:107
2077 #: rhodecode/templates/admin/permissions/permissions.html:154
2316 msgid "Registration"
2078 #: rhodecode/templates/admin/repos/repo_edit.html:149
2317 msgstr ""
2079 #: rhodecode/templates/admin/repos/repo_edit.html:174
2318
2080 #: rhodecode/templates/admin/repos/repo_edit.html:388
2319 #: rhodecode/templates/admin/permissions/permissions.html:115
2081 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:81
2320 msgid "External auth account activation"
2082 #: rhodecode/templates/admin/settings/settings.html:115
2321 msgstr ""
2083 #: rhodecode/templates/admin/settings/settings.html:187
2322
2084 #: rhodecode/templates/admin/settings/settings.html:278
2323 #: rhodecode/templates/admin/permissions/permissions.html:133
2085 #: rhodecode/templates/admin/users/user_edit.html:141
2086 #: rhodecode/templates/admin/users/user_edit.html:186
2087 #: rhodecode/templates/admin/users/user_edit.html:235
2088 #: rhodecode/templates/admin/users/user_edit.html:283
2089 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:89
2090 #: rhodecode/templates/admin/users_groups/users_group_edit.html:136
2091 #: rhodecode/templates/files/files_add.html:80
2092 #: rhodecode/templates/files/files_edit.html:66
2093 #: rhodecode/templates/pullrequests/pullrequest.html:110
2094 msgid "Reset"
2095 msgstr ""
2096
2097 #: rhodecode/templates/admin/permissions/permissions.html:103
2098 msgid "Default User Permissions"
2324 msgid "Default User Permissions"
2099 msgstr ""
2325 msgstr ""
2100
2326
2101 #: rhodecode/templates/admin/permissions/permissions.html:113
2327 #: rhodecode/templates/admin/permissions/permissions.html:144
2102 #: rhodecode/templates/admin/users/user_edit.html:244
2328 #: rhodecode/templates/admin/users/user_edit.html:207
2103 msgid "Allowed IP addresses"
2329 msgid "Allowed IP addresses"
2104 msgstr ""
2330 msgstr ""
2105
2331
2106 #: rhodecode/templates/admin/permissions/permissions.html:127
2332 #: rhodecode/templates/admin/permissions/permissions.html:158
2107 #: rhodecode/templates/admin/repos/repo_edit.html:347
2333 #: rhodecode/templates/admin/repos/repo_edit.html:340
2108 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:70
2334 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:70
2109 #: rhodecode/templates/admin/users/user_edit.html:212
2335 #: rhodecode/templates/admin/users/user_edit.html:175
2110 #: rhodecode/templates/admin/users/user_edit.html:257
2336 #: rhodecode/templates/admin/users/user_edit.html:220
2111 #: rhodecode/templates/admin/users_groups/users_groups.html:46
2337 #: rhodecode/templates/admin/users_groups/users_groups.html:54
2112 #: rhodecode/templates/data_table/_dt_elements.html:122
2338 #: rhodecode/templates/data_table/_dt_elements.html:122
2113 #: rhodecode/templates/data_table/_dt_elements.html:130
2339 #: rhodecode/templates/data_table/_dt_elements.html:136
2114 msgid "delete"
2340 msgid "delete"
2115 msgstr ""
2341 msgstr ""
2116
2342
2117 #: rhodecode/templates/admin/permissions/permissions.html:128
2343 #: rhodecode/templates/admin/permissions/permissions.html:159
2118 #: rhodecode/templates/admin/users/user_edit.html:258
2344 #: rhodecode/templates/admin/users/user_edit.html:221
2119 #, fuzzy, python-format
2345 #, fuzzy, python-format
2120 msgid "Confirm to delete this ip: %s"
2346 msgid "Confirm to delete this ip: %s"
2121 msgstr ""
2347 msgstr ""
2122
2348
2123 #: rhodecode/templates/admin/permissions/permissions.html:134
2349 #: rhodecode/templates/admin/permissions/permissions.html:165
2124 #: rhodecode/templates/admin/users/user_edit.html:264
2350 #: rhodecode/templates/admin/users/user_edit.html:227
2125 msgid "All IP addresses are allowed"
2351 msgid "All IP addresses are allowed"
2126 msgstr ""
2352 msgstr ""
2127
2353
2128 #: rhodecode/templates/admin/permissions/permissions.html:145
2354 #: rhodecode/templates/admin/permissions/permissions.html:176
2129 #: rhodecode/templates/admin/users/user_edit.html:275
2355 #: rhodecode/templates/admin/users/user_edit.html:238
2130 msgid "New ip address"
2356 msgid "New ip address"
2131 msgstr ""
2357 msgstr ""
2132
2358
2133 #: rhodecode/templates/admin/permissions/permissions.html:153
2359 #: rhodecode/templates/admin/permissions/permissions.html:184
2134 #: rhodecode/templates/admin/repos/repo_add_base.html:73
2360 #: rhodecode/templates/admin/repos/repo_add_base.html:73
2135 #: rhodecode/templates/admin/repos/repo_edit.html:387
2361 #: rhodecode/templates/admin/repos/repo_edit.html:380
2136 #: rhodecode/templates/admin/users/user_edit.html:234
2362 #: rhodecode/templates/admin/users/user_edit.html:197
2137 #: rhodecode/templates/admin/users/user_edit.html:282
2363 #: rhodecode/templates/admin/users/user_edit.html:245
2138 msgid "Add"
2364 msgid "Add"
2139 msgstr ""
2365 msgstr ""
2140
2366
2141 #: rhodecode/templates/admin/repos/repo_add.html:12
2367 #: rhodecode/templates/admin/repos/repo_add.html:12
2142 #: rhodecode/templates/admin/repos/repo_add.html:16
2368 #: rhodecode/templates/admin/repos/repo_add.html:16
2143 #: rhodecode/templates/base/base.html:69 rhodecode/templates/base/base.html:103
2369 #: rhodecode/templates/base/base.html:74 rhodecode/templates/base/base.html:88
2144 #: rhodecode/templates/base/base.html:263
2370 #: rhodecode/templates/base/base.html:116
2371 #: rhodecode/templates/base/base.html:275
2145 msgid "Repositories"
2372 msgid "Repositories"
2146 msgstr ""
2373 msgstr ""
2147
2374
@@ -2156,7 +2383,7 b' msgid "Clone from"'
2156 msgstr ""
2383 msgstr ""
2157
2384
2158 #: rhodecode/templates/admin/repos/repo_add_base.html:24
2385 #: rhodecode/templates/admin/repos/repo_add_base.html:24
2159 #: rhodecode/templates/admin/repos/repo_edit.html:44
2386 #: rhodecode/templates/admin/repos/repo_edit.html:45
2160 msgid "Optional http[s] url from which repository should be cloned."
2387 msgid "Optional http[s] url from which repository should be cloned."
2161 msgstr ""
2388 msgstr ""
2162
2389
@@ -2170,19 +2397,19 b' msgid "Type of repository to create."'
2170 msgstr ""
2397 msgstr ""
2171
2398
2172 #: rhodecode/templates/admin/repos/repo_add_base.html:47
2399 #: rhodecode/templates/admin/repos/repo_add_base.html:47
2173 #: rhodecode/templates/admin/repos/repo_edit.html:66
2400 #: rhodecode/templates/admin/repos/repo_edit.html:59
2174 #: rhodecode/templates/forks/fork.html:38
2401 #: rhodecode/templates/forks/fork.html:38
2175 msgid "Landing revision"
2402 msgid "Landing revision"
2176 msgstr ""
2403 msgstr ""
2177
2404
2178 #: rhodecode/templates/admin/repos/repo_add_base.html:51
2405 #: rhodecode/templates/admin/repos/repo_add_base.html:51
2179 #: rhodecode/templates/admin/repos/repo_edit.html:70
2406 #: rhodecode/templates/admin/repos/repo_edit.html:63
2180 #: rhodecode/templates/forks/fork.html:42
2407 #: rhodecode/templates/forks/fork.html:42
2181 msgid "Default revision for files page, downloads, whoosh and readme"
2408 msgid "Default revision for files page, downloads, whoosh and readme"
2182 msgstr ""
2409 msgstr ""
2183
2410
2184 #: rhodecode/templates/admin/repos/repo_add_base.html:60
2411 #: rhodecode/templates/admin/repos/repo_add_base.html:60
2185 #: rhodecode/templates/admin/repos/repo_edit.html:79
2412 #: rhodecode/templates/admin/repos/repo_edit.html:72
2186 #: rhodecode/templates/forks/fork.html:60
2413 #: rhodecode/templates/forks/fork.html:60
2187 msgid "Keep it short and to the point. Use a README file for longer descriptions."
2414 msgid "Keep it short and to the point. Use a README file for longer descriptions."
2188 msgstr ""
2415 msgstr ""
@@ -2194,245 +2421,249 b' msgstr ""'
2194 #: rhodecode/templates/admin/repos/repo_edit.html:12
2421 #: rhodecode/templates/admin/repos/repo_edit.html:12
2195 #: rhodecode/templates/admin/settings/hooks.html:9
2422 #: rhodecode/templates/admin/settings/hooks.html:9
2196 #: rhodecode/templates/admin/settings/settings.html:11
2423 #: rhodecode/templates/admin/settings/settings.html:11
2197 #: rhodecode/templates/base/base.html:76 rhodecode/templates/base/base.html:121
2424 #: rhodecode/templates/base/base.html:81 rhodecode/templates/base/base.html:134
2198 #: rhodecode/templates/summary/summary.html:212
2425 #: rhodecode/templates/summary/summary.html:212
2199 msgid "Settings"
2426 msgid "Settings"
2200 msgstr ""
2427 msgstr ""
2201
2428
2202 #: rhodecode/templates/admin/repos/repo_edit.html:40
2429 #: rhodecode/templates/admin/repos/repo_edit.html:36
2430 msgid "Non-changeable id"
2431 msgstr ""
2432
2433 #: rhodecode/templates/admin/repos/repo_edit.html:41
2203 msgid "Clone uri"
2434 msgid "Clone uri"
2204 msgstr ""
2435 msgstr ""
2205
2436
2206 #: rhodecode/templates/admin/repos/repo_edit.html:53
2437 #: rhodecode/templates/admin/repos/repo_edit.html:54
2207 msgid "Optional select a group to put this repository into."
2438 msgid "Optional select a group to put this repository into."
2208 msgstr ""
2439 msgstr ""
2209
2440
2210 #: rhodecode/templates/admin/repos/repo_edit.html:126
2441 #: rhodecode/templates/admin/repos/repo_edit.html:119
2211 msgid "Change owner of this repository."
2442 msgid "Change owner of this repository."
2212 msgstr ""
2443 msgstr ""
2213
2444
2445 #: rhodecode/templates/admin/repos/repo_edit.html:177
2446 msgid "Advanced settings"
2447 msgstr ""
2448
2449 #: rhodecode/templates/admin/repos/repo_edit.html:180
2450 msgid "Statistics"
2451 msgstr ""
2452
2214 #: rhodecode/templates/admin/repos/repo_edit.html:184
2453 #: rhodecode/templates/admin/repos/repo_edit.html:184
2215 msgid "Advanced settings"
2454 msgid "Reset current statistics"
2455 msgstr ""
2456
2457 #: rhodecode/templates/admin/repos/repo_edit.html:184
2458 msgid "Confirm to remove current statistics"
2216 msgstr ""
2459 msgstr ""
2217
2460
2218 #: rhodecode/templates/admin/repos/repo_edit.html:187
2461 #: rhodecode/templates/admin/repos/repo_edit.html:187
2219 msgid "Statistics"
2220 msgstr ""
2221
2222 #: rhodecode/templates/admin/repos/repo_edit.html:191
2223 msgid "Reset current statistics"
2224 msgstr ""
2225
2226 #: rhodecode/templates/admin/repos/repo_edit.html:191
2227 msgid "Confirm to remove current statistics"
2228 msgstr ""
2229
2230 #: rhodecode/templates/admin/repos/repo_edit.html:194
2231 msgid "Fetched to rev"
2462 msgid "Fetched to rev"
2232 msgstr ""
2463 msgstr ""
2233
2464
2234 #: rhodecode/templates/admin/repos/repo_edit.html:195
2465 #: rhodecode/templates/admin/repos/repo_edit.html:188
2235 msgid "Stats gathered"
2466 msgid "Stats gathered"
2236 msgstr ""
2467 msgstr ""
2237
2468
2238 #: rhodecode/templates/admin/repos/repo_edit.html:203
2469 #: rhodecode/templates/admin/repos/repo_edit.html:196
2239 msgid "Remote"
2470 msgid "Remote"
2240 msgstr ""
2471 msgstr ""
2241
2472
2242 #: rhodecode/templates/admin/repos/repo_edit.html:207
2473 #: rhodecode/templates/admin/repos/repo_edit.html:200
2243 msgid "Pull changes from remote location"
2474 msgid "Pull changes from remote location"
2244 msgstr ""
2475 msgstr ""
2245
2476
2246 #: rhodecode/templates/admin/repos/repo_edit.html:207
2477 #: rhodecode/templates/admin/repos/repo_edit.html:200
2247 msgid "Confirm to pull changes from remote side"
2478 msgid "Confirm to pull changes from remote side"
2248 msgstr ""
2479 msgstr ""
2249
2480
2481 #: rhodecode/templates/admin/repos/repo_edit.html:211
2482 msgid "Cache"
2483 msgstr ""
2484
2485 #: rhodecode/templates/admin/repos/repo_edit.html:215
2486 msgid "Invalidate repository cache"
2487 msgstr ""
2488
2489 #: rhodecode/templates/admin/repos/repo_edit.html:215
2490 msgid "Confirm to invalidate repository cache"
2491 msgstr ""
2492
2250 #: rhodecode/templates/admin/repos/repo_edit.html:218
2493 #: rhodecode/templates/admin/repos/repo_edit.html:218
2251 msgid "Cache"
2252 msgstr ""
2253
2254 #: rhodecode/templates/admin/repos/repo_edit.html:222
2255 msgid "Invalidate repository cache"
2256 msgstr ""
2257
2258 #: rhodecode/templates/admin/repos/repo_edit.html:222
2259 msgid "Confirm to invalidate repository cache"
2260 msgstr ""
2261
2262 #: rhodecode/templates/admin/repos/repo_edit.html:225
2263 msgid ""
2494 msgid ""
2264 "Manually invalidate cache for this repository. On first access repository"
2495 "Manually invalidate cache for this repository. On first access repository"
2265 " will be cached again"
2496 " will be cached again"
2266 msgstr ""
2497 msgstr ""
2267
2498
2268 #: rhodecode/templates/admin/repos/repo_edit.html:230
2499 #: rhodecode/templates/admin/repos/repo_edit.html:223
2269 msgid "List of cached values"
2500 msgid "List of cached values"
2270 msgstr ""
2501 msgstr ""
2271
2502
2272 #: rhodecode/templates/admin/repos/repo_edit.html:233
2503 #: rhodecode/templates/admin/repos/repo_edit.html:226
2273 msgid "Prefix"
2504 msgid "Prefix"
2274 msgstr ""
2505 msgstr ""
2275
2506
2276 #: rhodecode/templates/admin/repos/repo_edit.html:234
2507 #: rhodecode/templates/admin/repos/repo_edit.html:227
2277 msgid "Key"
2508 msgid "Key"
2278 msgstr ""
2509 msgstr ""
2279
2510
2280 #: rhodecode/templates/admin/repos/repo_edit.html:235
2511 #: rhodecode/templates/admin/repos/repo_edit.html:228
2281 #: rhodecode/templates/admin/users/user_add.html:86
2512 #: rhodecode/templates/admin/users/user_add.html:86
2282 #: rhodecode/templates/admin/users/user_edit.html:124
2513 #: rhodecode/templates/admin/users/user_edit.html:124
2283 #: rhodecode/templates/admin/users/users.html:84
2514 #: rhodecode/templates/admin/users/users.html:84
2284 #: rhodecode/templates/admin/users_groups/users_group_add.html:41
2515 #: rhodecode/templates/admin/users_groups/users_group_add.html:41
2285 #: rhodecode/templates/admin/users_groups/users_group_edit.html:42
2516 #: rhodecode/templates/admin/users_groups/users_group_edit.html:42
2286 #: rhodecode/templates/admin/users_groups/users_groups.html:36
2517 #: rhodecode/templates/admin/users_groups/users_groups.html:39
2287 msgid "Active"
2518 msgid "Active"
2288 msgstr ""
2519 msgstr ""
2289
2520
2290 #: rhodecode/templates/admin/repos/repo_edit.html:250
2521 #: rhodecode/templates/admin/repos/repo_edit.html:243
2291 #: rhodecode/templates/base/base.html:280
2522 #: rhodecode/templates/base/base.html:292
2292 #: rhodecode/templates/base/base.html:281
2523 #: rhodecode/templates/base/base.html:293
2293 msgid "Public journal"
2524 msgid "Public journal"
2294 msgstr ""
2525 msgstr ""
2295
2526
2527 #: rhodecode/templates/admin/repos/repo_edit.html:249
2528 msgid "Remove from public journal"
2529 msgstr ""
2530
2531 #: rhodecode/templates/admin/repos/repo_edit.html:251
2532 msgid "Add to public journal"
2533 msgstr ""
2534
2296 #: rhodecode/templates/admin/repos/repo_edit.html:256
2535 #: rhodecode/templates/admin/repos/repo_edit.html:256
2297 msgid "Remove from public journal"
2298 msgstr ""
2299
2300 #: rhodecode/templates/admin/repos/repo_edit.html:258
2301 msgid "Add to public journal"
2302 msgstr ""
2303
2304 #: rhodecode/templates/admin/repos/repo_edit.html:263
2305 msgid ""
2536 msgid ""
2306 "All actions made on this repository will be accessible to everyone in "
2537 "All actions made on this repository will be accessible to everyone in "
2307 "public journal"
2538 "public journal"
2308 msgstr ""
2539 msgstr ""
2309
2540
2310 #: rhodecode/templates/admin/repos/repo_edit.html:270
2541 #: rhodecode/templates/admin/repos/repo_edit.html:263
2311 msgid "Locking"
2542 msgid "Locking"
2312 msgstr ""
2543 msgstr ""
2313
2544
2314 #: rhodecode/templates/admin/repos/repo_edit.html:275
2545 #: rhodecode/templates/admin/repos/repo_edit.html:268
2315 msgid "Unlock locked repo"
2546 msgid "Unlock locked repo"
2316 msgstr ""
2547 msgstr ""
2317
2548
2318 #: rhodecode/templates/admin/repos/repo_edit.html:275
2549 #: rhodecode/templates/admin/repos/repo_edit.html:268
2319 msgid "Confirm to unlock repository"
2550 msgid "Confirm to unlock repository"
2320 msgstr ""
2551 msgstr ""
2321
2552
2322 #: rhodecode/templates/admin/repos/repo_edit.html:278
2553 #: rhodecode/templates/admin/repos/repo_edit.html:271
2323 msgid "lock repo"
2554 msgid "Lock repo"
2324 msgstr ""
2555 msgstr ""
2325
2556
2326 #: rhodecode/templates/admin/repos/repo_edit.html:278
2557 #: rhodecode/templates/admin/repos/repo_edit.html:271
2327 msgid "Confirm to lock repository"
2558 msgid "Confirm to lock repository"
2328 msgstr ""
2559 msgstr ""
2329
2560
2330 #: rhodecode/templates/admin/repos/repo_edit.html:279
2561 #: rhodecode/templates/admin/repos/repo_edit.html:272
2331 msgid "Repository is not locked"
2562 msgid "Repository is not locked"
2332 msgstr ""
2563 msgstr ""
2333
2564
2565 #: rhodecode/templates/admin/repos/repo_edit.html:277
2566 msgid "Force locking on repository. Works only when anonymous access is disabled"
2567 msgstr ""
2568
2334 #: rhodecode/templates/admin/repos/repo_edit.html:284
2569 #: rhodecode/templates/admin/repos/repo_edit.html:284
2335 msgid "Force locking on repository. Works only when anonymous access is disabled"
2336 msgstr ""
2337
2338 #: rhodecode/templates/admin/repos/repo_edit.html:291
2339 msgid "Set as fork of"
2570 msgid "Set as fork of"
2340 msgstr ""
2571 msgstr ""
2341
2572
2342 #: rhodecode/templates/admin/repos/repo_edit.html:296
2573 #: rhodecode/templates/admin/repos/repo_edit.html:289
2343 msgid "set"
2574 msgid "Set"
2344 msgstr ""
2575 msgstr ""
2345
2576
2346 #: rhodecode/templates/admin/repos/repo_edit.html:300
2577 #: rhodecode/templates/admin/repos/repo_edit.html:293
2347 msgid "Manually set this repository as a fork of another from the list"
2578 msgid "Manually set this repository as a fork of another from the list"
2348 msgstr ""
2579 msgstr ""
2349
2580
2350 #: rhodecode/templates/admin/repos/repo_edit.html:306
2581 #: rhodecode/templates/admin/repos/repo_edit.html:308
2351 #: rhodecode/templates/changeset/changeset_file_comment.html:41
2352 msgid "Delete"
2353 msgstr ""
2354
2355 #: rhodecode/templates/admin/repos/repo_edit.html:315
2356 msgid "Remove this repository"
2582 msgid "Remove this repository"
2357 msgstr ""
2583 msgstr ""
2358
2584
2359 #: rhodecode/templates/admin/repos/repo_edit.html:315
2585 #: rhodecode/templates/admin/repos/repo_edit.html:308
2360 msgid "Confirm to delete this repository"
2586 msgid "Confirm to delete this repository"
2361 msgstr ""
2587 msgstr ""
2362
2588
2363 #: rhodecode/templates/admin/repos/repo_edit.html:317
2589 #: rhodecode/templates/admin/repos/repo_edit.html:310
2364 #, python-format
2590 #, python-format
2365 msgid "this repository has %s fork"
2591 msgid "this repository has %s fork"
2366 msgid_plural "this repository has %s forks"
2592 msgid_plural "this repository has %s forks"
2367 msgstr[0] ""
2593 msgstr[0] ""
2368 msgstr[1] ""
2594 msgstr[1] ""
2369
2595
2370 #: rhodecode/templates/admin/repos/repo_edit.html:318
2596 #: rhodecode/templates/admin/repos/repo_edit.html:311
2371 msgid "Detach forks"
2597 msgid "Detach forks"
2372 msgstr ""
2598 msgstr ""
2373
2599
2374 #: rhodecode/templates/admin/repos/repo_edit.html:319
2600 #: rhodecode/templates/admin/repos/repo_edit.html:312
2375 msgid "Delete forks"
2601 msgid "Delete forks"
2376 msgstr ""
2602 msgstr ""
2377
2603
2378 #: rhodecode/templates/admin/repos/repo_edit.html:322
2604 #: rhodecode/templates/admin/repos/repo_edit.html:315
2379 msgid ""
2605 msgid ""
2380 "This repository will be renamed in a special way in order to be "
2606 "This repository will be renamed in a special way in order to be "
2381 "unaccesible for RhodeCode and VCS systems. If you need to fully delete it"
2607 "unaccesible for RhodeCode and VCS systems. If you need to fully delete it"
2382 " from file system please do it manually"
2608 " from file system please do it manually"
2383 msgstr ""
2609 msgstr ""
2384
2610
2385 #: rhodecode/templates/admin/repos/repo_edit.html:336
2611 #: rhodecode/templates/admin/repos/repo_edit.html:329
2386 msgid "Extra fields"
2612 msgid "Extra fields"
2387 msgstr ""
2613 msgstr ""
2388
2614
2389 #: rhodecode/templates/admin/repos/repo_edit.html:348
2615 #: rhodecode/templates/admin/repos/repo_edit.html:341
2390 #, fuzzy, python-format
2616 #, fuzzy, python-format
2391 msgid "Confirm to delete this field: %s"
2617 msgid "Confirm to delete this field: %s"
2392 msgstr ""
2618 msgstr ""
2393
2619
2394 #: rhodecode/templates/admin/repos/repo_edit.html:362
2620 #: rhodecode/templates/admin/repos/repo_edit.html:355
2395 msgid "New field key"
2621 msgid "New field key"
2396 msgstr ""
2622 msgstr ""
2397
2623
2398 #: rhodecode/templates/admin/repos/repo_edit.html:370
2624 #: rhodecode/templates/admin/repos/repo_edit.html:363
2399 msgid "New field label"
2625 msgid "New field label"
2400 msgstr ""
2626 msgstr ""
2401
2627
2402 #: rhodecode/templates/admin/repos/repo_edit.html:373
2628 #: rhodecode/templates/admin/repos/repo_edit.html:366
2403 msgid "Enter short label"
2629 msgid "Enter short label"
2404 msgstr ""
2630 msgstr ""
2405
2631
2406 #: rhodecode/templates/admin/repos/repo_edit.html:379
2632 #: rhodecode/templates/admin/repos/repo_edit.html:372
2407 msgid "New field description"
2633 msgid "New field description"
2408 msgstr ""
2634 msgstr ""
2409
2635
2410 #: rhodecode/templates/admin/repos/repo_edit.html:382
2636 #: rhodecode/templates/admin/repos/repo_edit.html:375
2411 msgid "Enter description of a field"
2637 msgid "Enter description of a field"
2412 msgstr ""
2638 msgstr ""
2413
2639
2414 #: rhodecode/templates/admin/repos/repo_edit_perms.html:3
2640 #: rhodecode/templates/admin/repos/repo_edit_perms.html:3
2415 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
2641 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
2642 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:3
2416 msgid "none"
2643 msgid "none"
2417 msgstr ""
2644 msgstr ""
2418
2645
2419 #: rhodecode/templates/admin/repos/repo_edit_perms.html:4
2646 #: rhodecode/templates/admin/repos/repo_edit_perms.html:4
2420 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:4
2647 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:4
2648 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:4
2421 msgid "read"
2649 msgid "read"
2422 msgstr ""
2650 msgstr ""
2423
2651
2424 #: rhodecode/templates/admin/repos/repo_edit_perms.html:5
2652 #: rhodecode/templates/admin/repos/repo_edit_perms.html:5
2425 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:5
2653 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:5
2654 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:5
2426 msgid "write"
2655 msgid "write"
2427 msgstr ""
2656 msgstr ""
2428
2657
2429 #: rhodecode/templates/admin/repos/repo_edit_perms.html:6
2658 #: rhodecode/templates/admin/repos/repo_edit_perms.html:6
2430 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:6
2659 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:6
2660 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:6
2431 msgid "admin"
2661 msgid "admin"
2432 msgstr ""
2662 msgstr ""
2433
2663
2434 #: rhodecode/templates/admin/repos/repo_edit_perms.html:7
2664 #: rhodecode/templates/admin/repos/repo_edit_perms.html:7
2435 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:7
2665 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:7
2666 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:7
2436 msgid "member"
2667 msgid "member"
2437 msgstr ""
2668 msgstr ""
2438
2669
@@ -2444,6 +2675,8 b' msgstr ""'
2444 #: rhodecode/templates/admin/repos/repo_edit_perms.html:28
2675 #: rhodecode/templates/admin/repos/repo_edit_perms.html:28
2445 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:20
2676 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:20
2446 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:35
2677 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:35
2678 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:20
2679 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:35
2447 msgid "default"
2680 msgid "default"
2448 msgstr ""
2681 msgstr ""
2449
2682
@@ -2451,33 +2684,37 b' msgstr ""'
2451 #: rhodecode/templates/admin/repos/repo_edit_perms.html:58
2684 #: rhodecode/templates/admin/repos/repo_edit_perms.html:58
2452 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:25
2685 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:25
2453 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:55
2686 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:55
2687 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:25
2688 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:55
2454 msgid "revoke"
2689 msgid "revoke"
2455 msgstr ""
2690 msgstr ""
2456
2691
2457 #: rhodecode/templates/admin/repos/repo_edit_perms.html:83
2692 #: rhodecode/templates/admin/repos/repo_edit_perms.html:83
2458 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:80
2693 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:81
2694 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:81
2459 msgid "Add another member"
2695 msgid "Add another member"
2460 msgstr ""
2696 msgstr ""
2461
2697
2462 #: rhodecode/templates/admin/repos/repo_edit_perms.html:97
2463 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:100
2464 msgid "Failed to remove user"
2465 msgstr ""
2466
2467 #: rhodecode/templates/admin/repos/repo_edit_perms.html:112
2468 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:116
2469 msgid "Failed to remove user group"
2470 msgstr ""
2471
2472 #: rhodecode/templates/admin/repos/repos.html:5
2698 #: rhodecode/templates/admin/repos/repos.html:5
2473 msgid "Repositories administration"
2699 msgid "Repositories administration"
2474 msgstr ""
2700 msgstr ""
2475
2701
2476 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:86
2702 #: rhodecode/templates/admin/repos/repos.html:86
2477 msgid "apply to children"
2703 #: rhodecode/templates/admin/users/user_edit_my_account.html:185
2704 #: rhodecode/templates/admin/users/users.html:109
2705 #: rhodecode/templates/bookmarks/bookmarks.html:76
2706 #: rhodecode/templates/branches/branches.html:75
2707 #: rhodecode/templates/journal/journal.html:206
2708 #: rhodecode/templates/journal/journal.html:296
2709 #: rhodecode/templates/tags/tags.html:76
2710 msgid "No records found."
2478 msgstr ""
2711 msgstr ""
2479
2712
2480 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:87
2713 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:87
2714 msgid "apply to children"
2715 msgstr ""
2716
2717 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:88
2481 msgid ""
2718 msgid ""
2482 "Set or revoke permission to all children of that group, including non-"
2719 "Set or revoke permission to all children of that group, including non-"
2483 "private repositories and other groups"
2720 "private repositories and other groups"
@@ -2503,7 +2740,7 b' msgstr ""'
2503 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:11
2740 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:11
2504 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:11
2741 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:11
2505 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:16
2742 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:16
2506 #: rhodecode/templates/base/base.html:70 rhodecode/templates/base/base.html:82
2743 #: rhodecode/templates/base/base.html:75 rhodecode/templates/base/base.html:91
2507 msgid "Repository groups"
2744 msgid "Repository groups"
2508 msgstr ""
2745 msgstr ""
2509
2746
@@ -2533,7 +2770,7 b' msgstr ""'
2533 msgid "Add child group"
2770 msgid "Add child group"
2534 msgstr ""
2771 msgstr ""
2535
2772
2536 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:76
2773 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:68
2537 msgid ""
2774 msgid ""
2538 "Enable lock-by-pulling on group. This option will be applied to all other"
2775 "Enable lock-by-pulling on group. This option will be applied to all other"
2539 " groups and repositories inside"
2776 " groups and repositories inside"
@@ -2548,15 +2785,21 b' msgid "Number of toplevel repositories"'
2548 msgstr ""
2785 msgstr ""
2549
2786
2550 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:64
2787 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:64
2788 #: rhodecode/templates/admin/users_groups/users_groups.html:48
2789 #: rhodecode/templates/changeset/changeset_file_comment.html:73
2790 #: rhodecode/templates/changeset/changeset_file_comment.html:171
2551 msgid "Edit"
2791 msgid "Edit"
2552 msgstr ""
2792 msgstr ""
2553
2793
2554 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:65
2794 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:65
2795 #: rhodecode/templates/admin/users_groups/users_groups.html:49
2555 #: rhodecode/templates/base/perms_summary.html:29
2796 #: rhodecode/templates/base/perms_summary.html:29
2556 #: rhodecode/templates/base/perms_summary.html:48
2797 #: rhodecode/templates/base/perms_summary.html:60
2557 #: rhodecode/templates/base/perms_summary.html:50
2798 #: rhodecode/templates/base/perms_summary.html:62
2558 #: rhodecode/templates/data_table/_dt_elements.html:116
2799 #: rhodecode/templates/data_table/_dt_elements.html:116
2559 #: rhodecode/templates/data_table/_dt_elements.html:117
2800 #: rhodecode/templates/data_table/_dt_elements.html:117
2801 #: rhodecode/templates/data_table/_dt_elements.html:130
2802 #: rhodecode/templates/data_table/_dt_elements.html:131
2560 msgid "edit"
2803 msgid "edit"
2561 msgstr ""
2804 msgstr ""
2562
2805
@@ -2654,8 +2897,8 b' msgid "Google Analytics code"'
2654 msgstr ""
2897 msgstr ""
2655
2898
2656 #: rhodecode/templates/admin/settings/settings.html:114
2899 #: rhodecode/templates/admin/settings/settings.html:114
2657 #: rhodecode/templates/admin/settings/settings.html:186
2900 #: rhodecode/templates/admin/settings/settings.html:195
2658 #: rhodecode/templates/admin/settings/settings.html:277
2901 #: rhodecode/templates/admin/settings/settings.html:287
2659 msgid "Save settings"
2902 msgid "Save settings"
2660 msgstr ""
2903 msgstr ""
2661
2904
@@ -2668,133 +2911,154 b' msgid "General"'
2668 msgstr ""
2911 msgstr ""
2669
2912
2670 #: rhodecode/templates/admin/settings/settings.html:134
2913 #: rhodecode/templates/admin/settings/settings.html:134
2671 msgid "Use lightweight dashboard"
2672 msgstr ""
2673
2674 #: rhodecode/templates/admin/settings/settings.html:140
2675 msgid "Use repository extra fields"
2914 msgid "Use repository extra fields"
2676 msgstr ""
2915 msgstr ""
2677
2916
2678 #: rhodecode/templates/admin/settings/settings.html:147
2917 #: rhodecode/templates/admin/settings/settings.html:136
2918 msgid "Allows storing additional customized fields per repository."
2919 msgstr ""
2920
2921 #: rhodecode/templates/admin/settings/settings.html:139
2922 msgid "Show RhodeCode version"
2923 msgstr ""
2924
2925 #: rhodecode/templates/admin/settings/settings.html:141
2926 msgid "Shows or hides displayed version of RhodeCode in the footer"
2927 msgstr ""
2928
2929 #: rhodecode/templates/admin/settings/settings.html:146
2930 msgid "Dashboard items"
2931 msgstr ""
2932
2933 #: rhodecode/templates/admin/settings/settings.html:150
2934 msgid ""
2935 "Number of items displayed in lightweight dashboard before pagination is "
2936 "shown."
2937 msgstr ""
2938
2939 #: rhodecode/templates/admin/settings/settings.html:155
2679 msgid "Icons"
2940 msgid "Icons"
2680 msgstr ""
2941 msgstr ""
2681
2942
2682 #: rhodecode/templates/admin/settings/settings.html:152
2943 #: rhodecode/templates/admin/settings/settings.html:160
2683 msgid "Show public repo icon on repositories"
2944 msgid "Show public repo icon on repositories"
2684 msgstr ""
2945 msgstr ""
2685
2946
2686 #: rhodecode/templates/admin/settings/settings.html:156
2947 #: rhodecode/templates/admin/settings/settings.html:164
2687 msgid "Show private repo icon on repositories"
2948 msgid "Show private repo icon on repositories"
2688 msgstr ""
2949 msgstr ""
2689
2950
2690 #: rhodecode/templates/admin/settings/settings.html:163
2951 #: rhodecode/templates/admin/settings/settings.html:166
2952 msgid "Show public/private icons next to repositories names"
2953 msgstr ""
2954
2955 #: rhodecode/templates/admin/settings/settings.html:172
2691 msgid "Meta-Tagging"
2956 msgid "Meta-Tagging"
2692 msgstr ""
2957 msgstr ""
2693
2958
2694 #: rhodecode/templates/admin/settings/settings.html:168
2959 #: rhodecode/templates/admin/settings/settings.html:177
2695 msgid "Stylify recognised metatags:"
2960 msgid "Stylify recognised metatags:"
2696 msgstr ""
2961 msgstr ""
2697
2962
2698 #: rhodecode/templates/admin/settings/settings.html:195
2699 msgid "VCS settings"
2700 msgstr ""
2701
2702 #: rhodecode/templates/admin/settings/settings.html:204
2963 #: rhodecode/templates/admin/settings/settings.html:204
2964 msgid "VCS settings"
2965 msgstr ""
2966
2967 #: rhodecode/templates/admin/settings/settings.html:213
2703 msgid "Web"
2968 msgid "Web"
2704 msgstr ""
2969 msgstr ""
2705
2970
2706 #: rhodecode/templates/admin/settings/settings.html:209
2971 #: rhodecode/templates/admin/settings/settings.html:218
2707 msgid "Require SSL for vcs operations"
2972 msgid "Require SSL for vcs operations"
2708 msgstr ""
2973 msgstr ""
2709
2974
2710 #: rhodecode/templates/admin/settings/settings.html:211
2975 #: rhodecode/templates/admin/settings/settings.html:220
2711 msgid ""
2976 msgid ""
2712 "RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
2977 "RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
2713 "will return HTTP Error 406: Not Acceptable"
2978 "will return HTTP Error 406: Not Acceptable"
2714 msgstr ""
2979 msgstr ""
2715
2980
2716 #: rhodecode/templates/admin/settings/settings.html:217
2717 msgid "Hooks"
2718 msgstr ""
2719
2720 #: rhodecode/templates/admin/settings/settings.html:222
2721 msgid "Update repository after push (hg update)"
2722 msgstr ""
2723
2724 #: rhodecode/templates/admin/settings/settings.html:226
2981 #: rhodecode/templates/admin/settings/settings.html:226
2982 msgid "Hooks"
2983 msgstr ""
2984
2985 #: rhodecode/templates/admin/settings/settings.html:231
2986 msgid "Update repository after push (hg update)"
2987 msgstr ""
2988
2989 #: rhodecode/templates/admin/settings/settings.html:235
2725 msgid "Show repository size after push"
2990 msgid "Show repository size after push"
2726 msgstr ""
2991 msgstr ""
2727
2992
2728 #: rhodecode/templates/admin/settings/settings.html:230
2993 #: rhodecode/templates/admin/settings/settings.html:239
2729 msgid "Log user push commands"
2994 msgid "Log user push commands"
2730 msgstr ""
2995 msgstr ""
2731
2996
2732 #: rhodecode/templates/admin/settings/settings.html:234
2733 msgid "Log user pull commands"
2734 msgstr ""
2735
2736 #: rhodecode/templates/admin/settings/settings.html:238
2737 msgid "Advanced setup"
2738 msgstr ""
2739
2740 #: rhodecode/templates/admin/settings/settings.html:243
2997 #: rhodecode/templates/admin/settings/settings.html:243
2741 msgid "Mercurial Extensions"
2998 msgid "Log user pull commands"
2742 msgstr ""
2999 msgstr ""
2743
3000
2744 #: rhodecode/templates/admin/settings/settings.html:248
3001 #: rhodecode/templates/admin/settings/settings.html:247
2745 msgid "Enable largefiles extension"
3002 msgid "Advanced setup"
2746 msgstr ""
3003 msgstr ""
2747
3004
2748 #: rhodecode/templates/admin/settings/settings.html:252
3005 #: rhodecode/templates/admin/settings/settings.html:252
3006 msgid "Mercurial Extensions"
3007 msgstr ""
3008
3009 #: rhodecode/templates/admin/settings/settings.html:257
3010 msgid "Enable largefiles extension"
3011 msgstr ""
3012
3013 #: rhodecode/templates/admin/settings/settings.html:261
2749 msgid "Enable hgsubversion extension"
3014 msgid "Enable hgsubversion extension"
2750 msgstr ""
3015 msgstr ""
2751
3016
2752 #: rhodecode/templates/admin/settings/settings.html:254
3017 #: rhodecode/templates/admin/settings/settings.html:263
2753 msgid ""
3018 msgid ""
2754 "Requires hgsubversion library installed. Allows cloning from svn remote "
3019 "Requires hgsubversion library installed. Allows cloning from svn remote "
2755 "locations"
3020 "locations"
2756 msgstr ""
3021 msgstr ""
2757
3022
2758 #: rhodecode/templates/admin/settings/settings.html:264
3023 #: rhodecode/templates/admin/settings/settings.html:274
2759 msgid "Repositories location"
3024 msgid "Repositories location"
2760 msgstr ""
3025 msgstr ""
2761
3026
2762 #: rhodecode/templates/admin/settings/settings.html:269
3027 #: rhodecode/templates/admin/settings/settings.html:279
2763 msgid ""
3028 msgid ""
2764 "This a crucial application setting. If you are really sure you need to "
3029 "Click to unlock. You must restart RhodeCode in order to make this setting"
2765 "change this, you must restart application in order to make this setting "
3030 " take effect."
2766 "take effect. Click this label to unlock."
3031 msgstr ""
2767 msgstr ""
3032
2768
3033 #: rhodecode/templates/admin/settings/settings.html:280
2769 #: rhodecode/templates/admin/settings/settings.html:270
3034 #: rhodecode/templates/base/base.html:143
2770 #: rhodecode/templates/base/base.html:131
2771 msgid "Unlock"
3035 msgid "Unlock"
2772 msgstr ""
3036 msgstr ""
2773
3037
2774 #: rhodecode/templates/admin/settings/settings.html:272
3038 #: rhodecode/templates/admin/settings/settings.html:282
2775 msgid ""
3039 msgid ""
2776 "Location where repositories are stored. After changing this value a "
3040 "Location where repositories are stored. After changing this value a "
2777 "restart, and rescan is required"
3041 "restart, and rescan is required"
2778 msgstr ""
3042 msgstr ""
2779
3043
2780 #: rhodecode/templates/admin/settings/settings.html:292
3044 #: rhodecode/templates/admin/settings/settings.html:303
2781 msgid "Test Email"
3045 msgid "Test Email"
2782 msgstr ""
3046 msgstr ""
2783
3047
2784 #: rhodecode/templates/admin/settings/settings.html:300
3048 #: rhodecode/templates/admin/settings/settings.html:311
2785 msgid "Email to"
3049 msgid "Email to"
2786 msgstr ""
3050 msgstr ""
2787
3051
2788 #: rhodecode/templates/admin/settings/settings.html:308
3052 #: rhodecode/templates/admin/settings/settings.html:319
2789 msgid "Send"
3053 msgid "Send"
2790 msgstr ""
3054 msgstr ""
2791
3055
2792 #: rhodecode/templates/admin/settings/settings.html:314
3056 #: rhodecode/templates/admin/settings/settings.html:325
2793 msgid "System Info and Packages"
3057 msgid "System Info and Packages"
2794 msgstr ""
3058 msgstr ""
2795
3059
2796 #: rhodecode/templates/admin/settings/settings.html:317
3060 #: rhodecode/templates/admin/settings/settings.html:328
2797 #: rhodecode/templates/changelog/changelog.html:42
3061 #: rhodecode/templates/changelog/changelog.html:51
2798 msgid "Show"
3062 msgid "Show"
2799 msgstr ""
3063 msgstr ""
2800
3064
@@ -2804,7 +3068,7 b' msgstr ""'
2804
3068
2805 #: rhodecode/templates/admin/users/user_add.html:10
3069 #: rhodecode/templates/admin/users/user_add.html:10
2806 #: rhodecode/templates/admin/users/user_edit.html:11
3070 #: rhodecode/templates/admin/users/user_edit.html:11
2807 #: rhodecode/templates/base/base.html:71
3071 #: rhodecode/templates/base/base.html:76
2808 msgid "Users"
3072 msgid "Users"
2809 msgstr ""
3073 msgstr ""
2810
3074
@@ -2861,44 +3125,21 b' msgstr ""'
2861 msgid "New password confirmation"
3125 msgid "New password confirmation"
2862 msgstr ""
3126 msgstr ""
2863
3127
2864 #: rhodecode/templates/admin/users/user_edit.html:158
2865 #: rhodecode/templates/admin/users_groups/users_group_edit.html:108
2866 msgid "Inherit default permissions"
2867 msgstr ""
2868
2869 #: rhodecode/templates/admin/users/user_edit.html:163
3128 #: rhodecode/templates/admin/users/user_edit.html:163
2870 #: rhodecode/templates/admin/users_groups/users_group_edit.html:113
2871 #, python-format
2872 msgid ""
2873 "Select to inherit permissions from %s settings. With this selected below "
2874 "options does not have any action"
2875 msgstr ""
2876
2877 #: rhodecode/templates/admin/users/user_edit.html:169
2878 #: rhodecode/templates/admin/users_groups/users_group_edit.html:119
2879 msgid "Create repositories"
2880 msgstr ""
2881
2882 #: rhodecode/templates/admin/users/user_edit.html:177
2883 #: rhodecode/templates/admin/users_groups/users_group_edit.html:127
2884 msgid "Fork repositories"
2885 msgstr ""
2886
2887 #: rhodecode/templates/admin/users/user_edit.html:200
2888 msgid "Email addresses"
3129 msgid "Email addresses"
2889 msgstr ""
3130 msgstr ""
2890
3131
2891 #: rhodecode/templates/admin/users/user_edit.html:213
3132 #: rhodecode/templates/admin/users/user_edit.html:176
2892 #, python-format
3133 #, python-format
2893 msgid "Confirm to delete this email: %s"
3134 msgid "Confirm to delete this email: %s"
2894 msgstr ""
3135 msgstr ""
2895
3136
2896 #: rhodecode/templates/admin/users/user_edit.html:227
3137 #: rhodecode/templates/admin/users/user_edit.html:190
2897 msgid "New email address"
3138 msgid "New email address"
2898 msgstr ""
3139 msgstr ""
2899
3140
2900 #: rhodecode/templates/admin/users/user_edit_my_account.html:5
3141 #: rhodecode/templates/admin/users/user_edit_my_account.html:5
2901 #: rhodecode/templates/base/base.html:242
3142 #: rhodecode/templates/base/base.html:254
2902 msgid "My account"
3143 msgid "My account"
2903 msgstr ""
3144 msgstr ""
2904
3145
@@ -2935,7 +3176,7 b' msgstr ""'
2935
3176
2936 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:17
3177 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:17
2937 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:45
3178 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:45
2938 #: rhodecode/templates/pullrequests/pullrequest_data.html:7
3179 #: rhodecode/templates/pullrequests/pullrequest_data.html:11
2939 #: rhodecode/templates/pullrequests/pullrequest_show.html:27
3180 #: rhodecode/templates/pullrequests/pullrequest_show.html:27
2940 #: rhodecode/templates/pullrequests/pullrequest_show.html:42
3181 #: rhodecode/templates/pullrequests/pullrequest_show.html:42
2941 msgid "Closed"
3182 msgid "Closed"
@@ -2955,7 +3196,7 b' msgid "I participate in"'
2955 msgstr ""
3196 msgstr ""
2956
3197
2957 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:42
3198 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:42
2958 #: rhodecode/templates/pullrequests/pullrequest_data.html:11
3199 #: rhodecode/templates/pullrequests/pullrequest_data.html:8
2959 #, python-format
3200 #, python-format
2960 msgid "Pull request #%s opened by %s on %s"
3201 msgid "Pull request #%s opened by %s on %s"
2961 msgstr ""
3202 msgstr ""
@@ -2986,12 +3227,12 b' msgstr ""'
2986
3227
2987 #: rhodecode/templates/admin/users_groups/users_group_add.html:10
3228 #: rhodecode/templates/admin/users_groups/users_group_add.html:10
2988 #: rhodecode/templates/admin/users_groups/users_groups.html:11
3229 #: rhodecode/templates/admin/users_groups/users_groups.html:11
2989 #: rhodecode/templates/base/base.html:72
3230 #: rhodecode/templates/base/base.html:77 rhodecode/templates/base/base.html:94
2990 msgid "User groups"
3231 msgid "User groups"
2991 msgstr ""
3232 msgstr ""
2992
3233
2993 #: rhodecode/templates/admin/users_groups/users_group_add.html:12
3234 #: rhodecode/templates/admin/users_groups/users_group_add.html:12
2994 #: rhodecode/templates/admin/users_groups/users_groups.html:25
3235 #: rhodecode/templates/admin/users_groups/users_groups.html:26
2995 msgid "Add new user group"
3236 msgid "Add new user group"
2996 msgstr ""
3237 msgstr ""
2997
3238
@@ -3004,7 +3245,7 b' msgid "UserGroups"'
3004 msgstr ""
3245 msgstr ""
3005
3246
3006 #: rhodecode/templates/admin/users_groups/users_group_edit.html:50
3247 #: rhodecode/templates/admin/users_groups/users_group_edit.html:50
3007 #: rhodecode/templates/admin/users_groups/users_groups.html:35
3248 #: rhodecode/templates/admin/users_groups/users_groups.html:38
3008 msgid "Members"
3249 msgid "Members"
3009 msgstr ""
3250 msgstr ""
3010
3251
@@ -3024,45 +3265,53 b' msgstr ""'
3024 msgid "Add all elements"
3265 msgid "Add all elements"
3025 msgstr ""
3266 msgstr ""
3026
3267
3027 #: rhodecode/templates/admin/users_groups/users_group_edit.html:150
3268 #: rhodecode/templates/admin/users_groups/users_group_edit.html:109
3028 msgid "Group members"
3029 msgstr ""
3030
3031 #: rhodecode/templates/admin/users_groups/users_group_edit.html:167
3032 msgid "No members yet"
3269 msgid "No members yet"
3033 msgstr ""
3270 msgstr ""
3034
3271
3272 #: rhodecode/templates/admin/users_groups/users_group_edit.html:117
3273 msgid "Global Permissions"
3274 msgstr ""
3275
3035 #: rhodecode/templates/admin/users_groups/users_groups.html:5
3276 #: rhodecode/templates/admin/users_groups/users_groups.html:5
3036 msgid "User groups administration"
3277 msgid "User groups administration"
3037 msgstr ""
3278 msgstr ""
3038
3279
3039 #: rhodecode/templates/admin/users_groups/users_groups.html:47
3280 #: rhodecode/templates/admin/users_groups/users_groups.html:55
3040 #, fuzzy, python-format
3281 #, fuzzy, python-format
3041 msgid "Confirm to delete this user group: %s"
3282 msgid "Confirm to delete this user group: %s"
3042 msgstr ""
3283 msgstr ""
3043
3284
3285 #: rhodecode/templates/admin/users_groups/users_groups.html:62
3286 msgid "There are no user groups yet"
3287 msgstr ""
3288
3044 #: rhodecode/templates/base/base.html:42
3289 #: rhodecode/templates/base/base.html:42
3045 msgid "Submit a bug"
3290 #, python-format
3046 msgstr ""
3291 msgid "Server instance: %s"
3047
3292 msgstr ""
3048 #: rhodecode/templates/base/base.html:108
3293
3294 #: rhodecode/templates/base/base.html:52
3295 msgid "Report a bug"
3296 msgstr ""
3297
3298 #: rhodecode/templates/base/base.html:121
3049 #: rhodecode/templates/data_table/_dt_elements.html:9
3299 #: rhodecode/templates/data_table/_dt_elements.html:9
3050 #: rhodecode/templates/data_table/_dt_elements.html:11
3300 #: rhodecode/templates/data_table/_dt_elements.html:11
3051 #: rhodecode/templates/data_table/_dt_elements.html:13
3301 #: rhodecode/templates/data_table/_dt_elements.html:13
3052 #: rhodecode/templates/pullrequests/pullrequest_show.html:81
3053 #: rhodecode/templates/summary/summary.html:8
3302 #: rhodecode/templates/summary/summary.html:8
3054 msgid "Summary"
3303 msgid "Summary"
3055 msgstr ""
3304 msgstr ""
3056
3305
3057 #: rhodecode/templates/base/base.html:109
3306 #: rhodecode/templates/base/base.html:122
3058 #: rhodecode/templates/changelog/changelog.html:11
3307 #: rhodecode/templates/changelog/changelog.html:15
3059 #: rhodecode/templates/data_table/_dt_elements.html:17
3308 #: rhodecode/templates/data_table/_dt_elements.html:17
3060 #: rhodecode/templates/data_table/_dt_elements.html:19
3309 #: rhodecode/templates/data_table/_dt_elements.html:19
3061 #: rhodecode/templates/data_table/_dt_elements.html:21
3310 #: rhodecode/templates/data_table/_dt_elements.html:21
3062 msgid "Changelog"
3311 msgid "Changelog"
3063 msgstr ""
3312 msgstr ""
3064
3313
3065 #: rhodecode/templates/base/base.html:110
3314 #: rhodecode/templates/base/base.html:123
3066 #: rhodecode/templates/data_table/_dt_elements.html:25
3315 #: rhodecode/templates/data_table/_dt_elements.html:25
3067 #: rhodecode/templates/data_table/_dt_elements.html:27
3316 #: rhodecode/templates/data_table/_dt_elements.html:27
3068 #: rhodecode/templates/data_table/_dt_elements.html:29
3317 #: rhodecode/templates/data_table/_dt_elements.html:29
@@ -3070,48 +3319,44 b' msgstr ""'
3070 msgid "Files"
3319 msgid "Files"
3071 msgstr ""
3320 msgstr ""
3072
3321
3073 #: rhodecode/templates/base/base.html:112
3322 #: rhodecode/templates/base/base.html:125
3074 msgid "Switch To"
3323 msgid "Switch To"
3075 msgstr ""
3324 msgstr ""
3076
3325
3077 #: rhodecode/templates/base/base.html:114
3078 #: rhodecode/templates/base/base.html:267
3079 msgid "loading..."
3080 msgstr ""
3081
3082 #: rhodecode/templates/base/base.html:118
3083 msgid "Options"
3084 msgstr ""
3085
3086 #: rhodecode/templates/base/base.html:124
3087 #: rhodecode/templates/forks/forks_data.html:21
3088 msgid "Compare fork"
3089 msgstr ""
3090
3091 #: rhodecode/templates/base/base.html:126
3092 msgid "Lightweight changelog"
3093 msgstr ""
3094
3095 #: rhodecode/templates/base/base.html:127
3326 #: rhodecode/templates/base/base.html:127
3096 #: rhodecode/templates/base/base.html:287
3327 #: rhodecode/templates/base/base.html:279
3328 msgid "loading..."
3329 msgstr ""
3330
3331 #: rhodecode/templates/base/base.html:131
3332 msgid "Options"
3333 msgstr ""
3334
3335 #: rhodecode/templates/base/base.html:137
3336 #: rhodecode/templates/forks/forks_data.html:21
3337 msgid "Compare fork"
3338 msgstr ""
3339
3340 #: rhodecode/templates/base/base.html:139
3341 #: rhodecode/templates/base/base.html:312
3097 #: rhodecode/templates/search/search.html:14
3342 #: rhodecode/templates/search/search.html:14
3098 #: rhodecode/templates/search/search.html:54
3343 #: rhodecode/templates/search/search.html:54
3099 msgid "Search"
3344 msgid "Search"
3100 msgstr ""
3345 msgstr ""
3101
3346
3102 #: rhodecode/templates/base/base.html:133
3347 #: rhodecode/templates/base/base.html:145
3103 msgid "Lock"
3348 msgid "Lock"
3104 msgstr ""
3349 msgstr ""
3105
3350
3106 #: rhodecode/templates/base/base.html:141
3351 #: rhodecode/templates/base/base.html:153
3107 msgid "Follow"
3352 msgid "Follow"
3108 msgstr ""
3353 msgstr ""
3109
3354
3110 #: rhodecode/templates/base/base.html:142
3355 #: rhodecode/templates/base/base.html:154
3111 msgid "Unfollow"
3356 msgid "Unfollow"
3112 msgstr ""
3357 msgstr ""
3113
3358
3114 #: rhodecode/templates/base/base.html:145
3359 #: rhodecode/templates/base/base.html:157
3115 #: rhodecode/templates/data_table/_dt_elements.html:33
3360 #: rhodecode/templates/data_table/_dt_elements.html:33
3116 #: rhodecode/templates/data_table/_dt_elements.html:35
3361 #: rhodecode/templates/data_table/_dt_elements.html:35
3117 #: rhodecode/templates/data_table/_dt_elements.html:37
3362 #: rhodecode/templates/data_table/_dt_elements.html:37
@@ -3120,60 +3365,113 b' msgstr ""'
3120 msgid "Fork"
3365 msgid "Fork"
3121 msgstr ""
3366 msgstr ""
3122
3367
3123 #: rhodecode/templates/base/base.html:147
3368 #: rhodecode/templates/base/base.html:159
3124 msgid "Create Pull Request"
3369 msgid "Create Pull Request"
3125 msgstr ""
3370 msgstr ""
3126
3371
3127 #: rhodecode/templates/base/base.html:153
3372 #: rhodecode/templates/base/base.html:165
3128 msgid "Show Pull Requests"
3373 msgid "Show Pull Requests"
3129 msgstr ""
3374 msgstr ""
3130
3375
3131 #: rhodecode/templates/base/base.html:153
3376 #: rhodecode/templates/base/base.html:165
3132 msgid "Pull Requests"
3377 msgid "Pull Requests"
3133 msgstr ""
3378 msgstr ""
3134
3379
3135 #: rhodecode/templates/base/base.html:190
3380 #: rhodecode/templates/base/base.html:202
3136 msgid "Not logged in"
3381 msgid "Not logged in"
3137 msgstr ""
3382 msgstr ""
3138
3383
3139 #: rhodecode/templates/base/base.html:197
3384 #: rhodecode/templates/base/base.html:209
3140 msgid "Login to your account"
3385 msgid "Login to your account"
3141 msgstr ""
3386 msgstr ""
3142
3387
3143 #: rhodecode/templates/base/base.html:220
3388 #: rhodecode/templates/base/base.html:232
3144 msgid "Forgot password ?"
3389 msgid "Forgot password ?"
3145 msgstr ""
3390 msgstr ""
3146
3391
3147 #: rhodecode/templates/base/base.html:243
3392 #: rhodecode/templates/base/base.html:255
3148 msgid "Log Out"
3393 msgid "Log Out"
3149 msgstr ""
3394 msgstr ""
3150
3395
3151 #: rhodecode/templates/base/base.html:262
3152 msgid "Switch repository"
3153 msgstr ""
3154
3155 #: rhodecode/templates/base/base.html:274
3396 #: rhodecode/templates/base/base.html:274
3156 msgid "Show recent activity"
3397 msgid "Switch repository"
3157 msgstr ""
3158
3159 #: rhodecode/templates/base/base.html:275
3160 #: rhodecode/templates/journal/journal.html:4
3161 msgid "Journal"
3162 msgstr ""
3398 msgstr ""
3163
3399
3164 #: rhodecode/templates/base/base.html:286
3400 #: rhodecode/templates/base/base.html:286
3401 msgid "Show recent activity"
3402 msgstr ""
3403
3404 #: rhodecode/templates/base/base.html:287
3405 #: rhodecode/templates/journal/journal.html:4
3406 msgid "Journal"
3407 msgstr ""
3408
3409 #: rhodecode/templates/base/base.html:298
3410 msgid "Show public gists"
3411 msgstr ""
3412
3413 #: rhodecode/templates/base/base.html:303
3414 msgid "All public gists"
3415 msgstr ""
3416
3417 #: rhodecode/templates/base/base.html:305
3418 msgid "My public gists"
3419 msgstr ""
3420
3421 #: rhodecode/templates/base/base.html:306
3422 msgid "My private gists"
3423 msgstr ""
3424
3425 #: rhodecode/templates/base/base.html:311
3165 msgid "Search in repositories"
3426 msgid "Search in repositories"
3166 msgstr ""
3427 msgstr ""
3167
3428
3168 #: rhodecode/templates/base/perms_summary.html:8
3429 #: rhodecode/templates/base/default_perms_box.html:14
3430 msgid "Inherit default permissions"
3431 msgstr ""
3432
3433 #: rhodecode/templates/base/default_perms_box.html:18
3434 #, python-format
3435 msgid ""
3436 "Select to inherit permissions from %s settings. With this selected below "
3437 "options does not apply."
3438 msgstr ""
3439
3440 #: rhodecode/templates/base/default_perms_box.html:26
3441 msgid "Create repositories"
3442 msgstr ""
3443
3444 #: rhodecode/templates/base/default_perms_box.html:30
3445 msgid "Select this option to allow repository creation for this user"
3446 msgstr ""
3447
3448 #: rhodecode/templates/base/default_perms_box.html:35
3449 msgid "Create user groups"
3450 msgstr ""
3451
3452 #: rhodecode/templates/base/default_perms_box.html:39
3453 msgid "Select this option to allow user group creation for this user"
3454 msgstr ""
3455
3456 #: rhodecode/templates/base/default_perms_box.html:44
3457 msgid "Fork repositories"
3458 msgstr ""
3459
3460 #: rhodecode/templates/base/default_perms_box.html:48
3461 msgid "Select this option to allow repository forking for this user"
3462 msgstr ""
3463
3464 #: rhodecode/templates/base/perms_summary.html:11
3169 msgid "No permissions defined yet"
3465 msgid "No permissions defined yet"
3170 msgstr ""
3466 msgstr ""
3171
3467
3172 #: rhodecode/templates/base/perms_summary.html:15
3468 #: rhodecode/templates/base/perms_summary.html:19
3469 #: rhodecode/templates/base/perms_summary.html:38
3173 msgid "Permission"
3470 msgid "Permission"
3174 msgstr ""
3471 msgstr ""
3175
3472
3176 #: rhodecode/templates/base/perms_summary.html:16
3473 #: rhodecode/templates/base/perms_summary.html:20
3474 #: rhodecode/templates/base/perms_summary.html:39
3177 msgid "Edit Permission"
3475 msgid "Edit Permission"
3178 msgstr ""
3476 msgstr ""
3179
3477
@@ -3183,7 +3481,7 b' msgid "Add another comment"'
3183 msgstr ""
3481 msgstr ""
3184
3482
3185 #: rhodecode/templates/base/root.html:44
3483 #: rhodecode/templates/base/root.html:44
3186 #: rhodecode/templates/data_table/_dt_elements.html:140
3484 #: rhodecode/templates/data_table/_dt_elements.html:147
3187 msgid "Stop following this repository"
3485 msgid "Stop following this repository"
3188 msgstr ""
3486 msgstr ""
3189
3487
@@ -3200,7 +3498,7 b' msgid "members"'
3200 msgstr ""
3498 msgstr ""
3201
3499
3202 #: rhodecode/templates/base/root.html:48
3500 #: rhodecode/templates/base/root.html:48
3203 #: rhodecode/templates/pullrequests/pullrequest.html:181
3501 #: rhodecode/templates/pullrequests/pullrequest.html:203
3204 msgid "Loading ..."
3502 msgid "Loading ..."
3205 msgstr ""
3503 msgstr ""
3206
3504
@@ -3213,7 +3511,7 b' msgid "No matching files"'
3213 msgstr ""
3511 msgstr ""
3214
3512
3215 #: rhodecode/templates/base/root.html:51
3513 #: rhodecode/templates/base/root.html:51
3216 #: rhodecode/templates/changelog/changelog.html:36
3514 #: rhodecode/templates/changelog/changelog.html:45
3217 msgid "Open new pull request"
3515 msgid "Open new pull request"
3218 msgstr ""
3516 msgstr ""
3219
3517
@@ -3242,31 +3540,48 b' msgstr ""'
3242 msgid "Expand diff"
3540 msgid "Expand diff"
3243 msgstr ""
3541 msgstr ""
3244
3542
3543 #: rhodecode/templates/base/root.html:58
3544 msgid "Failed to remoke permission"
3545 msgstr ""
3546
3245 #: rhodecode/templates/bookmarks/bookmarks.html:5
3547 #: rhodecode/templates/bookmarks/bookmarks.html:5
3246 #, python-format
3548 #, python-format
3247 msgid "%s Bookmarks"
3549 msgid "%s Bookmarks"
3248 msgstr ""
3550 msgstr ""
3249
3551
3250 #: rhodecode/templates/bookmarks/bookmarks.html:37
3552 #: rhodecode/templates/bookmarks/bookmarks.html:26
3553 msgid "Compare bookmarks"
3554 msgstr ""
3555
3556 #: rhodecode/templates/bookmarks/bookmarks.html:51
3251 #: rhodecode/templates/bookmarks/bookmarks_data.html:8
3557 #: rhodecode/templates/bookmarks/bookmarks_data.html:8
3252 #: rhodecode/templates/branches/branches.html:50
3558 #: rhodecode/templates/branches/branches.html:50
3253 #: rhodecode/templates/branches/branches_data.html:8
3559 #: rhodecode/templates/branches/branches_data.html:8
3254 #: rhodecode/templates/shortlog/shortlog_data.html:8
3560 #: rhodecode/templates/changelog/changelog_summary_data.html:8
3255 #: rhodecode/templates/tags/tags.html:51
3561 #: rhodecode/templates/tags/tags.html:51
3256 #: rhodecode/templates/tags/tags_data.html:8
3562 #: rhodecode/templates/tags/tags_data.html:8
3257 msgid "Author"
3563 msgid "Author"
3258 msgstr ""
3564 msgstr ""
3259
3565
3260 #: rhodecode/templates/bookmarks/bookmarks.html:38
3566 #: rhodecode/templates/bookmarks/bookmarks.html:52
3261 #: rhodecode/templates/bookmarks/bookmarks_data.html:9
3567 #: rhodecode/templates/bookmarks/bookmarks_data.html:9
3262 #: rhodecode/templates/branches/branches.html:51
3568 #: rhodecode/templates/branches/branches.html:51
3263 #: rhodecode/templates/branches/branches_data.html:9
3569 #: rhodecode/templates/branches/branches_data.html:9
3264 #: rhodecode/templates/shortlog/shortlog_data.html:5
3570 #: rhodecode/templates/changelog/changelog_summary_data.html:5
3265 #: rhodecode/templates/tags/tags.html:52
3571 #: rhodecode/templates/tags/tags.html:52
3266 #: rhodecode/templates/tags/tags_data.html:9
3572 #: rhodecode/templates/tags/tags_data.html:9
3267 msgid "Revision"
3573 msgid "Revision"
3268 msgstr ""
3574 msgstr ""
3269
3575
3576 #: rhodecode/templates/bookmarks/bookmarks.html:54
3577 #: rhodecode/templates/bookmarks/bookmarks_data.html:10
3578 #: rhodecode/templates/branches/branches.html:53
3579 #: rhodecode/templates/branches/branches_data.html:10
3580 #: rhodecode/templates/tags/tags.html:54
3581 #: rhodecode/templates/tags/tags_data.html:10
3582 msgid "Compare"
3583 msgstr ""
3584
3270 #: rhodecode/templates/branches/branches.html:5
3585 #: rhodecode/templates/branches/branches.html:5
3271 #, python-format
3586 #, python-format
3272 msgid "%s Branches"
3587 msgid "%s Branches"
@@ -3276,65 +3591,68 b' msgstr ""'
3276 msgid "Compare branches"
3591 msgid "Compare branches"
3277 msgstr ""
3592 msgstr ""
3278
3593
3279 #: rhodecode/templates/branches/branches.html:53
3280 #: rhodecode/templates/branches/branches_data.html:10
3281 #: rhodecode/templates/tags/tags.html:54
3282 #: rhodecode/templates/tags/tags_data.html:10
3283 msgid "Compare"
3284 msgstr ""
3285
3286 #: rhodecode/templates/changelog/changelog.html:6
3594 #: rhodecode/templates/changelog/changelog.html:6
3287 #, python-format
3595 #, python-format
3288 msgid "%s Changelog"
3596 msgid "%s Changelog"
3289 msgstr ""
3597 msgstr ""
3290
3598
3291 #: rhodecode/templates/changelog/changelog.html:11
3599 #: rhodecode/templates/changelog/changelog.html:19
3292 #, python-format
3600 #, python-format
3293 msgid "showing %d out of %d revision"
3601 msgid "showing %d out of %d revision"
3294 msgid_plural "showing %d out of %d revisions"
3602 msgid_plural "showing %d out of %d revisions"
3295 msgstr[0] ""
3603 msgstr[0] ""
3296 msgstr[1] ""
3604 msgstr[1] ""
3297
3605
3298 #: rhodecode/templates/changelog/changelog.html:30
3606 #: rhodecode/templates/changelog/changelog.html:39
3299 msgid "Clear selection"
3607 msgid "Clear selection"
3300 msgstr ""
3608 msgstr ""
3301
3609
3302 #: rhodecode/templates/changelog/changelog.html:33
3610 #: rhodecode/templates/changelog/changelog.html:42
3303 #: rhodecode/templates/forks/forks_data.html:19
3611 #: rhodecode/templates/forks/forks_data.html:19
3304 #, python-format
3612 #, python-format
3305 msgid "Compare fork with %s"
3613 msgid "Compare fork with %s"
3306 msgstr ""
3614 msgstr ""
3307
3615
3308 #: rhodecode/templates/changelog/changelog.html:33
3616 #: rhodecode/templates/changelog/changelog.html:42
3309 msgid "Compare fork with parent"
3617 msgid "Compare fork with parent"
3310 msgstr ""
3618 msgstr ""
3311
3619
3312 #: rhodecode/templates/changelog/changelog.html:76
3620 #: rhodecode/templates/changelog/changelog.html:78
3313 #: rhodecode/templates/summary/summary.html:404
3621 #: rhodecode/templates/changelog/changelog_summary_data.html:28
3622 #, python-format
3623 msgid "Click to open associated pull request #%s"
3624 msgstr ""
3625
3626 #: rhodecode/templates/changelog/changelog.html:102
3627 #: rhodecode/templates/summary/summary.html:403
3314 msgid "Show more"
3628 msgid "Show more"
3315 msgstr ""
3629 msgstr ""
3316
3630
3317 #: rhodecode/templates/changelog/changelog.html:89
3631 #: rhodecode/templates/changelog/changelog.html:115
3632 #: rhodecode/templates/changelog/changelog_summary_data.html:50
3633 #: rhodecode/templates/changeset/changeset.html:107
3318 #: rhodecode/templates/changeset/changeset_range.html:86
3634 #: rhodecode/templates/changeset/changeset_range.html:86
3319 #, python-format
3635 #, python-format
3320 msgid "Bookmark %s"
3636 msgid "Bookmark %s"
3321 msgstr ""
3637 msgstr ""
3322
3638
3323 #: rhodecode/templates/changelog/changelog.html:95
3639 #: rhodecode/templates/changelog/changelog.html:121
3324 #: rhodecode/templates/changeset/changeset.html:111
3640 #: rhodecode/templates/changelog/changelog_summary_data.html:56
3641 #: rhodecode/templates/changeset/changeset.html:113
3325 #: rhodecode/templates/changeset/changeset_range.html:92
3642 #: rhodecode/templates/changeset/changeset_range.html:92
3326 #, python-format
3643 #, python-format
3327 msgid "Tag %s"
3644 msgid "Tag %s"
3328 msgstr ""
3645 msgstr ""
3329
3646
3330 #: rhodecode/templates/changelog/changelog.html:100
3647 #: rhodecode/templates/changelog/changelog.html:126
3331 #: rhodecode/templates/changeset/changeset.html:106
3648 #: rhodecode/templates/changelog/changelog_summary_data.html:61
3332 #: rhodecode/templates/changeset/changeset_range.html:80
3649 #: rhodecode/templates/changeset/changeset.html:117
3650 #: rhodecode/templates/changeset/changeset_range.html:96
3333 #, python-format
3651 #, python-format
3334 msgid "Branch %s"
3652 msgid "Branch %s"
3335 msgstr ""
3653 msgstr ""
3336
3654
3337 #: rhodecode/templates/changelog/changelog.html:258
3655 #: rhodecode/templates/changelog/changelog.html:286
3338 msgid "There are no changes yet"
3656 msgid "There are no changes yet"
3339 msgstr ""
3657 msgstr ""
3340
3658
@@ -3364,6 +3682,38 b' msgstr ""'
3364 msgid "Affected %s files"
3682 msgid "Affected %s files"
3365 msgstr ""
3683 msgstr ""
3366
3684
3685 #: rhodecode/templates/changelog/changelog_summary_data.html:6
3686 #: rhodecode/templates/files/files_add.html:75
3687 #: rhodecode/templates/files/files_edit.html:61
3688 msgid "Commit message"
3689 msgstr ""
3690
3691 #: rhodecode/templates/changelog/changelog_summary_data.html:7
3692 msgid "Age"
3693 msgstr ""
3694
3695 #: rhodecode/templates/changelog/changelog_summary_data.html:9
3696 msgid "Refs"
3697 msgstr ""
3698
3699 #: rhodecode/templates/changelog/changelog_summary_data.html:86
3700 msgid "Add or upload files directly via RhodeCode"
3701 msgstr ""
3702
3703 #: rhodecode/templates/changelog/changelog_summary_data.html:89
3704 #: rhodecode/templates/files/files_add.html:38
3705 #: rhodecode/templates/files/files_browser.html:31
3706 msgid "Add new file"
3707 msgstr ""
3708
3709 #: rhodecode/templates/changelog/changelog_summary_data.html:95
3710 msgid "Push new repo"
3711 msgstr ""
3712
3713 #: rhodecode/templates/changelog/changelog_summary_data.html:103
3714 msgid "Existing repository?"
3715 msgstr ""
3716
3367 #: rhodecode/templates/changeset/changeset.html:6
3717 #: rhodecode/templates/changeset/changeset.html:6
3368 #, python-format
3718 #, python-format
3369 msgid "%s Changeset"
3719 msgid "%s Changeset"
@@ -3384,7 +3734,7 b' msgid "Changeset status"'
3384 msgstr ""
3734 msgstr ""
3385
3735
3386 #: rhodecode/templates/changeset/changeset.html:67
3736 #: rhodecode/templates/changeset/changeset.html:67
3387 #: rhodecode/templates/changeset/diff_block.html:23
3737 #: rhodecode/templates/changeset/diff_block.html:22
3388 msgid "Raw diff"
3738 msgid "Raw diff"
3389 msgstr ""
3739 msgstr ""
3390
3740
@@ -3393,12 +3743,12 b' msgid "Patch diff"'
3393 msgstr ""
3743 msgstr ""
3394
3744
3395 #: rhodecode/templates/changeset/changeset.html:69
3745 #: rhodecode/templates/changeset/changeset.html:69
3396 #: rhodecode/templates/changeset/diff_block.html:24
3746 #: rhodecode/templates/changeset/diff_block.html:23
3397 msgid "Download diff"
3747 msgid "Download diff"
3398 msgstr ""
3748 msgstr ""
3399
3749
3400 #: rhodecode/templates/changeset/changeset.html:73
3750 #: rhodecode/templates/changeset/changeset.html:73
3401 #: rhodecode/templates/changeset/changeset_file_comment.html:97
3751 #: rhodecode/templates/changeset/changeset_file_comment.html:103
3402 #, python-format
3752 #, python-format
3403 msgid "%d comment"
3753 msgid "%d comment"
3404 msgid_plural "%d comments"
3754 msgid_plural "%d comments"
@@ -3406,7 +3756,7 b' msgstr[0] ""'
3406 msgstr[1] ""
3756 msgstr[1] ""
3407
3757
3408 #: rhodecode/templates/changeset/changeset.html:73
3758 #: rhodecode/templates/changeset/changeset.html:73
3409 #: rhodecode/templates/changeset/changeset_file_comment.html:97
3759 #: rhodecode/templates/changeset/changeset_file_comment.html:103
3410 #, python-format
3760 #, python-format
3411 msgid "(%d inline)"
3761 msgid "(%d inline)"
3412 msgid_plural "(%d inline)"
3762 msgid_plural "(%d inline)"
@@ -3414,11 +3764,11 b' msgstr[0] ""'
3414 msgstr[1] ""
3764 msgstr[1] ""
3415
3765
3416 #: rhodecode/templates/changeset/changeset.html:103
3766 #: rhodecode/templates/changeset/changeset.html:103
3417 #: rhodecode/templates/changeset/changeset_range.html:77
3767 #: rhodecode/templates/changeset/changeset_range.html:82
3418 msgid "merge"
3768 msgid "merge"
3419 msgstr ""
3769 msgstr ""
3420
3770
3421 #: rhodecode/templates/changeset/changeset.html:119
3771 #: rhodecode/templates/changeset/changeset.html:126
3422 #: rhodecode/templates/compare/compare_diff.html:40
3772 #: rhodecode/templates/compare/compare_diff.html:40
3423 #: rhodecode/templates/pullrequests/pullrequest_show.html:113
3773 #: rhodecode/templates/pullrequests/pullrequest_show.html:113
3424 #, python-format
3774 #, python-format
@@ -3427,7 +3777,7 b' msgid_plural "%s files changed"'
3427 msgstr[0] ""
3777 msgstr[0] ""
3428 msgstr[1] ""
3778 msgstr[1] ""
3429
3779
3430 #: rhodecode/templates/changeset/changeset.html:121
3780 #: rhodecode/templates/changeset/changeset.html:128
3431 #: rhodecode/templates/compare/compare_diff.html:42
3781 #: rhodecode/templates/compare/compare_diff.html:42
3432 #: rhodecode/templates/pullrequests/pullrequest_show.html:115
3782 #: rhodecode/templates/pullrequests/pullrequest_show.html:115
3433 #, python-format
3783 #, python-format
@@ -3436,15 +3786,15 b' msgid_plural "%s files changed with %s i'
3436 msgstr[0] ""
3786 msgstr[0] ""
3437 msgstr[1] ""
3787 msgstr[1] ""
3438
3788
3439 #: rhodecode/templates/changeset/changeset.html:134
3789 #: rhodecode/templates/changeset/changeset.html:141
3440 #: rhodecode/templates/changeset/changeset.html:146
3790 #: rhodecode/templates/changeset/changeset.html:153
3441 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
3791 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
3442 #: rhodecode/templates/pullrequests/pullrequest_show.html:195
3792 #: rhodecode/templates/pullrequests/pullrequest_show.html:195
3443 msgid "Showing a huge diff might take some time and resources"
3793 msgid "Showing a huge diff might take some time and resources"
3444 msgstr ""
3794 msgstr ""
3445
3795
3446 #: rhodecode/templates/changeset/changeset.html:134
3796 #: rhodecode/templates/changeset/changeset.html:141
3447 #: rhodecode/templates/changeset/changeset.html:146
3797 #: rhodecode/templates/changeset/changeset.html:153
3448 #: rhodecode/templates/compare/compare_diff.html:58
3798 #: rhodecode/templates/compare/compare_diff.html:58
3449 #: rhodecode/templates/compare/compare_diff.html:69
3799 #: rhodecode/templates/compare/compare_diff.html:69
3450 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
3800 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
@@ -3462,51 +3812,64 b' msgstr ""'
3462 msgid "Comment on pull request #%s"
3812 msgid "Comment on pull request #%s"
3463 msgstr ""
3813 msgstr ""
3464
3814
3465 #: rhodecode/templates/changeset/changeset_file_comment.html:57
3815 #: rhodecode/templates/changeset/changeset_file_comment.html:55
3466 msgid "Submitting..."
3816 msgid "Submitting..."
3467 msgstr ""
3817 msgstr ""
3468
3818
3469 #: rhodecode/templates/changeset/changeset_file_comment.html:60
3819 #: rhodecode/templates/changeset/changeset_file_comment.html:58
3470 msgid "Commenting on line {1}."
3820 msgid "Commenting on line {1}."
3471 msgstr ""
3821 msgstr ""
3472
3822
3823 #: rhodecode/templates/changeset/changeset_file_comment.html:59
3824 #: rhodecode/templates/changeset/changeset_file_comment.html:145
3825 #, python-format
3826 msgid "Comments parsed using %s syntax with %s support."
3827 msgstr ""
3828
3473 #: rhodecode/templates/changeset/changeset_file_comment.html:61
3829 #: rhodecode/templates/changeset/changeset_file_comment.html:61
3474 #: rhodecode/templates/changeset/changeset_file_comment.html:139
3830 #: rhodecode/templates/changeset/changeset_file_comment.html:147
3475 #, python-format
3476 msgid "Comments parsed using %s syntax with %s support."
3477 msgstr ""
3478
3479 #: rhodecode/templates/changeset/changeset_file_comment.html:63
3480 #: rhodecode/templates/changeset/changeset_file_comment.html:141
3481 msgid "Use @username inside this text to send notification to this RhodeCode user"
3831 msgid "Use @username inside this text to send notification to this RhodeCode user"
3482 msgstr ""
3832 msgstr ""
3483
3833
3484 #: rhodecode/templates/changeset/changeset_file_comment.html:74
3834 #: rhodecode/templates/changeset/changeset_file_comment.html:65
3485 #: rhodecode/templates/changeset/changeset_file_comment.html:161
3835 #: rhodecode/templates/changeset/changeset_file_comment.html:152
3836 #, fuzzy
3837 msgid "Preview"
3838 msgstr ""
3839
3840 #: rhodecode/templates/changeset/changeset_file_comment.html:72
3841 #: rhodecode/templates/changeset/changeset_file_comment.html:170
3842 msgid "Comment preview"
3843 msgstr ""
3844
3845 #: rhodecode/templates/changeset/changeset_file_comment.html:80
3846 #: rhodecode/templates/changeset/changeset_file_comment.html:177
3847 #: rhodecode/templates/email_templates/changeset_comment.html:16
3848 #: rhodecode/templates/email_templates/pull_request_comment.html:16
3486 msgid "Comment"
3849 msgid "Comment"
3487 msgstr ""
3850 msgstr ""
3488
3851
3489 #: rhodecode/templates/changeset/changeset_file_comment.html:75
3852 #: rhodecode/templates/changeset/changeset_file_comment.html:81
3490 msgid "Cancel"
3853 msgid "Cancel"
3491 msgstr ""
3854 msgstr ""
3492
3855
3493 #: rhodecode/templates/changeset/changeset_file_comment.html:82
3856 #: rhodecode/templates/changeset/changeset_file_comment.html:88
3494 msgid "You need to be logged in to comment."
3857 msgid "You need to be logged in to comment."
3495 msgstr ""
3858 msgstr ""
3496
3859
3497 #: rhodecode/templates/changeset/changeset_file_comment.html:82
3860 #: rhodecode/templates/changeset/changeset_file_comment.html:88
3498 msgid "Login now"
3861 msgid "Login now"
3499 msgstr ""
3862 msgstr ""
3500
3863
3501 #: rhodecode/templates/changeset/changeset_file_comment.html:86
3864 #: rhodecode/templates/changeset/changeset_file_comment.html:92
3502 msgid "Hide"
3865 msgid "Hide"
3503 msgstr ""
3866 msgstr ""
3504
3867
3505 #: rhodecode/templates/changeset/changeset_file_comment.html:143
3868 #: rhodecode/templates/changeset/changeset_file_comment.html:149
3506 msgid "Change status"
3869 msgid "Change status"
3507 msgstr ""
3870 msgstr ""
3508
3871
3509 #: rhodecode/templates/changeset/changeset_file_comment.html:163
3872 #: rhodecode/templates/changeset/changeset_file_comment.html:179
3510 msgid "Comment and close"
3873 msgid "Comment and close"
3511 msgstr ""
3874 msgstr ""
3512
3875
@@ -3519,19 +3882,19 b' msgstr ""'
3519 msgid "Files affected"
3882 msgid "Files affected"
3520 msgstr ""
3883 msgstr ""
3521
3884
3522 #: rhodecode/templates/changeset/diff_block.html:22
3885 #: rhodecode/templates/changeset/diff_block.html:21
3523 msgid "Show full diff for this file"
3886 msgid "Show full diff for this file"
3524 msgstr ""
3887 msgstr ""
3525
3888
3526 #: rhodecode/templates/changeset/diff_block.html:30
3889 #: rhodecode/templates/changeset/diff_block.html:29
3527 msgid "Show inline comments"
3890 msgid "Show inline comments"
3528 msgstr ""
3891 msgstr ""
3529
3892
3530 #: rhodecode/templates/changeset/diff_block.html:55
3893 #: rhodecode/templates/changeset/diff_block.html:53
3531 msgid "Show file at latest version in this repo"
3894 msgid "Show file at latest version in this repo"
3532 msgstr ""
3895 msgstr ""
3533
3896
3534 #: rhodecode/templates/changeset/diff_block.html:56
3897 #: rhodecode/templates/changeset/diff_block.html:54
3535 msgid "Show file at initial version in this repo"
3898 msgid "Show file at initial version in this repo"
3536 msgstr ""
3899 msgstr ""
3537
3900
@@ -3606,27 +3969,24 b' msgstr ""'
3606 msgid "Confirm to delete this repository: %s"
3969 msgid "Confirm to delete this repository: %s"
3607 msgstr ""
3970 msgstr ""
3608
3971
3609 #: rhodecode/templates/data_table/_dt_elements.html:131
3972 #: rhodecode/templates/data_table/_dt_elements.html:137
3610 #, python-format
3973 #, python-format
3611 msgid "Confirm to delete this user: %s"
3974 msgid "Confirm to delete this user: %s"
3612 msgstr ""
3975 msgstr ""
3613
3976
3614 #: rhodecode/templates/email_templates/changeset_comment.html:9
3977 #: rhodecode/templates/email_templates/changeset_comment.html:4
3615 #: rhodecode/templates/email_templates/pull_request_comment.html:15
3978 #: rhodecode/templates/email_templates/pull_request.html:4
3616 msgid "New status"
3979 #: rhodecode/templates/email_templates/pull_request_comment.html:4
3617 msgstr ""
3980 msgid "URL"
3618
3981 msgstr ""
3619 #: rhodecode/templates/email_templates/changeset_comment.html:11
3982
3620 #: rhodecode/templates/email_templates/pull_request_comment.html:9
3983 #: rhodecode/templates/email_templates/changeset_comment.html:6
3621 msgid "View this comment here"
3984 #, python-format
3985 msgid "%s commented on a %s changeset."
3622 msgstr ""
3986 msgstr ""
3623
3987
3624 #: rhodecode/templates/email_templates/changeset_comment.html:14
3988 #: rhodecode/templates/email_templates/changeset_comment.html:14
3625 msgid "Repo"
3989 msgid "The changeset status was changed to"
3626 msgstr ""
3627
3628 #: rhodecode/templates/email_templates/changeset_comment.html:16
3629 msgid "desc"
3630 msgstr ""
3990 msgstr ""
3631
3991
3632 #: rhodecode/templates/email_templates/main.html:8
3992 #: rhodecode/templates/email_templates/main.html:8
@@ -3646,47 +4006,38 b' msgstr ""'
3646 msgid "You can generate it by clicking following URL"
4006 msgid "You can generate it by clicking following URL"
3647 msgstr ""
4007 msgstr ""
3648
4008
3649 #: rhodecode/templates/email_templates/password_reset.html:11
4009 #: rhodecode/templates/email_templates/password_reset.html:10
3650 msgid "If you did not request new password please ignore this email."
4010 msgid "Please ignore this email if you did not request a new password ."
3651 msgstr ""
3652
3653 #: rhodecode/templates/email_templates/pull_request.html:4
3654 #, python-format
3655 msgid ""
3656 "User %s opened pull request for repository %s and wants you to review "
3657 "changes."
3658 msgstr ""
3659
3660 #: rhodecode/templates/email_templates/pull_request.html:5
3661 msgid "View this pull request here"
3662 msgstr ""
4011 msgstr ""
3663
4012
3664 #: rhodecode/templates/email_templates/pull_request.html:6
4013 #: rhodecode/templates/email_templates/pull_request.html:6
3665 msgid "title"
3666 msgstr ""
3667
3668 #: rhodecode/templates/email_templates/pull_request.html:7
3669 msgid "description"
3670 msgstr ""
3671
3672 #: rhodecode/templates/email_templates/pull_request.html:12
3673 msgid "revisions for reviewing"
3674 msgstr ""
3675
3676 #: rhodecode/templates/email_templates/pull_request_comment.html:3
3677 #, python-format
4014 #, python-format
3678 msgid "Pull request #%s for repository %s"
4015 msgid ""
3679 msgstr ""
4016 "%s opened a pull request for repository %s and wants you to review "
3680
4017 "changes."
3681 #: rhodecode/templates/email_templates/pull_request_comment.html:13
4018 msgstr ""
3682 msgid "Closing pull request with status"
4019
3683 msgstr ""
4020 #: rhodecode/templates/email_templates/pull_request.html:8
3684
4021 #: rhodecode/templates/pullrequests/pullrequest.html:34
3685 #: rhodecode/templates/email_templates/registration.html:4
4022 #: rhodecode/templates/pullrequests/pullrequest_data.html:14
3686 msgid "A new user have registered in RhodeCode"
4023 #: rhodecode/templates/pullrequests/pullrequest_show.html:25
3687 msgstr ""
4024 msgid "Title"
3688
4025 msgstr ""
3689 #: rhodecode/templates/email_templates/registration.html:9
4026
4027 #: rhodecode/templates/email_templates/pull_request_comment.html:6
4028 #, python-format
4029 msgid "%s commented on pull request \"%s\""
4030 msgstr ""
4031
4032 #: rhodecode/templates/email_templates/pull_request_comment.html:10
4033 msgid "Pull request was closed with status"
4034 msgstr ""
4035
4036 #: rhodecode/templates/email_templates/pull_request_comment.html:12
4037 msgid "Pull request changed status"
4038 msgstr ""
4039
4040 #: rhodecode/templates/email_templates/registration.html:6
3690 msgid "View this user here"
4041 msgid "View this user here"
3691 msgstr ""
4042 msgstr ""
3692
4043
@@ -3713,7 +4064,6 b' msgstr ""'
3713 #: rhodecode/templates/files/files.html:30
4064 #: rhodecode/templates/files/files.html:30
3714 #: rhodecode/templates/files/files_add.html:31
4065 #: rhodecode/templates/files/files_add.html:31
3715 #: rhodecode/templates/files/files_edit.html:31
4066 #: rhodecode/templates/files/files_edit.html:31
3716 #: rhodecode/templates/shortlog/shortlog_data.html:9
3717 msgid "Branch"
4067 msgid "Branch"
3718 msgstr ""
4068 msgstr ""
3719
4069
@@ -3726,12 +4076,6 b' msgstr ""'
3726 msgid "Add file"
4076 msgid "Add file"
3727 msgstr ""
4077 msgstr ""
3728
4078
3729 #: rhodecode/templates/files/files_add.html:38
3730 #: rhodecode/templates/files/files_browser.html:31
3731 #: rhodecode/templates/shortlog/shortlog_data.html:78
3732 msgid "Add new file"
3733 msgstr ""
3734
3735 #: rhodecode/templates/files/files_add.html:43
4079 #: rhodecode/templates/files/files_add.html:43
3736 msgid "File Name"
4080 msgid "File Name"
3737 msgstr ""
4081 msgstr ""
@@ -3760,12 +4104,6 b' msgstr ""'
3760 msgid "use / to separate directories"
4104 msgid "use / to separate directories"
3761 msgstr ""
4105 msgstr ""
3762
4106
3763 #: rhodecode/templates/files/files_add.html:75
3764 #: rhodecode/templates/files/files_edit.html:61
3765 #: rhodecode/templates/shortlog/shortlog_data.html:6
3766 msgid "Commit message"
3767 msgstr ""
3768
3769 #: rhodecode/templates/files/files_add.html:79
4107 #: rhodecode/templates/files/files_add.html:79
3770 #: rhodecode/templates/files/files_edit.html:65
4108 #: rhodecode/templates/files/files_edit.html:65
3771 msgid "Commit changes"
4109 msgid "Commit changes"
@@ -3829,12 +4167,6 b' msgstr ""'
3829 msgid "Show annotation"
4167 msgid "Show annotation"
3830 msgstr ""
4168 msgstr ""
3831
4169
3832 #: rhodecode/templates/files/files_edit.html:48
3833 #: rhodecode/templates/files/files_source.html:25
3834 #: rhodecode/templates/files/files_source.html:55
3835 msgid "Show as raw"
3836 msgstr ""
3837
3838 #: rhodecode/templates/files/files_edit.html:49
4170 #: rhodecode/templates/files/files_edit.html:49
3839 #: rhodecode/templates/files/files_source.html:26
4171 #: rhodecode/templates/files/files_source.html:26
3840 msgid "Download as raw"
4172 msgid "Download as raw"
@@ -4024,36 +4356,47 b' msgstr ""'
4024 msgid "New pull request"
4356 msgid "New pull request"
4025 msgstr ""
4357 msgstr ""
4026
4358
4027 #: rhodecode/templates/pullrequests/pullrequest.html:52
4359 #: rhodecode/templates/pullrequests/pullrequest.html:25
4028 msgid "Detailed compare view"
4360 msgid "Create new pull request"
4029 msgstr ""
4361 msgstr ""
4030
4362
4031 #: rhodecode/templates/pullrequests/pullrequest.html:56
4363 #: rhodecode/templates/pullrequests/pullrequest.html:47
4364 msgid "Write a short description on this pull request"
4365 msgstr ""
4366
4367 #: rhodecode/templates/pullrequests/pullrequest.html:53
4368 msgid "Changeset flow"
4369 msgstr ""
4370
4371 #: rhodecode/templates/pullrequests/pullrequest.html:60
4372 #: rhodecode/templates/pullrequests/pullrequest_show.html:65
4373 msgid "Origin repository"
4374 msgstr ""
4375
4376 #: rhodecode/templates/pullrequests/pullrequest.html:85
4377 msgid "Send pull request"
4378 msgstr ""
4379
4380 #: rhodecode/templates/pullrequests/pullrequest.html:94
4032 #: rhodecode/templates/pullrequests/pullrequest_show.html:137
4381 #: rhodecode/templates/pullrequests/pullrequest_show.html:137
4033 msgid "Pull request reviewers"
4382 msgid "Pull request reviewers"
4034 msgstr ""
4383 msgstr ""
4035
4384
4036 #: rhodecode/templates/pullrequests/pullrequest.html:65
4385 #: rhodecode/templates/pullrequests/pullrequest.html:103
4037 #: rhodecode/templates/pullrequests/pullrequest_show.html:149
4386 #: rhodecode/templates/pullrequests/pullrequest_show.html:149
4038 msgid "owner"
4387 msgid "owner"
4039 msgstr ""
4388 msgstr ""
4040
4389
4041 #: rhodecode/templates/pullrequests/pullrequest.html:77
4390 #: rhodecode/templates/pullrequests/pullrequest.html:115
4042 msgid "Add reviewer to this pull request."
4391 msgid "Add reviewer to this pull request."
4043 msgstr ""
4392 msgstr ""
4044
4393
4045 #: rhodecode/templates/pullrequests/pullrequest.html:83
4394 #: rhodecode/templates/pullrequests/pullrequest.html:129
4046 msgid "Create new pull request"
4395 msgid "Detailed compare view"
4047 msgstr ""
4396 msgstr ""
4048
4397
4049 #: rhodecode/templates/pullrequests/pullrequest.html:92
4398 #: rhodecode/templates/pullrequests/pullrequest.html:150
4050 #: rhodecode/templates/pullrequests/pullrequest_data.html:14
4399 msgid "Destination repository"
4051 #: rhodecode/templates/pullrequests/pullrequest_show.html:25
4052 msgid "Title"
4053 msgstr ""
4054
4055 #: rhodecode/templates/pullrequests/pullrequest.html:109
4056 msgid "Send pull request"
4057 msgstr ""
4400 msgstr ""
4058
4401
4059 #: rhodecode/templates/pullrequests/pullrequest_show.html:4
4402 #: rhodecode/templates/pullrequests/pullrequest_show.html:4
@@ -4084,10 +4427,6 b' msgstr[1] ""'
4084 msgid "Pull request was reviewed by all reviewers"
4427 msgid "Pull request was reviewed by all reviewers"
4085 msgstr ""
4428 msgstr ""
4086
4429
4087 #: rhodecode/templates/pullrequests/pullrequest_show.html:65
4088 msgid "Origin repository"
4089 msgstr ""
4090
4091 #: rhodecode/templates/pullrequests/pullrequest_show.html:89
4430 #: rhodecode/templates/pullrequests/pullrequest_show.html:89
4092 msgid "Created on"
4431 msgid "Created on"
4093 msgstr ""
4432 msgstr ""
@@ -4150,37 +4489,6 b' msgstr ""'
4150 msgid "Permission denied"
4489 msgid "Permission denied"
4151 msgstr ""
4490 msgstr ""
4152
4491
4153 #: rhodecode/templates/shortlog/shortlog.html:5
4154 #, fuzzy, python-format
4155 msgid "%s Lightweight Changelog"
4156 msgstr ""
4157
4158 #: rhodecode/templates/shortlog/shortlog.html:11
4159 #: rhodecode/templates/shortlog/shortlog.html:15
4160 msgid "Lightweight Changelog"
4161 msgstr ""
4162
4163 #: rhodecode/templates/shortlog/shortlog_data.html:7
4164 msgid "Age"
4165 msgstr ""
4166
4167 #: rhodecode/templates/shortlog/shortlog_data.html:20
4168 #, python-format
4169 msgid "Click to open associated pull request #%s"
4170 msgstr ""
4171
4172 #: rhodecode/templates/shortlog/shortlog_data.html:75
4173 msgid "Add or upload files directly via RhodeCode"
4174 msgstr ""
4175
4176 #: rhodecode/templates/shortlog/shortlog_data.html:84
4177 msgid "Push new repo"
4178 msgstr ""
4179
4180 #: rhodecode/templates/shortlog/shortlog_data.html:92
4181 msgid "Existing repository?"
4182 msgstr ""
4183
4184 #: rhodecode/templates/summary/summary.html:4
4492 #: rhodecode/templates/summary/summary.html:4
4185 #, python-format
4493 #, python-format
4186 msgid "%s Summary"
4494 msgid "%s Summary"
@@ -4219,7 +4527,7 b' msgstr ""'
4219 msgid "Fork of"
4527 msgid "Fork of"
4220 msgstr ""
4528 msgstr ""
4221
4529
4222 #: rhodecode/templates/summary/summary.html:96
4530 #: rhodecode/templates/summary/summary.html:97
4223 msgid "Remote clone"
4531 msgid "Remote clone"
4224 msgstr ""
4532 msgstr ""
4225
4533
@@ -4245,8 +4553,7 b' msgstr ""'
4245
4553
4246 #: rhodecode/templates/summary/summary.html:151
4554 #: rhodecode/templates/summary/summary.html:151
4247 #: rhodecode/templates/summary/summary.html:167
4555 #: rhodecode/templates/summary/summary.html:167
4248 #: rhodecode/templates/summary/summary.html:232
4556 msgid "Enable"
4249 msgid "enable"
4250 msgstr ""
4557 msgstr ""
4251
4558
4252 #: rhodecode/templates/summary/summary.html:159
4559 #: rhodecode/templates/summary/summary.html:159
@@ -4261,7 +4568,7 b' msgstr ""'
4261 msgid "Downloads are disabled for this repository"
4568 msgid "Downloads are disabled for this repository"
4262 msgstr ""
4569 msgstr ""
4263
4570
4264 #: rhodecode/templates/summary/summary.html:171
4571 #: rhodecode/templates/summary/summary.html:170
4265 msgid "Download as zip"
4572 msgid "Download as zip"
4266 msgstr ""
4573 msgstr ""
4267
4574
@@ -4286,6 +4593,10 b' msgstr ""'
4286 msgid "Commit activity by day / author"
4593 msgid "Commit activity by day / author"
4287 msgstr ""
4594 msgstr ""
4288
4595
4596 #: rhodecode/templates/summary/summary.html:232
4597 msgid "enable"
4598 msgstr ""
4599
4289 #: rhodecode/templates/summary/summary.html:235
4600 #: rhodecode/templates/summary/summary.html:235
4290 msgid "Stats gathered: "
4601 msgid "Stats gathered: "
4291 msgstr ""
4602 msgstr ""
@@ -4300,51 +4611,47 b' msgstr ""'
4300
4611
4301 #: rhodecode/templates/summary/summary.html:272
4612 #: rhodecode/templates/summary/summary.html:272
4302 #, python-format
4613 #, python-format
4303 msgid "Readme file at revision '%s'"
4614 msgid "Readme file from revision %s"
4304 msgstr ""
4615 msgstr ""
4305
4616
4306 #: rhodecode/templates/summary/summary.html:275
4617 #: rhodecode/templates/summary/summary.html:332
4307 msgid "Permalink to this readme"
4308 msgstr ""
4309
4310 #: rhodecode/templates/summary/summary.html:333
4311 #, python-format
4618 #, python-format
4312 msgid "Download %s as %s"
4619 msgid "Download %s as %s"
4313 msgstr ""
4620 msgstr ""
4314
4621
4315 #: rhodecode/templates/summary/summary.html:380
4622 #: rhodecode/templates/summary/summary.html:379
4316 msgid "files"
4623 msgid "files"
4317 msgstr ""
4624 msgstr ""
4318
4625
4626 #: rhodecode/templates/summary/summary.html:689
4627 msgid "commits"
4628 msgstr ""
4629
4319 #: rhodecode/templates/summary/summary.html:690
4630 #: rhodecode/templates/summary/summary.html:690
4320 msgid "commits"
4631 msgid "files added"
4321 msgstr ""
4632 msgstr ""
4322
4633
4323 #: rhodecode/templates/summary/summary.html:691
4634 #: rhodecode/templates/summary/summary.html:691
4324 msgid "files added"
4635 msgid "files changed"
4325 msgstr ""
4636 msgstr ""
4326
4637
4327 #: rhodecode/templates/summary/summary.html:692
4638 #: rhodecode/templates/summary/summary.html:692
4328 msgid "files changed"
4329 msgstr ""
4330
4331 #: rhodecode/templates/summary/summary.html:693
4332 msgid "files removed"
4639 msgid "files removed"
4333 msgstr ""
4640 msgstr ""
4334
4641
4642 #: rhodecode/templates/summary/summary.html:694
4643 msgid "commit"
4644 msgstr ""
4645
4335 #: rhodecode/templates/summary/summary.html:695
4646 #: rhodecode/templates/summary/summary.html:695
4336 msgid "commit"
4647 msgid "file added"
4337 msgstr ""
4648 msgstr ""
4338
4649
4339 #: rhodecode/templates/summary/summary.html:696
4650 #: rhodecode/templates/summary/summary.html:696
4340 msgid "file added"
4651 msgid "file changed"
4341 msgstr ""
4652 msgstr ""
4342
4653
4343 #: rhodecode/templates/summary/summary.html:697
4654 #: rhodecode/templates/summary/summary.html:697
4344 msgid "file changed"
4345 msgstr ""
4346
4347 #: rhodecode/templates/summary/summary.html:698
4348 msgid "file removed"
4655 msgid "file removed"
4349 msgstr ""
4656 msgstr ""
4350
4657
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
This diff has been collapsed as it changes many lines, (2163 lines changed) Show them Hide them
@@ -7,7 +7,7 b' msgid ""'
7 msgstr ""
7 msgstr ""
8 "Project-Id-Version: RhodeCode 1.1.5\n"
8 "Project-Id-Version: RhodeCode 1.1.5\n"
9 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
9 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
10 "POT-Creation-Date: 2013-04-05 10:19-0700\n"
10 "POT-Creation-Date: 2013-06-01 18:38+0200\n"
11 "PO-Revision-Date: 2012-10-02 11:32+0100\n"
11 "PO-Revision-Date: 2012-10-02 11:32+0100\n"
12 "Last-Translator: Vincent Duvert <vincent@duvert.net>\n"
12 "Last-Translator: Vincent Duvert <vincent@duvert.net>\n"
13 "Language-Team: fr <LL@li.org>\n"
13 "Language-Team: fr <LL@li.org>\n"
@@ -17,32 +17,30 b' msgstr ""'
17 "Content-Transfer-Encoding: 8bit\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Generated-By: Babel 0.9.6\n"
18 "Generated-By: Babel 0.9.6\n"
19
19
20 #: rhodecode/controllers/changelog.py:95
20 #: rhodecode/controllers/changelog.py:149
21 msgid "All Branches"
21 msgid "All Branches"
22 msgstr "Toutes les branches"
22 msgstr "Toutes les branches"
23
23
24 #: rhodecode/controllers/changeset.py:83
24 #: rhodecode/controllers/changeset.py:84
25 #, fuzzy
26 msgid "Show white space"
25 msgid "Show white space"
27 msgstr "Afficher les espaces et tabulations"
26 msgstr "Afficher les espaces et tabulations"
28
27
29 #: rhodecode/controllers/changeset.py:90 rhodecode/controllers/changeset.py:97
28 #: rhodecode/controllers/changeset.py:91 rhodecode/controllers/changeset.py:98
30 #, fuzzy
31 msgid "Ignore white space"
29 msgid "Ignore white space"
32 msgstr "Ignorer les espaces et tabulations"
30 msgstr "Ignorer les espaces et tabulations"
33
31
34 #: rhodecode/controllers/changeset.py:163
32 #: rhodecode/controllers/changeset.py:164
35 #, python-format
33 #, python-format
36 msgid "%s line context"
34 msgid "%s line context"
37 msgstr "Afficher %s lignes de contexte"
35 msgstr "Afficher %s lignes de contexte"
38
36
39 #: rhodecode/controllers/changeset.py:329
37 #: rhodecode/controllers/changeset.py:345
40 #: rhodecode/controllers/pullrequests.py:438
38 #: rhodecode/controllers/pullrequests.py:481
41 #, python-format
39 #, python-format
42 msgid "Status change -> %s"
40 msgid "Status change -> %s"
43 msgstr "Changement de statut -> %s"
41 msgstr "Changement de statut -> %s"
44
42
45 #: rhodecode/controllers/changeset.py:360
43 #: rhodecode/controllers/changeset.py:376
46 #, fuzzy
44 #, fuzzy
47 msgid ""
45 msgid ""
48 "Changing status on a changeset associated with a closed pull request is "
46 "Changing status on a changeset associated with a closed pull request is "
@@ -52,8 +50,7 b' msgstr ""'
52 "n’est pas autorisé."
50 "n’est pas autorisé."
53
51
54 #: rhodecode/controllers/compare.py:74
52 #: rhodecode/controllers/compare.py:74
55 #: rhodecode/controllers/pullrequests.py:167
53 #: rhodecode/controllers/pullrequests.py:259
56 #: rhodecode/controllers/shortlog.py:100
57 msgid "There are no changesets yet"
54 msgid "There are no changesets yet"
58 msgstr "Il n’y a aucun changement pour le moment"
55 msgstr "Il n’y a aucun changement pour le moment"
59
56
@@ -98,8 +95,8 b' msgid "%s %s feed"'
98 msgstr "Flux %s de %s"
95 msgstr "Flux %s de %s"
99
96
100 #: rhodecode/controllers/feed.py:86
97 #: rhodecode/controllers/feed.py:86
101 #: rhodecode/templates/changeset/changeset.html:134
98 #: rhodecode/templates/changeset/changeset.html:141
102 #: rhodecode/templates/changeset/changeset.html:146
99 #: rhodecode/templates/changeset/changeset.html:153
103 #: rhodecode/templates/compare/compare_diff.html:58
100 #: rhodecode/templates/compare/compare_diff.html:58
104 #: rhodecode/templates/compare/compare_diff.html:69
101 #: rhodecode/templates/compare/compare_diff.html:69
105 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
102 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
@@ -107,124 +104,125 b' msgstr "Flux %s de %s"'
107 msgid "Changeset was too big and was cut off..."
104 msgid "Changeset was too big and was cut off..."
108 msgstr "Cet ensemble de changements était trop important et a été découpé…"
105 msgstr "Cet ensemble de changements était trop important et a été découpé…"
109
106
110 #: rhodecode/controllers/feed.py:91
107 #: rhodecode/controllers/feed.py:90
111 #, fuzzy, python-format
108 #, python-format
112 msgid "%s committed on %s"
109 msgid "%s committed on %s"
113 msgstr "%s a commité, le %s"
110 msgstr "%s a commité, le %s"
114
111
115 #: rhodecode/controllers/files.py:88
112 #: rhodecode/controllers/files.py:89
116 #, fuzzy
113 #
117 msgid "Click here to add new file"
114 msgid "Click here to add new file"
118 msgstr "Ajouter un nouveau fichier"
115 msgstr "Ajouter un nouveau fichier"
119
116
120 #: rhodecode/controllers/files.py:89
117 #: rhodecode/controllers/files.py:90
121 #, python-format
118 #, python-format
122 msgid "There are no files yet %s"
119 msgid "There are no files yet %s"
123 msgstr "Il n’y a pas encore de fichiers %s"
120 msgstr "Il n’y a pas encore de fichiers %s"
124
121
125 #: rhodecode/controllers/files.py:267 rhodecode/controllers/files.py:335
122 #: rhodecode/controllers/files.py:271 rhodecode/controllers/files.py:339
126 #, python-format
123 #, python-format
127 msgid "This repository is has been locked by %s on %s"
124 msgid "This repository is has been locked by %s on %s"
128 msgstr "Ce dépôt a été verrouillé par %s sur %s."
125 msgstr "Ce dépôt a été verrouillé par %s sur %s."
129
126
130 #: rhodecode/controllers/files.py:279
127 #: rhodecode/controllers/files.py:283
131 msgid "You can only edit files with revision being a valid branch "
128 msgid "You can only edit files with revision being a valid branch "
132 msgstr ""
129 msgstr ""
133
130
134 #: rhodecode/controllers/files.py:293
131 #: rhodecode/controllers/files.py:297
135 #, fuzzy, python-format
132 #, python-format
136 msgid "Edited file %s via RhodeCode"
133 msgid "Edited file %s via RhodeCode"
137 msgstr "%s édité via RhodeCode"
134 msgstr "%s édité via RhodeCode"
138
135
139 #: rhodecode/controllers/files.py:309
136 #: rhodecode/controllers/files.py:313
140 msgid "No changes"
137 msgid "No changes"
141 msgstr "Aucun changement"
138 msgstr "Aucun changement"
142
139
143 #: rhodecode/controllers/files.py:318 rhodecode/controllers/files.py:388
140 #: rhodecode/controllers/files.py:322 rhodecode/controllers/files.py:394
144 #, python-format
141 #, python-format
145 msgid "Successfully committed to %s"
142 msgid "Successfully committed to %s"
146 msgstr "Commit réalisé avec succès sur %s"
143 msgstr "Commit réalisé avec succès sur %s"
147
144
148 #: rhodecode/controllers/files.py:323 rhodecode/controllers/files.py:394
145 #: rhodecode/controllers/files.py:327 rhodecode/controllers/files.py:405
149 msgid "Error occurred during commit"
146 msgid "Error occurred during commit"
150 msgstr "Une erreur est survenue durant le commit"
147 msgstr "Une erreur est survenue durant le commit"
151
148
152 #: rhodecode/controllers/files.py:347
149 #: rhodecode/controllers/files.py:351
153 #, fuzzy
150 #
154 msgid "Added file via RhodeCode"
151 msgid "Added file via RhodeCode"
155 msgstr "%s ajouté par RhodeCode"
152 msgstr "%s ajouté par RhodeCode"
156
153
157 #: rhodecode/controllers/files.py:364
158 msgid "No content"
159 msgstr "Aucun contenu"
160
161 #: rhodecode/controllers/files.py:368
154 #: rhodecode/controllers/files.py:368
155 msgid "No content"
156 msgstr "Aucun contenu"
157
158 #: rhodecode/controllers/files.py:372
162 msgid "No filename"
159 msgid "No filename"
163 msgstr "Aucun nom de fichier"
160 msgstr "Aucun nom de fichier"
164
161
165 #: rhodecode/controllers/files.py:372
162 #: rhodecode/controllers/files.py:397
166 msgid "Location must be relative path and must not contain .. in path"
163 msgid "Location must be relative path and must not contain .. in path"
167 msgstr ""
164 msgstr ""
168
165
169 #: rhodecode/controllers/files.py:420
166 #: rhodecode/controllers/files.py:431
170 #, fuzzy
167 #
171 msgid "Downloads disabled"
168 msgid "Downloads disabled"
172 msgstr "Les téléchargements sont désactivés"
169 msgstr "Les téléchargements sont désactivés"
173
170
174 #: rhodecode/controllers/files.py:431
171 #: rhodecode/controllers/files.py:442
175 #, python-format
172 #, python-format
176 msgid "Unknown revision %s"
173 msgid "Unknown revision %s"
177 msgstr "Révision %s inconnue."
174 msgstr "Révision %s inconnue."
178
175
179 #: rhodecode/controllers/files.py:433
176 #: rhodecode/controllers/files.py:444
180 msgid "Empty repository"
177 msgid "Empty repository"
181 msgstr "Dépôt vide."
178 msgstr "Dépôt vide."
182
179
183 #: rhodecode/controllers/files.py:435
180 #: rhodecode/controllers/files.py:446
184 msgid "Unknown archive type"
181 msgid "Unknown archive type"
185 msgstr "Type d’archive inconnu"
182 msgstr "Type d’archive inconnu"
186
183
187 #: rhodecode/controllers/files.py:617
184 #: rhodecode/controllers/files.py:631
188 #: rhodecode/templates/changeset/changeset_range.html:9
185 #: rhodecode/templates/changeset/changeset_range.html:9
186 #: rhodecode/templates/email_templates/pull_request.html:12
187 #: rhodecode/templates/pullrequests/pullrequest.html:124
189 msgid "Changesets"
188 msgid "Changesets"
190 msgstr "Changesets"
189 msgstr "Changesets"
191
190
192 #: rhodecode/controllers/files.py:618 rhodecode/controllers/pullrequests.py:131
191 #: rhodecode/controllers/files.py:632 rhodecode/controllers/pullrequests.py:152
193 #: rhodecode/controllers/summary.py:247 rhodecode/model/scm.py:606
192 #: rhodecode/controllers/summary.py:76 rhodecode/model/scm.py:682
194 #: rhodecode/templates/switch_to_list.html:3
193 #: rhodecode/templates/switch_to_list.html:3
195 #: rhodecode/templates/branches/branches.html:10
194 #: rhodecode/templates/branches/branches.html:10
196 msgid "Branches"
195 msgid "Branches"
197 msgstr "Branches"
196 msgstr "Branches"
198
197
199 #: rhodecode/controllers/files.py:619 rhodecode/controllers/pullrequests.py:132
198 #: rhodecode/controllers/files.py:633 rhodecode/controllers/pullrequests.py:153
200 #: rhodecode/controllers/summary.py:248 rhodecode/model/scm.py:617
199 #: rhodecode/controllers/summary.py:77 rhodecode/model/scm.py:693
201 #: rhodecode/templates/switch_to_list.html:15
200 #: rhodecode/templates/switch_to_list.html:15
202 #: rhodecode/templates/shortlog/shortlog_data.html:10
203 #: rhodecode/templates/tags/tags.html:10
201 #: rhodecode/templates/tags/tags.html:10
204 msgid "Tags"
202 msgid "Tags"
205 msgstr "Tags"
203 msgstr "Tags"
206
204
207 #: rhodecode/controllers/forks.py:175
205 #: rhodecode/controllers/forks.py:176
208 #, fuzzy, python-format
206 #, python-format
209 msgid "Forked repository %s as %s"
207 msgid "Forked repository %s as %s"
210 msgstr "dépôt %s forké en tant que %s"
208 msgstr "dépôt %s forké en tant que %s"
211
209
212 #: rhodecode/controllers/forks.py:189
210 #: rhodecode/controllers/forks.py:190
213 #, python-format
211 #, python-format
214 msgid "An error occurred during repository forking %s"
212 msgid "An error occurred during repository forking %s"
215 msgstr "Une erreur est survenue durant le fork du dépôt %s."
213 msgstr "Une erreur est survenue durant le fork du dépôt %s."
216
214
217 #: rhodecode/controllers/journal.py:275 rhodecode/controllers/journal.py:318
215 #: rhodecode/controllers/journal.py:110 rhodecode/controllers/journal.py:153
218 msgid "public journal"
216 msgid "public journal"
219 msgstr "Journal public"
217 msgstr "Journal public"
220
218
221 #: rhodecode/controllers/journal.py:279 rhodecode/controllers/journal.py:322
219 #: rhodecode/controllers/journal.py:114 rhodecode/controllers/journal.py:157
222 #: rhodecode/templates/journal/journal.html:12
220 #: rhodecode/templates/journal/journal.html:12
223 msgid "journal"
221 msgid "journal"
224 msgstr "Journal"
222 msgstr "Journal"
225
223
226 #: rhodecode/controllers/login.py:138
224 #: rhodecode/controllers/login.py:138
227 #, fuzzy
225 #
228 msgid "You have successfully registered into RhodeCode"
226 msgid "You have successfully registered into RhodeCode"
229 msgstr "Vous vous êtes inscrits avec succès à RhodeCode"
227 msgstr "Vous vous êtes inscrits avec succès à RhodeCode"
230
228
@@ -240,75 +238,75 b' msgstr ""'
240 "Votre mot de passe a été réinitialisé. Votre nouveau mot de passe vous a "
238 "Votre mot de passe a été réinitialisé. Votre nouveau mot de passe vous a "
241 "été envoyé par e-mail."
239 "été envoyé par e-mail."
242
240
243 #: rhodecode/controllers/pullrequests.py:118
241 #: rhodecode/controllers/pullrequests.py:139
244 #: rhodecode/templates/changeset/changeset.html:10
242 #: rhodecode/templates/changeset/changeset.html:10
245 #: rhodecode/templates/email_templates/changeset_comment.html:15
243 #: rhodecode/templates/email_templates/changeset_comment.html:8
246 msgid "Changeset"
244 msgid "Changeset"
247 msgstr "Changements"
245 msgstr "Changements"
248
246
249 #: rhodecode/controllers/pullrequests.py:128
247 #: rhodecode/controllers/pullrequests.py:149
250 msgid "Special"
248 msgid "Special"
251 msgstr ""
249 msgstr ""
252
250
253 #: rhodecode/controllers/pullrequests.py:129
251 #: rhodecode/controllers/pullrequests.py:150
254 #, fuzzy
252 #
255 msgid "Peer branches"
253 msgid "Peer branches"
256 msgstr "Branches"
254 msgstr ""
257
255
258 #: rhodecode/controllers/pullrequests.py:130 rhodecode/model/scm.py:612
256 #: rhodecode/controllers/pullrequests.py:151 rhodecode/model/scm.py:688
259 #: rhodecode/templates/switch_to_list.html:28
257 #: rhodecode/templates/switch_to_list.html:28
260 #: rhodecode/templates/bookmarks/bookmarks.html:10
258 #: rhodecode/templates/bookmarks/bookmarks.html:10
261 msgid "Bookmarks"
259 msgid "Bookmarks"
262 msgstr "Signets"
260 msgstr "Signets"
263
261
264 #: rhodecode/controllers/pullrequests.py:228
262 #: rhodecode/controllers/pullrequests.py:324
265 msgid "Pull request requires a title with min. 3 chars"
263 msgid "Pull request requires a title with min. 3 chars"
266 msgstr "Les requêtes de pull nécessitent un titre d’au moins 3 caractères."
264 msgstr "Les requêtes de pull nécessitent un titre d’au moins 3 caractères."
267
265
268 #: rhodecode/controllers/pullrequests.py:230
266 #: rhodecode/controllers/pullrequests.py:326
269 #, fuzzy
267 #
270 msgid "Error creating pull request"
268 msgid "Error creating pull request"
271 msgstr "Une erreur est survenue lors de la création de la requête de pull."
269 msgstr "Une erreur est survenue lors de la création de la requête de pull."
272
270
273 #: rhodecode/controllers/pullrequests.py:251
271 #: rhodecode/controllers/pullrequests.py:346
274 msgid "Successfully opened new pull request"
272 msgid "Successfully opened new pull request"
275 msgstr "La requête de pull a été ouverte avec succès."
273 msgstr "La requête de pull a été ouverte avec succès."
276
274
277 #: rhodecode/controllers/pullrequests.py:254
275 #: rhodecode/controllers/pullrequests.py:349
278 msgid "Error occurred during sending pull request"
276 msgid "Error occurred during sending pull request"
279 msgstr "Une erreur est survenue durant l’envoi de la requête de pull."
277 msgstr "Une erreur est survenue durant l’envoi de la requête de pull."
280
278
281 #: rhodecode/controllers/pullrequests.py:287
279 #: rhodecode/controllers/pullrequests.py:388
282 msgid "Successfully deleted pull request"
280 msgid "Successfully deleted pull request"
283 msgstr "La requête de pull a été supprimée avec succès."
281 msgstr "La requête de pull a été supprimée avec succès."
284
282
285 #: rhodecode/controllers/pullrequests.py:441
283 #: rhodecode/controllers/pullrequests.py:484
286 msgid "Closing with"
284 msgid "Closing with"
287 msgstr ""
285 msgstr ""
288
286
289 #: rhodecode/controllers/pullrequests.py:478
287 #: rhodecode/controllers/pullrequests.py:521
290 msgid "Closing pull request on other statuses than rejected or approved forbidden"
288 msgid "Closing pull request on other statuses than rejected or approved forbidden"
291 msgstr ""
289 msgstr ""
292
290
293 #: rhodecode/controllers/search.py:134
291 #: rhodecode/controllers/search.py:132
294 msgid "Invalid search query. Try quoting it."
292 msgid "Invalid search query. Try quoting it."
295 msgstr "Requête invalide. Essayer de la mettre entre guillemets."
293 msgstr "Requête invalide. Essayer de la mettre entre guillemets."
296
294
297 #: rhodecode/controllers/search.py:139
295 #: rhodecode/controllers/search.py:137
298 msgid "There is no index to search in. Please run whoosh indexer"
296 msgid "There is no index to search in. Please run whoosh indexer"
299 msgstr ""
297 msgstr ""
300 "L’index de recherche n’est pas présent. Veuillez exécuter l’indexeur de "
298 "L’index de recherche n’est pas présent. Veuillez exécuter l’indexeur de "
301 "code Whoosh."
299 "code Whoosh."
302
300
303 #: rhodecode/controllers/search.py:143
301 #: rhodecode/controllers/search.py:141
304 msgid "An error occurred during this search operation"
302 msgid "An error occurred during this search operation"
305 msgstr "Une erreur est survenue durant l’opération de recherche."
303 msgstr "Une erreur est survenue durant l’opération de recherche."
306
304
307 #: rhodecode/controllers/summary.py:141
305 #: rhodecode/controllers/summary.py:182
308 msgid "No data loaded yet"
306 msgid "No data loaded yet"
309 msgstr "Aucune donnée actuellement disponible."
307 msgstr "Aucune donnée actuellement disponible."
310
308
311 #: rhodecode/controllers/summary.py:147
309 #: rhodecode/controllers/summary.py:188
312 #: rhodecode/templates/summary/summary.html:149
310 #: rhodecode/templates/summary/summary.html:149
313 msgid "Statistics are disabled for this repository"
311 msgid "Statistics are disabled for this repository"
314 msgstr "La mise à jour des statistiques est désactivée pour ce dépôt."
312 msgstr "La mise à jour des statistiques est désactivée pour ce dépôt."
@@ -323,6 +321,45 b' msgstr "Mise \xc3\xa0 jour r\xc3\xa9ussie des r\xc3\xa9glages LDAP"'
323 msgid "Error occurred during update of defaults"
321 msgid "Error occurred during update of defaults"
324 msgstr "Une erreur est survenue durant la mise à jour de l’utilisateur %s."
322 msgstr "Une erreur est survenue durant la mise à jour de l’utilisateur %s."
325
323
324 #: rhodecode/controllers/admin/gists.py:56
325 #
326 msgid "forever"
327 msgstr ""
328
329 #: rhodecode/controllers/admin/gists.py:57
330 #
331 msgid "5 minutes"
332 msgstr "5 minute"
333
334 #: rhodecode/controllers/admin/gists.py:58
335 #
336 msgid "1 hour"
337 msgstr "1 heure"
338
339 #: rhodecode/controllers/admin/gists.py:59
340 #
341 msgid "1 day"
342 msgstr "1 jour"
343
344 #: rhodecode/controllers/admin/gists.py:60
345 #
346 msgid "1 month"
347 msgstr "1 mois"
348
349 #: rhodecode/controllers/admin/gists.py:62
350 msgid "Lifetime"
351 msgstr ""
352
353 #: rhodecode/controllers/admin/gists.py:127
354 #, fuzzy
355 msgid "Error occurred during gist creation"
356 msgstr "Une erreur est survenue durant la création du hook."
357
358 #: rhodecode/controllers/admin/gists.py:165
359 #, fuzzy, python-format
360 msgid "Deleted gist %s"
361 msgstr "Dépôt %s supprimé"
362
326 #: rhodecode/controllers/admin/ldap_settings.py:50
363 #: rhodecode/controllers/admin/ldap_settings.py:50
327 msgid "BASE"
364 msgid "BASE"
328 msgstr "Base"
365 msgstr "Base"
@@ -367,36 +404,40 b' msgstr "Connection LDAPS"'
367 msgid "START_TLS on LDAP connection"
404 msgid "START_TLS on LDAP connection"
368 msgstr "START_TLS à la connexion"
405 msgstr "START_TLS à la connexion"
369
406
370 #: rhodecode/controllers/admin/ldap_settings.py:126
407 #: rhodecode/controllers/admin/ldap_settings.py:124
371 msgid "LDAP settings updated successfully"
408 msgid "LDAP settings updated successfully"
372 msgstr "Mise à jour réussie des réglages LDAP"
409 msgstr "Mise à jour réussie des réglages LDAP"
373
410
374 #: rhodecode/controllers/admin/ldap_settings.py:130
411 #: rhodecode/controllers/admin/ldap_settings.py:128
375 msgid "Unable to activate ldap. The \"python-ldap\" library is missing."
412 msgid "Unable to activate ldap. The \"python-ldap\" library is missing."
376 msgstr "Impossible d’activer LDAP. La bibliothèque « python-ldap » est manquante."
413 msgstr "Impossible d’activer LDAP. La bibliothèque « python-ldap » est manquante."
377
414
378 #: rhodecode/controllers/admin/ldap_settings.py:147
415 #: rhodecode/controllers/admin/ldap_settings.py:145
379 #, fuzzy
416 #, fuzzy
380 msgid "Error occurred during update of ldap settings"
417 msgid "Error occurred during update of ldap settings"
381 msgstr "Une erreur est survenue durant la mise à jour des réglages du LDAP."
418 msgstr "Une erreur est survenue durant la mise à jour des réglages du LDAP."
382
419
420 #: rhodecode/controllers/admin/permissions.py:58
421 #: rhodecode/controllers/admin/permissions.py:62
422 #: rhodecode/controllers/admin/permissions.py:66
423 msgid "None"
424 msgstr "Aucun"
425
426 #: rhodecode/controllers/admin/permissions.py:59
427 #: rhodecode/controllers/admin/permissions.py:63
428 #: rhodecode/controllers/admin/permissions.py:67
429 msgid "Read"
430 msgstr "Lire"
431
383 #: rhodecode/controllers/admin/permissions.py:60
432 #: rhodecode/controllers/admin/permissions.py:60
384 #: rhodecode/controllers/admin/permissions.py:64
433 #: rhodecode/controllers/admin/permissions.py:64
385 msgid "None"
434 #: rhodecode/controllers/admin/permissions.py:68
386 msgstr "Aucun"
435 msgid "Write"
436 msgstr "Écrire"
387
437
388 #: rhodecode/controllers/admin/permissions.py:61
438 #: rhodecode/controllers/admin/permissions.py:61
389 #: rhodecode/controllers/admin/permissions.py:65
439 #: rhodecode/controllers/admin/permissions.py:65
390 msgid "Read"
440 #: rhodecode/controllers/admin/permissions.py:69
391 msgstr "Lire"
392
393 #: rhodecode/controllers/admin/permissions.py:62
394 #: rhodecode/controllers/admin/permissions.py:66
395 msgid "Write"
396 msgstr "Écrire"
397
398 #: rhodecode/controllers/admin/permissions.py:63
399 #: rhodecode/controllers/admin/permissions.py:67
400 #: rhodecode/templates/admin/defaults/defaults.html:9
441 #: rhodecode/templates/admin/defaults/defaults.html:9
401 #: rhodecode/templates/admin/ldap/ldap.html:9
442 #: rhodecode/templates/admin/ldap/ldap.html:9
402 #: rhodecode/templates/admin/permissions/permissions.html:9
443 #: rhodecode/templates/admin/permissions/permissions.html:9
@@ -417,44 +458,58 b' msgstr "\xc3\x89crire"'
417 #: rhodecode/templates/admin/users_groups/users_group_add.html:8
458 #: rhodecode/templates/admin/users_groups/users_group_add.html:8
418 #: rhodecode/templates/admin/users_groups/users_group_edit.html:9
459 #: rhodecode/templates/admin/users_groups/users_group_edit.html:9
419 #: rhodecode/templates/admin/users_groups/users_groups.html:9
460 #: rhodecode/templates/admin/users_groups/users_groups.html:9
420 #: rhodecode/templates/base/base.html:292
461 #: rhodecode/templates/base/base.html:317
421 #: rhodecode/templates/base/base.html:293
462 #: rhodecode/templates/base/base.html:318
422 #: rhodecode/templates/base/base.html:299
463 #: rhodecode/templates/base/base.html:324
423 #: rhodecode/templates/base/base.html:300
464 #: rhodecode/templates/base/base.html:325
424 msgid "Admin"
465 msgid "Admin"
425 msgstr "Administration"
466 msgstr "Administration"
426
467
427 #: rhodecode/controllers/admin/permissions.py:70
468 #: rhodecode/controllers/admin/permissions.py:72
428 #: rhodecode/controllers/admin/permissions.py:76
469 #: rhodecode/controllers/admin/permissions.py:83
429 #: rhodecode/controllers/admin/permissions.py:79
470 #: rhodecode/controllers/admin/permissions.py:86
471 #: rhodecode/controllers/admin/permissions.py:89
472 #: rhodecode/controllers/admin/permissions.py:92
430 msgid "Disabled"
473 msgid "Disabled"
431 msgstr "Interdite"
474 msgstr "Interdite"
432
475
433 #: rhodecode/controllers/admin/permissions.py:72
476 #: rhodecode/controllers/admin/permissions.py:74
434 #, fuzzy
477 #, fuzzy
435 msgid "Allowed with manual account activation"
478 msgid "Allowed with manual account activation"
436 msgstr "Autorisé avec activation manuelle du compte"
479 msgstr "Autorisé avec activation manuelle du compte"
437
480
438 #: rhodecode/controllers/admin/permissions.py:74
481 #: rhodecode/controllers/admin/permissions.py:76
439 #, fuzzy
482 #, fuzzy
440 msgid "Allowed with automatic account activation"
483 msgid "Allowed with automatic account activation"
441 msgstr "Autorisé avec activation automatique du compte"
484 msgstr "Autorisé avec activation automatique du compte"
442
485
443 #: rhodecode/controllers/admin/permissions.py:77
486 #: rhodecode/controllers/admin/permissions.py:79
487 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1439 rhodecode/model/db.py:1444
488 msgid "Manual activation of external account"
489 msgstr ""
490
444 #: rhodecode/controllers/admin/permissions.py:80
491 #: rhodecode/controllers/admin/permissions.py:80
492 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1440 rhodecode/model/db.py:1445
493 msgid "Automatic activation of external account"
494 msgstr ""
495
496 #: rhodecode/controllers/admin/permissions.py:84
497 #: rhodecode/controllers/admin/permissions.py:87
498 #: rhodecode/controllers/admin/permissions.py:90
499 #: rhodecode/controllers/admin/permissions.py:93
445 msgid "Enabled"
500 msgid "Enabled"
446 msgstr "Autorisée"
501 msgstr "Autorisée"
447
502
448 #: rhodecode/controllers/admin/permissions.py:128
503 #: rhodecode/controllers/admin/permissions.py:138
449 msgid "Default permissions updated successfully"
504 msgid "Default permissions updated successfully"
450 msgstr "Permissions par défaut mises à jour avec succès"
505 msgstr "Permissions par défaut mises à jour avec succès"
451
506
452 #: rhodecode/controllers/admin/permissions.py:142
507 #: rhodecode/controllers/admin/permissions.py:152
453 #, fuzzy
508 #, fuzzy
454 msgid "Error occurred during update of permissions"
509 msgid "Error occurred during update of permissions"
455 msgstr "erreur pendant la mise à jour des permissions"
510 msgstr "erreur pendant la mise à jour des permissions"
456
511
457 #: rhodecode/controllers/admin/repos.py:127
512 #: rhodecode/controllers/admin/repos.py:128
458 msgid "--REMOVE FORK--"
513 msgid "--REMOVE FORK--"
459 msgstr "[Pas un fork]"
514 msgstr "[Pas un fork]"
460
515
@@ -473,250 +528,237 b' msgstr "Le d\xc3\xa9p\xc3\xb4t %s a \xc3\xa9t\xc3\xa9 cr\xc3\xa9\xc3\xa9."'
473 msgid "Error creating repository %s"
528 msgid "Error creating repository %s"
474 msgstr "Le dépôt %s a été créé."
529 msgstr "Le dépôt %s a été créé."
475
530
476 #: rhodecode/controllers/admin/repos.py:266
531 #: rhodecode/controllers/admin/repos.py:270
477 #, python-format
532 #, python-format
478 msgid "Repository %s updated successfully"
533 msgid "Repository %s updated successfully"
479 msgstr "Dépôt %s mis à jour avec succès."
534 msgstr "Dépôt %s mis à jour avec succès."
480
535
481 #: rhodecode/controllers/admin/repos.py:284
536 #: rhodecode/controllers/admin/repos.py:288
482 #, fuzzy, python-format
537 #, fuzzy, python-format
483 msgid "Error occurred during update of repository %s"
538 msgid "Error occurred during update of repository %s"
484 msgstr "Une erreur est survenue lors de la mise à jour du dépôt %s."
539 msgstr "Une erreur est survenue lors de la mise à jour du dépôt %s."
485
540
486 #: rhodecode/controllers/admin/repos.py:311
541 #: rhodecode/controllers/admin/repos.py:315
487 #: rhodecode/controllers/api/api.py:877
488 #, python-format
542 #, python-format
489 msgid "Detached %s forks"
543 msgid "Detached %s forks"
490 msgstr ""
544 msgstr ""
491
545
492 #: rhodecode/controllers/admin/repos.py:314
546 #: rhodecode/controllers/admin/repos.py:318
493 #: rhodecode/controllers/api/api.py:879
494 #, fuzzy, python-format
547 #, fuzzy, python-format
495 msgid "Deleted %s forks"
548 msgid "Deleted %s forks"
496 msgstr "Dépôt %s supprimé"
549 msgstr "Dépôt %s supprimé"
497
550
498 #: rhodecode/controllers/admin/repos.py:319
551 #: rhodecode/controllers/admin/repos.py:323
499 #, fuzzy, python-format
552 #, fuzzy, python-format
500 msgid "Deleted repository %s"
553 msgid "Deleted repository %s"
501 msgstr "Dépôt %s supprimé"
554 msgstr "Dépôt %s supprimé"
502
555
503 #: rhodecode/controllers/admin/repos.py:322
556 #: rhodecode/controllers/admin/repos.py:326
504 #, python-format
557 #, python-format
505 msgid "Cannot delete %s it still contains attached forks"
558 msgid "Cannot delete %s it still contains attached forks"
506 msgstr "Impossible de supprimer le dépôt %s : Des forks y sont attachés."
559 msgstr "Impossible de supprimer le dépôt %s : Des forks y sont attachés."
507
560
508 #: rhodecode/controllers/admin/repos.py:327
561 #: rhodecode/controllers/admin/repos.py:331
509 #, python-format
562 #, python-format
510 msgid "An error occurred during deletion of %s"
563 msgid "An error occurred during deletion of %s"
511 msgstr "Erreur pendant la suppression de %s"
564 msgstr "Erreur pendant la suppression de %s"
512
565
513 #: rhodecode/controllers/admin/repos.py:365
566 #: rhodecode/controllers/admin/repos.py:345
514 #, fuzzy
567 #, fuzzy
515 msgid "Repository permissions updated"
568 msgid "Repository permissions updated"
516 msgstr "Création de dépôt désactivée"
569 msgstr "Création de dépôt désactivée"
517
570
518 #: rhodecode/controllers/admin/repos.py:384
571 #: rhodecode/controllers/admin/repos.py:375
519 msgid "An error occurred during deletion of repository user"
572 #: rhodecode/controllers/admin/repos_groups.py:332
520 msgstr "Une erreur est survenue durant la suppression de l’utilisateur du dépôt."
573 #: rhodecode/controllers/admin/users_groups.py:312
521
574 #, fuzzy
522 #: rhodecode/controllers/admin/repos.py:403
575 msgid "An error occurred during revoking of permission"
523 #, fuzzy
576 msgstr "erreur pendant la mise à jour des permissions"
524 msgid "An error occurred during deletion of repository user groups"
577
525 msgstr ""
578 #: rhodecode/controllers/admin/repos.py:392
526 "Une erreur est survenue durant la suppression du groupe d’utilisateurs de"
527 " ce dépôt."
528
529 #: rhodecode/controllers/admin/repos.py:421
530 msgid "An error occurred during deletion of repository stats"
579 msgid "An error occurred during deletion of repository stats"
531 msgstr "Une erreur est survenue durant la suppression des statistiques du dépôt."
580 msgstr "Une erreur est survenue durant la suppression des statistiques du dépôt."
532
581
533 #: rhodecode/controllers/admin/repos.py:438
582 #: rhodecode/controllers/admin/repos.py:409
534 msgid "An error occurred during cache invalidation"
583 msgid "An error occurred during cache invalidation"
535 msgstr "Une erreur est survenue durant l’invalidation du cache."
584 msgstr "Une erreur est survenue durant l’invalidation du cache."
536
585
537 #: rhodecode/controllers/admin/repos.py:458
586 #: rhodecode/controllers/admin/repos.py:429
538 #: rhodecode/controllers/admin/repos.py:485
587 #: rhodecode/controllers/admin/repos.py:456
539 msgid "An error occurred during unlocking"
588 msgid "An error occurred during unlocking"
540 msgstr "Une erreur est survenue durant le déverrouillage."
589 msgstr "Une erreur est survenue durant le déverrouillage."
541
590
542 #: rhodecode/controllers/admin/repos.py:476
591 #: rhodecode/controllers/admin/repos.py:447
543 #, fuzzy
592 #, fuzzy
544 msgid "Unlocked"
593 msgid "Unlocked"
545 msgstr "déverrouillé"
594 msgstr "déverrouillé"
546
595
547 #: rhodecode/controllers/admin/repos.py:479
596 #: rhodecode/controllers/admin/repos.py:450
548 #, fuzzy
597 #, fuzzy
549 msgid "Locked"
598 msgid "Locked"
550 msgstr "verrouillé"
599 msgstr "verrouillé"
551
600
552 #: rhodecode/controllers/admin/repos.py:481
601 #: rhodecode/controllers/admin/repos.py:452
553 #, python-format
602 #, python-format
554 msgid "Repository has been %s"
603 msgid "Repository has been %s"
555 msgstr "Le dépôt a été %s."
604 msgstr "Le dépôt a été %s."
556
605
557 #: rhodecode/controllers/admin/repos.py:505
606 #: rhodecode/controllers/admin/repos.py:476
558 msgid "Updated repository visibility in public journal"
607 msgid "Updated repository visibility in public journal"
559 msgstr "La visibilité du dépôt dans le journal public a été mise à jour."
608 msgstr "La visibilité du dépôt dans le journal public a été mise à jour."
560
609
561 #: rhodecode/controllers/admin/repos.py:509
610 #: rhodecode/controllers/admin/repos.py:480
562 msgid "An error occurred during setting this repository in public journal"
611 msgid "An error occurred during setting this repository in public journal"
563 msgstr ""
612 msgstr ""
564 "Une erreur est survenue durant la configuration du journal public pour ce"
613 "Une erreur est survenue durant la configuration du journal public pour ce"
565 " dépôt."
614 " dépôt."
566
615
567 #: rhodecode/controllers/admin/repos.py:514 rhodecode/model/validators.py:302
616 #: rhodecode/controllers/admin/repos.py:485 rhodecode/model/validators.py:302
568 msgid "Token mismatch"
617 msgid "Token mismatch"
569 msgstr "Jeton d’authentification incorrect."
618 msgstr "Jeton d’authentification incorrect."
570
619
571 #: rhodecode/controllers/admin/repos.py:527
620 #: rhodecode/controllers/admin/repos.py:498
572 msgid "Pulled from remote location"
621 msgid "Pulled from remote location"
573 msgstr "Les changements distants ont été récupérés."
622 msgstr "Les changements distants ont été récupérés."
574
623
575 #: rhodecode/controllers/admin/repos.py:529
624 #: rhodecode/controllers/admin/repos.py:501
576 msgid "An error occurred during pull from remote location"
625 msgid "An error occurred during pull from remote location"
577 msgstr "Une erreur est survenue durant le pull depuis la source distante."
626 msgstr "Une erreur est survenue durant le pull depuis la source distante."
578
627
579 #: rhodecode/controllers/admin/repos.py:545
628 #: rhodecode/controllers/admin/repos.py:517
580 msgid "Nothing"
629 msgid "Nothing"
581 msgstr "[Aucun dépôt]"
630 msgstr "[Aucun dépôt]"
582
631
583 #: rhodecode/controllers/admin/repos.py:547
632 #: rhodecode/controllers/admin/repos.py:519
584 #, python-format
633 #, python-format
585 msgid "Marked repo %s as fork of %s"
634 msgid "Marked repo %s as fork of %s"
586 msgstr "Le dépôt %s a été marké comme fork de %s"
635 msgstr "Le dépôt %s a été marké comme fork de %s"
587
636
588 #: rhodecode/controllers/admin/repos.py:551
637 #: rhodecode/controllers/admin/repos.py:523
589 msgid "An error occurred during this operation"
638 msgid "An error occurred during this operation"
590 msgstr "Une erreur est survenue durant cette opération."
639 msgstr "Une erreur est survenue durant cette opération."
591
640
592 #: rhodecode/controllers/admin/repos.py:590
641 #: rhodecode/controllers/admin/repos.py:562
593 #, fuzzy
642 #, fuzzy
594 msgid "An error occurred during creation of field"
643 msgid "An error occurred during creation of field"
595 msgstr "Une erreur est survenue durant la création de l’utilisateur %s."
644 msgstr "Une erreur est survenue durant la création de l’utilisateur %s."
596
645
597 #: rhodecode/controllers/admin/repos.py:604
646 #: rhodecode/controllers/admin/repos.py:576
598 #, fuzzy
647 #, fuzzy
599 msgid "An error occurred during removal of field"
648 msgid "An error occurred during removal of field"
600 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
649 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
601
650
602 #: rhodecode/controllers/admin/repos_groups.py:145
651 #: rhodecode/controllers/admin/repos_groups.py:147
603 #, fuzzy, python-format
652 #, fuzzy, python-format
604 msgid "Created repository group %s"
653 msgid "Created repository group %s"
605 msgstr "Le groupe de dépôts %s a été créé."
654 msgstr "Le groupe de dépôts %s a été créé."
606
655
607 #: rhodecode/controllers/admin/repos_groups.py:157
656 #: rhodecode/controllers/admin/repos_groups.py:159
608 #, fuzzy, python-format
657 #, fuzzy, python-format
609 msgid "Error occurred during creation of repository group %s"
658 msgid "Error occurred during creation of repository group %s"
610 msgstr "Une erreur est survenue durant la création du groupe de dépôts %s."
659 msgstr "Une erreur est survenue durant la création du groupe de dépôts %s."
611
660
612 #: rhodecode/controllers/admin/repos_groups.py:214
661 #: rhodecode/controllers/admin/repos_groups.py:217
613 #: rhodecode/controllers/admin/repos_groups.py:286
614 msgid "Cannot revoke permission for yourself as admin"
615 msgstr ""
616
617 #: rhodecode/controllers/admin/repos_groups.py:220
618 #, fuzzy, python-format
662 #, fuzzy, python-format
619 msgid "Updated repository group %s"
663 msgid "Updated repository group %s"
620 msgstr "Le groupe de dépôts %s a été mis à jour."
664 msgstr "Le groupe de dépôts %s a été mis à jour."
621
665
622 #: rhodecode/controllers/admin/repos_groups.py:235
666 #: rhodecode/controllers/admin/repos_groups.py:232
623 #, fuzzy, python-format
667 #, fuzzy, python-format
624 msgid "Error occurred during update of repository group %s"
668 msgid "Error occurred during update of repository group %s"
625 msgstr "Une erreur est survenue durant la mise à jour du groupe de dépôts %s."
669 msgstr "Une erreur est survenue durant la mise à jour du groupe de dépôts %s."
626
670
627 #: rhodecode/controllers/admin/repos_groups.py:253
671 #: rhodecode/controllers/admin/repos_groups.py:250
628 #, python-format
672 #, python-format
629 msgid "This group contains %s repositores and cannot be deleted"
673 msgid "This group contains %s repositores and cannot be deleted"
630 msgstr "Ce groupe contient %s dépôts et ne peut être supprimé."
674 msgstr "Ce groupe contient %s dépôts et ne peut être supprimé."
631
675
632 #: rhodecode/controllers/admin/repos_groups.py:260
676 #: rhodecode/controllers/admin/repos_groups.py:257
633 #, fuzzy, python-format
677 #, fuzzy, python-format
634 msgid "This group contains %s subgroups and cannot be deleted"
678 msgid "This group contains %s subgroups and cannot be deleted"
635 msgstr "Ce groupe contient %s dépôts et ne peut être supprimé."
679 msgstr "Ce groupe contient %s dépôts et ne peut être supprimé."
636
680
637 #: rhodecode/controllers/admin/repos_groups.py:266
681 #: rhodecode/controllers/admin/repos_groups.py:263
638 #, fuzzy, python-format
682 #, fuzzy, python-format
639 msgid "Removed repository group %s"
683 msgid "Removed repository group %s"
640 msgstr "Le groupe de dépôts %s a été supprimé."
684 msgstr "Le groupe de dépôts %s a été supprimé."
641
685
642 #: rhodecode/controllers/admin/repos_groups.py:271
686 #: rhodecode/controllers/admin/repos_groups.py:268
643 #, fuzzy, python-format
687 #, fuzzy, python-format
644 msgid "Error occurred during deletion of repos group %s"
688 msgid "Error occurred during deletion of repos group %s"
645 msgstr "Une erreur est survenue durant la suppression du groupe de dépôts %s."
689 msgstr "Une erreur est survenue durant la suppression du groupe de dépôts %s."
646
690
647 #: rhodecode/controllers/admin/repos_groups.py:297
691 #: rhodecode/controllers/admin/repos_groups.py:279
648 msgid "An error occurred during deletion of group user"
692 #: rhodecode/controllers/admin/repos_groups.py:314
693 #: rhodecode/controllers/admin/users_groups.py:300
694 msgid "Cannot revoke permission for yourself as admin"
649 msgstr ""
695 msgstr ""
650 "Une erreur est survenue durant la suppression de l’utilisateur du groupe "
696
651 "de dépôts."
697 #: rhodecode/controllers/admin/repos_groups.py:294
652
698 #, fuzzy
653 #: rhodecode/controllers/admin/repos_groups.py:318
699 msgid "Repository Group permissions updated"
654 #, fuzzy
700 msgstr "Création de dépôt désactivée"
655 msgid "An error occurred during deletion of group user groups"
701
656 msgstr ""
702 #: rhodecode/controllers/admin/settings.py:123
657 "Une erreur est survenue durant la suppression du groupe d’utilisateurs du"
658 " groupe de dépôts."
659
660 #: rhodecode/controllers/admin/settings.py:126
661 #, fuzzy, python-format
703 #, fuzzy, python-format
662 msgid "Repositories successfully rescanned added: %s ; removed: %s"
704 msgid "Repositories successfully rescanned added: %s ; removed: %s"
663 msgstr "Après re-scan : %s ajouté(s), %s enlevé(s)"
705 msgstr "Après re-scan : %s ajouté(s), %s enlevé(s)"
664
706
665 #: rhodecode/controllers/admin/settings.py:135
707 #: rhodecode/controllers/admin/settings.py:132
666 msgid "Whoosh reindex task scheduled"
708 msgid "Whoosh reindex task scheduled"
667 msgstr "La tâche de réindexation Whoosh a été planifiée."
709 msgstr "La tâche de réindexation Whoosh a été planifiée."
668
710
669 #: rhodecode/controllers/admin/settings.py:166
711 #: rhodecode/controllers/admin/settings.py:163
670 msgid "Updated application settings"
712 msgid "Updated application settings"
671 msgstr "Réglages mis à jour"
713 msgstr "Réglages mis à jour"
672
714
673 #: rhodecode/controllers/admin/settings.py:170
715 #: rhodecode/controllers/admin/settings.py:167
674 #: rhodecode/controllers/admin/settings.py:301
716 #: rhodecode/controllers/admin/settings.py:304
675 #, fuzzy
717 #, fuzzy
676 msgid "Error occurred during updating application settings"
718 msgid "Error occurred during updating application settings"
677 msgstr "Une erreur est survenue durant la mise à jour des options."
719 msgstr "Une erreur est survenue durant la mise à jour des options."
678
720
679 #: rhodecode/controllers/admin/settings.py:216
721 #: rhodecode/controllers/admin/settings.py:219
680 msgid "Updated visualisation settings"
722 msgid "Updated visualisation settings"
681 msgstr "Réglages d’affichage mis à jour."
723 msgstr "Réglages d’affichage mis à jour."
682
724
683 #: rhodecode/controllers/admin/settings.py:221
725 #: rhodecode/controllers/admin/settings.py:224
684 #, fuzzy
726 #, fuzzy
685 msgid "Error occurred during updating visualisation settings"
727 msgid "Error occurred during updating visualisation settings"
686 msgstr "Une erreur est survenue durant la mise à jour des réglages d’affichages."
728 msgstr "Une erreur est survenue durant la mise à jour des réglages d’affichages."
687
729
688 #: rhodecode/controllers/admin/settings.py:297
730 #: rhodecode/controllers/admin/settings.py:300
689 msgid "Updated VCS settings"
731 msgid "Updated VCS settings"
690 msgstr "Réglages des gestionnaires de versions mis à jour."
732 msgstr "Réglages des gestionnaires de versions mis à jour."
691
733
692 #: rhodecode/controllers/admin/settings.py:311
734 #: rhodecode/controllers/admin/settings.py:314
693 msgid "Added new hook"
735 msgid "Added new hook"
694 msgstr "Le nouveau hook a été ajouté."
736 msgstr "Le nouveau hook a été ajouté."
695
737
696 #: rhodecode/controllers/admin/settings.py:323
738 #: rhodecode/controllers/admin/settings.py:326
697 msgid "Updated hooks"
739 msgid "Updated hooks"
698 msgstr "Hooks mis à jour"
740 msgstr "Hooks mis à jour"
699
741
700 #: rhodecode/controllers/admin/settings.py:327
742 #: rhodecode/controllers/admin/settings.py:330
701 #, fuzzy
743 #, fuzzy
702 msgid "Error occurred during hook creation"
744 msgid "Error occurred during hook creation"
703 msgstr "Une erreur est survenue durant la création du hook."
745 msgstr "Une erreur est survenue durant la création du hook."
704
746
705 #: rhodecode/controllers/admin/settings.py:346
747 #: rhodecode/controllers/admin/settings.py:349
706 msgid "Email task created"
748 msgid "Email task created"
707 msgstr "La tâche d’e-mail a été créée."
749 msgstr "La tâche d’e-mail a été créée."
708
750
709 #: rhodecode/controllers/admin/settings.py:410
751 #: rhodecode/controllers/admin/settings.py:413
710 msgid "You can't edit this user since it's crucial for entire application"
752 msgid "You can't edit this user since it's crucial for entire application"
711 msgstr ""
753 msgstr ""
712 "Vous ne pouvez pas éditer cet utilisateur ; il est nécessaire pour le bon"
754 "Vous ne pouvez pas éditer cet utilisateur ; il est nécessaire pour le bon"
713 " fonctionnement de l’application."
755 " fonctionnement de l’application."
714
756
715 #: rhodecode/controllers/admin/settings.py:452
757 #: rhodecode/controllers/admin/settings.py:455
716 msgid "Your account was updated successfully"
758 msgid "Your account was updated successfully"
717 msgstr "Votre compte a été mis à jour avec succès"
759 msgstr "Votre compte a été mis à jour avec succès"
718
760
719 #: rhodecode/controllers/admin/settings.py:467
761 #: rhodecode/controllers/admin/settings.py:470
720 #: rhodecode/controllers/admin/users.py:198
762 #: rhodecode/controllers/admin/users.py:198
721 #, fuzzy, python-format
763 #, fuzzy, python-format
722 msgid "Error occurred during update of user %s"
764 msgid "Error occurred during update of user %s"
@@ -745,123 +787,98 b' msgstr "L\xe2\x80\x99utilisateur a \xc3\xa9t\xc3\xa9 supprim\xc3\xa9 avec succ\xc3\xa8s."'
745 msgid "An error occurred during deletion of user"
787 msgid "An error occurred during deletion of user"
746 msgstr "Une erreur est survenue durant la suppression de l’utilisateur."
788 msgstr "Une erreur est survenue durant la suppression de l’utilisateur."
747
789
748 #: rhodecode/controllers/admin/users.py:233
790 #: rhodecode/controllers/admin/users.py:234
749 msgid "You can't edit this user"
791 msgid "You can't edit this user"
750 msgstr "Vous ne pouvez pas éditer cet utilisateur"
792 msgstr "Vous ne pouvez pas éditer cet utilisateur"
751
793
752 #: rhodecode/controllers/admin/users.py:276
794 #: rhodecode/controllers/admin/users.py:293
753 msgid "Granted 'repository create' permission to user"
795 #: rhodecode/controllers/admin/users_groups.py:372
754 msgstr "La permission de création de dépôts a été accordée à l’utilisateur."
796 #, fuzzy
755
797 msgid "Updated permissions"
756 #: rhodecode/controllers/admin/users.py:281
798 msgstr "Copier les permissions"
757 msgid "Revoked 'repository create' permission to user"
799
758 msgstr "La permission de création de dépôts a été révoquée à l’utilisateur."
800 #: rhodecode/controllers/admin/users.py:297
759
801 #: rhodecode/controllers/admin/users_groups.py:376
760 #: rhodecode/controllers/admin/users.py:287
761 msgid "Granted 'repository fork' permission to user"
762 msgstr "La permission de fork de dépôts a été accordée à l’utilisateur."
763
764 #: rhodecode/controllers/admin/users.py:292
765 msgid "Revoked 'repository fork' permission to user"
766 msgstr "La permission de fork de dépôts a été révoquée à l’utilisateur."
767
768 #: rhodecode/controllers/admin/users.py:298
769 #: rhodecode/controllers/admin/users_groups.py:281
770 msgid "An error occurred during permissions saving"
802 msgid "An error occurred during permissions saving"
771 msgstr "Une erreur est survenue durant l’enregistrement des permissions."
803 msgstr "Une erreur est survenue durant l’enregistrement des permissions."
772
804
773 #: rhodecode/controllers/admin/users.py:312
805 #: rhodecode/controllers/admin/users.py:311
774 #, python-format
806 #, python-format
775 msgid "Added email %s to user"
807 msgid "Added email %s to user"
776 msgstr "L’e-mail « %s » a été ajouté à l’utilisateur."
808 msgstr "L’e-mail « %s » a été ajouté à l’utilisateur."
777
809
778 #: rhodecode/controllers/admin/users.py:318
810 #: rhodecode/controllers/admin/users.py:317
779 msgid "An error occurred during email saving"
811 msgid "An error occurred during email saving"
780 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
812 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
781
813
782 #: rhodecode/controllers/admin/users.py:328
814 #: rhodecode/controllers/admin/users.py:327
783 msgid "Removed email from user"
815 msgid "Removed email from user"
784 msgstr "L’e-mail a été enlevé de l’utilisateur."
816 msgstr "L’e-mail a été enlevé de l’utilisateur."
785
817
786 #: rhodecode/controllers/admin/users.py:341
818 #: rhodecode/controllers/admin/users.py:340
787 #, fuzzy, python-format
819 #, fuzzy, python-format
788 msgid "Added ip %s to user"
820 msgid "Added ip %s to user"
789 msgstr "L’e-mail « %s » a été ajouté à l’utilisateur."
821 msgstr "L’e-mail « %s » a été ajouté à l’utilisateur."
790
822
791 #: rhodecode/controllers/admin/users.py:347
823 #: rhodecode/controllers/admin/users.py:346
792 #, fuzzy
824 #, fuzzy
793 msgid "An error occurred during ip saving"
825 msgid "An error occurred during ip saving"
794 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
826 msgstr "Une erreur est survenue durant l’enregistrement de l’e-mail."
795
827
796 #: rhodecode/controllers/admin/users.py:359
828 #: rhodecode/controllers/admin/users.py:358
797 #, fuzzy
829 #, fuzzy
798 msgid "Removed ip from user"
830 msgid "Removed ip from user"
799 msgstr "L’e-mail a été enlevé de l’utilisateur."
831 msgstr "L’e-mail a été enlevé de l’utilisateur."
800
832
801 #: rhodecode/controllers/admin/users_groups.py:86
833 #: rhodecode/controllers/admin/users_groups.py:162
802 #, fuzzy, python-format
834 #, fuzzy, python-format
803 msgid "Created user group %s"
835 msgid "Created user group %s"
804 msgstr "Le groupe d’utilisateurs %s a été créé."
836 msgstr "Le groupe d’utilisateurs %s a été créé."
805
837
806 #: rhodecode/controllers/admin/users_groups.py:97
838 #: rhodecode/controllers/admin/users_groups.py:173
807 #, fuzzy, python-format
839 #, fuzzy, python-format
808 msgid "Error occurred during creation of user group %s"
840 msgid "Error occurred during creation of user group %s"
809 msgstr "Une erreur est survenue durant la création du groupe d’utilisateurs %s."
841 msgstr "Une erreur est survenue durant la création du groupe d’utilisateurs %s."
810
842
811 #: rhodecode/controllers/admin/users_groups.py:166
843 #: rhodecode/controllers/admin/users_groups.py:210
812 #, fuzzy, python-format
844 #, fuzzy, python-format
813 msgid "Updated user group %s"
845 msgid "Updated user group %s"
814 msgstr "Le groupe d’utilisateurs %s a été mis à jour."
846 msgstr "Le groupe d’utilisateurs %s a été mis à jour."
815
847
816 #: rhodecode/controllers/admin/users_groups.py:188
848 #: rhodecode/controllers/admin/users_groups.py:232
817 #, fuzzy, python-format
849 #, fuzzy, python-format
818 msgid "Error occurred during update of user group %s"
850 msgid "Error occurred during update of user group %s"
819 msgstr "Une erreur est survenue durant la mise à jour du groupe d’utilisateurs %s."
851 msgstr "Une erreur est survenue durant la mise à jour du groupe d’utilisateurs %s."
820
852
821 #: rhodecode/controllers/admin/users_groups.py:205
853 #: rhodecode/controllers/admin/users_groups.py:250
822 #, fuzzy
854 #, fuzzy
823 msgid "Successfully deleted user group"
855 msgid "Successfully deleted user group"
824 msgstr "Le groupe d’utilisateurs a été supprimé avec succès."
856 msgstr "Le groupe d’utilisateurs a été supprimé avec succès."
825
857
826 #: rhodecode/controllers/admin/users_groups.py:210
858 #: rhodecode/controllers/admin/users_groups.py:255
827 #, fuzzy
859 #, fuzzy
828 msgid "An error occurred during deletion of user group"
860 msgid "An error occurred during deletion of user group"
829 msgstr "Une erreur est survenue lors de la suppression du groupe d’utilisateurs."
861 msgstr "Une erreur est survenue lors de la suppression du groupe d’utilisateurs."
830
862
831 #: rhodecode/controllers/admin/users_groups.py:259
863 #: rhodecode/controllers/admin/users_groups.py:274
832 #, fuzzy
864 msgid "Target group cannot be the same"
833 msgid "Granted 'repository create' permission to user group"
834 msgstr ""
835 "La permission de création de dépôts a été accordée au groupe "
836 "d’utilisateurs."
837
838 #: rhodecode/controllers/admin/users_groups.py:264
839 #, fuzzy
840 msgid "Revoked 'repository create' permission to user group"
841 msgstr ""
865 msgstr ""
842 "La permission de création de dépôts a été révoquée au groupe "
866
843 "d’utilisateurs."
867 #: rhodecode/controllers/admin/users_groups.py:280
844
868 #, fuzzy
845 #: rhodecode/controllers/admin/users_groups.py:270
869 msgid "User Group permissions updated"
846 #, fuzzy
870 msgstr "Création de dépôt désactivée"
847 msgid "Granted 'repository fork' permission to user group"
871
848 msgstr "La permission de fork de dépôts a été accordée au groupe d’utilisateur."
872 #: rhodecode/lib/auth.py:544
849
850 #: rhodecode/controllers/admin/users_groups.py:275
851 #, fuzzy
852 msgid "Revoked 'repository fork' permission to user group"
853 msgstr "La permission de fork de dépôts a été révoquée au groupe d’utilisateurs."
854
855 #: rhodecode/lib/auth.py:530
856 #, fuzzy, python-format
873 #, fuzzy, python-format
857 msgid "IP %s not allowed"
874 msgid "IP %s not allowed"
858 msgstr "Followers de %s"
875 msgstr "Followers de %s"
859
876
860 #: rhodecode/lib/auth.py:579
877 #: rhodecode/lib/auth.py:593
861 msgid "You need to be a registered user to perform this action"
878 msgid "You need to be a registered user to perform this action"
862 msgstr "Vous devez être un utilisateur enregistré pour effectuer cette action."
879 msgstr "Vous devez être un utilisateur enregistré pour effectuer cette action."
863
880
864 #: rhodecode/lib/auth.py:620
881 #: rhodecode/lib/auth.py:634
865 msgid "You need to be a signed in to view this page"
882 msgid "You need to be a signed in to view this page"
866 msgstr "Vous devez être connecté pour visualiser cette page."
883 msgstr "Vous devez être connecté pour visualiser cette page."
867
884
@@ -880,154 +897,183 b' msgstr ""'
880 msgid "No changes detected"
897 msgid "No changes detected"
881 msgstr "Aucun changement détecté."
898 msgstr "Aucun changement détecté."
882
899
883 #: rhodecode/lib/helpers.py:394
900 #: rhodecode/lib/helpers.py:428
884 #, python-format
901 #, python-format
885 msgid "%a, %d %b %Y %H:%M:%S"
902 msgid "%a, %d %b %Y %H:%M:%S"
886 msgstr "%d/%m/%Y à %H:%M:%S"
903 msgstr "%d/%m/%Y à %H:%M:%S"
887
904
888 #: rhodecode/lib/helpers.py:506
905 #: rhodecode/lib/helpers.py:539
889 msgid "True"
906 msgid "True"
890 msgstr "Vrai"
907 msgstr "Vrai"
891
908
892 #: rhodecode/lib/helpers.py:509
909 #: rhodecode/lib/helpers.py:542
893 msgid "False"
910 msgid "False"
894 msgstr "Faux"
911 msgstr "Faux"
895
912
896 #: rhodecode/lib/helpers.py:547
913 #: rhodecode/lib/helpers.py:580
897 #, fuzzy, python-format
914 #, fuzzy, python-format
898 msgid "Deleted branch: %s"
915 msgid "Deleted branch: %s"
899 msgstr "Dépôt %s supprimé"
916 msgstr "Dépôt %s supprimé"
900
917
901 #: rhodecode/lib/helpers.py:550
918 #: rhodecode/lib/helpers.py:583
902 #, fuzzy, python-format
919 #, fuzzy, python-format
903 msgid "Created tag: %s"
920 msgid "Created tag: %s"
904 msgstr "utilisateur %s créé"
921 msgstr "utilisateur %s créé"
905
922
906 #: rhodecode/lib/helpers.py:563
923 #: rhodecode/lib/helpers.py:596
907 msgid "Changeset not found"
924 msgid "Changeset not found"
908 msgstr "Ensemble de changements non trouvé"
925 msgstr "Ensemble de changements non trouvé"
909
926
910 #: rhodecode/lib/helpers.py:615
927 #: rhodecode/lib/helpers.py:646
911 #, python-format
928 #, python-format
912 msgid "Show all combined changesets %s->%s"
929 msgid "Show all combined changesets %s->%s"
913 msgstr "Afficher les changements combinés %s->%s"
930 msgstr "Afficher les changements combinés %s->%s"
914
931
915 #: rhodecode/lib/helpers.py:621
932 #: rhodecode/lib/helpers.py:652
916 msgid "compare view"
933 msgid "compare view"
917 msgstr "vue de comparaison"
934 msgstr "vue de comparaison"
918
935
919 #: rhodecode/lib/helpers.py:641
936 #: rhodecode/lib/helpers.py:672
920 msgid "and"
937 msgid "and"
921 msgstr "et"
938 msgstr "et"
922
939
923 #: rhodecode/lib/helpers.py:642
940 #: rhodecode/lib/helpers.py:673
924 #, python-format
941 #, python-format
925 msgid "%s more"
942 msgid "%s more"
926 msgstr "%s de plus"
943 msgstr "%s de plus"
927
944
928 #: rhodecode/lib/helpers.py:643 rhodecode/templates/changelog/changelog.html:44
945 #: rhodecode/lib/helpers.py:674 rhodecode/templates/changelog/changelog.html:53
929 msgid "revisions"
946 msgid "revisions"
930 msgstr "révisions"
947 msgstr "révisions"
931
948
932 #: rhodecode/lib/helpers.py:667
949 #: rhodecode/lib/helpers.py:698
933 #, fuzzy, python-format
950 #, fuzzy, python-format
934 msgid "fork name %s"
951 msgid "fork name %s"
935 msgstr "Nom du fork %s"
952 msgstr "Nom du fork %s"
936
953
937 #: rhodecode/lib/helpers.py:684
954 #: rhodecode/lib/helpers.py:715
938 #: rhodecode/templates/pullrequests/pullrequest_show.html:8
955 #: rhodecode/templates/pullrequests/pullrequest_show.html:8
939 #, python-format
956 #, python-format
940 msgid "Pull request #%s"
957 msgid "Pull request #%s"
941 msgstr "Requête de pull #%s"
958 msgstr "Requête de pull #%s"
942
959
943 #: rhodecode/lib/helpers.py:690
960 #: rhodecode/lib/helpers.py:725
944 msgid "[deleted] repository"
961 msgid "[deleted] repository"
945 msgstr "[a supprimé] le dépôt"
962 msgstr "[a supprimé] le dépôt"
946
963
947 #: rhodecode/lib/helpers.py:692 rhodecode/lib/helpers.py:702
964 #: rhodecode/lib/helpers.py:727 rhodecode/lib/helpers.py:739
948 msgid "[created] repository"
965 msgid "[created] repository"
949 msgstr "[a créé] le dépôt"
966 msgstr "[a créé] le dépôt"
950
967
951 #: rhodecode/lib/helpers.py:694
968 #: rhodecode/lib/helpers.py:729
952 msgid "[created] repository as fork"
969 msgid "[created] repository as fork"
953 msgstr "[a créé] le dépôt en tant que fork"
970 msgstr "[a créé] le dépôt en tant que fork"
954
971
955 #: rhodecode/lib/helpers.py:696 rhodecode/lib/helpers.py:704
972 #: rhodecode/lib/helpers.py:731 rhodecode/lib/helpers.py:741
956 msgid "[forked] repository"
973 msgid "[forked] repository"
957 msgstr "[a forké] le dépôt"
974 msgstr "[a forké] le dépôt"
958
975
959 #: rhodecode/lib/helpers.py:698 rhodecode/lib/helpers.py:706
976 #: rhodecode/lib/helpers.py:733 rhodecode/lib/helpers.py:743
960 msgid "[updated] repository"
977 msgid "[updated] repository"
961 msgstr "[a mis à jour] le dépôt"
978 msgstr "[a mis à jour] le dépôt"
962
979
963 #: rhodecode/lib/helpers.py:700
980 #: rhodecode/lib/helpers.py:735
981 #, fuzzy
982 msgid "[downloaded] archive from repository"
983 msgstr "Les téléchargements sont désactivés pour ce dépôt."
984
985 #: rhodecode/lib/helpers.py:737
964 msgid "[delete] repository"
986 msgid "[delete] repository"
965 msgstr "[a supprimé] le dépôt"
987 msgstr "[a supprimé] le dépôt"
966
988
967 #: rhodecode/lib/helpers.py:708
989 #: rhodecode/lib/helpers.py:745
968 msgid "[created] user"
990 msgid "[created] user"
969 msgstr "[a créé] l’utilisateur"
991 msgstr "[a créé] l’utilisateur"
970
992
971 #: rhodecode/lib/helpers.py:710
993 #: rhodecode/lib/helpers.py:747
972 msgid "[updated] user"
994 msgid "[updated] user"
973 msgstr "[a mis à jour] l’utilisateur"
995 msgstr "[a mis à jour] l’utilisateur"
974
996
975 #: rhodecode/lib/helpers.py:712
997 #: rhodecode/lib/helpers.py:749
976 #, fuzzy
998 #, fuzzy
977 msgid "[created] user group"
999 msgid "[created] user group"
978 msgstr "[a créé] le groupe d’utilisateurs"
1000 msgstr "[a créé] le groupe d’utilisateurs"
979
1001
980 #: rhodecode/lib/helpers.py:714
1002 #: rhodecode/lib/helpers.py:751
981 #, fuzzy
1003 #, fuzzy
982 msgid "[updated] user group"
1004 msgid "[updated] user group"
983 msgstr "[a mis à jour] le groupe d’utilisateurs"
1005 msgstr "[a mis à jour] le groupe d’utilisateurs"
984
1006
985 #: rhodecode/lib/helpers.py:716
1007 #: rhodecode/lib/helpers.py:753
986 msgid "[commented] on revision in repository"
1008 msgid "[commented] on revision in repository"
987 msgstr "[a commenté] une révision du dépôt"
1009 msgstr "[a commenté] une révision du dépôt"
988
1010
989 #: rhodecode/lib/helpers.py:718
1011 #: rhodecode/lib/helpers.py:755
990 msgid "[commented] on pull request for"
1012 msgid "[commented] on pull request for"
991 msgstr "[a commenté] la requête de pull pour"
1013 msgstr "[a commenté] la requête de pull pour"
992
1014
993 #: rhodecode/lib/helpers.py:720
1015 #: rhodecode/lib/helpers.py:757
994 msgid "[closed] pull request for"
1016 msgid "[closed] pull request for"
995 msgstr "[a fermé] la requête de pull de"
1017 msgstr "[a fermé] la requête de pull de"
996
1018
997 #: rhodecode/lib/helpers.py:722
1019 #: rhodecode/lib/helpers.py:759
998 msgid "[pushed] into"
1020 msgid "[pushed] into"
999 msgstr "[a pushé] dans"
1021 msgstr "[a pushé] dans"
1000
1022
1001 #: rhodecode/lib/helpers.py:724
1023 #: rhodecode/lib/helpers.py:761
1002 msgid "[committed via RhodeCode] into repository"
1024 msgid "[committed via RhodeCode] into repository"
1003 msgstr "[a commité via RhodeCode] dans le dépôt"
1025 msgstr "[a commité via RhodeCode] dans le dépôt"
1004
1026
1005 #: rhodecode/lib/helpers.py:726
1027 #: rhodecode/lib/helpers.py:763
1006 msgid "[pulled from remote] into repository"
1028 msgid "[pulled from remote] into repository"
1007 msgstr "[a pullé depuis un site distant] dans le dépôt"
1029 msgstr "[a pullé depuis un site distant] dans le dépôt"
1008
1030
1009 #: rhodecode/lib/helpers.py:728
1031 #: rhodecode/lib/helpers.py:765
1010 msgid "[pulled] from"
1032 msgid "[pulled] from"
1011 msgstr "[a pullé] depuis"
1033 msgstr "[a pullé] depuis"
1012
1034
1013 #: rhodecode/lib/helpers.py:730
1035 #: rhodecode/lib/helpers.py:767
1014 msgid "[started following] repository"
1036 msgid "[started following] repository"
1015 msgstr "[suit maintenant] le dépôt"
1037 msgstr "[suit maintenant] le dépôt"
1016
1038
1017 #: rhodecode/lib/helpers.py:732
1039 #: rhodecode/lib/helpers.py:769
1018 msgid "[stopped following] repository"
1040 msgid "[stopped following] repository"
1019 msgstr "[ne suit plus] le dépôt"
1041 msgstr "[ne suit plus] le dépôt"
1020
1042
1021 #: rhodecode/lib/helpers.py:910
1043 #: rhodecode/lib/helpers.py:1088
1022 #, python-format
1044 #, python-format
1023 msgid " and %s more"
1045 msgid " and %s more"
1024 msgstr "et %s de plus"
1046 msgstr "et %s de plus"
1025
1047
1026 #: rhodecode/lib/helpers.py:914
1048 #: rhodecode/lib/helpers.py:1092
1027 msgid "No Files"
1049 msgid "No Files"
1028 msgstr "Aucun fichier"
1050 msgstr "Aucun fichier"
1029
1051
1030 #: rhodecode/lib/helpers.py:1198
1052 #: rhodecode/lib/helpers.py:1158
1053 #, fuzzy
1054 msgid "new file"
1055 msgstr "Ajouter un nouveau fichier"
1056
1057 #: rhodecode/lib/helpers.py:1161
1058 #, fuzzy
1059 msgid "mod"
1060 msgstr "Supprimés"
1061
1062 #: rhodecode/lib/helpers.py:1164
1063 #, fuzzy
1064 msgid "del"
1065 msgstr "Supprimer"
1066
1067 #: rhodecode/lib/helpers.py:1167
1068 #, fuzzy
1069 msgid "rename"
1070 msgstr "Nom d’utilisateur"
1071
1072 #: rhodecode/lib/helpers.py:1172
1073 msgid "chmod"
1074 msgstr ""
1075
1076 #: rhodecode/lib/helpers.py:1404
1031 #, python-format
1077 #, python-format
1032 msgid ""
1078 msgid ""
1033 "%s repository is not mapped to db perhaps it was created or renamed from "
1079 "%s repository is not mapped to db perhaps it was created or renamed from "
@@ -1043,225 +1089,314 b' msgstr ""'
1043 msgid "cannot create new union repository"
1089 msgid "cannot create new union repository"
1044 msgstr "[a créé] le dépôt"
1090 msgstr "[a créé] le dépôt"
1045
1091
1046 #: rhodecode/lib/utils2.py:411
1092 #: rhodecode/lib/utils2.py:410
1047 #, python-format
1093 #, python-format
1048 msgid "%d year"
1094 msgid "%d year"
1049 msgid_plural "%d years"
1095 msgid_plural "%d years"
1050 msgstr[0] "%d an"
1096 msgstr[0] "%d an"
1051 msgstr[1] "%d ans"
1097 msgstr[1] "%d ans"
1052
1098
1053 #: rhodecode/lib/utils2.py:412
1099 #: rhodecode/lib/utils2.py:411
1054 #, python-format
1100 #, python-format
1055 msgid "%d month"
1101 msgid "%d month"
1056 msgid_plural "%d months"
1102 msgid_plural "%d months"
1057 msgstr[0] "%d mois"
1103 msgstr[0] "%d mois"
1058 msgstr[1] "%d mois"
1104 msgstr[1] "%d mois"
1059
1105
1060 #: rhodecode/lib/utils2.py:413
1106 #: rhodecode/lib/utils2.py:412
1061 #, python-format
1107 #, python-format
1062 msgid "%d day"
1108 msgid "%d day"
1063 msgid_plural "%d days"
1109 msgid_plural "%d days"
1064 msgstr[0] "%d jour"
1110 msgstr[0] "%d jour"
1065 msgstr[1] "%d jours"
1111 msgstr[1] "%d jours"
1066
1112
1067 #: rhodecode/lib/utils2.py:414
1113 #: rhodecode/lib/utils2.py:413
1068 #, python-format
1114 #, python-format
1069 msgid "%d hour"
1115 msgid "%d hour"
1070 msgid_plural "%d hours"
1116 msgid_plural "%d hours"
1071 msgstr[0] "%d heure"
1117 msgstr[0] "%d heure"
1072 msgstr[1] "%d heures"
1118 msgstr[1] "%d heures"
1073
1119
1074 #: rhodecode/lib/utils2.py:415
1120 #: rhodecode/lib/utils2.py:414
1075 #, python-format
1121 #, python-format
1076 msgid "%d minute"
1122 msgid "%d minute"
1077 msgid_plural "%d minutes"
1123 msgid_plural "%d minutes"
1078 msgstr[0] "%d minute"
1124 msgstr[0] "%d minute"
1079 msgstr[1] "%d minutes"
1125 msgstr[1] "%d minutes"
1080
1126
1081 #: rhodecode/lib/utils2.py:416
1127 #: rhodecode/lib/utils2.py:415
1082 #, python-format
1128 #, python-format
1083 msgid "%d second"
1129 msgid "%d second"
1084 msgid_plural "%d seconds"
1130 msgid_plural "%d seconds"
1085 msgstr[0] "%d seconde"
1131 msgstr[0] "%d seconde"
1086 msgstr[1] "%d secondes"
1132 msgstr[1] "%d secondes"
1087
1133
1088 #: rhodecode/lib/utils2.py:432
1134 #: rhodecode/lib/utils2.py:431
1089 #, fuzzy, python-format
1135 #, fuzzy, python-format
1090 msgid "in %s"
1136 msgid "in %s"
1091 msgstr "à la ligne %s"
1137 msgstr "à la ligne %s"
1092
1138
1093 #: rhodecode/lib/utils2.py:434
1139 #: rhodecode/lib/utils2.py:433
1094 #, python-format
1140 #, python-format
1095 msgid "%s ago"
1141 msgid "%s ago"
1096 msgstr "Il y a %s"
1142 msgstr "Il y a %s"
1097
1143
1098 #: rhodecode/lib/utils2.py:436
1144 #: rhodecode/lib/utils2.py:435
1099 #, fuzzy, python-format
1145 #, fuzzy, python-format
1100 msgid "in %s and %s"
1146 msgid "in %s and %s"
1101 msgstr "Il y a %s et %s"
1147 msgstr "Il y a %s et %s"
1102
1148
1103 #: rhodecode/lib/utils2.py:439
1149 #: rhodecode/lib/utils2.py:438
1104 #, python-format
1150 #, python-format
1105 msgid "%s and %s ago"
1151 msgid "%s and %s ago"
1106 msgstr "Il y a %s et %s"
1152 msgstr "Il y a %s et %s"
1107
1153
1108 #: rhodecode/lib/utils2.py:442
1154 #: rhodecode/lib/utils2.py:441
1109 msgid "just now"
1155 msgid "just now"
1110 msgstr "à l’instant"
1156 msgstr "à l’instant"
1111
1157
1112 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163
1158 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163
1113 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1183
1159 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1183
1114 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1289 rhodecode/model/db.py:1388
1160 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1303
1161 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1388
1162 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1408 rhodecode/model/db.py:1413
1115 msgid "Repository no access"
1163 msgid "Repository no access"
1116 msgstr "Aucun accès au dépôt"
1164 msgstr "Aucun accès au dépôt"
1117
1165
1118 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164
1166 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164
1119 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1184
1167 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1184
1120 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1290 rhodecode/model/db.py:1389
1168 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1304
1169 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1389
1170 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1409 rhodecode/model/db.py:1414
1121 msgid "Repository read access"
1171 msgid "Repository read access"
1122 msgstr "Accès en lecture au dépôt"
1172 msgstr "Accès en lecture au dépôt"
1123
1173
1124 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165
1174 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165
1125 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1185
1175 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1185
1126 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1291 rhodecode/model/db.py:1390
1176 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1305
1177 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1390
1178 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1410 rhodecode/model/db.py:1415
1127 msgid "Repository write access"
1179 msgid "Repository write access"
1128 msgstr "Accès en écriture au dépôt"
1180 msgstr "Accès en écriture au dépôt"
1129
1181
1130 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166
1182 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166
1131 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1186
1183 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1186
1132 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1292 rhodecode/model/db.py:1391
1184 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1306
1185 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1391
1186 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1411 rhodecode/model/db.py:1416
1133 msgid "Repository admin access"
1187 msgid "Repository admin access"
1134 msgstr "Accès administrateur au dépôt"
1188 msgstr "Accès administrateur au dépôt"
1135
1189
1136 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168
1190 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168
1137 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1188
1191 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1188
1138 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1294
1192 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1308
1139 msgid "Repositories Group no access"
1193 msgid "Repositories Group no access"
1140 msgstr "Aucun accès au groupe de dépôts"
1194 msgstr "Aucun accès au groupe de dépôts"
1141
1195
1142 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169
1196 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169
1143 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1189
1197 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1189
1144 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1295
1198 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1309
1145 msgid "Repositories Group read access"
1199 msgid "Repositories Group read access"
1146 msgstr "Accès en lecture au groupe de dépôts"
1200 msgstr "Accès en lecture au groupe de dépôts"
1147
1201
1148 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170
1202 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170
1149 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1190
1203 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1190
1150 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1296
1204 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1310
1151 msgid "Repositories Group write access"
1205 msgid "Repositories Group write access"
1152 msgstr "Accès en écriture au groupe de dépôts"
1206 msgstr "Accès en écriture au groupe de dépôts"
1153
1207
1154 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171
1208 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171
1155 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1191
1209 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1191
1156 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1297
1210 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1311
1157 msgid "Repositories Group admin access"
1211 msgid "Repositories Group admin access"
1158 msgstr "Accès administrateur au groupe de dépôts"
1212 msgstr "Accès administrateur au groupe de dépôts"
1159
1213
1160 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173
1214 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173
1161 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1193
1215 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1193
1162 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1299 rhodecode/model/db.py:1398
1216 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1313
1217 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1398
1218 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1406 rhodecode/model/db.py:1411
1163 msgid "RhodeCode Administrator"
1219 msgid "RhodeCode Administrator"
1164 msgstr "Administrateur RhodeCode"
1220 msgstr "Administrateur RhodeCode"
1165
1221
1166 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174
1222 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174
1167 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1194
1223 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1194
1168 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1300 rhodecode/model/db.py:1399
1224 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1314
1225 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1399
1226 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1429 rhodecode/model/db.py:1434
1169 msgid "Repository creation disabled"
1227 msgid "Repository creation disabled"
1170 msgstr "Création de dépôt désactivée"
1228 msgstr "Création de dépôt désactivée"
1171
1229
1172 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175
1230 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175
1173 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1195
1231 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1195
1174 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1301 rhodecode/model/db.py:1400
1232 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1315
1233 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1400
1234 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1430 rhodecode/model/db.py:1435
1175 msgid "Repository creation enabled"
1235 msgid "Repository creation enabled"
1176 msgstr "Création de dépôt activée"
1236 msgstr "Création de dépôt activée"
1177
1237
1178 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176
1238 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176
1179 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1196
1239 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1196
1180 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1302 rhodecode/model/db.py:1401
1240 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1316
1241 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1401
1242 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1432 rhodecode/model/db.py:1437
1181 msgid "Repository forking disabled"
1243 msgid "Repository forking disabled"
1182 msgstr "Fork de dépôt désactivé"
1244 msgstr "Fork de dépôt désactivé"
1183
1245
1184 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177
1246 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177
1185 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1197
1247 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1197
1186 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1303 rhodecode/model/db.py:1402
1248 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1317
1249 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1402
1250 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1433 rhodecode/model/db.py:1438
1187 msgid "Repository forking enabled"
1251 msgid "Repository forking enabled"
1188 msgstr "Fork de dépôt activé"
1252 msgstr "Fork de dépôt activé"
1189
1253
1190 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178
1254 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178
1191 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1198
1255 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1198
1192 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1304 rhodecode/model/db.py:1403
1256 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1318
1257 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1403
1193 msgid "Register disabled"
1258 msgid "Register disabled"
1194 msgstr "Enregistrement désactivé"
1259 msgstr "Enregistrement désactivé"
1195
1260
1196 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179
1261 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179
1197 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1199
1262 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1199
1198 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1305 rhodecode/model/db.py:1404
1263 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1319
1264 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1404
1199 msgid "Register new user with RhodeCode with manual activation"
1265 msgid "Register new user with RhodeCode with manual activation"
1200 msgstr "Enregistrer un nouvel utilisateur Rhodecode manuellement activé"
1266 msgstr "Enregistrer un nouvel utilisateur Rhodecode manuellement activé"
1201
1267
1202 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182
1268 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182
1203 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1202
1269 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1202
1204 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1308 rhodecode/model/db.py:1407
1270 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1322
1271 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1407
1205 msgid "Register new user with RhodeCode with auto activation"
1272 msgid "Register new user with RhodeCode with auto activation"
1206 msgstr "Enregistrer un nouvel utilisateur Rhodecode auto-activé"
1273 msgstr "Enregistrer un nouvel utilisateur Rhodecode auto-activé"
1207
1274
1208 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623
1275 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623
1209 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1643
1276 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1643
1210 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1749 rhodecode/model/db.py:1838
1277 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1763
1278 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1838
1279 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1934 rhodecode/model/db.py:1939
1211 msgid "Not Reviewed"
1280 msgid "Not Reviewed"
1212 msgstr "Pas encore relue"
1281 msgstr "Pas encore relue"
1213
1282
1214 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624
1283 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624
1215 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1644
1284 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1644
1216 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1750 rhodecode/model/db.py:1839
1285 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1764
1286 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1839
1287 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1935 rhodecode/model/db.py:1940
1217 msgid "Approved"
1288 msgid "Approved"
1218 msgstr "Approuvée "
1289 msgstr "Approuvée "
1219
1290
1220 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625
1291 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625
1221 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1645
1292 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1645
1222 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1751 rhodecode/model/db.py:1840
1293 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1765
1294 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1840
1295 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1936 rhodecode/model/db.py:1941
1223 msgid "Rejected"
1296 msgid "Rejected"
1224 msgstr "Rejetée"
1297 msgstr "Rejetée"
1225
1298
1226 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626
1299 #: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626
1227 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1646
1300 #: rhodecode/lib/dbmigrate/schema/db_1_5_0.py:1646
1228 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1752 rhodecode/model/db.py:1841
1301 #: rhodecode/lib/dbmigrate/schema/db_1_5_2.py:1766
1302 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1841
1303 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1937 rhodecode/model/db.py:1942
1229 msgid "Under Review"
1304 msgid "Under Review"
1230 msgstr "En cours de relecture"
1305 msgstr "En cours de relecture"
1231
1306
1307 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1252
1308 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1270 rhodecode/model/db.py:1275
1309 msgid "top level"
1310 msgstr ""
1311
1312 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1393
1313 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1413 rhodecode/model/db.py:1418
1314 #, fuzzy
1315 msgid "Repository group no access"
1316 msgstr "Aucun accès au groupe de dépôts"
1317
1318 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1394
1319 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1414 rhodecode/model/db.py:1419
1320 #, fuzzy
1321 msgid "Repository group read access"
1322 msgstr "Accès en lecture au groupe de dépôts"
1323
1324 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1395
1325 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1415 rhodecode/model/db.py:1420
1326 #, fuzzy
1327 msgid "Repository group write access"
1328 msgstr "Accès en écriture au groupe de dépôts"
1329
1330 #: rhodecode/lib/dbmigrate/schema/db_1_6_0.py:1396
1331 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1416 rhodecode/model/db.py:1421
1332 #, fuzzy
1333 msgid "Repository group admin access"
1334 msgstr "Accès administrateur au groupe de dépôts"
1335
1336 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1418 rhodecode/model/db.py:1423
1337 #, fuzzy
1338 msgid "User group no access"
1339 msgstr "Aucun accès au groupe de dépôts"
1340
1341 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1419 rhodecode/model/db.py:1424
1342 #, fuzzy
1343 msgid "User group read access"
1344 msgstr "Accès en lecture au groupe de dépôts"
1345
1346 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1420 rhodecode/model/db.py:1425
1347 #, fuzzy
1348 msgid "User group write access"
1349 msgstr "Accès en écriture au groupe de dépôts"
1350
1351 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1421 rhodecode/model/db.py:1426
1352 #, fuzzy
1353 msgid "User group admin access"
1354 msgstr "Accès administrateur au groupe de dépôts"
1355
1356 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1423 rhodecode/model/db.py:1428
1357 #, fuzzy
1358 msgid "Repository Group creation disabled"
1359 msgstr "Création de dépôt désactivée"
1360
1361 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1424 rhodecode/model/db.py:1429
1362 #, fuzzy
1363 msgid "Repository Group creation enabled"
1364 msgstr "Création de dépôt activée"
1365
1366 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1426 rhodecode/model/db.py:1431
1367 #, fuzzy
1368 msgid "User Group creation disabled"
1369 msgstr "Création de dépôt désactivée"
1370
1371 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1427 rhodecode/model/db.py:1432
1372 #, fuzzy
1373 msgid "User Group creation enabled"
1374 msgstr "Création de dépôt activée"
1375
1376 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1435 rhodecode/model/db.py:1440
1377 #, fuzzy
1378 msgid "Registration disabled"
1379 msgstr "Enregistrement désactivé"
1380
1381 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1436 rhodecode/model/db.py:1441
1382 #, fuzzy
1383 msgid "User Registration with manual account activation"
1384 msgstr "Autorisé avec activation manuelle du compte"
1385
1386 #: rhodecode/lib/dbmigrate/schema/db_1_7_0.py:1437 rhodecode/model/db.py:1442
1387 #, fuzzy
1388 msgid "User Registration with automatic account activation"
1389 msgstr "Autorisé avec activation automatique du compte"
1390
1232 #: rhodecode/model/comment.py:75
1391 #: rhodecode/model/comment.py:75
1233 #, python-format
1392 #, python-format
1234 msgid "on line %s"
1393 msgid "on line %s"
1235 msgstr "à la ligne %s"
1394 msgstr "à la ligne %s"
1236
1395
1237 #: rhodecode/model/comment.py:219
1396 #: rhodecode/model/comment.py:220
1238 msgid "[Mention]"
1397 msgid "[Mention]"
1239 msgstr "[Mention]"
1398 msgstr "[Mention]"
1240
1399
1241 #: rhodecode/model/db.py:1252
1242 msgid "top level"
1243 msgstr ""
1244
1245 #: rhodecode/model/db.py:1393
1246 #, fuzzy
1247 msgid "Repository group no access"
1248 msgstr "Aucun accès au groupe de dépôts"
1249
1250 #: rhodecode/model/db.py:1394
1251 #, fuzzy
1252 msgid "Repository group read access"
1253 msgstr "Accès en lecture au groupe de dépôts"
1254
1255 #: rhodecode/model/db.py:1395
1256 #, fuzzy
1257 msgid "Repository group write access"
1258 msgstr "Accès en écriture au groupe de dépôts"
1259
1260 #: rhodecode/model/db.py:1396
1261 #, fuzzy
1262 msgid "Repository group admin access"
1263 msgstr "Accès administrateur au groupe de dépôts"
1264
1265 #: rhodecode/model/forms.py:43
1400 #: rhodecode/model/forms.py:43
1266 msgid "Please enter a login"
1401 msgid "Please enter a login"
1267 msgstr "Veuillez entrer un identifiant"
1402 msgstr "Veuillez entrer un identifiant"
@@ -1280,44 +1415,44 b' msgstr "Veuillez entrer un mot de passe"'
1280 msgid "Enter %(min)i characters or more"
1415 msgid "Enter %(min)i characters or more"
1281 msgstr "Entrez au moins %(min)i caractères"
1416 msgstr "Entrez au moins %(min)i caractères"
1282
1417
1283 #: rhodecode/model/notification.py:224
1418 #: rhodecode/model/notification.py:228
1284 #, fuzzy, python-format
1419 #, fuzzy, python-format
1285 msgid "%(user)s commented on changeset at %(when)s"
1420 msgid "%(user)s commented on changeset at %(when)s"
1286 msgstr "%(user)s a posté un commentaire sur le commit %(when)s"
1421 msgstr "%(user)s a posté un commentaire sur le commit %(when)s"
1287
1422
1288 #: rhodecode/model/notification.py:225
1423 #: rhodecode/model/notification.py:229
1289 #, fuzzy, python-format
1424 #, fuzzy, python-format
1290 msgid "%(user)s sent message at %(when)s"
1425 msgid "%(user)s sent message at %(when)s"
1291 msgstr "%(user)s a envoyé un message %(when)s"
1426 msgstr "%(user)s a envoyé un message %(when)s"
1292
1427
1293 #: rhodecode/model/notification.py:226
1428 #: rhodecode/model/notification.py:230
1294 #, fuzzy, python-format
1429 #, fuzzy, python-format
1295 msgid "%(user)s mentioned you at %(when)s"
1430 msgid "%(user)s mentioned you at %(when)s"
1296 msgstr "%(user)s vous a mentioné %(when)s"
1431 msgstr "%(user)s vous a mentioné %(when)s"
1297
1432
1298 #: rhodecode/model/notification.py:227
1433 #: rhodecode/model/notification.py:231
1299 #, fuzzy, python-format
1434 #, fuzzy, python-format
1300 msgid "%(user)s registered in RhodeCode at %(when)s"
1435 msgid "%(user)s registered in RhodeCode at %(when)s"
1301 msgstr "%(user)s s’est enregistré sur RhodeCode %(when)s"
1436 msgstr "%(user)s s’est enregistré sur RhodeCode %(when)s"
1302
1437
1303 #: rhodecode/model/notification.py:228
1438 #: rhodecode/model/notification.py:232
1304 #, fuzzy, python-format
1439 #, fuzzy, python-format
1305 msgid "%(user)s opened new pull request at %(when)s"
1440 msgid "%(user)s opened new pull request at %(when)s"
1306 msgstr "%(user)s a ouvert une nouvelle requête de pull %(when)s"
1441 msgstr "%(user)s a ouvert une nouvelle requête de pull %(when)s"
1307
1442
1308 #: rhodecode/model/notification.py:229
1443 #: rhodecode/model/notification.py:233
1309 #, fuzzy, python-format
1444 #, fuzzy, python-format
1310 msgid "%(user)s commented on pull request at %(when)s"
1445 msgid "%(user)s commented on pull request at %(when)s"
1311 msgstr "%(user)s a commenté sur la requête de pull %(when)s"
1446 msgstr "%(user)s a commenté sur la requête de pull %(when)s"
1312
1447
1313 #: rhodecode/model/pull_request.py:104
1448 #: rhodecode/model/pull_request.py:98
1314 #, fuzzy, python-format
1449 #, fuzzy, python-format
1315 msgid "%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s"
1450 msgid "%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s"
1316 msgstr ""
1451 msgstr ""
1317 "%(user)s voudrait que vous examiniez sa requête de pull nº%(pr_id)s: "
1452 "%(user)s voudrait que vous examiniez sa requête de pull nº%(pr_id)s: "
1318 "%(pr_title)s"
1453 "%(pr_title)s"
1319
1454
1320 #: rhodecode/model/scm.py:598
1455 #: rhodecode/model/scm.py:674
1321 msgid "latest tip"
1456 msgid "latest tip"
1322 msgstr "Dernier sommet"
1457 msgstr "Dernier sommet"
1323
1458
@@ -1377,9 +1512,10 b' msgid "Username \\"%(username)s\\" is forb'
1377 msgstr "Le nom d’utilisateur « %(username)s » n’est pas autorisé"
1512 msgstr "Le nom d’utilisateur « %(username)s » n’est pas autorisé"
1378
1513
1379 #: rhodecode/model/validators.py:89
1514 #: rhodecode/model/validators.py:89
1515 #, fuzzy
1380 msgid ""
1516 msgid ""
1381 "Username may only contain alphanumeric characters underscores, periods or"
1517 "Username may only contain alphanumeric characters underscores, periods or"
1382 " dashes and must begin with alphanumeric character"
1518 " dashes and must begin with alphanumeric character or underscore"
1383 msgstr ""
1519 msgstr ""
1384 "Le nom d’utilisateur peut contenir uniquement des caractères alpha-"
1520 "Le nom d’utilisateur peut contenir uniquement des caractères alpha-"
1385 "numériques ainsi que les caractères suivants : « _ . - ». Il doit "
1521 "numériques ainsi que les caractères suivants : « _ . - ». Il doit "
@@ -1492,25 +1628,25 b' msgstr "Vous n\xe2\x80\x99avez pas la permission de cr\xc3\xa9er un d\xc3\xa9p\xc3\xb4t dans ce groupe."'
1492 msgid "You don't have permissions to create a group in this location"
1628 msgid "You don't have permissions to create a group in this location"
1493 msgstr "Vous n’avez pas la permission de créer un dépôt dans ce groupe."
1629 msgstr "Vous n’avez pas la permission de créer un dépôt dans ce groupe."
1494
1630
1495 #: rhodecode/model/validators.py:557
1631 #: rhodecode/model/validators.py:559
1496 #, fuzzy
1632 #, fuzzy
1497 msgid "This username or user group name is not valid"
1633 msgid "This username or user group name is not valid"
1498 msgstr "Ce nom d’utilisateur ou de groupe n’est pas valide."
1634 msgstr "Ce nom d’utilisateur ou de groupe n’est pas valide."
1499
1635
1500 #: rhodecode/model/validators.py:650
1636 #: rhodecode/model/validators.py:652
1501 msgid "This is not a valid path"
1637 msgid "This is not a valid path"
1502 msgstr "Ceci n’est pas un chemin valide"
1638 msgstr "Ceci n’est pas un chemin valide"
1503
1639
1504 #: rhodecode/model/validators.py:665
1640 #: rhodecode/model/validators.py:667
1505 msgid "This e-mail address is already taken"
1641 msgid "This e-mail address is already taken"
1506 msgstr "Cette adresse e-mail est déjà enregistrée"
1642 msgstr "Cette adresse e-mail est déjà enregistrée"
1507
1643
1508 #: rhodecode/model/validators.py:685
1644 #: rhodecode/model/validators.py:687
1509 #, python-format
1645 #, python-format
1510 msgid "e-mail \"%(email)s\" does not exist."
1646 msgid "e-mail \"%(email)s\" does not exist."
1511 msgstr "L’adresse e-mail « %(email)s » n’existe pas"
1647 msgstr "L’adresse e-mail « %(email)s » n’existe pas"
1512
1648
1513 #: rhodecode/model/validators.py:722
1649 #: rhodecode/model/validators.py:724
1514 msgid ""
1650 msgid ""
1515 "The LDAP Login attribute of the CN must be specified - this is the name "
1651 "The LDAP Login attribute of the CN must be specified - this is the name "
1516 "of the attribute that is equivalent to \"username\""
1652 "of the attribute that is equivalent to \"username\""
@@ -1518,26 +1654,30 b' msgstr ""'
1518 "L’attribut Login du CN doit être spécifié. Cet attribut correspond au nom"
1654 "L’attribut Login du CN doit être spécifié. Cet attribut correspond au nom"
1519 " d’utilisateur."
1655 " d’utilisateur."
1520
1656
1521 #: rhodecode/model/validators.py:735
1657 #: rhodecode/model/validators.py:737
1522 #, python-format
1658 #, python-format
1523 msgid "Revisions %(revs)s are already part of pull request or have set status"
1659 msgid "Revisions %(revs)s are already part of pull request or have set status"
1524 msgstr ""
1660 msgstr ""
1525 "Les révisions %(revs)s font déjà partie de la requête de pull ou on des "
1661 "Les révisions %(revs)s font déjà partie de la requête de pull ou on des "
1526 "statuts définis."
1662 "statuts définis."
1527
1663
1528 #: rhodecode/model/validators.py:767
1664 #: rhodecode/model/validators.py:769
1529 msgid "Please enter a valid IPv4 or IpV6 address"
1665 msgid "Please enter a valid IPv4 or IpV6 address"
1530 msgstr ""
1666 msgstr ""
1531
1667
1532 #: rhodecode/model/validators.py:768
1668 #: rhodecode/model/validators.py:770
1533 #, python-format
1669 #, python-format
1534 msgid "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1670 msgid "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
1535 msgstr ""
1671 msgstr ""
1536
1672
1537 #: rhodecode/model/validators.py:800
1673 #: rhodecode/model/validators.py:803
1538 msgid "Key name can only consist of letters, underscore, dash or numbers"
1674 msgid "Key name can only consist of letters, underscore, dash or numbers"
1539 msgstr ""
1675 msgstr ""
1540
1676
1677 #: rhodecode/model/validators.py:817
1678 msgid "Filename cannot be inside a directory"
1679 msgstr ""
1680
1541 #: rhodecode/templates/index.html:5
1681 #: rhodecode/templates/index.html:5
1542 msgid "Dashboard"
1682 msgid "Dashboard"
1543 msgstr "Tableau de bord"
1683 msgstr "Tableau de bord"
@@ -1585,29 +1725,28 b' msgid "You have admin right to this grou'
1585 msgstr ""
1725 msgstr ""
1586
1726
1587 #: rhodecode/templates/index_base.html:40
1727 #: rhodecode/templates/index_base.html:40
1588 #: rhodecode/templates/index_base.html:140
1589 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:33
1728 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:33
1590 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:38
1729 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:38
1591 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:43
1730 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:43
1592 #: rhodecode/templates/admin/users_groups/users_group_add.html:32
1731 #: rhodecode/templates/admin/users_groups/users_group_add.html:32
1593 #: rhodecode/templates/admin/users_groups/users_group_edit.html:33
1732 #: rhodecode/templates/admin/users_groups/users_group_edit.html:33
1594 #: rhodecode/templates/admin/users_groups/users_groups.html:34
1733 #: rhodecode/templates/admin/users_groups/users_groups.html:37
1595 msgid "Group name"
1734 msgid "Group name"
1596 msgstr "Nom de groupe"
1735 msgstr "Nom de groupe"
1597
1736
1598 #: rhodecode/templates/index_base.html:41
1737 #: rhodecode/templates/index_base.html:41
1599 #: rhodecode/templates/index_base.html:83
1738 #: rhodecode/templates/index_base.html:123
1600 #: rhodecode/templates/index_base.html:142
1601 #: rhodecode/templates/index_base.html:180
1602 #: rhodecode/templates/index_base.html:270
1603 #: rhodecode/templates/admin/repos/repo_add_base.html:56
1739 #: rhodecode/templates/admin/repos/repo_add_base.html:56
1604 #: rhodecode/templates/admin/repos/repo_edit.html:75
1740 #: rhodecode/templates/admin/repos/repo_edit.html:68
1605 #: rhodecode/templates/admin/repos/repos.html:73
1741 #: rhodecode/templates/admin/repos/repos.html:73
1606 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:42
1742 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:42
1607 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:47
1743 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:47
1608 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:44
1744 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:44
1745 #: rhodecode/templates/email_templates/changeset_comment.html:9
1746 #: rhodecode/templates/email_templates/pull_request.html:9
1609 #: rhodecode/templates/forks/fork.html:56
1747 #: rhodecode/templates/forks/fork.html:56
1610 #: rhodecode/templates/pullrequests/pullrequest.html:101
1748 #: rhodecode/templates/pullrequests/pullrequest.html:43
1749 #: rhodecode/templates/pullrequests/pullrequest_show.html:81
1611 #: rhodecode/templates/summary/summary.html:106
1750 #: rhodecode/templates/summary/summary.html:106
1612 msgid "Description"
1751 msgid "Description"
1613 msgstr "Description"
1752 msgstr "Description"
@@ -1615,27 +1754,25 b' msgstr "Description"'
1615 #: rhodecode/templates/index_base.html:51
1754 #: rhodecode/templates/index_base.html:51
1616 #: rhodecode/templates/admin/permissions/permissions.html:55
1755 #: rhodecode/templates/admin/permissions/permissions.html:55
1617 #: rhodecode/templates/admin/repos/repo_add_base.html:29
1756 #: rhodecode/templates/admin/repos/repo_add_base.html:29
1618 #: rhodecode/templates/admin/repos/repo_edit.html:49
1757 #: rhodecode/templates/admin/repos/repo_edit.html:50
1619 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:57
1758 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:57
1620 #: rhodecode/templates/forks/fork.html:47
1759 #: rhodecode/templates/forks/fork.html:47
1621 msgid "Repository group"
1760 msgid "Repository group"
1622 msgstr "Groupe de dépôt"
1761 msgstr "Groupe de dépôt"
1623
1762
1624 #: rhodecode/templates/index_base.html:82
1763 #: rhodecode/templates/index_base.html:121
1625 #: rhodecode/templates/index_base.html:178
1626 #: rhodecode/templates/index_base.html:268
1627 #: rhodecode/templates/admin/repos/repo_add_base.html:9
1764 #: rhodecode/templates/admin/repos/repo_add_base.html:9
1628 #: rhodecode/templates/admin/repos/repo_edit.html:32
1765 #: rhodecode/templates/admin/repos/repo_edit.html:32
1629 #: rhodecode/templates/admin/repos/repos.html:71
1766 #: rhodecode/templates/admin/repos/repos.html:71
1630 #: rhodecode/templates/admin/users/user_edit_my_account.html:172
1767 #: rhodecode/templates/admin/users/user_edit_my_account.html:172
1631 #: rhodecode/templates/base/perms_summary.html:14
1768 #: rhodecode/templates/base/perms_summary.html:37
1632 #: rhodecode/templates/bookmarks/bookmarks.html:34
1769 #: rhodecode/templates/bookmarks/bookmarks.html:48
1633 #: rhodecode/templates/bookmarks/bookmarks_data.html:6
1770 #: rhodecode/templates/bookmarks/bookmarks_data.html:6
1634 #: rhodecode/templates/branches/branches.html:47
1771 #: rhodecode/templates/branches/branches.html:47
1635 #: rhodecode/templates/branches/branches_data.html:6
1772 #: rhodecode/templates/branches/branches_data.html:6
1636 #: rhodecode/templates/files/files_browser.html:47
1773 #: rhodecode/templates/files/files_browser.html:47
1637 #: rhodecode/templates/journal/journal.html:193
1774 #: rhodecode/templates/journal/journal.html:193
1638 #: rhodecode/templates/journal/journal.html:296
1775 #: rhodecode/templates/journal/journal.html:283
1639 #: rhodecode/templates/summary/summary.html:55
1776 #: rhodecode/templates/summary/summary.html:55
1640 #: rhodecode/templates/summary/summary.html:124
1777 #: rhodecode/templates/summary/summary.html:124
1641 #: rhodecode/templates/tags/tags.html:48
1778 #: rhodecode/templates/tags/tags.html:48
@@ -1643,110 +1780,79 b' msgstr "Groupe de d\xc3\xa9p\xc3\xb4t"'
1643 msgid "Name"
1780 msgid "Name"
1644 msgstr "Nom"
1781 msgstr "Nom"
1645
1782
1646 #: rhodecode/templates/index_base.html:84
1783 #: rhodecode/templates/index_base.html:124
1647 msgid "Last change"
1784 msgid "Last Change"
1648 msgstr "Dernière modification"
1785 msgstr "Dernière modification"
1649
1786
1650 #: rhodecode/templates/index_base.html:85
1787 #: rhodecode/templates/index_base.html:126
1651 #: rhodecode/templates/index_base.html:183
1652 #: rhodecode/templates/index_base.html:273
1653 #: rhodecode/templates/admin/repos/repos.html:74
1788 #: rhodecode/templates/admin/repos/repos.html:74
1654 #: rhodecode/templates/admin/users/user_edit_my_account.html:174
1789 #: rhodecode/templates/admin/users/user_edit_my_account.html:174
1655 #: rhodecode/templates/journal/journal.html:195
1790 #: rhodecode/templates/journal/journal.html:195
1656 #: rhodecode/templates/journal/journal.html:298
1791 #: rhodecode/templates/journal/journal.html:285
1657 msgid "Tip"
1792 msgid "Tip"
1658 msgstr "Sommet"
1793 msgstr "Sommet"
1659
1794
1660 #: rhodecode/templates/index_base.html:86
1795 #: rhodecode/templates/index_base.html:128
1661 #: rhodecode/templates/index_base.html:185
1796 #: rhodecode/templates/admin/repos/repo_edit.html:114
1662 #: rhodecode/templates/index_base.html:275
1663 #: rhodecode/templates/admin/repos/repo_edit.html:121
1664 #: rhodecode/templates/admin/repos/repos.html:76
1797 #: rhodecode/templates/admin/repos/repos.html:76
1665 msgid "Owner"
1798 msgid "Owner"
1666 msgstr "Propriétaire"
1799 msgstr "Propriétaire"
1667
1800
1668 #: rhodecode/templates/index_base.html:87
1801 #: rhodecode/templates/index_base.html:136
1669 msgid "Atom"
1802 #: rhodecode/templates/admin/repos/repos.html:84
1670 msgstr "Atom"
1803 #: rhodecode/templates/admin/users/user_edit_my_account.html:183
1671
1672 #: rhodecode/templates/index_base.html:171
1673 #: rhodecode/templates/index_base.html:209
1674 #: rhodecode/templates/index_base.html:296
1675 #: rhodecode/templates/admin/repos/repos.html:97
1676 #: rhodecode/templates/admin/users/user_edit_my_account.html:196
1677 #: rhodecode/templates/admin/users/users.html:107
1804 #: rhodecode/templates/admin/users/users.html:107
1678 #: rhodecode/templates/bookmarks/bookmarks.html:58
1805 #: rhodecode/templates/bookmarks/bookmarks.html:74
1679 #: rhodecode/templates/branches/branches.html:73
1806 #: rhodecode/templates/branches/branches.html:73
1680 #: rhodecode/templates/journal/journal.html:217
1807 #: rhodecode/templates/journal/journal.html:204
1681 #: rhodecode/templates/journal/journal.html:320
1808 #: rhodecode/templates/journal/journal.html:294
1682 #: rhodecode/templates/tags/tags.html:74
1809 #: rhodecode/templates/tags/tags.html:74
1683 msgid "Click to sort ascending"
1810 msgid "Click to sort ascending"
1684 msgstr "Tri ascendant"
1811 msgstr "Tri ascendant"
1685
1812
1686 #: rhodecode/templates/index_base.html:172
1813 #: rhodecode/templates/index_base.html:137
1687 #: rhodecode/templates/index_base.html:210
1814 #: rhodecode/templates/admin/repos/repos.html:85
1688 #: rhodecode/templates/index_base.html:297
1815 #: rhodecode/templates/admin/users/user_edit_my_account.html:184
1689 #: rhodecode/templates/admin/repos/repos.html:98
1690 #: rhodecode/templates/admin/users/user_edit_my_account.html:197
1691 #: rhodecode/templates/admin/users/users.html:108
1816 #: rhodecode/templates/admin/users/users.html:108
1692 #: rhodecode/templates/bookmarks/bookmarks.html:59
1817 #: rhodecode/templates/bookmarks/bookmarks.html:75
1693 #: rhodecode/templates/branches/branches.html:74
1818 #: rhodecode/templates/branches/branches.html:74
1694 #: rhodecode/templates/journal/journal.html:218
1819 #: rhodecode/templates/journal/journal.html:205
1695 #: rhodecode/templates/journal/journal.html:321
1820 #: rhodecode/templates/journal/journal.html:295
1696 #: rhodecode/templates/tags/tags.html:75
1821 #: rhodecode/templates/tags/tags.html:75
1697 msgid "Click to sort descending"
1822 msgid "Click to sort descending"
1698 msgstr "Tri descendant"
1823 msgstr "Tri descendant"
1699
1824
1700 #: rhodecode/templates/index_base.html:181
1825 #: rhodecode/templates/index_base.html:138
1701 #: rhodecode/templates/index_base.html:271
1826 #, fuzzy
1702 msgid "Last Change"
1827 msgid "No repositories found."
1703 msgstr "Dernière modification"
1828 msgstr "Groupes de dépôts"
1704
1829
1705 #: rhodecode/templates/index_base.html:211
1830 #: rhodecode/templates/index_base.html:139
1706 #: rhodecode/templates/admin/repos/repos.html:99
1831 #: rhodecode/templates/admin/repos/repos.html:87
1707 #: rhodecode/templates/admin/users/user_edit_my_account.html:198
1832 #: rhodecode/templates/admin/users/user_edit_my_account.html:186
1708 #: rhodecode/templates/admin/users/users.html:109
1709 #: rhodecode/templates/bookmarks/bookmarks.html:60
1710 #: rhodecode/templates/branches/branches.html:75
1711 #: rhodecode/templates/journal/journal.html:219
1712 #: rhodecode/templates/journal/journal.html:322
1713 #: rhodecode/templates/tags/tags.html:76
1714 msgid "No records found."
1715 msgstr "Aucun élément n’a été trouvé."
1716
1717 #: rhodecode/templates/index_base.html:212
1718 #: rhodecode/templates/index_base.html:299
1719 #: rhodecode/templates/admin/repos/repos.html:100
1720 #: rhodecode/templates/admin/users/user_edit_my_account.html:199
1721 #: rhodecode/templates/admin/users/users.html:110
1833 #: rhodecode/templates/admin/users/users.html:110
1722 #: rhodecode/templates/bookmarks/bookmarks.html:61
1834 #: rhodecode/templates/bookmarks/bookmarks.html:77
1723 #: rhodecode/templates/branches/branches.html:76
1835 #: rhodecode/templates/branches/branches.html:76
1724 #: rhodecode/templates/journal/journal.html:220
1836 #: rhodecode/templates/journal/journal.html:207
1725 #: rhodecode/templates/journal/journal.html:323
1837 #: rhodecode/templates/journal/journal.html:297
1726 #: rhodecode/templates/tags/tags.html:77
1838 #: rhodecode/templates/tags/tags.html:77
1727 msgid "Data error."
1839 msgid "Data error."
1728 msgstr "Erreur d’intégrité des données."
1840 msgstr "Erreur d’intégrité des données."
1729
1841
1730 #: rhodecode/templates/index_base.html:213
1842 #: rhodecode/templates/index_base.html:140
1731 #: rhodecode/templates/index_base.html:300
1843 #: rhodecode/templates/admin/repos/repos.html:88
1732 #: rhodecode/templates/admin/repos/repos.html:101
1733 #: rhodecode/templates/admin/users/user_edit_my_account.html:58
1844 #: rhodecode/templates/admin/users/user_edit_my_account.html:58
1734 #: rhodecode/templates/admin/users/user_edit_my_account.html:200
1845 #: rhodecode/templates/admin/users/user_edit_my_account.html:187
1735 #: rhodecode/templates/admin/users/users.html:111
1846 #: rhodecode/templates/admin/users/users.html:111
1736 #: rhodecode/templates/bookmarks/bookmarks.html:62
1847 #: rhodecode/templates/bookmarks/bookmarks.html:78
1737 #: rhodecode/templates/branches/branches.html:77
1848 #: rhodecode/templates/branches/branches.html:77
1738 #: rhodecode/templates/journal/journal.html:221
1849 #: rhodecode/templates/journal/journal.html:208
1739 #: rhodecode/templates/journal/journal.html:324
1850 #: rhodecode/templates/journal/journal.html:298
1740 #: rhodecode/templates/tags/tags.html:78
1851 #: rhodecode/templates/tags/tags.html:78
1741 msgid "Loading..."
1852 msgid "Loading..."
1742 msgstr "Chargement…"
1853 msgstr "Chargement…"
1743
1854
1744 #: rhodecode/templates/index_base.html:298
1855 #: rhodecode/templates/login.html:5 rhodecode/templates/base/base.html:239
1745 #, fuzzy
1746 msgid "No repositories found."
1747 msgstr "Groupes de dépôts"
1748
1749 #: rhodecode/templates/login.html:5 rhodecode/templates/base/base.html:227
1750 msgid "Log In"
1856 msgid "Log In"
1751 msgstr "Connexion"
1857 msgstr "Connexion"
1752
1858
@@ -1761,7 +1867,7 b' msgstr ""'
1761 #: rhodecode/templates/admin/users/user_edit.html:57
1867 #: rhodecode/templates/admin/users/user_edit.html:57
1762 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:31
1868 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:31
1763 #: rhodecode/templates/admin/users/users.html:77
1869 #: rhodecode/templates/admin/users/users.html:77
1764 #: rhodecode/templates/base/base.html:203
1870 #: rhodecode/templates/base/base.html:215
1765 #: rhodecode/templates/summary/summary.html:123
1871 #: rhodecode/templates/summary/summary.html:123
1766 msgid "Username"
1872 msgid "Username"
1767 msgstr "Nom d’utilisateur"
1873 msgstr "Nom d’utilisateur"
@@ -1769,7 +1875,7 b' msgstr "Nom d\xe2\x80\x99utilisateur"'
1769 #: rhodecode/templates/login.html:40 rhodecode/templates/register.html:29
1875 #: rhodecode/templates/login.html:40 rhodecode/templates/register.html:29
1770 #: rhodecode/templates/admin/ldap/ldap.html:46
1876 #: rhodecode/templates/admin/ldap/ldap.html:46
1771 #: rhodecode/templates/admin/users/user_add.html:41
1877 #: rhodecode/templates/admin/users/user_add.html:41
1772 #: rhodecode/templates/base/base.html:212
1878 #: rhodecode/templates/base/base.html:224
1773 msgid "Password"
1879 msgid "Password"
1774 msgstr "Mot de passe"
1880 msgstr "Mot de passe"
1775
1881
@@ -1785,7 +1891,7 b' msgstr "Connexion"'
1785 msgid "Forgot your password ?"
1891 msgid "Forgot your password ?"
1786 msgstr "Mot de passe oublié ?"
1892 msgstr "Mot de passe oublié ?"
1787
1893
1788 #: rhodecode/templates/login.html:63 rhodecode/templates/base/base.html:223
1894 #: rhodecode/templates/login.html:63 rhodecode/templates/base/base.html:235
1789 msgid "Don't have an account ?"
1895 msgid "Don't have an account ?"
1790 msgstr "Vous n’avez pas de compte ?"
1896 msgstr "Vous n’avez pas de compte ?"
1791
1897
@@ -1855,7 +1961,7 b' msgstr "Votre compte utilisateur devra \xc3\xaatre activ\xc3\xa9 par un administrateur."'
1855 #: rhodecode/templates/repo_switcher_list.html:10
1961 #: rhodecode/templates/repo_switcher_list.html:10
1856 #: rhodecode/templates/admin/defaults/defaults.html:44
1962 #: rhodecode/templates/admin/defaults/defaults.html:44
1857 #: rhodecode/templates/admin/repos/repo_add_base.html:65
1963 #: rhodecode/templates/admin/repos/repo_add_base.html:65
1858 #: rhodecode/templates/admin/repos/repo_edit.html:85
1964 #: rhodecode/templates/admin/repos/repo_edit.html:78
1859 #: rhodecode/templates/data_table/_dt_elements.html:61
1965 #: rhodecode/templates/data_table/_dt_elements.html:61
1860 #: rhodecode/templates/summary/summary.html:77
1966 #: rhodecode/templates/summary/summary.html:77
1861 msgid "Private repository"
1967 msgid "Private repository"
@@ -1878,13 +1984,13 b' msgid "There are no tags yet"'
1878 msgstr "Aucun tag n’a été créé pour le moment."
1984 msgstr "Aucun tag n’a été créé pour le moment."
1879
1985
1880 #: rhodecode/templates/switch_to_list.html:35
1986 #: rhodecode/templates/switch_to_list.html:35
1881 #: rhodecode/templates/bookmarks/bookmarks_data.html:32
1987 #: rhodecode/templates/bookmarks/bookmarks_data.html:37
1882 msgid "There are no bookmarks yet"
1988 msgid "There are no bookmarks yet"
1883 msgstr "Aucun signet n’a été créé."
1989 msgstr "Aucun signet n’a été créé."
1884
1990
1885 #: rhodecode/templates/admin/admin.html:5
1991 #: rhodecode/templates/admin/admin.html:5
1886 #: rhodecode/templates/admin/admin.html:13
1992 #: rhodecode/templates/admin/admin.html:13
1887 #: rhodecode/templates/base/base.html:68
1993 #: rhodecode/templates/base/base.html:73
1888 msgid "Admin journal"
1994 msgid "Admin journal"
1889 msgstr "Historique d’administration"
1995 msgstr "Historique d’administration"
1890
1996
@@ -1912,9 +2018,9 b' msgstr[1] ""'
1912 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:46
2018 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:46
1913 #: rhodecode/templates/admin/users/user_edit_my_account.html:176
2019 #: rhodecode/templates/admin/users/user_edit_my_account.html:176
1914 #: rhodecode/templates/admin/users/users.html:87
2020 #: rhodecode/templates/admin/users/users.html:87
1915 #: rhodecode/templates/admin/users_groups/users_groups.html:37
2021 #: rhodecode/templates/admin/users_groups/users_groups.html:40
1916 #: rhodecode/templates/journal/journal.html:197
2022 #: rhodecode/templates/journal/journal.html:197
1917 #: rhodecode/templates/journal/journal.html:300
2023 #: rhodecode/templates/journal/journal.html:287
1918 msgid "Action"
2024 msgid "Action"
1919 msgstr "Action"
2025 msgstr "Action"
1920
2026
@@ -1924,7 +2030,7 b' msgid "Repository"'
1924 msgstr "Dépôt"
2030 msgstr "Dépôt"
1925
2031
1926 #: rhodecode/templates/admin/admin_log.html:8
2032 #: rhodecode/templates/admin/admin_log.html:8
1927 #: rhodecode/templates/bookmarks/bookmarks.html:35
2033 #: rhodecode/templates/bookmarks/bookmarks.html:49
1928 #: rhodecode/templates/bookmarks/bookmarks_data.html:7
2034 #: rhodecode/templates/bookmarks/bookmarks_data.html:7
1929 #: rhodecode/templates/branches/branches.html:48
2035 #: rhodecode/templates/branches/branches.html:48
1930 #: rhodecode/templates/branches/branches_data.html:7
2036 #: rhodecode/templates/branches/branches_data.html:7
@@ -1948,20 +2054,19 b' msgid "Repositories defaults"'
1948 msgstr "Groupes de dépôts"
2054 msgstr "Groupes de dépôts"
1949
2055
1950 #: rhodecode/templates/admin/defaults/defaults.html:11
2056 #: rhodecode/templates/admin/defaults/defaults.html:11
1951 #: rhodecode/templates/base/base.html:75
2057 #: rhodecode/templates/base/base.html:80
1952 #, fuzzy
2058 #, fuzzy
1953 msgid "Defaults"
2059 msgid "Defaults"
1954 msgstr "[Par défaut]"
2060 msgstr "[Par défaut]"
1955
2061
1956 #: rhodecode/templates/admin/defaults/defaults.html:35
2062 #: rhodecode/templates/admin/defaults/defaults.html:35
1957 #: rhodecode/templates/admin/repos/repo_add_base.html:38
2063 #: rhodecode/templates/admin/repos/repo_add_base.html:38
1958 #: rhodecode/templates/admin/repos/repo_edit.html:58
1959 msgid "Type"
2064 msgid "Type"
1960 msgstr "Type"
2065 msgstr "Type"
1961
2066
1962 #: rhodecode/templates/admin/defaults/defaults.html:48
2067 #: rhodecode/templates/admin/defaults/defaults.html:48
1963 #: rhodecode/templates/admin/repos/repo_add_base.html:69
2068 #: rhodecode/templates/admin/repos/repo_add_base.html:69
1964 #: rhodecode/templates/admin/repos/repo_edit.html:89
2069 #: rhodecode/templates/admin/repos/repo_edit.html:82
1965 #: rhodecode/templates/forks/fork.html:69
2070 #: rhodecode/templates/forks/fork.html:69
1966 msgid ""
2071 msgid ""
1967 "Private repositories are only visible to people explicitly added as "
2072 "Private repositories are only visible to people explicitly added as "
@@ -1971,60 +2076,194 b' msgstr ""'
1971 "comme collaborateurs."
2076 "comme collaborateurs."
1972
2077
1973 #: rhodecode/templates/admin/defaults/defaults.html:55
2078 #: rhodecode/templates/admin/defaults/defaults.html:55
1974 #: rhodecode/templates/admin/repos/repo_edit.html:94
2079 #: rhodecode/templates/admin/repos/repo_edit.html:87
1975 msgid "Enable statistics"
2080 msgid "Enable statistics"
1976 msgstr "Activer les statistiques"
2081 msgstr "Activer les statistiques"
1977
2082
1978 #: rhodecode/templates/admin/defaults/defaults.html:59
2083 #: rhodecode/templates/admin/defaults/defaults.html:59
1979 #: rhodecode/templates/admin/repos/repo_edit.html:98
2084 #: rhodecode/templates/admin/repos/repo_edit.html:91
1980 msgid "Enable statistics window on summary page."
2085 msgid "Enable statistics window on summary page."
1981 msgstr "Afficher les statistiques sur la page du dépôt."
2086 msgstr "Afficher les statistiques sur la page du dépôt."
1982
2087
1983 #: rhodecode/templates/admin/defaults/defaults.html:65
2088 #: rhodecode/templates/admin/defaults/defaults.html:65
1984 #: rhodecode/templates/admin/repos/repo_edit.html:103
2089 #: rhodecode/templates/admin/repos/repo_edit.html:96
1985 msgid "Enable downloads"
2090 msgid "Enable downloads"
1986 msgstr "Activer les téléchargements"
2091 msgstr "Activer les téléchargements"
1987
2092
1988 #: rhodecode/templates/admin/defaults/defaults.html:69
2093 #: rhodecode/templates/admin/defaults/defaults.html:69
1989 #: rhodecode/templates/admin/repos/repo_edit.html:107
2094 #: rhodecode/templates/admin/repos/repo_edit.html:100
1990 msgid "Enable download menu on summary page."
2095 msgid "Enable download menu on summary page."
1991 msgstr "Afficher le menu de téléchargements sur la page du dépôt."
2096 msgstr "Afficher le menu de téléchargements sur la page du dépôt."
1992
2097
1993 #: rhodecode/templates/admin/defaults/defaults.html:75
2098 #: rhodecode/templates/admin/defaults/defaults.html:75
1994 #: rhodecode/templates/admin/repos/repo_edit.html:112
2099 #: rhodecode/templates/admin/repos/repo_edit.html:105
1995 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:72
2100 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:64
1996 msgid "Enable locking"
2101 msgid "Enable locking"
1997 msgstr "Activer le verrouillage"
2102 msgstr "Activer le verrouillage"
1998
2103
1999 #: rhodecode/templates/admin/defaults/defaults.html:79
2104 #: rhodecode/templates/admin/defaults/defaults.html:79
2000 #: rhodecode/templates/admin/repos/repo_edit.html:116
2105 #: rhodecode/templates/admin/repos/repo_edit.html:109
2001 msgid "Enable lock-by-pulling on repository."
2106 msgid "Enable lock-by-pulling on repository."
2002 msgstr "Activer le verrouillage lors d’un pull sur le dépôt."
2107 msgstr "Activer le verrouillage lors d’un pull sur le dépôt."
2003
2108
2004 #: rhodecode/templates/admin/defaults/defaults.html:84
2109 #: rhodecode/templates/admin/defaults/defaults.html:84
2005 #: rhodecode/templates/admin/ldap/ldap.html:89
2110 #: rhodecode/templates/admin/ldap/ldap.html:89
2006 #: rhodecode/templates/admin/permissions/permissions.html:92
2111 #: rhodecode/templates/admin/permissions/permissions.html:122
2007 #: rhodecode/templates/admin/repos/repo_edit.html:148
2112 #: rhodecode/templates/admin/repos/repo_edit.html:141
2008 #: rhodecode/templates/admin/repos/repo_edit.html:173
2113 #: rhodecode/templates/admin/repos/repo_edit.html:166
2009 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:80
2114 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:72
2115 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:96
2010 #: rhodecode/templates/admin/settings/hooks.html:73
2116 #: rhodecode/templates/admin/settings/hooks.html:73
2011 #: rhodecode/templates/admin/users/user_add.html:94
2117 #: rhodecode/templates/admin/users/user_add.html:94
2012 #: rhodecode/templates/admin/users/user_edit.html:140
2118 #: rhodecode/templates/admin/users/user_edit.html:140
2013 #: rhodecode/templates/admin/users/user_edit.html:185
2014 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:88
2119 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:88
2015 #: rhodecode/templates/admin/users_groups/users_group_add.html:49
2120 #: rhodecode/templates/admin/users_groups/users_group_add.html:49
2016 #: rhodecode/templates/admin/users_groups/users_group_edit.html:90
2121 #: rhodecode/templates/admin/users_groups/users_group_edit.html:90
2017 #: rhodecode/templates/admin/users_groups/users_group_edit.html:135
2122 #: rhodecode/templates/admin/users_groups/users_group_edit.html:143
2123 #: rhodecode/templates/base/default_perms_box.html:53
2018 msgid "Save"
2124 msgid "Save"
2019 msgstr "Enregistrer"
2125 msgstr "Enregistrer"
2020
2126
2127 #: rhodecode/templates/admin/gists/index.html:5
2128 #: rhodecode/templates/base/base.html:299
2129 msgid "Gists"
2130 msgstr ""
2131
2132 #: rhodecode/templates/admin/gists/index.html:10
2133 #, fuzzy, python-format
2134 msgid "Private Gists for user %s"
2135 msgstr "utilisateur %s créé"
2136
2137 #: rhodecode/templates/admin/gists/index.html:12
2138 #, python-format
2139 msgid "Public Gists for user %s"
2140 msgstr ""
2141
2142 #: rhodecode/templates/admin/gists/index.html:14
2143 msgid "Public Gists"
2144 msgstr ""
2145
2146 #: rhodecode/templates/admin/gists/index.html:31
2147 #: rhodecode/templates/admin/gists/show.html:24
2148 #: rhodecode/templates/base/base.html:302
2149 #, fuzzy
2150 msgid "Create new gist"
2151 msgstr "Créer un nouveau fichier"
2152
2153 #: rhodecode/templates/admin/gists/index.html:48
2154 #, fuzzy
2155 msgid "Created"
2156 msgstr "Lecture"
2157
2158 #: rhodecode/templates/admin/gists/index.html:51
2159 #: rhodecode/templates/admin/gists/index.html:53
2160 #: rhodecode/templates/admin/gists/show.html:43
2161 #: rhodecode/templates/admin/gists/show.html:45
2162 #, fuzzy
2163 msgid "Expires"
2164 msgstr "Dépôts"
2165
2166 #: rhodecode/templates/admin/gists/index.html:51
2167 #: rhodecode/templates/admin/gists/show.html:43
2168 #, fuzzy
2169 msgid "never"
2170 msgstr "%d relecteur"
2171
2172 #: rhodecode/templates/admin/gists/index.html:68
2173 #, fuzzy
2174 msgid "There are no gists yet"
2175 msgstr "Aucun tag n’a été créé pour le moment."
2176
2177 #: rhodecode/templates/admin/gists/new.html:5
2178 #: rhodecode/templates/admin/gists/new.html:16
2179 msgid "New gist"
2180 msgstr ""
2181
2182 #: rhodecode/templates/admin/gists/new.html:37
2183 #, fuzzy
2184 msgid "Gist description ..."
2185 msgstr "Description"
2186
2187 #: rhodecode/templates/admin/gists/new.html:52
2188 msgid "Create private gist"
2189 msgstr ""
2190
2191 #: rhodecode/templates/admin/gists/new.html:53
2192 msgid "Create public gist"
2193 msgstr ""
2194
2195 #: rhodecode/templates/admin/gists/new.html:54
2196 #: rhodecode/templates/admin/permissions/permissions.html:123
2197 #: rhodecode/templates/admin/permissions/permissions.html:185
2198 #: rhodecode/templates/admin/repos/repo_edit.html:142
2199 #: rhodecode/templates/admin/repos/repo_edit.html:167
2200 #: rhodecode/templates/admin/repos/repo_edit.html:381
2201 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:73
2202 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:97
2203 #: rhodecode/templates/admin/settings/settings.html:115
2204 #: rhodecode/templates/admin/settings/settings.html:196
2205 #: rhodecode/templates/admin/settings/settings.html:288
2206 #: rhodecode/templates/admin/users/user_edit.html:141
2207 #: rhodecode/templates/admin/users/user_edit.html:198
2208 #: rhodecode/templates/admin/users/user_edit.html:246
2209 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:89
2210 #: rhodecode/templates/admin/users_groups/users_group_edit.html:144
2211 #: rhodecode/templates/base/default_perms_box.html:54
2212 #: rhodecode/templates/files/files_add.html:80
2213 #: rhodecode/templates/files/files_edit.html:66
2214 #: rhodecode/templates/pullrequests/pullrequest.html:86
2215 msgid "Reset"
2216 msgstr "Réinitialiser"
2217
2218 #: rhodecode/templates/admin/gists/show.html:5
2219 msgid "gist"
2220 msgstr ""
2221
2222 #: rhodecode/templates/admin/gists/show.html:9
2223 msgid "Gist"
2224 msgstr ""
2225
2226 #: rhodecode/templates/admin/gists/show.html:36
2227 msgid "Public gist"
2228 msgstr ""
2229
2230 #: rhodecode/templates/admin/gists/show.html:38
2231 #, fuzzy
2232 msgid "Private gist"
2233 msgstr "Dépôt privé"
2234
2235 #: rhodecode/templates/admin/gists/show.html:54
2236 #: rhodecode/templates/admin/repos/repo_edit.html:299
2237 #: rhodecode/templates/changeset/changeset_file_comment.html:40
2238 msgid "Delete"
2239 msgstr "Supprimer"
2240
2241 #: rhodecode/templates/admin/gists/show.html:54
2242 #, fuzzy
2243 msgid "Confirm to delete this gist"
2244 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
2245
2246 #: rhodecode/templates/admin/gists/show.html:63
2247 #: rhodecode/templates/admin/gists/show.html:84
2248 #: rhodecode/templates/files/files_edit.html:48
2249 #: rhodecode/templates/files/files_source.html:25
2250 #: rhodecode/templates/files/files_source.html:55
2251 #, fuzzy
2252 msgid "Show as raw"
2253 msgstr "montrer le fichier brut"
2254
2255 #: rhodecode/templates/admin/gists/show.html:71
2256 #, fuzzy
2257 msgid "created"
2258 msgstr "Lecture"
2259
2021 #: rhodecode/templates/admin/ldap/ldap.html:5
2260 #: rhodecode/templates/admin/ldap/ldap.html:5
2022 msgid "LDAP administration"
2261 msgid "LDAP administration"
2023 msgstr "Administration LDAP"
2262 msgstr "Administration LDAP"
2024
2263
2025 #: rhodecode/templates/admin/ldap/ldap.html:11
2264 #: rhodecode/templates/admin/ldap/ldap.html:11
2026 #: rhodecode/templates/admin/users/users.html:86
2265 #: rhodecode/templates/admin/users/users.html:86
2027 #: rhodecode/templates/base/base.html:74
2266 #: rhodecode/templates/base/base.html:79
2028 #, fuzzy
2267 #, fuzzy
2029 msgid "LDAP"
2268 msgid "LDAP"
2030 msgstr "LDAP"
2269 msgstr "LDAP"
@@ -2125,7 +2364,7 b' msgid "Show notification"'
2125 msgstr "Notification"
2364 msgstr "Notification"
2126
2365
2127 #: rhodecode/templates/admin/notifications/show_notification.html:9
2366 #: rhodecode/templates/admin/notifications/show_notification.html:9
2128 #: rhodecode/templates/base/base.html:241
2367 #: rhodecode/templates/base/base.html:253
2129 msgid "Notifications"
2368 msgid "Notifications"
2130 msgstr "Notifications"
2369 msgstr "Notifications"
2131
2370
@@ -2134,12 +2373,14 b' msgid "Permissions administration"'
2134 msgstr "Gestion des permissions"
2373 msgstr "Gestion des permissions"
2135
2374
2136 #: rhodecode/templates/admin/permissions/permissions.html:11
2375 #: rhodecode/templates/admin/permissions/permissions.html:11
2376 #: rhodecode/templates/admin/repos/repo_edit.html:151
2137 #: rhodecode/templates/admin/repos/repo_edit.html:158
2377 #: rhodecode/templates/admin/repos/repo_edit.html:158
2138 #: rhodecode/templates/admin/repos/repo_edit.html:165
2378 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:81
2139 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:64
2379 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:88
2140 #: rhodecode/templates/admin/users/user_edit.html:150
2380 #: rhodecode/templates/admin/users/user_edit.html:150
2141 #: rhodecode/templates/admin/users_groups/users_group_edit.html:100
2381 #: rhodecode/templates/admin/users_groups/users_group_edit.html:129
2142 #: rhodecode/templates/base/base.html:73
2382 #: rhodecode/templates/admin/users_groups/users_group_edit.html:136
2383 #: rhodecode/templates/base/base.html:78
2143 msgid "Permissions"
2384 msgid "Permissions"
2144 msgstr "Permissions"
2385 msgstr "Permissions"
2145
2386
@@ -2164,6 +2405,7 b' msgstr ""'
2164
2405
2165 #: rhodecode/templates/admin/permissions/permissions.html:50
2406 #: rhodecode/templates/admin/permissions/permissions.html:50
2166 #: rhodecode/templates/admin/permissions/permissions.html:63
2407 #: rhodecode/templates/admin/permissions/permissions.html:63
2408 #: rhodecode/templates/admin/permissions/permissions.html:77
2167 #, fuzzy
2409 #, fuzzy
2168 msgid "Overwrite existing settings"
2410 msgid "Overwrite existing settings"
2169 msgstr "Écraser les permissions existantes"
2411 msgstr "Écraser les permissions existantes"
@@ -2180,89 +2422,95 b' msgstr ""'
2180 "perdues."
2422 "perdues."
2181
2423
2182 #: rhodecode/templates/admin/permissions/permissions.html:69
2424 #: rhodecode/templates/admin/permissions/permissions.html:69
2183 msgid "Registration"
2425 #, fuzzy
2184 msgstr "Enregistrement"
2426 msgid "User group"
2185
2427 msgstr "Groupes d’utilisateurs"
2186 #: rhodecode/templates/admin/permissions/permissions.html:77
2428
2429 #: rhodecode/templates/admin/permissions/permissions.html:76
2430 #, fuzzy
2431 msgid ""
2432 "All default permissions on each user group will be reset to chosen "
2433 "permission, note that all custom default permission on repository groups "
2434 "will be lost"
2435 msgstr ""
2436 "Les permissions par défaut de chaque dépôt vont être remplacées par la "
2437 "permission choisie. Toutes les permissions par défaut des dépôts seront "
2438 "perdues."
2439
2440 #: rhodecode/templates/admin/permissions/permissions.html:83
2187 msgid "Repository creation"
2441 msgid "Repository creation"
2188 msgstr "Création de dépôt"
2442 msgstr "Création de dépôt"
2189
2443
2190 #: rhodecode/templates/admin/permissions/permissions.html:85
2444 #: rhodecode/templates/admin/permissions/permissions.html:91
2445 #, fuzzy
2446 msgid "User group creation"
2447 msgstr "Gestion des groupes d’utilisateurs"
2448
2449 #: rhodecode/templates/admin/permissions/permissions.html:99
2191 msgid "Repository forking"
2450 msgid "Repository forking"
2192 msgstr "Fork de dépôt"
2451 msgstr "Fork de dépôt"
2193
2452
2194 #: rhodecode/templates/admin/permissions/permissions.html:93
2453 #: rhodecode/templates/admin/permissions/permissions.html:107
2195 #: rhodecode/templates/admin/permissions/permissions.html:154
2454 msgid "Registration"
2196 #: rhodecode/templates/admin/repos/repo_edit.html:149
2455 msgstr "Enregistrement"
2197 #: rhodecode/templates/admin/repos/repo_edit.html:174
2456
2198 #: rhodecode/templates/admin/repos/repo_edit.html:388
2457 #: rhodecode/templates/admin/permissions/permissions.html:115
2199 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:81
2458 #, fuzzy
2200 #: rhodecode/templates/admin/settings/settings.html:115
2459 msgid "External auth account activation"
2201 #: rhodecode/templates/admin/settings/settings.html:187
2460 msgstr "Autorisé avec activation automatique du compte"
2202 #: rhodecode/templates/admin/settings/settings.html:278
2461
2203 #: rhodecode/templates/admin/users/user_edit.html:141
2462 #: rhodecode/templates/admin/permissions/permissions.html:133
2204 #: rhodecode/templates/admin/users/user_edit.html:186
2205 #: rhodecode/templates/admin/users/user_edit.html:235
2206 #: rhodecode/templates/admin/users/user_edit.html:283
2207 #: rhodecode/templates/admin/users/user_edit_my_account_form.html:89
2208 #: rhodecode/templates/admin/users_groups/users_group_edit.html:136
2209 #: rhodecode/templates/files/files_add.html:80
2210 #: rhodecode/templates/files/files_edit.html:66
2211 #: rhodecode/templates/pullrequests/pullrequest.html:110
2212 msgid "Reset"
2213 msgstr "Réinitialiser"
2214
2215 #: rhodecode/templates/admin/permissions/permissions.html:103
2216 #, fuzzy
2463 #, fuzzy
2217 msgid "Default User Permissions"
2464 msgid "Default User Permissions"
2218 msgstr "Permissions par défaut"
2465 msgstr "Permissions par défaut"
2219
2466
2220 #: rhodecode/templates/admin/permissions/permissions.html:113
2467 #: rhodecode/templates/admin/permissions/permissions.html:144
2221 #: rhodecode/templates/admin/users/user_edit.html:244
2468 #: rhodecode/templates/admin/users/user_edit.html:207
2222 #, fuzzy
2469 #, fuzzy
2223 msgid "Allowed IP addresses"
2470 msgid "Allowed IP addresses"
2224 msgstr "Adresses e-mail"
2471 msgstr "Adresses e-mail"
2225
2472
2226 #: rhodecode/templates/admin/permissions/permissions.html:127
2473 #: rhodecode/templates/admin/permissions/permissions.html:158
2227 #: rhodecode/templates/admin/repos/repo_edit.html:347
2474 #: rhodecode/templates/admin/repos/repo_edit.html:340
2228 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:70
2475 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:70
2229 #: rhodecode/templates/admin/users/user_edit.html:212
2476 #: rhodecode/templates/admin/users/user_edit.html:175
2230 #: rhodecode/templates/admin/users/user_edit.html:257
2477 #: rhodecode/templates/admin/users/user_edit.html:220
2231 #: rhodecode/templates/admin/users_groups/users_groups.html:46
2478 #: rhodecode/templates/admin/users_groups/users_groups.html:54
2232 #: rhodecode/templates/data_table/_dt_elements.html:122
2479 #: rhodecode/templates/data_table/_dt_elements.html:122
2233 #: rhodecode/templates/data_table/_dt_elements.html:130
2480 #: rhodecode/templates/data_table/_dt_elements.html:136
2234 msgid "delete"
2481 msgid "delete"
2235 msgstr "Supprimer"
2482 msgstr "Supprimer"
2236
2483
2237 #: rhodecode/templates/admin/permissions/permissions.html:128
2484 #: rhodecode/templates/admin/permissions/permissions.html:159
2238 #: rhodecode/templates/admin/users/user_edit.html:258
2485 #: rhodecode/templates/admin/users/user_edit.html:221
2239 #, fuzzy, python-format
2486 #, fuzzy, python-format
2240 msgid "Confirm to delete this ip: %s"
2487 msgid "Confirm to delete this ip: %s"
2241 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
2488 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
2242
2489
2243 #: rhodecode/templates/admin/permissions/permissions.html:134
2490 #: rhodecode/templates/admin/permissions/permissions.html:165
2244 #: rhodecode/templates/admin/users/user_edit.html:264
2491 #: rhodecode/templates/admin/users/user_edit.html:227
2245 msgid "All IP addresses are allowed"
2492 msgid "All IP addresses are allowed"
2246 msgstr ""
2493 msgstr ""
2247
2494
2248 #: rhodecode/templates/admin/permissions/permissions.html:145
2495 #: rhodecode/templates/admin/permissions/permissions.html:176
2249 #: rhodecode/templates/admin/users/user_edit.html:275
2496 #: rhodecode/templates/admin/users/user_edit.html:238
2250 #, fuzzy
2497 #, fuzzy
2251 msgid "New ip address"
2498 msgid "New ip address"
2252 msgstr "Nouvelle adrese"
2499 msgstr "Nouvelle adrese"
2253
2500
2254 #: rhodecode/templates/admin/permissions/permissions.html:153
2501 #: rhodecode/templates/admin/permissions/permissions.html:184
2255 #: rhodecode/templates/admin/repos/repo_add_base.html:73
2502 #: rhodecode/templates/admin/repos/repo_add_base.html:73
2256 #: rhodecode/templates/admin/repos/repo_edit.html:387
2503 #: rhodecode/templates/admin/repos/repo_edit.html:380
2257 #: rhodecode/templates/admin/users/user_edit.html:234
2504 #: rhodecode/templates/admin/users/user_edit.html:197
2258 #: rhodecode/templates/admin/users/user_edit.html:282
2505 #: rhodecode/templates/admin/users/user_edit.html:245
2259 msgid "Add"
2506 msgid "Add"
2260 msgstr "Ajouter"
2507 msgstr "Ajouter"
2261
2508
2262 #: rhodecode/templates/admin/repos/repo_add.html:12
2509 #: rhodecode/templates/admin/repos/repo_add.html:12
2263 #: rhodecode/templates/admin/repos/repo_add.html:16
2510 #: rhodecode/templates/admin/repos/repo_add.html:16
2264 #: rhodecode/templates/base/base.html:69 rhodecode/templates/base/base.html:103
2511 #: rhodecode/templates/base/base.html:74 rhodecode/templates/base/base.html:88
2265 #: rhodecode/templates/base/base.html:263
2512 #: rhodecode/templates/base/base.html:116
2513 #: rhodecode/templates/base/base.html:275
2266 msgid "Repositories"
2514 msgid "Repositories"
2267 msgstr "Dépôts"
2515 msgstr "Dépôts"
2268
2516
@@ -2278,7 +2526,7 b' msgid "Clone from"'
2278 msgstr "Cloner depuis"
2526 msgstr "Cloner depuis"
2279
2527
2280 #: rhodecode/templates/admin/repos/repo_add_base.html:24
2528 #: rhodecode/templates/admin/repos/repo_add_base.html:24
2281 #: rhodecode/templates/admin/repos/repo_edit.html:44
2529 #: rhodecode/templates/admin/repos/repo_edit.html:45
2282 msgid "Optional http[s] url from which repository should be cloned."
2530 msgid "Optional http[s] url from which repository should be cloned."
2283 msgstr "URL http(s) depuis laquelle le dépôt doit être cloné."
2531 msgstr "URL http(s) depuis laquelle le dépôt doit être cloné."
2284
2532
@@ -2292,13 +2540,13 b' msgid "Type of repository to create."'
2292 msgstr "Type de dépôt à créer."
2540 msgstr "Type de dépôt à créer."
2293
2541
2294 #: rhodecode/templates/admin/repos/repo_add_base.html:47
2542 #: rhodecode/templates/admin/repos/repo_add_base.html:47
2295 #: rhodecode/templates/admin/repos/repo_edit.html:66
2543 #: rhodecode/templates/admin/repos/repo_edit.html:59
2296 #: rhodecode/templates/forks/fork.html:38
2544 #: rhodecode/templates/forks/fork.html:38
2297 msgid "Landing revision"
2545 msgid "Landing revision"
2298 msgstr "Révision d’arrivée"
2546 msgstr "Révision d’arrivée"
2299
2547
2300 #: rhodecode/templates/admin/repos/repo_add_base.html:51
2548 #: rhodecode/templates/admin/repos/repo_add_base.html:51
2301 #: rhodecode/templates/admin/repos/repo_edit.html:70
2549 #: rhodecode/templates/admin/repos/repo_edit.html:63
2302 #: rhodecode/templates/forks/fork.html:42
2550 #: rhodecode/templates/forks/fork.html:42
2303 msgid "Default revision for files page, downloads, whoosh and readme"
2551 msgid "Default revision for files page, downloads, whoosh and readme"
2304 msgstr ""
2552 msgstr ""
@@ -2306,7 +2554,7 b' msgstr ""'
2306 "recherche et de documentation."
2554 "recherche et de documentation."
2307
2555
2308 #: rhodecode/templates/admin/repos/repo_add_base.html:60
2556 #: rhodecode/templates/admin/repos/repo_add_base.html:60
2309 #: rhodecode/templates/admin/repos/repo_edit.html:79
2557 #: rhodecode/templates/admin/repos/repo_edit.html:72
2310 #: rhodecode/templates/forks/fork.html:60
2558 #: rhodecode/templates/forks/fork.html:60
2311 msgid "Keep it short and to the point. Use a README file for longer descriptions."
2559 msgid "Keep it short and to the point. Use a README file for longer descriptions."
2312 msgstr ""
2560 msgstr ""
@@ -2320,73 +2568,78 b' msgstr "\xc3\x89diter le d\xc3\xa9p\xc3\xb4t"'
2320 #: rhodecode/templates/admin/repos/repo_edit.html:12
2568 #: rhodecode/templates/admin/repos/repo_edit.html:12
2321 #: rhodecode/templates/admin/settings/hooks.html:9
2569 #: rhodecode/templates/admin/settings/hooks.html:9
2322 #: rhodecode/templates/admin/settings/settings.html:11
2570 #: rhodecode/templates/admin/settings/settings.html:11
2323 #: rhodecode/templates/base/base.html:76 rhodecode/templates/base/base.html:121
2571 #: rhodecode/templates/base/base.html:81 rhodecode/templates/base/base.html:134
2324 #: rhodecode/templates/summary/summary.html:212
2572 #: rhodecode/templates/summary/summary.html:212
2325 msgid "Settings"
2573 msgid "Settings"
2326 msgstr "Options"
2574 msgstr "Options"
2327
2575
2328 #: rhodecode/templates/admin/repos/repo_edit.html:40
2576 #: rhodecode/templates/admin/repos/repo_edit.html:36
2577 #, fuzzy
2578 msgid "Non-changeable id"
2579 msgstr "Identifiant permanent : %s"
2580
2581 #: rhodecode/templates/admin/repos/repo_edit.html:41
2329 msgid "Clone uri"
2582 msgid "Clone uri"
2330 msgstr "URL de clone"
2583 msgstr "URL de clone"
2331
2584
2332 #: rhodecode/templates/admin/repos/repo_edit.html:53
2585 #: rhodecode/templates/admin/repos/repo_edit.html:54
2333 msgid "Optional select a group to put this repository into."
2586 msgid "Optional select a group to put this repository into."
2334 msgstr "Sélectionnez un groupe (optionel) dans lequel sera placé le dépôt."
2587 msgstr "Sélectionnez un groupe (optionel) dans lequel sera placé le dépôt."
2335
2588
2336 #: rhodecode/templates/admin/repos/repo_edit.html:126
2589 #: rhodecode/templates/admin/repos/repo_edit.html:119
2337 msgid "Change owner of this repository."
2590 msgid "Change owner of this repository."
2338 msgstr "Changer le propriétaire de ce dépôt."
2591 msgstr "Changer le propriétaire de ce dépôt."
2339
2592
2340 #: rhodecode/templates/admin/repos/repo_edit.html:184
2593 #: rhodecode/templates/admin/repos/repo_edit.html:177
2341 #, fuzzy
2594 #, fuzzy
2342 msgid "Advanced settings"
2595 msgid "Advanced settings"
2343 msgstr "Enregister les options"
2596 msgstr "Enregister les options"
2344
2597
2345 #: rhodecode/templates/admin/repos/repo_edit.html:187
2598 #: rhodecode/templates/admin/repos/repo_edit.html:180
2346 msgid "Statistics"
2599 msgid "Statistics"
2347 msgstr "Statistiques"
2600 msgstr "Statistiques"
2348
2601
2349 #: rhodecode/templates/admin/repos/repo_edit.html:191
2602 #: rhodecode/templates/admin/repos/repo_edit.html:184
2350 msgid "Reset current statistics"
2603 msgid "Reset current statistics"
2351 msgstr "Réinitialiser les statistiques"
2604 msgstr "Réinitialiser les statistiques"
2352
2605
2353 #: rhodecode/templates/admin/repos/repo_edit.html:191
2606 #: rhodecode/templates/admin/repos/repo_edit.html:184
2354 msgid "Confirm to remove current statistics"
2607 msgid "Confirm to remove current statistics"
2355 msgstr "Souhaitez-vous vraiment réinitialiser les statistiques de ce dépôt ?"
2608 msgstr "Souhaitez-vous vraiment réinitialiser les statistiques de ce dépôt ?"
2356
2609
2357 #: rhodecode/templates/admin/repos/repo_edit.html:194
2610 #: rhodecode/templates/admin/repos/repo_edit.html:187
2358 msgid "Fetched to rev"
2611 msgid "Fetched to rev"
2359 msgstr "Parcouru jusqu’à la révision"
2612 msgstr "Parcouru jusqu’à la révision"
2360
2613
2361 #: rhodecode/templates/admin/repos/repo_edit.html:195
2614 #: rhodecode/templates/admin/repos/repo_edit.html:188
2362 msgid "Stats gathered"
2615 msgid "Stats gathered"
2363 msgstr "Statistiques obtenues"
2616 msgstr "Statistiques obtenues"
2364
2617
2365 #: rhodecode/templates/admin/repos/repo_edit.html:203
2618 #: rhodecode/templates/admin/repos/repo_edit.html:196
2366 msgid "Remote"
2619 msgid "Remote"
2367 msgstr "Dépôt distant"
2620 msgstr "Dépôt distant"
2368
2621
2369 #: rhodecode/templates/admin/repos/repo_edit.html:207
2622 #: rhodecode/templates/admin/repos/repo_edit.html:200
2370 msgid "Pull changes from remote location"
2623 msgid "Pull changes from remote location"
2371 msgstr "Récupérer les changements depuis le site distant"
2624 msgstr "Récupérer les changements depuis le site distant"
2372
2625
2373 #: rhodecode/templates/admin/repos/repo_edit.html:207
2626 #: rhodecode/templates/admin/repos/repo_edit.html:200
2374 msgid "Confirm to pull changes from remote side"
2627 msgid "Confirm to pull changes from remote side"
2375 msgstr "Voulez-vous vraiment récupérer les changements depuis le site distant ?"
2628 msgstr "Voulez-vous vraiment récupérer les changements depuis le site distant ?"
2376
2629
2377 #: rhodecode/templates/admin/repos/repo_edit.html:218
2630 #: rhodecode/templates/admin/repos/repo_edit.html:211
2378 msgid "Cache"
2631 msgid "Cache"
2379 msgstr "Cache"
2632 msgstr "Cache"
2380
2633
2381 #: rhodecode/templates/admin/repos/repo_edit.html:222
2634 #: rhodecode/templates/admin/repos/repo_edit.html:215
2382 msgid "Invalidate repository cache"
2635 msgid "Invalidate repository cache"
2383 msgstr "Invalider le cache du dépôt"
2636 msgstr "Invalider le cache du dépôt"
2384
2637
2385 #: rhodecode/templates/admin/repos/repo_edit.html:222
2638 #: rhodecode/templates/admin/repos/repo_edit.html:215
2386 msgid "Confirm to invalidate repository cache"
2639 msgid "Confirm to invalidate repository cache"
2387 msgstr "Voulez-vous vraiment invalider le cache du dépôt ?"
2640 msgstr "Voulez-vous vraiment invalider le cache du dépôt ?"
2388
2641
2389 #: rhodecode/templates/admin/repos/repo_edit.html:225
2642 #: rhodecode/templates/admin/repos/repo_edit.html:218
2390 msgid ""
2643 msgid ""
2391 "Manually invalidate cache for this repository. On first access repository"
2644 "Manually invalidate cache for this repository. On first access repository"
2392 " will be cached again"
2645 " will be cached again"
@@ -2394,44 +2647,44 b' msgstr ""'
2394 "Invalide manuellement le cache de ce dépôt. Au prochain accès sur ce "
2647 "Invalide manuellement le cache de ce dépôt. Au prochain accès sur ce "
2395 "dépôt, il sera à nouveau mis en cache."
2648 "dépôt, il sera à nouveau mis en cache."
2396
2649
2397 #: rhodecode/templates/admin/repos/repo_edit.html:230
2650 #: rhodecode/templates/admin/repos/repo_edit.html:223
2398 msgid "List of cached values"
2651 msgid "List of cached values"
2399 msgstr "Liste des valeurs en cache"
2652 msgstr "Liste des valeurs en cache"
2400
2653
2401 #: rhodecode/templates/admin/repos/repo_edit.html:233
2654 #: rhodecode/templates/admin/repos/repo_edit.html:226
2402 msgid "Prefix"
2655 msgid "Prefix"
2403 msgstr ""
2656 msgstr ""
2404
2657
2405 #: rhodecode/templates/admin/repos/repo_edit.html:234
2658 #: rhodecode/templates/admin/repos/repo_edit.html:227
2406 #, fuzzy
2659 #, fuzzy
2407 msgid "Key"
2660 msgid "Key"
2408 msgstr "Clé d’API"
2661 msgstr "Clé d’API"
2409
2662
2410 #: rhodecode/templates/admin/repos/repo_edit.html:235
2663 #: rhodecode/templates/admin/repos/repo_edit.html:228
2411 #: rhodecode/templates/admin/users/user_add.html:86
2664 #: rhodecode/templates/admin/users/user_add.html:86
2412 #: rhodecode/templates/admin/users/user_edit.html:124
2665 #: rhodecode/templates/admin/users/user_edit.html:124
2413 #: rhodecode/templates/admin/users/users.html:84
2666 #: rhodecode/templates/admin/users/users.html:84
2414 #: rhodecode/templates/admin/users_groups/users_group_add.html:41
2667 #: rhodecode/templates/admin/users_groups/users_group_add.html:41
2415 #: rhodecode/templates/admin/users_groups/users_group_edit.html:42
2668 #: rhodecode/templates/admin/users_groups/users_group_edit.html:42
2416 #: rhodecode/templates/admin/users_groups/users_groups.html:36
2669 #: rhodecode/templates/admin/users_groups/users_groups.html:39
2417 msgid "Active"
2670 msgid "Active"
2418 msgstr "Actif"
2671 msgstr "Actif"
2419
2672
2420 #: rhodecode/templates/admin/repos/repo_edit.html:250
2673 #: rhodecode/templates/admin/repos/repo_edit.html:243
2421 #: rhodecode/templates/base/base.html:280
2674 #: rhodecode/templates/base/base.html:292
2422 #: rhodecode/templates/base/base.html:281
2675 #: rhodecode/templates/base/base.html:293
2423 msgid "Public journal"
2676 msgid "Public journal"
2424 msgstr "Journal public"
2677 msgstr "Journal public"
2425
2678
2426 #: rhodecode/templates/admin/repos/repo_edit.html:256
2679 #: rhodecode/templates/admin/repos/repo_edit.html:249
2427 msgid "Remove from public journal"
2680 msgid "Remove from public journal"
2428 msgstr "Supprimer du journal public"
2681 msgstr "Supprimer du journal public"
2429
2682
2430 #: rhodecode/templates/admin/repos/repo_edit.html:258
2683 #: rhodecode/templates/admin/repos/repo_edit.html:251
2431 msgid "Add to public journal"
2684 msgid "Add to public journal"
2432 msgstr "Ajouter le dépôt au journal public"
2685 msgstr "Ajouter le dépôt au journal public"
2433
2686
2434 #: rhodecode/templates/admin/repos/repo_edit.html:263
2687 #: rhodecode/templates/admin/repos/repo_edit.html:256
2435 msgid ""
2688 msgid ""
2436 "All actions made on this repository will be accessible to everyone in "
2689 "All actions made on this repository will be accessible to everyone in "
2437 "public journal"
2690 "public journal"
@@ -2439,79 +2692,76 b' msgstr ""'
2439 "Le descriptif des actions réalisées sur ce dépôt sera visible à tous "
2692 "Le descriptif des actions réalisées sur ce dépôt sera visible à tous "
2440 "depuis le journal public."
2693 "depuis le journal public."
2441
2694
2442 #: rhodecode/templates/admin/repos/repo_edit.html:270
2695 #: rhodecode/templates/admin/repos/repo_edit.html:263
2443 msgid "Locking"
2696 msgid "Locking"
2444 msgstr "Verrouillage"
2697 msgstr "Verrouillage"
2445
2698
2446 #: rhodecode/templates/admin/repos/repo_edit.html:275
2699 #: rhodecode/templates/admin/repos/repo_edit.html:268
2447 msgid "Unlock locked repo"
2700 msgid "Unlock locked repo"
2448 msgstr "Déverrouiller le dépôt"
2701 msgstr "Déverrouiller le dépôt"
2449
2702
2450 #: rhodecode/templates/admin/repos/repo_edit.html:275
2703 #: rhodecode/templates/admin/repos/repo_edit.html:268
2451 msgid "Confirm to unlock repository"
2704 msgid "Confirm to unlock repository"
2452 msgstr "Veuillez confirmer le déverrouillage de ce dépôt."
2705 msgstr "Veuillez confirmer le déverrouillage de ce dépôt."
2453
2706
2454 #: rhodecode/templates/admin/repos/repo_edit.html:278
2707 #: rhodecode/templates/admin/repos/repo_edit.html:271
2455 msgid "lock repo"
2708 #, fuzzy
2709 msgid "Lock repo"
2456 msgstr "Verrouiller le dépôt"
2710 msgstr "Verrouiller le dépôt"
2457
2711
2458 #: rhodecode/templates/admin/repos/repo_edit.html:278
2712 #: rhodecode/templates/admin/repos/repo_edit.html:271
2459 msgid "Confirm to lock repository"
2713 msgid "Confirm to lock repository"
2460 msgstr "Veuillez confirmer le verrouillage de ce dépôt."
2714 msgstr "Veuillez confirmer le verrouillage de ce dépôt."
2461
2715
2462 #: rhodecode/templates/admin/repos/repo_edit.html:279
2716 #: rhodecode/templates/admin/repos/repo_edit.html:272
2463 msgid "Repository is not locked"
2717 msgid "Repository is not locked"
2464 msgstr "Ce dépôt n’est pas verrouillé."
2718 msgstr "Ce dépôt n’est pas verrouillé."
2465
2719
2466 #: rhodecode/templates/admin/repos/repo_edit.html:284
2720 #: rhodecode/templates/admin/repos/repo_edit.html:277
2467 msgid "Force locking on repository. Works only when anonymous access is disabled"
2721 msgid "Force locking on repository. Works only when anonymous access is disabled"
2468 msgstr ""
2722 msgstr ""
2469 "Forcer le verrouillage du dépôt. Ce réglage fonctionne uniquement quand "
2723 "Forcer le verrouillage du dépôt. Ce réglage fonctionne uniquement quand "
2470 "l‘accès anonyme est désactivé."
2724 "l‘accès anonyme est désactivé."
2471
2725
2472 #: rhodecode/templates/admin/repos/repo_edit.html:291
2726 #: rhodecode/templates/admin/repos/repo_edit.html:284
2473 msgid "Set as fork of"
2727 msgid "Set as fork of"
2474 msgstr "Indiquer comme fork"
2728 msgstr "Indiquer comme fork"
2475
2729
2476 #: rhodecode/templates/admin/repos/repo_edit.html:296
2730 #: rhodecode/templates/admin/repos/repo_edit.html:289
2477 msgid "set"
2731 #, fuzzy
2732 msgid "Set"
2478 msgstr "Définir"
2733 msgstr "Définir"
2479
2734
2480 #: rhodecode/templates/admin/repos/repo_edit.html:300
2735 #: rhodecode/templates/admin/repos/repo_edit.html:293
2481 msgid "Manually set this repository as a fork of another from the list"
2736 msgid "Manually set this repository as a fork of another from the list"
2482 msgstr "Marquer ce dépôt comme fork d’un autre dépôt de la liste."
2737 msgstr "Marquer ce dépôt comme fork d’un autre dépôt de la liste."
2483
2738
2484 #: rhodecode/templates/admin/repos/repo_edit.html:306
2739 #: rhodecode/templates/admin/repos/repo_edit.html:308
2485 #: rhodecode/templates/changeset/changeset_file_comment.html:41
2486 msgid "Delete"
2487 msgstr "Supprimer"
2488
2489 #: rhodecode/templates/admin/repos/repo_edit.html:315
2490 msgid "Remove this repository"
2740 msgid "Remove this repository"
2491 msgstr "Supprimer ce dépôt"
2741 msgstr "Supprimer ce dépôt"
2492
2742
2493 #: rhodecode/templates/admin/repos/repo_edit.html:315
2743 #: rhodecode/templates/admin/repos/repo_edit.html:308
2494 msgid "Confirm to delete this repository"
2744 msgid "Confirm to delete this repository"
2495 msgstr "Voulez-vous vraiment supprimer ce dépôt ?"
2745 msgstr "Voulez-vous vraiment supprimer ce dépôt ?"
2496
2746
2497 #: rhodecode/templates/admin/repos/repo_edit.html:317
2747 #: rhodecode/templates/admin/repos/repo_edit.html:310
2498 #, fuzzy, python-format
2748 #, fuzzy, python-format
2499 msgid "this repository has %s fork"
2749 msgid "this repository has %s fork"
2500 msgid_plural "this repository has %s forks"
2750 msgid_plural "this repository has %s forks"
2501 msgstr[0] "[a créé] le dépôt en tant que %s fork"
2751 msgstr[0] "[a créé] le dépôt en tant que %s fork"
2502 msgstr[1] "[a créé] le dépôt en tant que %s fork"
2752 msgstr[1] "[a créé] le dépôt en tant que %s fork"
2503
2753
2504 #: rhodecode/templates/admin/repos/repo_edit.html:318
2754 #: rhodecode/templates/admin/repos/repo_edit.html:311
2505 #, fuzzy
2755 #, fuzzy
2506 msgid "Detach forks"
2756 msgid "Detach forks"
2507 msgstr "Indiquer comme fork"
2757 msgstr "Indiquer comme fork"
2508
2758
2509 #: rhodecode/templates/admin/repos/repo_edit.html:319
2759 #: rhodecode/templates/admin/repos/repo_edit.html:312
2510 #, fuzzy
2760 #, fuzzy
2511 msgid "Delete forks"
2761 msgid "Delete forks"
2512 msgstr "Supprimer"
2762 msgstr "Supprimer"
2513
2763
2514 #: rhodecode/templates/admin/repos/repo_edit.html:322
2764 #: rhodecode/templates/admin/repos/repo_edit.html:315
2515 #, fuzzy
2765 #, fuzzy
2516 msgid ""
2766 msgid ""
2517 "This repository will be renamed in a special way in order to be "
2767 "This repository will be renamed in a special way in order to be "
@@ -2526,59 +2776,64 b' msgstr ""'
2526 "Si vous voulez le supprimer complètement, effectuez la suppression "
2776 "Si vous voulez le supprimer complètement, effectuez la suppression "
2527 "manuellement."
2777 "manuellement."
2528
2778
2529 #: rhodecode/templates/admin/repos/repo_edit.html:336
2779 #: rhodecode/templates/admin/repos/repo_edit.html:329
2530 msgid "Extra fields"
2780 msgid "Extra fields"
2531 msgstr ""
2781 msgstr ""
2532
2782
2533 #: rhodecode/templates/admin/repos/repo_edit.html:348
2783 #: rhodecode/templates/admin/repos/repo_edit.html:341
2534 #, fuzzy, python-format
2784 #, fuzzy, python-format
2535 msgid "Confirm to delete this field: %s"
2785 msgid "Confirm to delete this field: %s"
2536 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
2786 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
2537
2787
2538 #: rhodecode/templates/admin/repos/repo_edit.html:362
2788 #: rhodecode/templates/admin/repos/repo_edit.html:355
2539 #, fuzzy
2789 #, fuzzy
2540 msgid "New field key"
2790 msgid "New field key"
2541 msgstr "Ajouter un fichier"
2791 msgstr "Ajouter un fichier"
2542
2792
2543 #: rhodecode/templates/admin/repos/repo_edit.html:370
2793 #: rhodecode/templates/admin/repos/repo_edit.html:363
2544 msgid "New field label"
2794 msgid "New field label"
2545 msgstr ""
2795 msgstr ""
2546
2796
2547 #: rhodecode/templates/admin/repos/repo_edit.html:373
2797 #: rhodecode/templates/admin/repos/repo_edit.html:366
2548 msgid "Enter short label"
2798 msgid "Enter short label"
2549 msgstr ""
2799 msgstr ""
2550
2800
2551 #: rhodecode/templates/admin/repos/repo_edit.html:379
2801 #: rhodecode/templates/admin/repos/repo_edit.html:372
2552 #, fuzzy
2802 #, fuzzy
2553 msgid "New field description"
2803 msgid "New field description"
2554 msgstr "Description"
2804 msgstr "Description"
2555
2805
2556 #: rhodecode/templates/admin/repos/repo_edit.html:382
2806 #: rhodecode/templates/admin/repos/repo_edit.html:375
2557 msgid "Enter description of a field"
2807 msgid "Enter description of a field"
2558 msgstr ""
2808 msgstr ""
2559
2809
2560 #: rhodecode/templates/admin/repos/repo_edit_perms.html:3
2810 #: rhodecode/templates/admin/repos/repo_edit_perms.html:3
2561 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
2811 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
2812 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:3
2562 msgid "none"
2813 msgid "none"
2563 msgstr "Aucune"
2814 msgstr "Aucune"
2564
2815
2565 #: rhodecode/templates/admin/repos/repo_edit_perms.html:4
2816 #: rhodecode/templates/admin/repos/repo_edit_perms.html:4
2566 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:4
2817 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:4
2818 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:4
2567 msgid "read"
2819 msgid "read"
2568 msgstr "Lecture"
2820 msgstr "Lecture"
2569
2821
2570 #: rhodecode/templates/admin/repos/repo_edit_perms.html:5
2822 #: rhodecode/templates/admin/repos/repo_edit_perms.html:5
2571 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:5
2823 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:5
2824 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:5
2572 msgid "write"
2825 msgid "write"
2573 msgstr "Écriture"
2826 msgstr "Écriture"
2574
2827
2575 #: rhodecode/templates/admin/repos/repo_edit_perms.html:6
2828 #: rhodecode/templates/admin/repos/repo_edit_perms.html:6
2576 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:6
2829 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:6
2830 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:6
2577 msgid "admin"
2831 msgid "admin"
2578 msgstr "Administration"
2832 msgstr "Administration"
2579
2833
2580 #: rhodecode/templates/admin/repos/repo_edit_perms.html:7
2834 #: rhodecode/templates/admin/repos/repo_edit_perms.html:7
2581 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:7
2835 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:7
2836 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:7
2582 msgid "member"
2837 msgid "member"
2583 msgstr "Membre"
2838 msgstr "Membre"
2584
2839
@@ -2590,6 +2845,8 b' msgstr "D\xc3\xa9p\xc3\xb4t priv\xc3\xa9"'
2590 #: rhodecode/templates/admin/repos/repo_edit_perms.html:28
2845 #: rhodecode/templates/admin/repos/repo_edit_perms.html:28
2591 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:20
2846 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:20
2592 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:35
2847 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:35
2848 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:20
2849 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:35
2593 msgid "default"
2850 msgid "default"
2594 msgstr "[Par défaut]"
2851 msgstr "[Par défaut]"
2595
2852
@@ -2597,34 +2854,37 b' msgstr "[Par d\xc3\xa9faut]"'
2597 #: rhodecode/templates/admin/repos/repo_edit_perms.html:58
2854 #: rhodecode/templates/admin/repos/repo_edit_perms.html:58
2598 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:25
2855 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:25
2599 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:55
2856 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:55
2857 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:25
2858 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:55
2600 msgid "revoke"
2859 msgid "revoke"
2601 msgstr "Révoquer"
2860 msgstr "Révoquer"
2602
2861
2603 #: rhodecode/templates/admin/repos/repo_edit_perms.html:83
2862 #: rhodecode/templates/admin/repos/repo_edit_perms.html:83
2604 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:80
2863 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:81
2864 #: rhodecode/templates/admin/users_groups/user_group_edit_perms.html:81
2605 msgid "Add another member"
2865 msgid "Add another member"
2606 msgstr "Ajouter un utilisateur"
2866 msgstr "Ajouter un utilisateur"
2607
2867
2608 #: rhodecode/templates/admin/repos/repo_edit_perms.html:97
2609 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:100
2610 msgid "Failed to remove user"
2611 msgstr "Échec de suppression de l’utilisateur"
2612
2613 #: rhodecode/templates/admin/repos/repo_edit_perms.html:112
2614 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:116
2615 #, fuzzy
2616 msgid "Failed to remove user group"
2617 msgstr "Erreur lors de la suppression du groupe d’utilisateurs."
2618
2619 #: rhodecode/templates/admin/repos/repos.html:5
2868 #: rhodecode/templates/admin/repos/repos.html:5
2620 msgid "Repositories administration"
2869 msgid "Repositories administration"
2621 msgstr "Administration des dépôts"
2870 msgstr "Administration des dépôts"
2622
2871
2623 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:86
2872 #: rhodecode/templates/admin/repos/repos.html:86
2873 #: rhodecode/templates/admin/users/user_edit_my_account.html:185
2874 #: rhodecode/templates/admin/users/users.html:109
2875 #: rhodecode/templates/bookmarks/bookmarks.html:76
2876 #: rhodecode/templates/branches/branches.html:75
2877 #: rhodecode/templates/journal/journal.html:206
2878 #: rhodecode/templates/journal/journal.html:296
2879 #: rhodecode/templates/tags/tags.html:76
2880 msgid "No records found."
2881 msgstr "Aucun élément n’a été trouvé."
2882
2883 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:87
2624 msgid "apply to children"
2884 msgid "apply to children"
2625 msgstr "Appliquer aux enfants"
2885 msgstr "Appliquer aux enfants"
2626
2886
2627 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:87
2887 #: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:88
2628 #, fuzzy
2888 #, fuzzy
2629 msgid ""
2889 msgid ""
2630 "Set or revoke permission to all children of that group, including non-"
2890 "Set or revoke permission to all children of that group, including non-"
@@ -2654,7 +2914,7 b' msgstr "Groupe de d\xc3\xa9p\xc3\xb4t"'
2654 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:11
2914 #: rhodecode/templates/admin/repos_groups/repos_groups_add.html:11
2655 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:11
2915 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:11
2656 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:16
2916 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:16
2657 #: rhodecode/templates/base/base.html:70 rhodecode/templates/base/base.html:82
2917 #: rhodecode/templates/base/base.html:75 rhodecode/templates/base/base.html:91
2658 #, fuzzy
2918 #, fuzzy
2659 msgid "Repository groups"
2919 msgid "Repository groups"
2660 msgstr "Groupe de dépôt"
2920 msgstr "Groupe de dépôt"
@@ -2688,7 +2948,7 b' msgstr "\xc3\x89dition du groupe de d\xc3\xa9p\xc3\xb4t %s"'
2688 msgid "Add child group"
2948 msgid "Add child group"
2689 msgstr "Ajouter un nouveau groupe"
2949 msgstr "Ajouter un nouveau groupe"
2690
2950
2691 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:76
2951 #: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:68
2692 msgid ""
2952 msgid ""
2693 "Enable lock-by-pulling on group. This option will be applied to all other"
2953 "Enable lock-by-pulling on group. This option will be applied to all other"
2694 " groups and repositories inside"
2954 " groups and repositories inside"
@@ -2706,16 +2966,22 b' msgid "Number of toplevel repositories"'
2706 msgstr "Nombre de sous-dépôts"
2966 msgstr "Nombre de sous-dépôts"
2707
2967
2708 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:64
2968 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:64
2969 #: rhodecode/templates/admin/users_groups/users_groups.html:48
2970 #: rhodecode/templates/changeset/changeset_file_comment.html:73
2971 #: rhodecode/templates/changeset/changeset_file_comment.html:171
2709 #, fuzzy
2972 #, fuzzy
2710 msgid "Edit"
2973 msgid "Edit"
2711 msgstr "éditer"
2974 msgstr "éditer"
2712
2975
2713 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:65
2976 #: rhodecode/templates/admin/repos_groups/repos_groups_show.html:65
2977 #: rhodecode/templates/admin/users_groups/users_groups.html:49
2714 #: rhodecode/templates/base/perms_summary.html:29
2978 #: rhodecode/templates/base/perms_summary.html:29
2715 #: rhodecode/templates/base/perms_summary.html:48
2979 #: rhodecode/templates/base/perms_summary.html:60
2716 #: rhodecode/templates/base/perms_summary.html:50
2980 #: rhodecode/templates/base/perms_summary.html:62
2717 #: rhodecode/templates/data_table/_dt_elements.html:116
2981 #: rhodecode/templates/data_table/_dt_elements.html:116
2718 #: rhodecode/templates/data_table/_dt_elements.html:117
2982 #: rhodecode/templates/data_table/_dt_elements.html:117
2983 #: rhodecode/templates/data_table/_dt_elements.html:130
2984 #: rhodecode/templates/data_table/_dt_elements.html:131
2719 msgid "edit"
2985 msgid "edit"
2720 msgstr "éditer"
2986 msgstr "éditer"
2721
2987
@@ -2823,8 +3089,8 b' msgid "Google Analytics code"'
2823 msgstr ""
3089 msgstr ""
2824
3090
2825 #: rhodecode/templates/admin/settings/settings.html:114
3091 #: rhodecode/templates/admin/settings/settings.html:114
2826 #: rhodecode/templates/admin/settings/settings.html:186
3092 #: rhodecode/templates/admin/settings/settings.html:195
2827 #: rhodecode/templates/admin/settings/settings.html:277
3093 #: rhodecode/templates/admin/settings/settings.html:287
2828 msgid "Save settings"
3094 msgid "Save settings"
2829 msgstr "Enregister les options"
3095 msgstr "Enregister les options"
2830
3096
@@ -2838,48 +3104,72 b' msgid "General"'
2838 msgstr "Activer"
3104 msgstr "Activer"
2839
3105
2840 #: rhodecode/templates/admin/settings/settings.html:134
3106 #: rhodecode/templates/admin/settings/settings.html:134
2841 msgid "Use lightweight dashboard"
2842 msgstr ""
2843
2844 #: rhodecode/templates/admin/settings/settings.html:140
2845 #, fuzzy
3107 #, fuzzy
2846 msgid "Use repository extra fields"
3108 msgid "Use repository extra fields"
2847 msgstr "Dépôts"
3109 msgstr "Dépôts"
2848
3110
2849 #: rhodecode/templates/admin/settings/settings.html:147
3111 #: rhodecode/templates/admin/settings/settings.html:136
3112 msgid "Allows storing additional customized fields per repository."
3113 msgstr ""
3114
3115 #: rhodecode/templates/admin/settings/settings.html:139
3116 msgid "Show RhodeCode version"
3117 msgstr ""
3118
3119 #: rhodecode/templates/admin/settings/settings.html:141
3120 msgid "Shows or hides displayed version of RhodeCode in the footer"
3121 msgstr ""
3122
3123 #: rhodecode/templates/admin/settings/settings.html:146
3124 #, fuzzy
3125 msgid "Dashboard items"
3126 msgstr "Tableau de bord"
3127
3128 #: rhodecode/templates/admin/settings/settings.html:150
3129 msgid ""
3130 "Number of items displayed in lightweight dashboard before pagination is "
3131 "shown."
3132 msgstr ""
3133
3134 #: rhodecode/templates/admin/settings/settings.html:155
2850 msgid "Icons"
3135 msgid "Icons"
2851 msgstr "Icônes"
3136 msgstr "Icônes"
2852
3137
2853 #: rhodecode/templates/admin/settings/settings.html:152
3138 #: rhodecode/templates/admin/settings/settings.html:160
2854 msgid "Show public repo icon on repositories"
3139 msgid "Show public repo icon on repositories"
2855 msgstr "Afficher l’icône de dépôt public sur les dépôts"
3140 msgstr "Afficher l’icône de dépôt public sur les dépôts"
2856
3141
2857 #: rhodecode/templates/admin/settings/settings.html:156
3142 #: rhodecode/templates/admin/settings/settings.html:164
2858 msgid "Show private repo icon on repositories"
3143 msgid "Show private repo icon on repositories"
2859 msgstr "Afficher l’icône de dépôt privé sur les dépôts"
3144 msgstr "Afficher l’icône de dépôt privé sur les dépôts"
2860
3145
2861 #: rhodecode/templates/admin/settings/settings.html:163
3146 #: rhodecode/templates/admin/settings/settings.html:166
3147 #, fuzzy
3148 msgid "Show public/private icons next to repositories names"
3149 msgstr "Afficher l’icône de dépôt public sur les dépôts"
3150
3151 #: rhodecode/templates/admin/settings/settings.html:172
2862 msgid "Meta-Tagging"
3152 msgid "Meta-Tagging"
2863 msgstr "Meta-Tagging"
3153 msgstr "Meta-Tagging"
2864
3154
2865 #: rhodecode/templates/admin/settings/settings.html:168
3155 #: rhodecode/templates/admin/settings/settings.html:177
2866 msgid "Stylify recognised metatags:"
3156 msgid "Stylify recognised metatags:"
2867 msgstr "Styliser les méta-tags reconnus :"
3157 msgstr "Styliser les méta-tags reconnus :"
2868
3158
2869 #: rhodecode/templates/admin/settings/settings.html:195
3159 #: rhodecode/templates/admin/settings/settings.html:204
2870 msgid "VCS settings"
3160 msgid "VCS settings"
2871 msgstr "Réglages de gestionnaire de version"
3161 msgstr "Réglages de gestionnaire de version"
2872
3162
2873 #: rhodecode/templates/admin/settings/settings.html:204
3163 #: rhodecode/templates/admin/settings/settings.html:213
2874 msgid "Web"
3164 msgid "Web"
2875 msgstr "Web"
3165 msgstr "Web"
2876
3166
2877 #: rhodecode/templates/admin/settings/settings.html:209
3167 #: rhodecode/templates/admin/settings/settings.html:218
2878 #, fuzzy
3168 #, fuzzy
2879 msgid "Require SSL for vcs operations"
3169 msgid "Require SSL for vcs operations"
2880 msgstr "SSL requis pour les opérations de push/pull"
3170 msgstr "SSL requis pour les opérations de push/pull"
2881
3171
2882 #: rhodecode/templates/admin/settings/settings.html:211
3172 #: rhodecode/templates/admin/settings/settings.html:220
2883 msgid ""
3173 msgid ""
2884 "RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
3174 "RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
2885 "will return HTTP Error 406: Not Acceptable"
3175 "will return HTTP Error 406: Not Acceptable"
@@ -2887,46 +3177,46 b' msgstr ""'
2887 "RhodeCode requièrera SSL pour les pushs et pulls. Si le SSL n’est pas "
3177 "RhodeCode requièrera SSL pour les pushs et pulls. Si le SSL n’est pas "
2888 "utilisé l’erreur HTTP 406 (Non Acceptable) sera renvoyée."
3178 "utilisé l’erreur HTTP 406 (Non Acceptable) sera renvoyée."
2889
3179
2890 #: rhodecode/templates/admin/settings/settings.html:217
3180 #: rhodecode/templates/admin/settings/settings.html:226
2891 msgid "Hooks"
3181 msgid "Hooks"
2892 msgstr "Hooks"
3182 msgstr "Hooks"
2893
3183
2894 #: rhodecode/templates/admin/settings/settings.html:222
3184 #: rhodecode/templates/admin/settings/settings.html:231
2895 msgid "Update repository after push (hg update)"
3185 msgid "Update repository after push (hg update)"
2896 msgstr "Mettre à jour les dépôts après un push (hg update)"
3186 msgstr "Mettre à jour les dépôts après un push (hg update)"
2897
3187
2898 #: rhodecode/templates/admin/settings/settings.html:226
3188 #: rhodecode/templates/admin/settings/settings.html:235
2899 msgid "Show repository size after push"
3189 msgid "Show repository size after push"
2900 msgstr "Afficher la taille du dépôt après un push"
3190 msgstr "Afficher la taille du dépôt après un push"
2901
3191
2902 #: rhodecode/templates/admin/settings/settings.html:230
3192 #: rhodecode/templates/admin/settings/settings.html:239
2903 msgid "Log user push commands"
3193 msgid "Log user push commands"
2904 msgstr "Journaliser les commandes de push"
3194 msgstr "Journaliser les commandes de push"
2905
3195
2906 #: rhodecode/templates/admin/settings/settings.html:234
3196 #: rhodecode/templates/admin/settings/settings.html:243
2907 msgid "Log user pull commands"
3197 msgid "Log user pull commands"
2908 msgstr "Journaliser les commandes de pull"
3198 msgstr "Journaliser les commandes de pull"
2909
3199
2910 #: rhodecode/templates/admin/settings/settings.html:238
3200 #: rhodecode/templates/admin/settings/settings.html:247
2911 #, fuzzy
3201 #, fuzzy
2912 msgid "Advanced setup"
3202 msgid "Advanced setup"
2913 msgstr "Avancé"
3203 msgstr "Avancé"
2914
3204
2915 #: rhodecode/templates/admin/settings/settings.html:243
3205 #: rhodecode/templates/admin/settings/settings.html:252
2916 msgid "Mercurial Extensions"
3206 msgid "Mercurial Extensions"
2917 msgstr "Extensions Mercurial"
3207 msgstr "Extensions Mercurial"
2918
3208
2919 #: rhodecode/templates/admin/settings/settings.html:248
3209 #: rhodecode/templates/admin/settings/settings.html:257
2920 #, fuzzy
3210 #, fuzzy
2921 msgid "Enable largefiles extension"
3211 msgid "Enable largefiles extension"
2922 msgstr "Extensions largefiles"
3212 msgstr "Extensions largefiles"
2923
3213
2924 #: rhodecode/templates/admin/settings/settings.html:252
3214 #: rhodecode/templates/admin/settings/settings.html:261
2925 #, fuzzy
3215 #, fuzzy
2926 msgid "Enable hgsubversion extension"
3216 msgid "Enable hgsubversion extension"
2927 msgstr "Extensions hgsubversion"
3217 msgstr "Extensions hgsubversion"
2928
3218
2929 #: rhodecode/templates/admin/settings/settings.html:254
3219 #: rhodecode/templates/admin/settings/settings.html:263
2930 #, fuzzy
3220 #, fuzzy
2931 msgid ""
3221 msgid ""
2932 "Requires hgsubversion library installed. Allows cloning from svn remote "
3222 "Requires hgsubversion library installed. Allows cloning from svn remote "
@@ -2935,27 +3225,23 b' msgstr ""'
2935 "Ceci nécessite l’installation de la bibliothèque hgsubversion. Permet de "
3225 "Ceci nécessite l’installation de la bibliothèque hgsubversion. Permet de "
2936 "clôner à partir de dépôts Suversion."
3226 "clôner à partir de dépôts Suversion."
2937
3227
2938 #: rhodecode/templates/admin/settings/settings.html:264
3228 #: rhodecode/templates/admin/settings/settings.html:274
2939 msgid "Repositories location"
3229 msgid "Repositories location"
2940 msgstr "Emplacement des dépôts"
3230 msgstr "Emplacement des dépôts"
2941
3231
2942 #: rhodecode/templates/admin/settings/settings.html:269
3232 #: rhodecode/templates/admin/settings/settings.html:279
2943 msgid ""
3233 msgid ""
2944 "This a crucial application setting. If you are really sure you need to "
3234 "Click to unlock. You must restart RhodeCode in order to make this setting"
2945 "change this, you must restart application in order to make this setting "
3235 " take effect."
2946 "take effect. Click this label to unlock."
2947 msgstr ""
3236 msgstr ""
2948 "Ce réglage ne devrait pas être modifié en temps normal. Si vous devez "
3237
2949 "vraiment le faire, redémarrer l’application une fois le changement "
3238 #: rhodecode/templates/admin/settings/settings.html:280
2950 "effectué. Cliquez sur ce texte pour déverrouiller."
3239 #: rhodecode/templates/base/base.html:143
2951
2952 #: rhodecode/templates/admin/settings/settings.html:270
2953 #: rhodecode/templates/base/base.html:131
2954 #, fuzzy
3240 #, fuzzy
2955 msgid "Unlock"
3241 msgid "Unlock"
2956 msgstr "Déverrouiller"
3242 msgstr "Déverrouiller"
2957
3243
2958 #: rhodecode/templates/admin/settings/settings.html:272
3244 #: rhodecode/templates/admin/settings/settings.html:282
2959 msgid ""
3245 msgid ""
2960 "Location where repositories are stored. After changing this value a "
3246 "Location where repositories are stored. After changing this value a "
2961 "restart, and rescan is required"
3247 "restart, and rescan is required"
@@ -2963,24 +3249,24 b' msgstr ""'
2963 "Emplacement de stockage des dépôts. Si cette valeur est changée, "
3249 "Emplacement de stockage des dépôts. Si cette valeur est changée, "
2964 "Rhodecode devra être redémarré les les dépôts rescannés."
3250 "Rhodecode devra être redémarré les les dépôts rescannés."
2965
3251
2966 #: rhodecode/templates/admin/settings/settings.html:292
3252 #: rhodecode/templates/admin/settings/settings.html:303
2967 msgid "Test Email"
3253 msgid "Test Email"
2968 msgstr "E-mail de test"
3254 msgstr "E-mail de test"
2969
3255
2970 #: rhodecode/templates/admin/settings/settings.html:300
3256 #: rhodecode/templates/admin/settings/settings.html:311
2971 msgid "Email to"
3257 msgid "Email to"
2972 msgstr "Envoyer l’e-mail à"
3258 msgstr "Envoyer l’e-mail à"
2973
3259
2974 #: rhodecode/templates/admin/settings/settings.html:308
3260 #: rhodecode/templates/admin/settings/settings.html:319
2975 msgid "Send"
3261 msgid "Send"
2976 msgstr "Envoyer"
3262 msgstr "Envoyer"
2977
3263
2978 #: rhodecode/templates/admin/settings/settings.html:314
3264 #: rhodecode/templates/admin/settings/settings.html:325
2979 msgid "System Info and Packages"
3265 msgid "System Info and Packages"
2980 msgstr "Information système et paquets"
3266 msgstr "Information système et paquets"
2981
3267
2982 #: rhodecode/templates/admin/settings/settings.html:317
3268 #: rhodecode/templates/admin/settings/settings.html:328
2983 #: rhodecode/templates/changelog/changelog.html:42
3269 #: rhodecode/templates/changelog/changelog.html:51
2984 msgid "Show"
3270 msgid "Show"
2985 msgstr "Afficher"
3271 msgstr "Afficher"
2986
3272
@@ -2990,7 +3276,7 b' msgstr "Ajouter un utilisateur"'
2990
3276
2991 #: rhodecode/templates/admin/users/user_add.html:10
3277 #: rhodecode/templates/admin/users/user_add.html:10
2992 #: rhodecode/templates/admin/users/user_edit.html:11
3278 #: rhodecode/templates/admin/users/user_edit.html:11
2993 #: rhodecode/templates/base/base.html:71
3279 #: rhodecode/templates/base/base.html:76
2994 msgid "Users"
3280 msgid "Users"
2995 msgstr "Utilisateurs"
3281 msgstr "Utilisateurs"
2996
3282
@@ -3048,46 +3334,21 b' msgstr "Nouveau mot de passe"'
3048 msgid "New password confirmation"
3334 msgid "New password confirmation"
3049 msgstr "Confirmation du nouveau mot de passe"
3335 msgstr "Confirmation du nouveau mot de passe"
3050
3336
3051 #: rhodecode/templates/admin/users/user_edit.html:158
3052 #: rhodecode/templates/admin/users_groups/users_group_edit.html:108
3053 msgid "Inherit default permissions"
3054 msgstr "Utiliser les permissions par défaut"
3055
3056 #: rhodecode/templates/admin/users/user_edit.html:163
3337 #: rhodecode/templates/admin/users/user_edit.html:163
3057 #: rhodecode/templates/admin/users_groups/users_group_edit.html:113
3058 #, python-format
3059 msgid ""
3060 "Select to inherit permissions from %s settings. With this selected below "
3061 "options does not have any action"
3062 msgstr ""
3063 "Cochez pour utiliser les permissions des les réglages %s. Si cette option"
3064 " est activée, les réglages ci-dessous n’auront pas d’effet."
3065
3066 #: rhodecode/templates/admin/users/user_edit.html:169
3067 #: rhodecode/templates/admin/users_groups/users_group_edit.html:119
3068 msgid "Create repositories"
3069 msgstr "Création de dépôts"
3070
3071 #: rhodecode/templates/admin/users/user_edit.html:177
3072 #: rhodecode/templates/admin/users_groups/users_group_edit.html:127
3073 msgid "Fork repositories"
3074 msgstr "Forker les dépôts"
3075
3076 #: rhodecode/templates/admin/users/user_edit.html:200
3077 msgid "Email addresses"
3338 msgid "Email addresses"
3078 msgstr "Adresses e-mail"
3339 msgstr "Adresses e-mail"
3079
3340
3080 #: rhodecode/templates/admin/users/user_edit.html:213
3341 #: rhodecode/templates/admin/users/user_edit.html:176
3081 #, python-format
3342 #, python-format
3082 msgid "Confirm to delete this email: %s"
3343 msgid "Confirm to delete this email: %s"
3083 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
3344 msgstr "Veuillez confirmer la suppression de l’e-mail : %s"
3084
3345
3085 #: rhodecode/templates/admin/users/user_edit.html:227
3346 #: rhodecode/templates/admin/users/user_edit.html:190
3086 msgid "New email address"
3347 msgid "New email address"
3087 msgstr "Nouvelle adrese"
3348 msgstr "Nouvelle adrese"
3088
3349
3089 #: rhodecode/templates/admin/users/user_edit_my_account.html:5
3350 #: rhodecode/templates/admin/users/user_edit_my_account.html:5
3090 #: rhodecode/templates/base/base.html:242
3351 #: rhodecode/templates/base/base.html:254
3091 msgid "My account"
3352 msgid "My account"
3092 msgstr "Mon compte"
3353 msgstr "Mon compte"
3093
3354
@@ -3125,7 +3386,7 b' msgstr "Requ\xc3\xaate de pull n\xc2\xba%s ouverte le %s"'
3125
3386
3126 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:17
3387 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:17
3127 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:45
3388 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:45
3128 #: rhodecode/templates/pullrequests/pullrequest_data.html:7
3389 #: rhodecode/templates/pullrequests/pullrequest_data.html:11
3129 #: rhodecode/templates/pullrequests/pullrequest_show.html:27
3390 #: rhodecode/templates/pullrequests/pullrequest_show.html:27
3130 #: rhodecode/templates/pullrequests/pullrequest_show.html:42
3391 #: rhodecode/templates/pullrequests/pullrequest_show.html:42
3131 msgid "Closed"
3392 msgid "Closed"
@@ -3145,7 +3406,7 b' msgid "I participate in"'
3145 msgstr "Je participe à"
3406 msgstr "Je participe à"
3146
3407
3147 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:42
3408 #: rhodecode/templates/admin/users/user_edit_my_account_pullrequests.html:42
3148 #: rhodecode/templates/pullrequests/pullrequest_data.html:11
3409 #: rhodecode/templates/pullrequests/pullrequest_data.html:8
3149 #, python-format
3410 #, python-format
3150 msgid "Pull request #%s opened by %s on %s"
3411 msgid "Pull request #%s opened by %s on %s"
3151 msgstr "Requête de pull nº%s ouverte par %s le %s"
3412 msgstr "Requête de pull nº%s ouverte par %s le %s"
@@ -3180,13 +3441,13 b' msgstr "Ajouter un groupe d\xe2\x80\x99utilisateur"'
3180
3441
3181 #: rhodecode/templates/admin/users_groups/users_group_add.html:10
3442 #: rhodecode/templates/admin/users_groups/users_group_add.html:10
3182 #: rhodecode/templates/admin/users_groups/users_groups.html:11
3443 #: rhodecode/templates/admin/users_groups/users_groups.html:11
3183 #: rhodecode/templates/base/base.html:72
3444 #: rhodecode/templates/base/base.html:77 rhodecode/templates/base/base.html:94
3184 #, fuzzy
3445 #, fuzzy
3185 msgid "User groups"
3446 msgid "User groups"
3186 msgstr "Groupes d’utilisateurs"
3447 msgstr "Groupes d’utilisateurs"
3187
3448
3188 #: rhodecode/templates/admin/users_groups/users_group_add.html:12
3449 #: rhodecode/templates/admin/users_groups/users_group_add.html:12
3189 #: rhodecode/templates/admin/users_groups/users_groups.html:25
3450 #: rhodecode/templates/admin/users_groups/users_groups.html:26
3190 #, fuzzy
3451 #, fuzzy
3191 msgid "Add new user group"
3452 msgid "Add new user group"
3192 msgstr "Ajouter un nouveau groupe"
3453 msgstr "Ajouter un nouveau groupe"
@@ -3202,7 +3463,7 b' msgid "UserGroups"'
3202 msgstr "Groupes d’utilisateurs"
3463 msgstr "Groupes d’utilisateurs"
3203
3464
3204 #: rhodecode/templates/admin/users_groups/users_group_edit.html:50
3465 #: rhodecode/templates/admin/users_groups/users_group_edit.html:50
3205 #: rhodecode/templates/admin/users_groups/users_groups.html:35
3466 #: rhodecode/templates/admin/users_groups/users_groups.html:38
3206 msgid "Members"
3467 msgid "Members"
3207 msgstr "Membres"
3468 msgstr "Membres"
3208
3469
@@ -3223,47 +3484,57 b' msgstr "Membres disponibles"'
3223 msgid "Add all elements"
3484 msgid "Add all elements"
3224 msgstr "Tout ajouter"
3485 msgstr "Tout ajouter"
3225
3486
3226 #: rhodecode/templates/admin/users_groups/users_group_edit.html:150
3487 #: rhodecode/templates/admin/users_groups/users_group_edit.html:109
3227 msgid "Group members"
3228 msgstr "Membres du groupe"
3229
3230 #: rhodecode/templates/admin/users_groups/users_group_edit.html:167
3231 #, fuzzy
3488 #, fuzzy
3232 msgid "No members yet"
3489 msgid "No members yet"
3233 msgstr "Membres"
3490 msgstr "Membres"
3234
3491
3492 #: rhodecode/templates/admin/users_groups/users_group_edit.html:117
3493 #, fuzzy
3494 msgid "Global Permissions"
3495 msgstr "Copier les permissions"
3496
3235 #: rhodecode/templates/admin/users_groups/users_groups.html:5
3497 #: rhodecode/templates/admin/users_groups/users_groups.html:5
3236 #, fuzzy
3498 #, fuzzy
3237 msgid "User groups administration"
3499 msgid "User groups administration"
3238 msgstr "Gestion des groupes d’utilisateurs"
3500 msgstr "Gestion des groupes d’utilisateurs"
3239
3501
3240 #: rhodecode/templates/admin/users_groups/users_groups.html:47
3502 #: rhodecode/templates/admin/users_groups/users_groups.html:55
3241 #, fuzzy, python-format
3503 #, fuzzy, python-format
3242 msgid "Confirm to delete this user group: %s"
3504 msgid "Confirm to delete this user group: %s"
3243 msgstr "Voulez-vous vraiment supprimer le groupe d‘utilisateurs « %s » ?"
3505 msgstr "Voulez-vous vraiment supprimer le groupe d‘utilisateurs « %s » ?"
3244
3506
3507 #: rhodecode/templates/admin/users_groups/users_groups.html:62
3508 #, fuzzy
3509 msgid "There are no user groups yet"
3510 msgstr "Aucun groupe de dépôts n’a été créé pour le moment."
3511
3245 #: rhodecode/templates/base/base.html:42
3512 #: rhodecode/templates/base/base.html:42
3246 msgid "Submit a bug"
3513 #, python-format
3247 msgstr "Signaler un bogue"
3514 msgid "Server instance: %s"
3248
3515 msgstr ""
3249 #: rhodecode/templates/base/base.html:108
3516
3517 #: rhodecode/templates/base/base.html:52
3518 msgid "Report a bug"
3519 msgstr ""
3520
3521 #: rhodecode/templates/base/base.html:121
3250 #: rhodecode/templates/data_table/_dt_elements.html:9
3522 #: rhodecode/templates/data_table/_dt_elements.html:9
3251 #: rhodecode/templates/data_table/_dt_elements.html:11
3523 #: rhodecode/templates/data_table/_dt_elements.html:11
3252 #: rhodecode/templates/data_table/_dt_elements.html:13
3524 #: rhodecode/templates/data_table/_dt_elements.html:13
3253 #: rhodecode/templates/pullrequests/pullrequest_show.html:81
3254 #: rhodecode/templates/summary/summary.html:8
3525 #: rhodecode/templates/summary/summary.html:8
3255 msgid "Summary"
3526 msgid "Summary"
3256 msgstr "Résumé"
3527 msgstr "Résumé"
3257
3528
3258 #: rhodecode/templates/base/base.html:109
3529 #: rhodecode/templates/base/base.html:122
3259 #: rhodecode/templates/changelog/changelog.html:11
3530 #: rhodecode/templates/changelog/changelog.html:15
3260 #: rhodecode/templates/data_table/_dt_elements.html:17
3531 #: rhodecode/templates/data_table/_dt_elements.html:17
3261 #: rhodecode/templates/data_table/_dt_elements.html:19
3532 #: rhodecode/templates/data_table/_dt_elements.html:19
3262 #: rhodecode/templates/data_table/_dt_elements.html:21
3533 #: rhodecode/templates/data_table/_dt_elements.html:21
3263 msgid "Changelog"
3534 msgid "Changelog"
3264 msgstr "Historique"
3535 msgstr "Historique"
3265
3536
3266 #: rhodecode/templates/base/base.html:110
3537 #: rhodecode/templates/base/base.html:123
3267 #: rhodecode/templates/data_table/_dt_elements.html:25
3538 #: rhodecode/templates/data_table/_dt_elements.html:25
3268 #: rhodecode/templates/data_table/_dt_elements.html:27
3539 #: rhodecode/templates/data_table/_dt_elements.html:27
3269 #: rhodecode/templates/data_table/_dt_elements.html:29
3540 #: rhodecode/templates/data_table/_dt_elements.html:29
@@ -3271,52 +3542,48 b' msgstr "Historique"'
3271 msgid "Files"
3542 msgid "Files"
3272 msgstr "Fichiers"
3543 msgstr "Fichiers"
3273
3544
3274 #: rhodecode/templates/base/base.html:112
3545 #: rhodecode/templates/base/base.html:125
3275 #, fuzzy
3546 #, fuzzy
3276 msgid "Switch To"
3547 msgid "Switch To"
3277 msgstr "Aller"
3548 msgstr "Aller"
3278
3549
3279 #: rhodecode/templates/base/base.html:114
3550 #: rhodecode/templates/base/base.html:127
3280 #: rhodecode/templates/base/base.html:267
3551 #: rhodecode/templates/base/base.html:279
3281 msgid "loading..."
3552 msgid "loading..."
3282 msgstr "Chargement…"
3553 msgstr "Chargement…"
3283
3554
3284 #: rhodecode/templates/base/base.html:118
3555 #: rhodecode/templates/base/base.html:131
3285 msgid "Options"
3556 msgid "Options"
3286 msgstr "Options"
3557 msgstr "Options"
3287
3558
3288 #: rhodecode/templates/base/base.html:124
3559 #: rhodecode/templates/base/base.html:137
3289 #: rhodecode/templates/forks/forks_data.html:21
3560 #: rhodecode/templates/forks/forks_data.html:21
3290 msgid "Compare fork"
3561 msgid "Compare fork"
3291 msgstr "Comparer le fork"
3562 msgstr "Comparer le fork"
3292
3563
3293 #: rhodecode/templates/base/base.html:126
3564 #: rhodecode/templates/base/base.html:139
3294 msgid "Lightweight changelog"
3565 #: rhodecode/templates/base/base.html:312
3295 msgstr ""
3296
3297 #: rhodecode/templates/base/base.html:127
3298 #: rhodecode/templates/base/base.html:287
3299 #: rhodecode/templates/search/search.html:14
3566 #: rhodecode/templates/search/search.html:14
3300 #: rhodecode/templates/search/search.html:54
3567 #: rhodecode/templates/search/search.html:54
3301 msgid "Search"
3568 msgid "Search"
3302 msgstr "Rechercher"
3569 msgstr "Rechercher"
3303
3570
3304 #: rhodecode/templates/base/base.html:133
3571 #: rhodecode/templates/base/base.html:145
3305 #, fuzzy
3572 #, fuzzy
3306 msgid "Lock"
3573 msgid "Lock"
3307 msgstr "Verrouiller"
3574 msgstr "Verrouiller"
3308
3575
3309 #: rhodecode/templates/base/base.html:141
3576 #: rhodecode/templates/base/base.html:153
3310 #, fuzzy
3577 #, fuzzy
3311 msgid "Follow"
3578 msgid "Follow"
3312 msgstr "followers"
3579 msgstr "followers"
3313
3580
3314 #: rhodecode/templates/base/base.html:142
3581 #: rhodecode/templates/base/base.html:154
3315 #, fuzzy
3582 #, fuzzy
3316 msgid "Unfollow"
3583 msgid "Unfollow"
3317 msgstr "followers"
3584 msgstr "followers"
3318
3585
3319 #: rhodecode/templates/base/base.html:145
3586 #: rhodecode/templates/base/base.html:157
3320 #: rhodecode/templates/data_table/_dt_elements.html:33
3587 #: rhodecode/templates/data_table/_dt_elements.html:33
3321 #: rhodecode/templates/data_table/_dt_elements.html:35
3588 #: rhodecode/templates/data_table/_dt_elements.html:35
3322 #: rhodecode/templates/data_table/_dt_elements.html:37
3589 #: rhodecode/templates/data_table/_dt_elements.html:37
@@ -3325,66 +3592,122 b' msgstr "followers"'
3325 msgid "Fork"
3592 msgid "Fork"
3326 msgstr "Fork"
3593 msgstr "Fork"
3327
3594
3328 #: rhodecode/templates/base/base.html:147
3595 #: rhodecode/templates/base/base.html:159
3329 #, fuzzy
3596 #, fuzzy
3330 msgid "Create Pull Request"
3597 msgid "Create Pull Request"
3331 msgstr "Nouvelle requête de pull"
3598 msgstr "Nouvelle requête de pull"
3332
3599
3333 #: rhodecode/templates/base/base.html:153
3600 #: rhodecode/templates/base/base.html:165
3334 #, fuzzy
3601 #, fuzzy
3335 msgid "Show Pull Requests"
3602 msgid "Show Pull Requests"
3336 msgstr "Nouvelle requête de pull"
3603 msgstr "Nouvelle requête de pull"
3337
3604
3338 #: rhodecode/templates/base/base.html:153
3605 #: rhodecode/templates/base/base.html:165
3339 #, fuzzy
3606 #, fuzzy
3340 msgid "Pull Requests"
3607 msgid "Pull Requests"
3341 msgstr "Requêtes de pull"
3608 msgstr "Requêtes de pull"
3342
3609
3343 #: rhodecode/templates/base/base.html:190
3610 #: rhodecode/templates/base/base.html:202
3344 #, fuzzy
3611 #, fuzzy
3345 msgid "Not logged in"
3612 msgid "Not logged in"
3346 msgstr "Dernière connexion"
3613 msgstr "Dernière connexion"
3347
3614
3348 #: rhodecode/templates/base/base.html:197
3615 #: rhodecode/templates/base/base.html:209
3349 msgid "Login to your account"
3616 msgid "Login to your account"
3350 msgstr "Connexion à votre compte"
3617 msgstr "Connexion à votre compte"
3351
3618
3352 #: rhodecode/templates/base/base.html:220
3619 #: rhodecode/templates/base/base.html:232
3353 msgid "Forgot password ?"
3620 msgid "Forgot password ?"
3354 msgstr "Mot de passe oublié ?"
3621 msgstr "Mot de passe oublié ?"
3355
3622
3356 #: rhodecode/templates/base/base.html:243
3623 #: rhodecode/templates/base/base.html:255
3357 msgid "Log Out"
3624 msgid "Log Out"
3358 msgstr "Se déconnecter"
3625 msgstr "Se déconnecter"
3359
3626
3360 #: rhodecode/templates/base/base.html:262
3627 #: rhodecode/templates/base/base.html:274
3361 msgid "Switch repository"
3628 msgid "Switch repository"
3362 msgstr "Aller au dépôt"
3629 msgstr "Aller au dépôt"
3363
3630
3364 #: rhodecode/templates/base/base.html:274
3631 #: rhodecode/templates/base/base.html:286
3365 msgid "Show recent activity"
3632 msgid "Show recent activity"
3366 msgstr ""
3633 msgstr ""
3367
3634
3368 #: rhodecode/templates/base/base.html:275
3635 #: rhodecode/templates/base/base.html:287
3369 #: rhodecode/templates/journal/journal.html:4
3636 #: rhodecode/templates/journal/journal.html:4
3370 msgid "Journal"
3637 msgid "Journal"
3371 msgstr "Historique"
3638 msgstr "Historique"
3372
3639
3373 #: rhodecode/templates/base/base.html:286
3640 #: rhodecode/templates/base/base.html:298
3641 msgid "Show public gists"
3642 msgstr ""
3643
3644 #: rhodecode/templates/base/base.html:303
3645 msgid "All public gists"
3646 msgstr ""
3647
3648 #: rhodecode/templates/base/base.html:305
3649 msgid "My public gists"
3650 msgstr ""
3651
3652 #: rhodecode/templates/base/base.html:306
3653 msgid "My private gists"
3654 msgstr ""
3655
3656 #: rhodecode/templates/base/base.html:311
3374 #, fuzzy
3657 #, fuzzy
3375 msgid "Search in repositories"
3658 msgid "Search in repositories"
3376 msgstr "Rechercher dans tous les dépôts"
3659 msgstr "Rechercher dans tous les dépôts"
3377
3660
3378 #: rhodecode/templates/base/perms_summary.html:8
3661 #: rhodecode/templates/base/default_perms_box.html:14
3662 msgid "Inherit default permissions"
3663 msgstr "Utiliser les permissions par défaut"
3664
3665 #: rhodecode/templates/base/default_perms_box.html:18
3666 #, fuzzy, python-format
3667 msgid ""
3668 "Select to inherit permissions from %s settings. With this selected below "
3669 "options does not apply."
3670 msgstr ""
3671 "Cochez pour utiliser les permissions des les réglages %s. Si cette option"
3672 " est activée, les réglages ci-dessous n’auront pas d’effet."
3673
3674 #: rhodecode/templates/base/default_perms_box.html:26
3675 msgid "Create repositories"
3676 msgstr "Création de dépôts"
3677
3678 #: rhodecode/templates/base/default_perms_box.html:30
3679 msgid "Select this option to allow repository creation for this user"
3680 msgstr ""
3681
3682 #: rhodecode/templates/base/default_perms_box.html:35
3683 #, fuzzy
3684 msgid "Create user groups"
3685 msgstr "[a créé] le groupe d’utilisateurs"
3686
3687 #: rhodecode/templates/base/default_perms_box.html:39
3688 msgid "Select this option to allow user group creation for this user"
3689 msgstr ""
3690
3691 #: rhodecode/templates/base/default_perms_box.html:44
3692 msgid "Fork repositories"
3693 msgstr "Forker les dépôts"
3694
3695 #: rhodecode/templates/base/default_perms_box.html:48
3696 msgid "Select this option to allow repository forking for this user"
3697 msgstr ""
3698
3699 #: rhodecode/templates/base/perms_summary.html:11
3379 #, fuzzy
3700 #, fuzzy
3380 msgid "No permissions defined yet"
3701 msgid "No permissions defined yet"
3381 msgstr "Copier les permissions"
3702 msgstr "Copier les permissions"
3382
3703
3383 #: rhodecode/templates/base/perms_summary.html:15
3704 #: rhodecode/templates/base/perms_summary.html:19
3705 #: rhodecode/templates/base/perms_summary.html:38
3384 msgid "Permission"
3706 msgid "Permission"
3385 msgstr "Permission"
3707 msgstr "Permission"
3386
3708
3387 #: rhodecode/templates/base/perms_summary.html:16
3709 #: rhodecode/templates/base/perms_summary.html:20
3710 #: rhodecode/templates/base/perms_summary.html:39
3388 msgid "Edit Permission"
3711 msgid "Edit Permission"
3389 msgstr "Éditer"
3712 msgstr "Éditer"
3390
3713
@@ -3394,7 +3717,7 b' msgid "Add another comment"'
3394 msgstr "Nouveau commentaire"
3717 msgstr "Nouveau commentaire"
3395
3718
3396 #: rhodecode/templates/base/root.html:44
3719 #: rhodecode/templates/base/root.html:44
3397 #: rhodecode/templates/data_table/_dt_elements.html:140
3720 #: rhodecode/templates/data_table/_dt_elements.html:147
3398 msgid "Stop following this repository"
3721 msgid "Stop following this repository"
3399 msgstr "Arrêter de suivre ce dépôt"
3722 msgstr "Arrêter de suivre ce dépôt"
3400
3723
@@ -3411,7 +3734,7 b' msgid "members"'
3411 msgstr "Membres"
3734 msgstr "Membres"
3412
3735
3413 #: rhodecode/templates/base/root.html:48
3736 #: rhodecode/templates/base/root.html:48
3414 #: rhodecode/templates/pullrequests/pullrequest.html:181
3737 #: rhodecode/templates/pullrequests/pullrequest.html:203
3415 #, fuzzy
3738 #, fuzzy
3416 msgid "Loading ..."
3739 msgid "Loading ..."
3417 msgstr "Chargement…"
3740 msgstr "Chargement…"
@@ -3427,7 +3750,7 b' msgid "No matching files"'
3427 msgstr "Aucun fichier ne correspond"
3750 msgstr "Aucun fichier ne correspond"
3428
3751
3429 #: rhodecode/templates/base/root.html:51
3752 #: rhodecode/templates/base/root.html:51
3430 #: rhodecode/templates/changelog/changelog.html:36
3753 #: rhodecode/templates/changelog/changelog.html:45
3431 msgid "Open new pull request"
3754 msgid "Open new pull request"
3432 msgstr "Nouvelle requête de pull"
3755 msgstr "Nouvelle requête de pull"
3433
3756
@@ -3461,31 +3784,50 b' msgstr "Diff de fichier"'
3461 msgid "Expand diff"
3784 msgid "Expand diff"
3462 msgstr "Diff brut"
3785 msgstr "Diff brut"
3463
3786
3787 #: rhodecode/templates/base/root.html:58
3788 #, fuzzy
3789 msgid "Failed to remoke permission"
3790 msgstr "Échec de suppression de l’utilisateur"
3791
3464 #: rhodecode/templates/bookmarks/bookmarks.html:5
3792 #: rhodecode/templates/bookmarks/bookmarks.html:5
3465 #, python-format
3793 #, python-format
3466 msgid "%s Bookmarks"
3794 msgid "%s Bookmarks"
3467 msgstr "Signets de %s"
3795 msgstr "Signets de %s"
3468
3796
3469 #: rhodecode/templates/bookmarks/bookmarks.html:37
3797 #: rhodecode/templates/bookmarks/bookmarks.html:26
3798 #, fuzzy
3799 msgid "Compare bookmarks"
3800 msgstr "Comparer le fork"
3801
3802 #: rhodecode/templates/bookmarks/bookmarks.html:51
3470 #: rhodecode/templates/bookmarks/bookmarks_data.html:8
3803 #: rhodecode/templates/bookmarks/bookmarks_data.html:8
3471 #: rhodecode/templates/branches/branches.html:50
3804 #: rhodecode/templates/branches/branches.html:50
3472 #: rhodecode/templates/branches/branches_data.html:8
3805 #: rhodecode/templates/branches/branches_data.html:8
3473 #: rhodecode/templates/shortlog/shortlog_data.html:8
3806 #: rhodecode/templates/changelog/changelog_summary_data.html:8
3474 #: rhodecode/templates/tags/tags.html:51
3807 #: rhodecode/templates/tags/tags.html:51
3475 #: rhodecode/templates/tags/tags_data.html:8
3808 #: rhodecode/templates/tags/tags_data.html:8
3476 msgid "Author"
3809 msgid "Author"
3477 msgstr "Auteur"
3810 msgstr "Auteur"
3478
3811
3479 #: rhodecode/templates/bookmarks/bookmarks.html:38
3812 #: rhodecode/templates/bookmarks/bookmarks.html:52
3480 #: rhodecode/templates/bookmarks/bookmarks_data.html:9
3813 #: rhodecode/templates/bookmarks/bookmarks_data.html:9
3481 #: rhodecode/templates/branches/branches.html:51
3814 #: rhodecode/templates/branches/branches.html:51
3482 #: rhodecode/templates/branches/branches_data.html:9
3815 #: rhodecode/templates/branches/branches_data.html:9
3483 #: rhodecode/templates/shortlog/shortlog_data.html:5
3816 #: rhodecode/templates/changelog/changelog_summary_data.html:5
3484 #: rhodecode/templates/tags/tags.html:52
3817 #: rhodecode/templates/tags/tags.html:52
3485 #: rhodecode/templates/tags/tags_data.html:9
3818 #: rhodecode/templates/tags/tags_data.html:9
3486 msgid "Revision"
3819 msgid "Revision"
3487 msgstr "Révision"
3820 msgstr "Révision"
3488
3821
3822 #: rhodecode/templates/bookmarks/bookmarks.html:54
3823 #: rhodecode/templates/bookmarks/bookmarks_data.html:10
3824 #: rhodecode/templates/branches/branches.html:53
3825 #: rhodecode/templates/branches/branches_data.html:10
3826 #: rhodecode/templates/tags/tags.html:54
3827 #: rhodecode/templates/tags/tags_data.html:10
3828 msgid "Compare"
3829 msgstr "Comparer"
3830
3489 #: rhodecode/templates/branches/branches.html:5
3831 #: rhodecode/templates/branches/branches.html:5
3490 #, python-format
3832 #, python-format
3491 msgid "%s Branches"
3833 msgid "%s Branches"
@@ -3495,68 +3837,71 b' msgstr "Branches de %s"'
3495 msgid "Compare branches"
3837 msgid "Compare branches"
3496 msgstr "Comparer les branches"
3838 msgstr "Comparer les branches"
3497
3839
3498 #: rhodecode/templates/branches/branches.html:53
3499 #: rhodecode/templates/branches/branches_data.html:10
3500 #: rhodecode/templates/tags/tags.html:54
3501 #: rhodecode/templates/tags/tags_data.html:10
3502 msgid "Compare"
3503 msgstr "Comparer"
3504
3505 #: rhodecode/templates/changelog/changelog.html:6
3840 #: rhodecode/templates/changelog/changelog.html:6
3506 #, python-format
3841 #, python-format
3507 msgid "%s Changelog"
3842 msgid "%s Changelog"
3508 msgstr "Historique de %s"
3843 msgstr "Historique de %s"
3509
3844
3510 #: rhodecode/templates/changelog/changelog.html:11
3845 #: rhodecode/templates/changelog/changelog.html:19
3511 #, python-format
3846 #, python-format
3512 msgid "showing %d out of %d revision"
3847 msgid "showing %d out of %d revision"
3513 msgid_plural "showing %d out of %d revisions"
3848 msgid_plural "showing %d out of %d revisions"
3514 msgstr[0] "Affichage de %d révision sur %d"
3849 msgstr[0] "Affichage de %d révision sur %d"
3515 msgstr[1] "Affichage de %d révisions sur %d"
3850 msgstr[1] "Affichage de %d révisions sur %d"
3516
3851
3517 #: rhodecode/templates/changelog/changelog.html:30
3852 #: rhodecode/templates/changelog/changelog.html:39
3518 #, fuzzy
3853 #, fuzzy
3519 msgid "Clear selection"
3854 msgid "Clear selection"
3520 msgstr "Réglages de recherche"
3855 msgstr "Réglages de recherche"
3521
3856
3522 #: rhodecode/templates/changelog/changelog.html:33
3857 #: rhodecode/templates/changelog/changelog.html:42
3523 #: rhodecode/templates/forks/forks_data.html:19
3858 #: rhodecode/templates/forks/forks_data.html:19
3524 #, fuzzy, python-format
3859 #, fuzzy, python-format
3525 msgid "Compare fork with %s"
3860 msgid "Compare fork with %s"
3526 msgstr "Comparer le fork avec %s"
3861 msgstr "Comparer le fork avec %s"
3527
3862
3528 #: rhodecode/templates/changelog/changelog.html:33
3863 #: rhodecode/templates/changelog/changelog.html:42
3529 #, fuzzy
3864 #, fuzzy
3530 msgid "Compare fork with parent"
3865 msgid "Compare fork with parent"
3531 msgstr "Comparer le fork avec %s"
3866 msgstr "Comparer le fork avec %s"
3532
3867
3533 #: rhodecode/templates/changelog/changelog.html:76
3868 #: rhodecode/templates/changelog/changelog.html:78
3534 #: rhodecode/templates/summary/summary.html:404
3869 #: rhodecode/templates/changelog/changelog_summary_data.html:28
3870 #, python-format
3871 msgid "Click to open associated pull request #%s"
3872 msgstr "Cliquez ici pour ouvrir la requête de pull associée #%s."
3873
3874 #: rhodecode/templates/changelog/changelog.html:102
3875 #: rhodecode/templates/summary/summary.html:403
3535 #, fuzzy
3876 #, fuzzy
3536 msgid "Show more"
3877 msgid "Show more"
3537 msgstr "montrer plus"
3878 msgstr "montrer plus"
3538
3879
3539 #: rhodecode/templates/changelog/changelog.html:89
3880 #: rhodecode/templates/changelog/changelog.html:115
3881 #: rhodecode/templates/changelog/changelog_summary_data.html:50
3882 #: rhodecode/templates/changeset/changeset.html:107
3540 #: rhodecode/templates/changeset/changeset_range.html:86
3883 #: rhodecode/templates/changeset/changeset_range.html:86
3541 #, fuzzy, python-format
3884 #, fuzzy, python-format
3542 msgid "Bookmark %s"
3885 msgid "Bookmark %s"
3543 msgstr "Signets %s"
3886 msgstr "Signets %s"
3544
3887
3545 #: rhodecode/templates/changelog/changelog.html:95
3888 #: rhodecode/templates/changelog/changelog.html:121
3546 #: rhodecode/templates/changeset/changeset.html:111
3889 #: rhodecode/templates/changelog/changelog_summary_data.html:56
3890 #: rhodecode/templates/changeset/changeset.html:113
3547 #: rhodecode/templates/changeset/changeset_range.html:92
3891 #: rhodecode/templates/changeset/changeset_range.html:92
3548 #, fuzzy, python-format
3892 #, fuzzy, python-format
3549 msgid "Tag %s"
3893 msgid "Tag %s"
3550 msgstr "Tags %s"
3894 msgstr "Tags %s"
3551
3895
3552 #: rhodecode/templates/changelog/changelog.html:100
3896 #: rhodecode/templates/changelog/changelog.html:126
3553 #: rhodecode/templates/changeset/changeset.html:106
3897 #: rhodecode/templates/changelog/changelog_summary_data.html:61
3554 #: rhodecode/templates/changeset/changeset_range.html:80
3898 #: rhodecode/templates/changeset/changeset.html:117
3899 #: rhodecode/templates/changeset/changeset_range.html:96
3555 #, fuzzy, python-format
3900 #, fuzzy, python-format
3556 msgid "Branch %s"
3901 msgid "Branch %s"
3557 msgstr "Branches %s"
3902 msgstr "Branches %s"
3558
3903
3559 #: rhodecode/templates/changelog/changelog.html:258
3904 #: rhodecode/templates/changelog/changelog.html:286
3560 msgid "There are no changes yet"
3905 msgid "There are no changes yet"
3561 msgstr "Il n’y a aucun changement pour le moment"
3906 msgstr "Il n’y a aucun changement pour le moment"
3562
3907
@@ -3588,6 +3933,40 b' msgstr "Ajout\xc3\xa9s"'
3588 msgid "Affected %s files"
3933 msgid "Affected %s files"
3589 msgstr "%s fichiers affectés"
3934 msgstr "%s fichiers affectés"
3590
3935
3936 #: rhodecode/templates/changelog/changelog_summary_data.html:6
3937 #: rhodecode/templates/files/files_add.html:75
3938 #: rhodecode/templates/files/files_edit.html:61
3939 #, fuzzy
3940 msgid "Commit message"
3941 msgstr "Message de commit"
3942
3943 #: rhodecode/templates/changelog/changelog_summary_data.html:7
3944 #, fuzzy
3945 msgid "Age"
3946 msgstr "Âge"
3947
3948 #: rhodecode/templates/changelog/changelog_summary_data.html:9
3949 msgid "Refs"
3950 msgstr ""
3951
3952 #: rhodecode/templates/changelog/changelog_summary_data.html:86
3953 msgid "Add or upload files directly via RhodeCode"
3954 msgstr "Ajouter ou téléverser des fichiers directement via RhodeCode…"
3955
3956 #: rhodecode/templates/changelog/changelog_summary_data.html:89
3957 #: rhodecode/templates/files/files_add.html:38
3958 #: rhodecode/templates/files/files_browser.html:31
3959 msgid "Add new file"
3960 msgstr "Ajouter un nouveau fichier"
3961
3962 #: rhodecode/templates/changelog/changelog_summary_data.html:95
3963 msgid "Push new repo"
3964 msgstr "Pusher le nouveau dépôt"
3965
3966 #: rhodecode/templates/changelog/changelog_summary_data.html:103
3967 msgid "Existing repository?"
3968 msgstr "Le dépôt existe déjà ?"
3969
3591 #: rhodecode/templates/changeset/changeset.html:6
3970 #: rhodecode/templates/changeset/changeset.html:6
3592 #, python-format
3971 #, python-format
3593 msgid "%s Changeset"
3972 msgid "%s Changeset"
@@ -3609,7 +3988,7 b' msgid "Changeset status"'
3609 msgstr "Statut du changeset"
3988 msgstr "Statut du changeset"
3610
3989
3611 #: rhodecode/templates/changeset/changeset.html:67
3990 #: rhodecode/templates/changeset/changeset.html:67
3612 #: rhodecode/templates/changeset/diff_block.html:23
3991 #: rhodecode/templates/changeset/diff_block.html:22
3613 #, fuzzy
3992 #, fuzzy
3614 msgid "Raw diff"
3993 msgid "Raw diff"
3615 msgstr "Diff brut"
3994 msgstr "Diff brut"
@@ -3620,13 +3999,13 b' msgid "Patch diff"'
3620 msgstr "Diff brut"
3999 msgstr "Diff brut"
3621
4000
3622 #: rhodecode/templates/changeset/changeset.html:69
4001 #: rhodecode/templates/changeset/changeset.html:69
3623 #: rhodecode/templates/changeset/diff_block.html:24
4002 #: rhodecode/templates/changeset/diff_block.html:23
3624 #, fuzzy
4003 #, fuzzy
3625 msgid "Download diff"
4004 msgid "Download diff"
3626 msgstr "Télécharger le diff"
4005 msgstr "Télécharger le diff"
3627
4006
3628 #: rhodecode/templates/changeset/changeset.html:73
4007 #: rhodecode/templates/changeset/changeset.html:73
3629 #: rhodecode/templates/changeset/changeset_file_comment.html:97
4008 #: rhodecode/templates/changeset/changeset_file_comment.html:103
3630 #, python-format
4009 #, python-format
3631 msgid "%d comment"
4010 msgid "%d comment"
3632 msgid_plural "%d comments"
4011 msgid_plural "%d comments"
@@ -3634,7 +4013,7 b' msgstr[0] "%d commentaire"'
3634 msgstr[1] "%d commentaires"
4013 msgstr[1] "%d commentaires"
3635
4014
3636 #: rhodecode/templates/changeset/changeset.html:73
4015 #: rhodecode/templates/changeset/changeset.html:73
3637 #: rhodecode/templates/changeset/changeset_file_comment.html:97
4016 #: rhodecode/templates/changeset/changeset_file_comment.html:103
3638 #, python-format
4017 #, python-format
3639 msgid "(%d inline)"
4018 msgid "(%d inline)"
3640 msgid_plural "(%d inline)"
4019 msgid_plural "(%d inline)"
@@ -3642,11 +4021,11 b' msgstr[0] "(et %d en ligne)"'
3642 msgstr[1] "(et %d en ligne)"
4021 msgstr[1] "(et %d en ligne)"
3643
4022
3644 #: rhodecode/templates/changeset/changeset.html:103
4023 #: rhodecode/templates/changeset/changeset.html:103
3645 #: rhodecode/templates/changeset/changeset_range.html:77
4024 #: rhodecode/templates/changeset/changeset_range.html:82
3646 msgid "merge"
4025 msgid "merge"
3647 msgstr "Fusion"
4026 msgstr "Fusion"
3648
4027
3649 #: rhodecode/templates/changeset/changeset.html:119
4028 #: rhodecode/templates/changeset/changeset.html:126
3650 #: rhodecode/templates/compare/compare_diff.html:40
4029 #: rhodecode/templates/compare/compare_diff.html:40
3651 #: rhodecode/templates/pullrequests/pullrequest_show.html:113
4030 #: rhodecode/templates/pullrequests/pullrequest_show.html:113
3652 #, fuzzy, python-format
4031 #, fuzzy, python-format
@@ -3655,7 +4034,7 b' msgid_plural "%s files changed"'
3655 msgstr[0] "%s fichié modifié"
4034 msgstr[0] "%s fichié modifié"
3656 msgstr[1] "%s fichié modifié"
4035 msgstr[1] "%s fichié modifié"
3657
4036
3658 #: rhodecode/templates/changeset/changeset.html:121
4037 #: rhodecode/templates/changeset/changeset.html:128
3659 #: rhodecode/templates/compare/compare_diff.html:42
4038 #: rhodecode/templates/compare/compare_diff.html:42
3660 #: rhodecode/templates/pullrequests/pullrequest_show.html:115
4039 #: rhodecode/templates/pullrequests/pullrequest_show.html:115
3661 #, fuzzy, python-format
4040 #, fuzzy, python-format
@@ -3664,15 +4043,15 b' msgid_plural "%s files changed with %s i'
3664 msgstr[0] "%s fichiers affectés avec %s insertions et %s suppressions"
4043 msgstr[0] "%s fichiers affectés avec %s insertions et %s suppressions"
3665 msgstr[1] "%s fichiers affectés avec %s insertions et %s suppressions"
4044 msgstr[1] "%s fichiers affectés avec %s insertions et %s suppressions"
3666
4045
3667 #: rhodecode/templates/changeset/changeset.html:134
4046 #: rhodecode/templates/changeset/changeset.html:141
3668 #: rhodecode/templates/changeset/changeset.html:146
4047 #: rhodecode/templates/changeset/changeset.html:153
3669 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
4048 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
3670 #: rhodecode/templates/pullrequests/pullrequest_show.html:195
4049 #: rhodecode/templates/pullrequests/pullrequest_show.html:195
3671 msgid "Showing a huge diff might take some time and resources"
4050 msgid "Showing a huge diff might take some time and resources"
3672 msgstr ""
4051 msgstr ""
3673
4052
3674 #: rhodecode/templates/changeset/changeset.html:134
4053 #: rhodecode/templates/changeset/changeset.html:141
3675 #: rhodecode/templates/changeset/changeset.html:146
4054 #: rhodecode/templates/changeset/changeset.html:153
3676 #: rhodecode/templates/compare/compare_diff.html:58
4055 #: rhodecode/templates/compare/compare_diff.html:58
3677 #: rhodecode/templates/compare/compare_diff.html:69
4056 #: rhodecode/templates/compare/compare_diff.html:69
3678 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
4057 #: rhodecode/templates/pullrequests/pullrequest_show.html:131
@@ -3691,57 +4070,71 b' msgstr "Requ\xc3\xaates de pull %s"'
3691 msgid "Comment on pull request #%s"
4070 msgid "Comment on pull request #%s"
3692 msgstr "[a commenté] la requête de pull pour %s"
4071 msgstr "[a commenté] la requête de pull pour %s"
3693
4072
3694 #: rhodecode/templates/changeset/changeset_file_comment.html:57
4073 #: rhodecode/templates/changeset/changeset_file_comment.html:55
3695 msgid "Submitting..."
4074 msgid "Submitting..."
3696 msgstr "Envoi…"
4075 msgstr "Envoi…"
3697
4076
3698 #: rhodecode/templates/changeset/changeset_file_comment.html:60
4077 #: rhodecode/templates/changeset/changeset_file_comment.html:58
3699 msgid "Commenting on line {1}."
4078 msgid "Commenting on line {1}."
3700 msgstr "Commentaire sur la ligne {1}."
4079 msgstr "Commentaire sur la ligne {1}."
3701
4080
3702 #: rhodecode/templates/changeset/changeset_file_comment.html:61
4081 #: rhodecode/templates/changeset/changeset_file_comment.html:59
3703 #: rhodecode/templates/changeset/changeset_file_comment.html:139
4082 #: rhodecode/templates/changeset/changeset_file_comment.html:145
3704 #, python-format
4083 #, python-format
3705 msgid "Comments parsed using %s syntax with %s support."
4084 msgid "Comments parsed using %s syntax with %s support."
3706 msgstr ""
4085 msgstr ""
3707 "Les commentaires sont analysés avec la syntaxe %s, avec le support de la "
4086 "Les commentaires sont analysés avec la syntaxe %s, avec le support de la "
3708 "commande %s."
4087 "commande %s."
3709
4088
3710 #: rhodecode/templates/changeset/changeset_file_comment.html:63
4089 #: rhodecode/templates/changeset/changeset_file_comment.html:61
3711 #: rhodecode/templates/changeset/changeset_file_comment.html:141
4090 #: rhodecode/templates/changeset/changeset_file_comment.html:147
3712 msgid "Use @username inside this text to send notification to this RhodeCode user"
4091 msgid "Use @username inside this text to send notification to this RhodeCode user"
3713 msgstr ""
4092 msgstr ""
3714 "Utilisez @nomutilisateur dans ce texte pour envoyer une notification à "
4093 "Utilisez @nomutilisateur dans ce texte pour envoyer une notification à "
3715 "l’utilisateur RhodeCode en question."
4094 "l’utilisateur RhodeCode en question."
3716
4095
3717 #: rhodecode/templates/changeset/changeset_file_comment.html:74
4096 #: rhodecode/templates/changeset/changeset_file_comment.html:65
3718 #: rhodecode/templates/changeset/changeset_file_comment.html:161
4097 #: rhodecode/templates/changeset/changeset_file_comment.html:152
4098 #, fuzzy
4099 msgid "Preview"
4100 msgstr "%d relecteur"
4101
4102 #: rhodecode/templates/changeset/changeset_file_comment.html:72
4103 #: rhodecode/templates/changeset/changeset_file_comment.html:170
4104 #, fuzzy
4105 msgid "Comment preview"
4106 msgstr "vue de comparaison"
4107
4108 #: rhodecode/templates/changeset/changeset_file_comment.html:80
4109 #: rhodecode/templates/changeset/changeset_file_comment.html:177
4110 #: rhodecode/templates/email_templates/changeset_comment.html:16
4111 #: rhodecode/templates/email_templates/pull_request_comment.html:16
3719 msgid "Comment"
4112 msgid "Comment"
3720 msgstr "Commentaire"
4113 msgstr "Commentaire"
3721
4114
3722 #: rhodecode/templates/changeset/changeset_file_comment.html:75
4115 #: rhodecode/templates/changeset/changeset_file_comment.html:81
3723 #, fuzzy
4116 #, fuzzy
3724 msgid "Cancel"
4117 msgid "Cancel"
3725 msgstr "Modifiés"
4118 msgstr "Modifiés"
3726
4119
3727 #: rhodecode/templates/changeset/changeset_file_comment.html:82
4120 #: rhodecode/templates/changeset/changeset_file_comment.html:88
3728 msgid "You need to be logged in to comment."
4121 msgid "You need to be logged in to comment."
3729 msgstr "Vous devez être connecté pour poster des commentaires."
4122 msgstr "Vous devez être connecté pour poster des commentaires."
3730
4123
3731 #: rhodecode/templates/changeset/changeset_file_comment.html:82
4124 #: rhodecode/templates/changeset/changeset_file_comment.html:88
3732 msgid "Login now"
4125 msgid "Login now"
3733 msgstr "Se connecter maintenant"
4126 msgstr "Se connecter maintenant"
3734
4127
3735 #: rhodecode/templates/changeset/changeset_file_comment.html:86
4128 #: rhodecode/templates/changeset/changeset_file_comment.html:92
3736 msgid "Hide"
4129 msgid "Hide"
3737 msgstr "Masquer"
4130 msgstr "Masquer"
3738
4131
3739 #: rhodecode/templates/changeset/changeset_file_comment.html:143
4132 #: rhodecode/templates/changeset/changeset_file_comment.html:149
3740 #, fuzzy
4133 #, fuzzy
3741 msgid "Change status"
4134 msgid "Change status"
3742 msgstr "Modifier le statut"
4135 msgstr "Modifier le statut"
3743
4136
3744 #: rhodecode/templates/changeset/changeset_file_comment.html:163
4137 #: rhodecode/templates/changeset/changeset_file_comment.html:179
3745 msgid "Comment and close"
4138 msgid "Comment and close"
3746 msgstr "Commenter et fermer"
4139 msgstr "Commenter et fermer"
3747
4140
@@ -3754,20 +4147,20 b' msgstr "Changesets de %s"'
3754 msgid "Files affected"
4147 msgid "Files affected"
3755 msgstr "Fichiers affectés"
4148 msgstr "Fichiers affectés"
3756
4149
3757 #: rhodecode/templates/changeset/diff_block.html:22
4150 #: rhodecode/templates/changeset/diff_block.html:21
3758 msgid "Show full diff for this file"
4151 msgid "Show full diff for this file"
3759 msgstr ""
4152 msgstr ""
3760
4153
3761 #: rhodecode/templates/changeset/diff_block.html:30
4154 #: rhodecode/templates/changeset/diff_block.html:29
3762 #, fuzzy
4155 #, fuzzy
3763 msgid "Show inline comments"
4156 msgid "Show inline comments"
3764 msgstr "Afficher les commentaires"
4157 msgstr "Afficher les commentaires"
3765
4158
3766 #: rhodecode/templates/changeset/diff_block.html:55
4159 #: rhodecode/templates/changeset/diff_block.html:53
3767 msgid "Show file at latest version in this repo"
4160 msgid "Show file at latest version in this repo"
3768 msgstr ""
4161 msgstr ""
3769
4162
3770 #: rhodecode/templates/changeset/diff_block.html:56
4163 #: rhodecode/templates/changeset/diff_block.html:54
3771 msgid "Show file at initial version in this repo"
4164 msgid "Show file at initial version in this repo"
3772 msgstr ""
4165 msgstr ""
3773
4166
@@ -3845,29 +4238,25 b' msgstr "S\xe2\x80\x99abonner au flux ATOM de %s"'
3845 msgid "Confirm to delete this repository: %s"
4238 msgid "Confirm to delete this repository: %s"
3846 msgstr "Voulez-vous vraiment supprimer le dépôt %s ?"
4239 msgstr "Voulez-vous vraiment supprimer le dépôt %s ?"
3847
4240
3848 #: rhodecode/templates/data_table/_dt_elements.html:131
4241 #: rhodecode/templates/data_table/_dt_elements.html:137
3849 #, python-format
4242 #, python-format
3850 msgid "Confirm to delete this user: %s"
4243 msgid "Confirm to delete this user: %s"
3851 msgstr "Voulez-vous vraiment supprimer l’utilisateur « %s » ?"
4244 msgstr "Voulez-vous vraiment supprimer l’utilisateur « %s » ?"
3852
4245
3853 #: rhodecode/templates/email_templates/changeset_comment.html:9
4246 #: rhodecode/templates/email_templates/changeset_comment.html:4
3854 #: rhodecode/templates/email_templates/pull_request_comment.html:15
4247 #: rhodecode/templates/email_templates/pull_request.html:4
3855 #, fuzzy
4248 #: rhodecode/templates/email_templates/pull_request_comment.html:4
3856 msgid "New status"
4249 #, fuzzy
3857 msgstr "Modifier le statut"
4250 msgid "URL"
3858
4251 msgstr "Journal"
3859 #: rhodecode/templates/email_templates/changeset_comment.html:11
4252
3860 #: rhodecode/templates/email_templates/pull_request_comment.html:9
4253 #: rhodecode/templates/email_templates/changeset_comment.html:6
3861 msgid "View this comment here"
4254 #, fuzzy, python-format
3862 msgstr ""
4255 msgid "%s commented on a %s changeset."
4256 msgstr "%s a posté un commentaire sur le commit %s"
3863
4257
3864 #: rhodecode/templates/email_templates/changeset_comment.html:14
4258 #: rhodecode/templates/email_templates/changeset_comment.html:14
3865 #, fuzzy
4259 msgid "The changeset status was changed to"
3866 msgid "Repo"
3867 msgstr "Mes dépôts"
3868
3869 #: rhodecode/templates/email_templates/changeset_comment.html:16
3870 msgid "desc"
3871 msgstr ""
4260 msgstr ""
3872
4261
3873 #: rhodecode/templates/email_templates/main.html:8
4262 #: rhodecode/templates/email_templates/main.html:8
@@ -3888,51 +4277,40 b' msgstr ""'
3888 msgid "You can generate it by clicking following URL"
4277 msgid "You can generate it by clicking following URL"
3889 msgstr ""
4278 msgstr ""
3890
4279
3891 #: rhodecode/templates/email_templates/password_reset.html:11
4280 #: rhodecode/templates/email_templates/password_reset.html:10
3892 msgid "If you did not request new password please ignore this email."
4281 msgid "Please ignore this email if you did not request a new password ."
3893 msgstr ""
4282 msgstr ""
3894
4283
3895 #: rhodecode/templates/email_templates/pull_request.html:4
3896 #, python-format
3897 msgid ""
3898 "User %s opened pull request for repository %s and wants you to review "
3899 "changes."
3900 msgstr ""
3901
3902 #: rhodecode/templates/email_templates/pull_request.html:5
3903 #, fuzzy
3904 msgid "View this pull request here"
3905 msgstr "Ajouter un relecteur à cette requête de pull."
3906
3907 #: rhodecode/templates/email_templates/pull_request.html:6
4284 #: rhodecode/templates/email_templates/pull_request.html:6
3908 #, fuzzy
4285 #, python-format
3909 msgid "title"
4286 msgid ""
4287 "%s opened a pull request for repository %s and wants you to review "
4288 "changes."
4289 msgstr ""
4290
4291 #: rhodecode/templates/email_templates/pull_request.html:8
4292 #: rhodecode/templates/pullrequests/pullrequest.html:34
4293 #: rhodecode/templates/pullrequests/pullrequest_data.html:14
4294 #: rhodecode/templates/pullrequests/pullrequest_show.html:25
4295 msgid "Title"
3910 msgstr "Titre"
4296 msgstr "Titre"
3911
4297
3912 #: rhodecode/templates/email_templates/pull_request.html:7
4298 #: rhodecode/templates/email_templates/pull_request_comment.html:6
3913 msgid "description"
3914 msgstr "Description"
3915
3916 #: rhodecode/templates/email_templates/pull_request.html:12
3917 msgid "revisions for reviewing"
3918 msgstr ""
3919
3920 #: rhodecode/templates/email_templates/pull_request_comment.html:3
3921 #, fuzzy, python-format
4299 #, fuzzy, python-format
3922 msgid "Pull request #%s for repository %s"
4300 msgid "%s commented on pull request \"%s\""
3923 msgstr "Requête de pull nº%s ouverte le %s"
4301 msgstr "%s [a commenté] la requête de pull pour %s"
3924
4302
3925 #: rhodecode/templates/email_templates/pull_request_comment.html:13
4303 #: rhodecode/templates/email_templates/pull_request_comment.html:10
3926 #, fuzzy
4304 #, fuzzy
3927 msgid "Closing pull request with status"
4305 msgid "Pull request was closed with status"
3928 msgstr "Statut de la requête de pull"
4306 msgstr "Statut de la requête de pull"
3929
4307
3930 #: rhodecode/templates/email_templates/registration.html:4
4308 #: rhodecode/templates/email_templates/pull_request_comment.html:12
3931 #, fuzzy
4309 #, fuzzy
3932 msgid "A new user have registered in RhodeCode"
4310 msgid "Pull request changed status"
3933 msgstr "Vous vous êtes inscrits avec succès à RhodeCode"
4311 msgstr "Statut de la requête de pull"
3934
4312
3935 #: rhodecode/templates/email_templates/registration.html:9
4313 #: rhodecode/templates/email_templates/registration.html:6
3936 msgid "View this user here"
4314 msgid "View this user here"
3937 msgstr ""
4315 msgstr ""
3938
4316
@@ -3959,7 +4337,6 b' msgstr "Fichiers de %s"'
3959 #: rhodecode/templates/files/files.html:30
4337 #: rhodecode/templates/files/files.html:30
3960 #: rhodecode/templates/files/files_add.html:31
4338 #: rhodecode/templates/files/files_add.html:31
3961 #: rhodecode/templates/files/files_edit.html:31
4339 #: rhodecode/templates/files/files_edit.html:31
3962 #: rhodecode/templates/shortlog/shortlog_data.html:9
3963 #, fuzzy
4340 #, fuzzy
3964 msgid "Branch"
4341 msgid "Branch"
3965 msgstr "Branche"
4342 msgstr "Branche"
@@ -3974,12 +4351,6 b' msgstr "Fichiers de %s"'
3974 msgid "Add file"
4351 msgid "Add file"
3975 msgstr "Ajouter un fichier"
4352 msgstr "Ajouter un fichier"
3976
4353
3977 #: rhodecode/templates/files/files_add.html:38
3978 #: rhodecode/templates/files/files_browser.html:31
3979 #: rhodecode/templates/shortlog/shortlog_data.html:78
3980 msgid "Add new file"
3981 msgstr "Ajouter un nouveau fichier"
3982
3983 #: rhodecode/templates/files/files_add.html:43
4354 #: rhodecode/templates/files/files_add.html:43
3984 msgid "File Name"
4355 msgid "File Name"
3985 msgstr "Nom de fichier"
4356 msgstr "Nom de fichier"
@@ -4008,13 +4379,6 b' msgstr "Emplacement"'
4008 msgid "use / to separate directories"
4379 msgid "use / to separate directories"
4009 msgstr "Utilisez / pour séparer les répertoires"
4380 msgstr "Utilisez / pour séparer les répertoires"
4010
4381
4011 #: rhodecode/templates/files/files_add.html:75
4012 #: rhodecode/templates/files/files_edit.html:61
4013 #: rhodecode/templates/shortlog/shortlog_data.html:6
4014 #, fuzzy
4015 msgid "Commit message"
4016 msgstr "Message de commit"
4017
4018 #: rhodecode/templates/files/files_add.html:79
4382 #: rhodecode/templates/files/files_add.html:79
4019 #: rhodecode/templates/files/files_edit.html:65
4383 #: rhodecode/templates/files/files_edit.html:65
4020 msgid "Commit changes"
4384 msgid "Commit changes"
@@ -4085,13 +4449,6 b' msgstr "\xc3\x89diter le fichier"'
4085 msgid "Show annotation"
4449 msgid "Show annotation"
4086 msgstr "Afficher les annotations"
4450 msgstr "Afficher les annotations"
4087
4451
4088 #: rhodecode/templates/files/files_edit.html:48
4089 #: rhodecode/templates/files/files_source.html:25
4090 #: rhodecode/templates/files/files_source.html:55
4091 #, fuzzy
4092 msgid "Show as raw"
4093 msgstr "montrer le fichier brut"
4094
4095 #: rhodecode/templates/files/files_edit.html:49
4452 #: rhodecode/templates/files/files_edit.html:49
4096 #: rhodecode/templates/files/files_source.html:26
4453 #: rhodecode/templates/files/files_source.html:26
4097 #, fuzzy
4454 #, fuzzy
@@ -4290,37 +4647,52 b' msgstr "Flux RSS du journal public"'
4290 msgid "New pull request"
4647 msgid "New pull request"
4291 msgstr "Nouvelle requête de pull"
4648 msgstr "Nouvelle requête de pull"
4292
4649
4293 #: rhodecode/templates/pullrequests/pullrequest.html:52
4650 #: rhodecode/templates/pullrequests/pullrequest.html:25
4294 msgid "Detailed compare view"
4651 msgid "Create new pull request"
4295 msgstr "Comparaison détaillée"
4652 msgstr "Nouvelle requête de pull"
4296
4653
4297 #: rhodecode/templates/pullrequests/pullrequest.html:56
4654 #: rhodecode/templates/pullrequests/pullrequest.html:47
4655 #, fuzzy
4656 msgid "Write a short description on this pull request"
4657 msgstr "Veuillez confirmer la suppression de cette requête de pull."
4658
4659 #: rhodecode/templates/pullrequests/pullrequest.html:53
4660 #, fuzzy
4661 msgid "Changeset flow"
4662 msgstr "Changements"
4663
4664 #: rhodecode/templates/pullrequests/pullrequest.html:60
4665 #: rhodecode/templates/pullrequests/pullrequest_show.html:65
4666 #, fuzzy
4667 msgid "Origin repository"
4668 msgstr "Dépôt Git"
4669
4670 #: rhodecode/templates/pullrequests/pullrequest.html:85
4671 msgid "Send pull request"
4672 msgstr "Envoyer la requête de pull"
4673
4674 #: rhodecode/templates/pullrequests/pullrequest.html:94
4298 #: rhodecode/templates/pullrequests/pullrequest_show.html:137
4675 #: rhodecode/templates/pullrequests/pullrequest_show.html:137
4299 msgid "Pull request reviewers"
4676 msgid "Pull request reviewers"
4300 msgstr "Relecteurs de la requête de pull"
4677 msgstr "Relecteurs de la requête de pull"
4301
4678
4302 #: rhodecode/templates/pullrequests/pullrequest.html:65
4679 #: rhodecode/templates/pullrequests/pullrequest.html:103
4303 #: rhodecode/templates/pullrequests/pullrequest_show.html:149
4680 #: rhodecode/templates/pullrequests/pullrequest_show.html:149
4304 msgid "owner"
4681 msgid "owner"
4305 msgstr "Propriétaire"
4682 msgstr "Propriétaire"
4306
4683
4307 #: rhodecode/templates/pullrequests/pullrequest.html:77
4684 #: rhodecode/templates/pullrequests/pullrequest.html:115
4308 msgid "Add reviewer to this pull request."
4685 msgid "Add reviewer to this pull request."
4309 msgstr "Ajouter un relecteur à cette requête de pull."
4686 msgstr "Ajouter un relecteur à cette requête de pull."
4310
4687
4311 #: rhodecode/templates/pullrequests/pullrequest.html:83
4688 #: rhodecode/templates/pullrequests/pullrequest.html:129
4312 msgid "Create new pull request"
4689 msgid "Detailed compare view"
4313 msgstr "Nouvelle requête de pull"
4690 msgstr "Comparaison détaillée"
4314
4691
4315 #: rhodecode/templates/pullrequests/pullrequest.html:92
4692 #: rhodecode/templates/pullrequests/pullrequest.html:150
4316 #: rhodecode/templates/pullrequests/pullrequest_data.html:14
4693 #, fuzzy
4317 #: rhodecode/templates/pullrequests/pullrequest_show.html:25
4694 msgid "Destination repository"
4318 msgid "Title"
4695 msgstr "Éditer le dépôt"
4319 msgstr "Titre"
4320
4321 #: rhodecode/templates/pullrequests/pullrequest.html:109
4322 msgid "Send pull request"
4323 msgstr "Envoyer la requête de pull"
4324
4696
4325 #: rhodecode/templates/pullrequests/pullrequest_show.html:4
4697 #: rhodecode/templates/pullrequests/pullrequest_show.html:4
4326 #, fuzzy, python-format
4698 #, fuzzy, python-format
@@ -4352,11 +4724,6 b' msgstr[1] "%d relecteurs"'
4352 msgid "Pull request was reviewed by all reviewers"
4724 msgid "Pull request was reviewed by all reviewers"
4353 msgstr "La requête de pull a été relue par tous les relecteurs."
4725 msgstr "La requête de pull a été relue par tous les relecteurs."
4354
4726
4355 #: rhodecode/templates/pullrequests/pullrequest_show.html:65
4356 #, fuzzy
4357 msgid "Origin repository"
4358 msgstr "Dépôt Git"
4359
4360 #: rhodecode/templates/pullrequests/pullrequest_show.html:89
4727 #: rhodecode/templates/pullrequests/pullrequest_show.html:89
4361 msgid "Created on"
4728 msgid "Created on"
4362 msgstr "Créé le"
4729 msgstr "Créé le"
@@ -4421,38 +4788,6 b' msgstr "Les noms de fichiers"'
4421 msgid "Permission denied"
4788 msgid "Permission denied"
4422 msgstr "Permission refusée"
4789 msgstr "Permission refusée"
4423
4790
4424 #: rhodecode/templates/shortlog/shortlog.html:5
4425 #, fuzzy, python-format
4426 msgid "%s Lightweight Changelog"
4427 msgstr "%s fichié modifié"
4428
4429 #: rhodecode/templates/shortlog/shortlog.html:11
4430 #: rhodecode/templates/shortlog/shortlog.html:15
4431 msgid "Lightweight Changelog"
4432 msgstr ""
4433
4434 #: rhodecode/templates/shortlog/shortlog_data.html:7
4435 #, fuzzy
4436 msgid "Age"
4437 msgstr "Âge"
4438
4439 #: rhodecode/templates/shortlog/shortlog_data.html:20
4440 #, python-format
4441 msgid "Click to open associated pull request #%s"
4442 msgstr "Cliquez ici pour ouvrir la requête de pull associée #%s."
4443
4444 #: rhodecode/templates/shortlog/shortlog_data.html:75
4445 msgid "Add or upload files directly via RhodeCode"
4446 msgstr "Ajouter ou téléverser des fichiers directement via RhodeCode…"
4447
4448 #: rhodecode/templates/shortlog/shortlog_data.html:84
4449 msgid "Push new repo"
4450 msgstr "Pusher le nouveau dépôt"
4451
4452 #: rhodecode/templates/shortlog/shortlog_data.html:92
4453 msgid "Existing repository?"
4454 msgstr "Le dépôt existe déjà ?"
4455
4456 #: rhodecode/templates/summary/summary.html:4
4791 #: rhodecode/templates/summary/summary.html:4
4457 #, python-format
4792 #, python-format
4458 msgid "%s Summary"
4793 msgid "%s Summary"
@@ -4493,7 +4828,7 b' msgstr "publique"'
4493 msgid "Fork of"
4828 msgid "Fork of"
4494 msgstr "Fork de"
4829 msgstr "Fork de"
4495
4830
4496 #: rhodecode/templates/summary/summary.html:96
4831 #: rhodecode/templates/summary/summary.html:97
4497 #, fuzzy
4832 #, fuzzy
4498 msgid "Remote clone"
4833 msgid "Remote clone"
4499 msgstr "Clone distant"
4834 msgstr "Clone distant"
@@ -4520,8 +4855,8 b' msgstr "Populaires"'
4520
4855
4521 #: rhodecode/templates/summary/summary.html:151
4856 #: rhodecode/templates/summary/summary.html:151
4522 #: rhodecode/templates/summary/summary.html:167
4857 #: rhodecode/templates/summary/summary.html:167
4523 #: rhodecode/templates/summary/summary.html:232
4858 #, fuzzy
4524 msgid "enable"
4859 msgid "Enable"
4525 msgstr "Activer"
4860 msgstr "Activer"
4526
4861
4527 #: rhodecode/templates/summary/summary.html:159
4862 #: rhodecode/templates/summary/summary.html:159
@@ -4536,7 +4871,7 b' msgstr "Il n\xe2\x80\x99y a pas encore de t\xc3\xa9l\xc3\xa9chargements propos\xc3\xa9s."'
4536 msgid "Downloads are disabled for this repository"
4871 msgid "Downloads are disabled for this repository"
4537 msgstr "Les téléchargements sont désactivés pour ce dépôt."
4872 msgstr "Les téléchargements sont désactivés pour ce dépôt."
4538
4873
4539 #: rhodecode/templates/summary/summary.html:171
4874 #: rhodecode/templates/summary/summary.html:170
4540 msgid "Download as zip"
4875 msgid "Download as zip"
4541 msgstr "Télécharger en ZIP"
4876 msgstr "Télécharger en ZIP"
4542
4877
@@ -4563,6 +4898,10 b' msgstr "Flux RSS"'
4563 msgid "Commit activity by day / author"
4898 msgid "Commit activity by day / author"
4564 msgstr "Activité de commit par jour et par auteur"
4899 msgstr "Activité de commit par jour et par auteur"
4565
4900
4901 #: rhodecode/templates/summary/summary.html:232
4902 msgid "enable"
4903 msgstr "Activer"
4904
4566 #: rhodecode/templates/summary/summary.html:235
4905 #: rhodecode/templates/summary/summary.html:235
4567 msgid "Stats gathered: "
4906 msgid "Stats gathered: "
4568 msgstr "Statistiques obtenues :"
4907 msgstr "Statistiques obtenues :"
@@ -4577,52 +4916,48 b' msgid "Quick start"'
4577 msgstr "Démarrage rapide"
4916 msgstr "Démarrage rapide"
4578
4917
4579 #: rhodecode/templates/summary/summary.html:272
4918 #: rhodecode/templates/summary/summary.html:272
4580 #, python-format
4919 #, fuzzy, python-format
4581 msgid "Readme file at revision '%s'"
4920 msgid "Readme file from revision %s"
4582 msgstr "Fichier « Lisez-moi » à la révision « %s »"
4921 msgstr "Fichier « Lisez-moi » à la révision « %s »"
4583
4922
4584 #: rhodecode/templates/summary/summary.html:275
4923 #: rhodecode/templates/summary/summary.html:332
4585 msgid "Permalink to this readme"
4586 msgstr "Lien permanent vers ce fichier « Lisez-moi »"
4587
4588 #: rhodecode/templates/summary/summary.html:333
4589 #, python-format
4924 #, python-format
4590 msgid "Download %s as %s"
4925 msgid "Download %s as %s"
4591 msgstr "Télécharger %s comme archive %s"
4926 msgstr "Télécharger %s comme archive %s"
4592
4927
4593 #: rhodecode/templates/summary/summary.html:380
4928 #: rhodecode/templates/summary/summary.html:379
4594 msgid "files"
4929 msgid "files"
4595 msgstr "Fichiers"
4930 msgstr "Fichiers"
4596
4931
4597 #: rhodecode/templates/summary/summary.html:690
4932 #: rhodecode/templates/summary/summary.html:689
4598 msgid "commits"
4933 msgid "commits"
4599 msgstr "commits"
4934 msgstr "commits"
4600
4935
4601 #: rhodecode/templates/summary/summary.html:691
4936 #: rhodecode/templates/summary/summary.html:690
4602 msgid "files added"
4937 msgid "files added"
4603 msgstr "fichiers ajoutés"
4938 msgstr "fichiers ajoutés"
4604
4939
4605 #: rhodecode/templates/summary/summary.html:692
4940 #: rhodecode/templates/summary/summary.html:691
4606 msgid "files changed"
4941 msgid "files changed"
4607 msgstr "fichiers modifiés"
4942 msgstr "fichiers modifiés"
4608
4943
4609 #: rhodecode/templates/summary/summary.html:693
4944 #: rhodecode/templates/summary/summary.html:692
4610 msgid "files removed"
4945 msgid "files removed"
4611 msgstr "fichiers supprimés"
4946 msgstr "fichiers supprimés"
4612
4947
4613 #: rhodecode/templates/summary/summary.html:695
4948 #: rhodecode/templates/summary/summary.html:694
4614 msgid "commit"
4949 msgid "commit"
4615 msgstr "commit"
4950 msgstr "commit"
4616
4951
4952 #: rhodecode/templates/summary/summary.html:695
4953 msgid "file added"
4954 msgstr "fichier ajouté"
4955
4617 #: rhodecode/templates/summary/summary.html:696
4956 #: rhodecode/templates/summary/summary.html:696
4618 msgid "file added"
4957 msgid "file changed"
4619 msgstr "fichier ajouté"
4958 msgstr "fichié modifié"
4620
4959
4621 #: rhodecode/templates/summary/summary.html:697
4960 #: rhodecode/templates/summary/summary.html:697
4622 msgid "file changed"
4623 msgstr "fichié modifié"
4624
4625 #: rhodecode/templates/summary/summary.html:698
4626 msgid "file removed"
4961 msgid "file removed"
4627 msgstr "fichier supprimé"
4962 msgstr "fichier supprimé"
4628
4963
@@ -2,29 +2,66 b''
2 # to create new language #
2 # to create new language #
3 ##########################
3 ##########################
4
4
5 #this needs to be done on source codes, preferable default/stable branches
5 Translations are available on transifex under::
6
6
7 python setup.py extract_messages <- get messages from project
7 https://www.transifex.com/projects/p/RhodeCode/
8 python setup.py init_catalog -l pl <- create a language directory for <pl> lang
8
9 #edit the new po file with poedit or any other editor
9 Preferred method is to register on transifex and request new language translation.
10 msgfmt -f -c <updated_file.po> <- check format and errors
11 python setup.py compile_catalog -l pl <- create translation files
12
10
13 #############
11 manual creation of new language
14 # to update #
12 +++++++++++++++++++++++++++++++
15 #############
13
14 Dowload sources of RhodeCode. Run::
16
15
17 python setup.py extract_messages <- get messages from project
16 python setup.py develop
18 python setup.py update_catalog -l pl<- to update the translations
17
19 #edit the new updated po file with poedit
18 To prepare the enviroment
20 msgfmt -f -c <updated_file.po> <- check format and errors
21 python setup.py compile_catalog -l pl <- create translation files
22
19
23
20
24 ###################
21 Make sure all translation strings are extracted by running::
25 # change language #
22
26 ###################
23 python setup.py extract_messages
24
25 Create new language by executing following command::
26 python setup.py init_catalog -l <new_language_code>
27
28 This creates a new language under directory rhodecode/i18n/<new_language_code>
29 Be sure to update transifex mapping under .tx/config for new language
30
31 Edit the new PO file located in LC_MESSAGES directory with poedit or your
32 favorite PO files editor. Do translations and at the end verify the translation
33 file for any errors. This can be done by executing::
34
35 msgfmt -f -c rhodecode/i18n/<new_language_code>/LC_MESSAGES/<updated_file.po>
36
37 finally compile the translations::
38
39 python setup.py compile_catalog -l <new_language_code>
40
41 ##########################
42 # to update translations #
43 ##########################
27
44
28 `lang=pl`
45 Fetch latest version of strings for translation by running::
46
47 python setup.py extract_messages
48
49 Update PO file by doing::
50
51 python setup.py update_catalog -l <new_language_code><- to update the translations
52
53 Edit the new updated po file. Repeat all steps after `init_catalog` step from
54 new translation instructions
55
29
56
30 in the .ini file No newline at end of file
57 ########################
58 # testing translations #
59 ########################
60
61 Edit test.ini file and set lang attribute to::
62
63 lang=<new_language_code>
64
65 Run RhodeCode tests by executing::
66
67 nosetests
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/vcs_test_git.tar.gz to rhodecode/tests/fixtures/vcs_test_git.tar.gz
NO CONTENT: file renamed from rhodecode/tests/vcs_test_git.tar.gz to rhodecode/tests/fixtures/vcs_test_git.tar.gz
1 NO CONTENT: file renamed from rhodecode/tests/vcs_test_hg.tar.gz to rhodecode/tests/fixtures/vcs_test_hg.tar.gz, binary diff hidden
NO CONTENT: file renamed from rhodecode/tests/vcs_test_hg.tar.gz to rhodecode/tests/fixtures/vcs_test_hg.tar.gz, binary diff hidden
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/test_libs.py to rhodecode/tests/other/test_libs.py
NO CONTENT: file renamed from rhodecode/tests/test_libs.py to rhodecode/tests/other/test_libs.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/test_validators.py to rhodecode/tests/other/test_validators.py
NO CONTENT: file renamed from rhodecode/tests/test_validators.py to rhodecode/tests/other/test_validators.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from rhodecode/tests/scripts/test_vcs_operations.py to rhodecode/tests/other/test_vcs_operations.py
NO CONTENT: file renamed from rhodecode/tests/scripts/test_vcs_operations.py to rhodecode/tests/other/test_vcs_operations.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now