Show More
@@ -0,0 +1,54 b'' | |||||
|
1 | |RCE| 4.21.0 |RNS| | |||
|
2 | ------------------ | |||
|
3 | ||||
|
4 | Release Date | |||
|
5 | ^^^^^^^^^^^^ | |||
|
6 | ||||
|
7 | - 2020-09-28 | |||
|
8 | ||||
|
9 | ||||
|
10 | New Features | |||
|
11 | ^^^^^^^^^^^^ | |||
|
12 | ||||
|
13 | - Pull requests: overhaul of the UX/UI by adding new sidebar | |||
|
14 | - Pull requests: new live reviewer present indicator (requires channelstream enabled) | |||
|
15 | - Pull requests: new live new comments indicator (requires channelstream enabled) | |||
|
16 | - Pull requests: new sidebar with comments/todos/referenced tickets navigation | |||
|
17 | - Commits page: Introduced sidebar for single commits pages | |||
|
18 | ||||
|
19 | ||||
|
20 | General | |||
|
21 | ^^^^^^^ | |||
|
22 | ||||
|
23 | - API: allow repo admins to get/set settings. | |||
|
24 | Previously it was only super-admins that could do that. | |||
|
25 | - Sessions: patch baker to take expire time for redis for auto session cleanup feature. | |||
|
26 | - Git: bumped git version to 2.27.0 | |||
|
27 | - Packages: bumped to channelstream==0.6.14 | |||
|
28 | ||||
|
29 | ||||
|
30 | Security | |||
|
31 | ^^^^^^^^ | |||
|
32 | ||||
|
33 | - Issue trackers: fix XSS with description field. | |||
|
34 | ||||
|
35 | ||||
|
36 | Performance | |||
|
37 | ^^^^^^^^^^^ | |||
|
38 | ||||
|
39 | - Artifacts: speed-up of artifacts download request processing. | |||
|
40 | ||||
|
41 | ||||
|
42 | Fixes | |||
|
43 | ^^^^^ | |||
|
44 | ||||
|
45 | - Pull requests: properly save merge failure metadata. | |||
|
46 | In rare cases merge check reported conflicts which there were none. | |||
|
47 | - Sessions: fixed cleanup with corrupted session data issue. | |||
|
48 | ||||
|
49 | ||||
|
50 | Upgrade notes | |||
|
51 | ^^^^^^^^^^^^^ | |||
|
52 | ||||
|
53 | - Scheduled feature release. | |||
|
54 | - Git version was bumped to 2.27.0 |
@@ -0,0 +1,55 b'' | |||||
|
1 | |RCE| 4.22.0 |RNS| | |||
|
2 | ------------------ | |||
|
3 | ||||
|
4 | Release Date | |||
|
5 | ^^^^^^^^^^^^ | |||
|
6 | ||||
|
7 | - 2020-10-12 | |||
|
8 | ||||
|
9 | ||||
|
10 | New Features | |||
|
11 | ^^^^^^^^^^^^ | |||
|
12 | ||||
|
13 | - Reviewers: added observers as another role for reviewers. | |||
|
14 | Observers is a role that doesn't require voting, but still gets notified about | |||
|
15 | PR and should participate in review process. | |||
|
16 | - Issue trackers: implemented more sophisticated ticket data extraction based on | |||
|
17 | advanced regex module. This allows using ticket references without false positives | |||
|
18 | like catching ticket data in an URL. | |||
|
19 | - Channelstream: Notification about updates and comments now works via API, and both | |||
|
20 | Pull-requests and individual commits. | |||
|
21 | ||||
|
22 | ||||
|
23 | General | |||
|
24 | ^^^^^^^ | |||
|
25 | ||||
|
26 | - Data tables: unified tables look for main pages of rhodecode repo pages. | |||
|
27 | - Users: autocomplete now sorts by matched username to show best matches first. | |||
|
28 | - Pull requests: only allow actual reviewers to leave status/votes in order to not | |||
|
29 | confuse others users about voting from people who aren't actual reviewers. | |||
|
30 | ||||
|
31 | Security | |||
|
32 | ^^^^^^^^ | |||
|
33 | ||||
|
34 | ||||
|
35 | ||||
|
36 | Performance | |||
|
37 | ^^^^^^^^^^^ | |||
|
38 | ||||
|
39 | - Default reviewers: optimize diff data, and creation of PR with advanced default reviewers | |||
|
40 | - default-reviewers: diff data should load more things lazy for better performance. | |||
|
41 | - Pull requests: limit the amount of data saved in default reviewers data for better memory usage | |||
|
42 | - DB: don't use lazy loaders on PR related objects, to optimize memory usage on large | |||
|
43 | Pull requests with lots of comments, and commits. | |||
|
44 | ||||
|
45 | Fixes | |||
|
46 | ^^^^^ | |||
|
47 | ||||
|
48 | - Quick search bar: fixes #5634, crash when search on non-ascii characters. | |||
|
49 | - Sidebar: few fixes for panel rendering of reviewers/observers for both commits and PRS. | |||
|
50 | ||||
|
51 | Upgrade notes | |||
|
52 | ^^^^^^^^^^^^^ | |||
|
53 | ||||
|
54 | - Scheduled feature release. | |||
|
55 |
@@ -0,0 +1,68 b'' | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | ||||
|
3 | import logging | |||
|
4 | from sqlalchemy import * | |||
|
5 | ||||
|
6 | from alembic.migration import MigrationContext | |||
|
7 | from alembic.operations import Operations | |||
|
8 | ||||
|
9 | from rhodecode.lib.dbmigrate.versions import _reset_base | |||
|
10 | from rhodecode.model import meta, init_model_encryption | |||
|
11 | ||||
|
12 | ||||
|
13 | log = logging.getLogger(__name__) | |||
|
14 | ||||
|
15 | ||||
|
16 | def upgrade(migrate_engine): | |||
|
17 | """ | |||
|
18 | Upgrade operations go here. | |||
|
19 | Don't create your own engine; bind migrate_engine to your metadata | |||
|
20 | """ | |||
|
21 | _reset_base(migrate_engine) | |||
|
22 | from rhodecode.lib.dbmigrate.schema import db_4_20_0_0 as db | |||
|
23 | ||||
|
24 | init_model_encryption(db) | |||
|
25 | ||||
|
26 | context = MigrationContext.configure(migrate_engine.connect()) | |||
|
27 | op = Operations(context) | |||
|
28 | ||||
|
29 | table = db.RepoReviewRuleUser.__table__ | |||
|
30 | with op.batch_alter_table(table.name) as batch_op: | |||
|
31 | new_column = Column('role', Unicode(255), nullable=True) | |||
|
32 | batch_op.add_column(new_column) | |||
|
33 | ||||
|
34 | _fill_rule_user_role(op, meta.Session) | |||
|
35 | ||||
|
36 | table = db.RepoReviewRuleUserGroup.__table__ | |||
|
37 | with op.batch_alter_table(table.name) as batch_op: | |||
|
38 | new_column = Column('role', Unicode(255), nullable=True) | |||
|
39 | batch_op.add_column(new_column) | |||
|
40 | ||||
|
41 | _fill_rule_user_group_role(op, meta.Session) | |||
|
42 | ||||
|
43 | ||||
|
44 | def downgrade(migrate_engine): | |||
|
45 | meta = MetaData() | |||
|
46 | meta.bind = migrate_engine | |||
|
47 | ||||
|
48 | ||||
|
49 | def fixups(models, _SESSION): | |||
|
50 | pass | |||
|
51 | ||||
|
52 | ||||
|
53 | def _fill_rule_user_role(op, session): | |||
|
54 | params = {'role': 'reviewer'} | |||
|
55 | query = text( | |||
|
56 | 'UPDATE repo_review_rules_users SET role = :role' | |||
|
57 | ).bindparams(**params) | |||
|
58 | op.execute(query) | |||
|
59 | session().commit() | |||
|
60 | ||||
|
61 | ||||
|
62 | def _fill_rule_user_group_role(op, session): | |||
|
63 | params = {'role': 'reviewer'} | |||
|
64 | query = text( | |||
|
65 | 'UPDATE repo_review_rules_users_groups SET role = :role' | |||
|
66 | ).bindparams(**params) | |||
|
67 | op.execute(query) | |||
|
68 | session().commit() |
@@ -0,0 +1,35 b'' | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | ||||
|
3 | # Copyright (C) 2010-2020 RhodeCode GmbH | |||
|
4 | # | |||
|
5 | # This program is free software: you can redistribute it and/or modify | |||
|
6 | # it under the terms of the GNU Affero General Public License, version 3 | |||
|
7 | # (only), as published by the Free Software Foundation. | |||
|
8 | # | |||
|
9 | # This program is distributed in the hope that it will be useful, | |||
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
12 | # GNU General Public License for more details. | |||
|
13 | # | |||
|
14 | # You should have received a copy of the GNU Affero General Public License | |||
|
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
16 | # | |||
|
17 | # This program is dual-licensed. If you wish to learn more about the | |||
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |||
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |||
|
20 | ||||
|
21 | ||||
|
22 | def html(info): | |||
|
23 | """ | |||
|
24 | Custom string as html content_type renderer for pyramid | |||
|
25 | """ | |||
|
26 | def _render(value, system): | |||
|
27 | request = system.get('request') | |||
|
28 | if request is not None: | |||
|
29 | response = request.response | |||
|
30 | ct = response.content_type | |||
|
31 | if ct == response.default_content_type: | |||
|
32 | response.content_type = 'text/html' | |||
|
33 | return value | |||
|
34 | ||||
|
35 | return _render |
@@ -68,3 +68,5 b' 7ac623a4a2405917e2af660d645ded662011e40d' | |||||
68 | ef7ffda65eeb90c3ba88590a6cb816ef9b0bc232 v4.19.3 |
|
68 | ef7ffda65eeb90c3ba88590a6cb816ef9b0bc232 v4.19.3 | |
69 | 3e635489bb7961df93b01e42454ad1a8730ae968 v4.20.0 |
|
69 | 3e635489bb7961df93b01e42454ad1a8730ae968 v4.20.0 | |
70 | 7e2eb896a02ca7cd2cd9f0f853ef3dac3f0039e3 v4.20.1 |
|
70 | 7e2eb896a02ca7cd2cd9f0f853ef3dac3f0039e3 v4.20.1 | |
|
71 | 8bb5fece08ab65986225b184e46f53d2a71729cb v4.21.0 | |||
|
72 | 90734aac31ee4563bbe665a43ff73190cc762275 v4.22.0 |
@@ -90,7 +90,7 b' comment_pull_request' | |||||
90 | create_pull_request |
|
90 | create_pull_request | |
91 | ------------------- |
|
91 | ------------------- | |
92 |
|
92 | |||
93 | .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, owner=<Optional:<OptionalAttr:apiuser>>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>) |
|
93 | .. py:function:: create_pull_request(apiuser, source_repo, target_repo, source_ref, target_ref, owner=<Optional:<OptionalAttr:apiuser>>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>, observers=<Optional:None>) | |
94 |
|
94 | |||
95 | Creates a new pull request. |
|
95 | Creates a new pull request. | |
96 |
|
96 | |||
@@ -128,6 +128,13 b' create_pull_request' | |||||
128 | Accepts username strings or objects of the format: |
|
128 | Accepts username strings or objects of the format: | |
129 |
|
129 | |||
130 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] |
|
130 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] | |
|
131 | :param observers: Set the new pull request observers list. | |||
|
132 | Reviewer defined by review rules will be added automatically to the | |||
|
133 | defined list. This feature is only available in RhodeCode EE | |||
|
134 | :type observers: Optional(list) | |||
|
135 | Accepts username strings or objects of the format: | |||
|
136 | ||||
|
137 | [{'username': 'nick', 'reasons': ['original author']}] | |||
131 |
|
138 | |||
132 |
|
139 | |||
133 | get_pull_request |
|
140 | get_pull_request | |
@@ -392,7 +399,7 b' merge_pull_request' | |||||
392 | update_pull_request |
|
399 | update_pull_request | |
393 | ------------------- |
|
400 | ------------------- | |
394 |
|
401 | |||
395 | .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>, update_commits=<Optional:None>) |
|
402 | .. py:function:: update_pull_request(apiuser, pullrequestid, repoid=<Optional:None>, title=<Optional:''>, description=<Optional:''>, description_renderer=<Optional:''>, reviewers=<Optional:None>, observers=<Optional:None>, update_commits=<Optional:None>) | |
396 |
|
403 | |||
397 | Updates a pull request. |
|
404 | Updates a pull request. | |
398 |
|
405 | |||
@@ -414,7 +421,11 b' update_pull_request' | |||||
414 | Accepts username strings or objects of the format: |
|
421 | Accepts username strings or objects of the format: | |
415 |
|
422 | |||
416 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] |
|
423 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] | |
|
424 | :param observers: Update pull request observers list with new value. | |||
|
425 | :type observers: Optional(list) | |||
|
426 | Accepts username strings or objects of the format: | |||
417 |
|
427 | |||
|
428 | [{'username': 'nick', 'reasons': ['should be aware about this PR']}] | |||
418 | :param update_commits: Trigger update of commits for this pull request |
|
429 | :param update_commits: Trigger update of commits for this pull request | |
419 | :type: update_commits: Optional(bool) |
|
430 | :type: update_commits: Optional(bool) | |
420 |
|
431 | |||
@@ -432,6 +443,12 b' update_pull_request' | |||||
432 | ], |
|
443 | ], | |
433 | "removed": [] |
|
444 | "removed": [] | |
434 | }, |
|
445 | }, | |
|
446 | "updated_observers": { | |||
|
447 | "added": [ | |||
|
448 | "username" | |||
|
449 | ], | |||
|
450 | "removed": [] | |||
|
451 | }, | |||
435 | "updated_commits": { |
|
452 | "updated_commits": { | |
436 | "added": [ |
|
453 | "added": [ | |
437 | "<sha1_hash>" |
|
454 | "<sha1_hash>" |
@@ -9,6 +9,8 b' Release Notes' | |||||
9 | .. toctree:: |
|
9 | .. toctree:: | |
10 | :maxdepth: 1 |
|
10 | :maxdepth: 1 | |
11 |
|
11 | |||
|
12 | release-notes-4.22.0.rst | |||
|
13 | release-notes-4.21.0.rst | |||
12 | release-notes-4.20.1.rst |
|
14 | release-notes-4.20.1.rst | |
13 | release-notes-4.20.0.rst |
|
15 | release-notes-4.20.0.rst | |
14 | release-notes-4.19.3.rst |
|
16 | release-notes-4.19.3.rst |
@@ -1816,6 +1816,17 b' self: super: {' | |||||
1816 | license = [ pkgs.lib.licenses.mit ]; |
|
1816 | license = [ pkgs.lib.licenses.mit ]; | |
1817 | }; |
|
1817 | }; | |
1818 | }; |
|
1818 | }; | |
|
1819 | "regex" = super.buildPythonPackage { | |||
|
1820 | name = "regex-2020.9.27"; | |||
|
1821 | doCheck = false; | |||
|
1822 | src = fetchurl { | |||
|
1823 | url = "https://files.pythonhosted.org/packages/93/8c/17f45cdfb39b13d4b5f909e4b4c2917abcbdef9c0036919a0399769148cf/regex-2020.9.27.tar.gz"; | |||
|
1824 | sha256 = "179ngfzwbsjvn5vhyzdahvmg0f7acahkwwy9bpjy1pv08bm2mwx6"; | |||
|
1825 | }; | |||
|
1826 | meta = { | |||
|
1827 | license = [ pkgs.lib.licenses.psfl ]; | |||
|
1828 | }; | |||
|
1829 | }; | |||
1819 | "redis" = super.buildPythonPackage { |
|
1830 | "redis" = super.buildPythonPackage { | |
1820 | name = "redis-3.4.1"; |
|
1831 | name = "redis-3.4.1"; | |
1821 | doCheck = false; |
|
1832 | doCheck = false; | |
@@ -1872,7 +1883,7 b' self: super: {' | |||||
1872 | }; |
|
1883 | }; | |
1873 | }; |
|
1884 | }; | |
1874 | "rhodecode-enterprise-ce" = super.buildPythonPackage { |
|
1885 | "rhodecode-enterprise-ce" = super.buildPythonPackage { | |
1875 |
name = "rhodecode-enterprise-ce-4.2 |
|
1886 | name = "rhodecode-enterprise-ce-4.22.0"; | |
1876 | buildInputs = [ |
|
1887 | buildInputs = [ | |
1877 | self."pytest" |
|
1888 | self."pytest" | |
1878 | self."py" |
|
1889 | self."py" | |
@@ -1946,6 +1957,7 b' self: super: {' | |||||
1946 | self."tzlocal" |
|
1957 | self."tzlocal" | |
1947 | self."pyzmq" |
|
1958 | self."pyzmq" | |
1948 | self."py-gfm" |
|
1959 | self."py-gfm" | |
|
1960 | self."regex" | |||
1949 | self."redis" |
|
1961 | self."redis" | |
1950 | self."repoze.lru" |
|
1962 | self."repoze.lru" | |
1951 | self."requests" |
|
1963 | self."requests" |
@@ -56,6 +56,7 b' pytz==2019.3' | |||||
56 | tzlocal==1.5.1 |
|
56 | tzlocal==1.5.1 | |
57 | pyzmq==14.6.0 |
|
57 | pyzmq==14.6.0 | |
58 | py-gfm==0.1.4 |
|
58 | py-gfm==0.1.4 | |
|
59 | regex==2020.9.27 | |||
59 | redis==3.4.1 |
|
60 | redis==3.4.1 | |
60 | repoze.lru==0.7 |
|
61 | repoze.lru==0.7 | |
61 | requests==2.22.0 |
|
62 | requests==2.22.0 |
@@ -48,7 +48,7 b' PYRAMID_SETTINGS = {}' | |||||
48 | EXTENSIONS = {} |
|
48 | EXTENSIONS = {} | |
49 |
|
49 | |||
50 | __version__ = ('.'.join((str(each) for each in VERSION[:3]))) |
|
50 | __version__ = ('.'.join((str(each) for each in VERSION[:3]))) | |
51 |
__dbversion__ = 10 |
|
51 | __dbversion__ = 110 # defines current db version for migrations | |
52 | __platform__ = platform.system() |
|
52 | __platform__ = platform.system() | |
53 | __license__ = 'AGPLv3, and Commercial License' |
|
53 | __license__ = 'AGPLv3, and Commercial License' | |
54 | __author__ = 'RhodeCode GmbH' |
|
54 | __author__ = 'RhodeCode GmbH' |
@@ -320,7 +320,7 b' class TestCreatePullRequestApi(object):' | |||||
320 | id_, params = build_data( |
|
320 | id_, params = build_data( | |
321 | self.apikey_regular, 'create_pull_request', **data) |
|
321 | self.apikey_regular, 'create_pull_request', **data) | |
322 | response = api_call(self.app, params) |
|
322 | response = api_call(self.app, params) | |
323 | expected_message = 'no commits found' |
|
323 | expected_message = 'no commits found for merge between specified references' | |
324 | assert_error(id_, expected_message, given=response.body) |
|
324 | assert_error(id_, expected_message, given=response.body) | |
325 |
|
325 | |||
326 | @pytest.mark.backends("git", "hg") |
|
326 | @pytest.mark.backends("git", "hg") |
@@ -29,6 +29,7 b' from rhodecode.api.tests.utils import (' | |||||
29 |
|
29 | |||
30 | @pytest.mark.usefixtures("testuser_api", "app") |
|
30 | @pytest.mark.usefixtures("testuser_api", "app") | |
31 | class TestGetPullRequest(object): |
|
31 | class TestGetPullRequest(object): | |
|
32 | ||||
32 | @pytest.mark.backends("git", "hg") |
|
33 | @pytest.mark.backends("git", "hg") | |
33 | def test_api_get_pull_requests(self, pr_util): |
|
34 | def test_api_get_pull_requests(self, pr_util): | |
34 | pull_request = pr_util.create_pull_request() |
|
35 | pull_request = pr_util.create_pull_request() | |
@@ -40,6 +41,7 b' class TestGetPullRequest(object):' | |||||
40 | target_ref=pull_request.target_ref, |
|
41 | target_ref=pull_request.target_ref, | |
41 | revisions=pull_request.revisions, |
|
42 | revisions=pull_request.revisions, | |
42 | reviewers=(), |
|
43 | reviewers=(), | |
|
44 | observers=(), | |||
43 | title=pull_request.title, |
|
45 | title=pull_request.title, | |
44 | description=pull_request.description, |
|
46 | description=pull_request.description, | |
45 | ) |
|
47 | ) |
@@ -51,6 +51,7 b' class TestUpdatePullRequest(object):' | |||||
51 | "pull_request": response.json['result']['pull_request'], |
|
51 | "pull_request": response.json['result']['pull_request'], | |
52 | "updated_commits": {"added": [], "common": [], "removed": []}, |
|
52 | "updated_commits": {"added": [], "common": [], "removed": []}, | |
53 | "updated_reviewers": {"added": [], "removed": []}, |
|
53 | "updated_reviewers": {"added": [], "removed": []}, | |
|
54 | "updated_observers": {"added": [], "removed": []}, | |||
54 | } |
|
55 | } | |
55 |
|
56 | |||
56 | response_json = response.json['result'] |
|
57 | response_json = response.json['result'] | |
@@ -111,6 +112,7 b' class TestUpdatePullRequest(object):' | |||||
111 | "total": total_commits, |
|
112 | "total": total_commits, | |
112 | "removed": []}, |
|
113 | "removed": []}, | |
113 | "updated_reviewers": {"added": [], "removed": []}, |
|
114 | "updated_reviewers": {"added": [], "removed": []}, | |
|
115 | "updated_observers": {"added": [], "removed": []}, | |||
114 | } |
|
116 | } | |
115 |
|
117 | |||
116 | assert_ok(id_, expected, response.body) |
|
118 | assert_ok(id_, expected, response.body) | |
@@ -132,7 +134,7 b' class TestUpdatePullRequest(object):' | |||||
132 | removed = [a.username] |
|
134 | removed = [a.username] | |
133 |
|
135 | |||
134 | pull_request = pr_util.create_pull_request( |
|
136 | pull_request = pr_util.create_pull_request( | |
135 | reviewers=[(a.username, ['added via API'], False, [])]) |
|
137 | reviewers=[(a.username, ['added via API'], False, 'reviewer', [])]) | |
136 |
|
138 | |||
137 | id_, params = build_data( |
|
139 | id_, params = build_data( | |
138 | self.apikey, 'update_pull_request', |
|
140 | self.apikey, 'update_pull_request', | |
@@ -146,6 +148,7 b' class TestUpdatePullRequest(object):' | |||||
146 | "pull_request": response.json['result']['pull_request'], |
|
148 | "pull_request": response.json['result']['pull_request'], | |
147 | "updated_commits": {"added": [], "common": [], "removed": []}, |
|
149 | "updated_commits": {"added": [], "common": [], "removed": []}, | |
148 | "updated_reviewers": {"added": added, "removed": removed}, |
|
150 | "updated_reviewers": {"added": added, "removed": removed}, | |
|
151 | "updated_observers": {"added": [], "removed": []}, | |||
149 | } |
|
152 | } | |
150 |
|
153 | |||
151 | assert_ok(id_, expected, response.body) |
|
154 | assert_ok(id_, expected, response.body) |
@@ -26,12 +26,15 b' from rhodecode.api.utils import (' | |||||
26 | has_superadmin_permission, Optional, OAttr, get_repo_or_error, |
|
26 | has_superadmin_permission, Optional, OAttr, get_repo_or_error, | |
27 | get_pull_request_or_error, get_commit_or_error, get_user_or_error, |
|
27 | get_pull_request_or_error, get_commit_or_error, get_user_or_error, | |
28 | validate_repo_permissions, resolve_ref_or_error, validate_set_owner_permissions) |
|
28 | validate_repo_permissions, resolve_ref_or_error, validate_set_owner_permissions) | |
|
29 | from rhodecode.lib import channelstream | |||
29 | from rhodecode.lib.auth import (HasRepoPermissionAnyApi) |
|
30 | from rhodecode.lib.auth import (HasRepoPermissionAnyApi) | |
30 | from rhodecode.lib.base import vcs_operation_context |
|
31 | from rhodecode.lib.base import vcs_operation_context | |
31 | from rhodecode.lib.utils2 import str2bool |
|
32 | from rhodecode.lib.utils2 import str2bool | |
|
33 | from rhodecode.lib.vcs.backends.base import unicode_to_reference | |||
32 | from rhodecode.model.changeset_status import ChangesetStatusModel |
|
34 | from rhodecode.model.changeset_status import ChangesetStatusModel | |
33 | from rhodecode.model.comment import CommentsModel |
|
35 | from rhodecode.model.comment import CommentsModel | |
34 | from rhodecode.model.db import Session, ChangesetStatus, ChangesetComment, PullRequest |
|
36 | from rhodecode.model.db import ( | |
|
37 | Session, ChangesetStatus, ChangesetComment, PullRequest, PullRequestReviewers) | |||
35 | from rhodecode.model.pull_request import PullRequestModel, MergeCheck |
|
38 | from rhodecode.model.pull_request import PullRequestModel, MergeCheck | |
36 | from rhodecode.model.settings import SettingsModel |
|
39 | from rhodecode.model.settings import SettingsModel | |
37 | from rhodecode.model.validation_schema import Invalid |
|
40 | from rhodecode.model.validation_schema import Invalid | |
@@ -502,16 +505,19 b' def comment_pull_request(' | |||||
502 | }, |
|
505 | }, | |
503 | error : null |
|
506 | error : null | |
504 | """ |
|
507 | """ | |
|
508 | _ = request.translate | |||
|
509 | ||||
505 | pull_request = get_pull_request_or_error(pullrequestid) |
|
510 | pull_request = get_pull_request_or_error(pullrequestid) | |
506 | if Optional.extract(repoid): |
|
511 | if Optional.extract(repoid): | |
507 | repo = get_repo_or_error(repoid) |
|
512 | repo = get_repo_or_error(repoid) | |
508 | else: |
|
513 | else: | |
509 | repo = pull_request.target_repo |
|
514 | repo = pull_request.target_repo | |
510 |
|
515 | |||
|
516 | db_repo_name = repo.repo_name | |||
511 | auth_user = apiuser |
|
517 | auth_user = apiuser | |
512 | if not isinstance(userid, Optional): |
|
518 | if not isinstance(userid, Optional): | |
513 | is_repo_admin = HasRepoPermissionAnyApi('repository.admin')( |
|
519 | is_repo_admin = HasRepoPermissionAnyApi('repository.admin')( | |
514 |
user=apiuser, repo_name= |
|
520 | user=apiuser, repo_name=db_repo_name) | |
515 | if has_superadmin_permission(apiuser) or is_repo_admin: |
|
521 | if has_superadmin_permission(apiuser) or is_repo_admin: | |
516 | apiuser = get_user_or_error(userid) |
|
522 | apiuser = get_user_or_error(userid) | |
517 | auth_user = apiuser.AuthUser() |
|
523 | auth_user = apiuser.AuthUser() | |
@@ -596,6 +602,7 b' def comment_pull_request(' | |||||
596 | extra_recipients=extra_recipients, |
|
602 | extra_recipients=extra_recipients, | |
597 | send_email=send_email |
|
603 | send_email=send_email | |
598 | ) |
|
604 | ) | |
|
605 | is_inline = comment.is_inline | |||
599 |
|
606 | |||
600 | if allowed_to_change_status and status: |
|
607 | if allowed_to_change_status and status: | |
601 | old_calculated_status = pull_request.calculated_review_status() |
|
608 | old_calculated_status = pull_request.calculated_review_status() | |
@@ -628,14 +635,39 b' def comment_pull_request(' | |||||
628 | 'comment_id': comment.comment_id if comment else None, |
|
635 | 'comment_id': comment.comment_id if comment else None, | |
629 | 'status': {'given': status, 'was_changed': status_change}, |
|
636 | 'status': {'given': status, 'was_changed': status_change}, | |
630 | } |
|
637 | } | |
|
638 | ||||
|
639 | comment_broadcast_channel = channelstream.comment_channel( | |||
|
640 | db_repo_name, pull_request_obj=pull_request) | |||
|
641 | ||||
|
642 | comment_data = data | |||
|
643 | comment_type = 'inline' if is_inline else 'general' | |||
|
644 | channelstream.comment_channelstream_push( | |||
|
645 | request, comment_broadcast_channel, apiuser, | |||
|
646 | _('posted a new {} comment').format(comment_type), | |||
|
647 | comment_data=comment_data) | |||
|
648 | ||||
631 | return data |
|
649 | return data | |
632 |
|
650 | |||
|
651 | def _reviewers_validation(obj_list): | |||
|
652 | schema = ReviewerListSchema() | |||
|
653 | try: | |||
|
654 | reviewer_objects = schema.deserialize(obj_list) | |||
|
655 | except Invalid as err: | |||
|
656 | raise JSONRPCValidationError(colander_exc=err) | |||
|
657 | ||||
|
658 | # validate users | |||
|
659 | for reviewer_object in reviewer_objects: | |||
|
660 | user = get_user_or_error(reviewer_object['username']) | |||
|
661 | reviewer_object['user_id'] = user.user_id | |||
|
662 | return reviewer_objects | |||
|
663 | ||||
633 |
|
664 | |||
634 | @jsonrpc_method() |
|
665 | @jsonrpc_method() | |
635 | def create_pull_request( |
|
666 | def create_pull_request( | |
636 | request, apiuser, source_repo, target_repo, source_ref, target_ref, |
|
667 | request, apiuser, source_repo, target_repo, source_ref, target_ref, | |
637 | owner=Optional(OAttr('apiuser')), title=Optional(''), description=Optional(''), |
|
668 | owner=Optional(OAttr('apiuser')), title=Optional(''), description=Optional(''), | |
638 |
description_renderer=Optional(''), |
|
669 | description_renderer=Optional(''), | |
|
670 | reviewers=Optional(None), observers=Optional(None)): | |||
639 | """ |
|
671 | """ | |
640 | Creates a new pull request. |
|
672 | Creates a new pull request. | |
641 |
|
673 | |||
@@ -673,6 +705,13 b' def create_pull_request(' | |||||
673 | Accepts username strings or objects of the format: |
|
705 | Accepts username strings or objects of the format: | |
674 |
|
706 | |||
675 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] |
|
707 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] | |
|
708 | :param observers: Set the new pull request observers list. | |||
|
709 | Reviewer defined by review rules will be added automatically to the | |||
|
710 | defined list. This feature is only available in RhodeCode EE | |||
|
711 | :type observers: Optional(list) | |||
|
712 | Accepts username strings or objects of the format: | |||
|
713 | ||||
|
714 | [{'username': 'nick', 'reasons': ['original author']}] | |||
676 | """ |
|
715 | """ | |
677 |
|
716 | |||
678 | source_db_repo = get_repo_or_error(source_repo) |
|
717 | source_db_repo = get_repo_or_error(source_repo) | |
@@ -686,34 +725,39 b' def create_pull_request(' | |||||
686 | full_source_ref = resolve_ref_or_error(source_ref, source_db_repo) |
|
725 | full_source_ref = resolve_ref_or_error(source_ref, source_db_repo) | |
687 | full_target_ref = resolve_ref_or_error(target_ref, target_db_repo) |
|
726 | full_target_ref = resolve_ref_or_error(target_ref, target_db_repo) | |
688 |
|
727 | |||
689 |
|
|
728 | get_commit_or_error(full_source_ref, source_db_repo) | |
690 |
|
|
729 | get_commit_or_error(full_target_ref, target_db_repo) | |
691 |
|
730 | |||
692 | reviewer_objects = Optional.extract(reviewers) or [] |
|
731 | reviewer_objects = Optional.extract(reviewers) or [] | |
|
732 | observer_objects = Optional.extract(observers) or [] | |||
693 |
|
733 | |||
694 | # serialize and validate passed in given reviewers |
|
734 | # serialize and validate passed in given reviewers | |
695 | if reviewer_objects: |
|
735 | if reviewer_objects: | |
696 | schema = ReviewerListSchema() |
|
736 | reviewer_objects = _reviewers_validation(reviewer_objects) | |
697 | try: |
|
737 | ||
698 | reviewer_objects = schema.deserialize(reviewer_objects) |
|
738 | if observer_objects: | |
699 | except Invalid as err: |
|
739 | observer_objects = _reviewers_validation(reviewer_objects) | |
700 | raise JSONRPCValidationError(colander_exc=err) |
|
|||
701 |
|
740 | |||
702 | # validate users |
|
741 | get_default_reviewers_data, validate_default_reviewers, validate_observers = \ | |
703 | for reviewer_object in reviewer_objects: |
|
742 | PullRequestModel().get_reviewer_functions() | |
704 | user = get_user_or_error(reviewer_object['username']) |
|
|||
705 | reviewer_object['user_id'] = user.user_id |
|
|||
706 |
|
743 | |||
707 | get_default_reviewers_data, validate_default_reviewers = \ |
|
744 | source_ref_obj = unicode_to_reference(full_source_ref) | |
708 | PullRequestModel().get_reviewer_functions() |
|
745 | target_ref_obj = unicode_to_reference(full_target_ref) | |
709 |
|
746 | |||
710 | # recalculate reviewers logic, to make sure we can validate this |
|
747 | # recalculate reviewers logic, to make sure we can validate this | |
711 | default_reviewers_data = get_default_reviewers_data( |
|
748 | default_reviewers_data = get_default_reviewers_data( | |
712 |
owner, |
|
749 | owner, | |
713 |
source_ |
|
750 | source_db_repo, | |
|
751 | source_ref_obj, | |||
|
752 | target_db_repo, | |||
|
753 | target_ref_obj, | |||
|
754 | ) | |||
714 |
|
755 | |||
715 | # now MERGE our given with the calculated |
|
756 | # now MERGE our given with the calculated from the default rules | |
716 | reviewer_objects = default_reviewers_data['reviewers'] + reviewer_objects |
|
757 | just_reviewers = [ | |
|
758 | x for x in default_reviewers_data['reviewers'] | |||
|
759 | if x['role'] == PullRequestReviewers.ROLE_REVIEWER] | |||
|
760 | reviewer_objects = just_reviewers + reviewer_objects | |||
717 |
|
761 | |||
718 | try: |
|
762 | try: | |
719 | reviewers = validate_default_reviewers( |
|
763 | reviewers = validate_default_reviewers( | |
@@ -721,9 +765,21 b' def create_pull_request(' | |||||
721 | except ValueError as e: |
|
765 | except ValueError as e: | |
722 | raise JSONRPCError('Reviewers Validation: {}'.format(e)) |
|
766 | raise JSONRPCError('Reviewers Validation: {}'.format(e)) | |
723 |
|
767 | |||
|
768 | # now MERGE our given with the calculated from the default rules | |||
|
769 | just_observers = [ | |||
|
770 | x for x in default_reviewers_data['reviewers'] | |||
|
771 | if x['role'] == PullRequestReviewers.ROLE_OBSERVER] | |||
|
772 | observer_objects = just_observers + observer_objects | |||
|
773 | ||||
|
774 | try: | |||
|
775 | observers = validate_observers( | |||
|
776 | observer_objects, default_reviewers_data) | |||
|
777 | except ValueError as e: | |||
|
778 | raise JSONRPCError('Observer Validation: {}'.format(e)) | |||
|
779 | ||||
724 | title = Optional.extract(title) |
|
780 | title = Optional.extract(title) | |
725 | if not title: |
|
781 | if not title: | |
726 |
title_source_ref = source_ref. |
|
782 | title_source_ref = source_ref_obj.name | |
727 | title = PullRequestModel().generate_pullrequest_title( |
|
783 | title = PullRequestModel().generate_pullrequest_title( | |
728 | source=source_repo, |
|
784 | source=source_repo, | |
729 | source_ref=title_source_ref, |
|
785 | source_ref=title_source_ref, | |
@@ -732,20 +788,17 b' def create_pull_request(' | |||||
732 |
|
788 | |||
733 | diff_info = default_reviewers_data['diff_info'] |
|
789 | diff_info = default_reviewers_data['diff_info'] | |
734 | common_ancestor_id = diff_info['ancestor'] |
|
790 | common_ancestor_id = diff_info['ancestor'] | |
735 | commits = diff_info['commits'] |
|
791 | # NOTE(marcink): reversed is consistent with how we open it in the WEB interface | |
|
792 | commits = [commit['commit_id'] for commit in reversed(diff_info['commits'])] | |||
736 |
|
793 | |||
737 | if not common_ancestor_id: |
|
794 | if not common_ancestor_id: | |
738 | raise JSONRPCError('no common ancestor found') |
|
795 | raise JSONRPCError('no common ancestor found between specified references') | |
739 |
|
796 | |||
740 | if not commits: |
|
797 | if not commits: | |
741 | raise JSONRPCError('no commits found') |
|
798 | raise JSONRPCError('no commits found for merge between specified references') | |
742 |
|
||||
743 | # NOTE(marcink): reversed is consistent with how we open it in the WEB interface |
|
|||
744 | revisions = [commit.raw_id for commit in reversed(commits)] |
|
|||
745 |
|
799 | |||
746 | # recalculate target ref based on ancestor |
|
800 | # recalculate target ref based on ancestor | |
747 | target_ref_type, target_ref_name, __ = full_target_ref.split(':') |
|
801 | full_target_ref = ':'.join((target_ref_obj.type, target_ref_obj.name, common_ancestor_id)) | |
748 | full_target_ref = ':'.join((target_ref_type, target_ref_name, common_ancestor_id)) |
|
|||
749 |
|
802 | |||
750 | # fetch renderer, if set fallback to plain in case of PR |
|
803 | # fetch renderer, if set fallback to plain in case of PR | |
751 | rc_config = SettingsModel().get_all_settings() |
|
804 | rc_config = SettingsModel().get_all_settings() | |
@@ -760,8 +813,9 b' def create_pull_request(' | |||||
760 | target_repo=target_repo, |
|
813 | target_repo=target_repo, | |
761 | target_ref=full_target_ref, |
|
814 | target_ref=full_target_ref, | |
762 | common_ancestor_id=common_ancestor_id, |
|
815 | common_ancestor_id=common_ancestor_id, | |
763 |
revisions= |
|
816 | revisions=commits, | |
764 | reviewers=reviewers, |
|
817 | reviewers=reviewers, | |
|
818 | observers=observers, | |||
765 | title=title, |
|
819 | title=title, | |
766 | description=description, |
|
820 | description=description, | |
767 | description_renderer=description_renderer, |
|
821 | description_renderer=description_renderer, | |
@@ -781,7 +835,7 b' def create_pull_request(' | |||||
781 | def update_pull_request( |
|
835 | def update_pull_request( | |
782 | request, apiuser, pullrequestid, repoid=Optional(None), |
|
836 | request, apiuser, pullrequestid, repoid=Optional(None), | |
783 | title=Optional(''), description=Optional(''), description_renderer=Optional(''), |
|
837 | title=Optional(''), description=Optional(''), description_renderer=Optional(''), | |
784 | reviewers=Optional(None), update_commits=Optional(None)): |
|
838 | reviewers=Optional(None), observers=Optional(None), update_commits=Optional(None)): | |
785 | """ |
|
839 | """ | |
786 | Updates a pull request. |
|
840 | Updates a pull request. | |
787 |
|
841 | |||
@@ -803,7 +857,11 b' def update_pull_request(' | |||||
803 | Accepts username strings or objects of the format: |
|
857 | Accepts username strings or objects of the format: | |
804 |
|
858 | |||
805 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] |
|
859 | [{'username': 'nick', 'reasons': ['original author'], 'mandatory': <bool>}] | |
|
860 | :param observers: Update pull request observers list with new value. | |||
|
861 | :type observers: Optional(list) | |||
|
862 | Accepts username strings or objects of the format: | |||
806 |
|
863 | |||
|
864 | [{'username': 'nick', 'reasons': ['should be aware about this PR']}] | |||
807 | :param update_commits: Trigger update of commits for this pull request |
|
865 | :param update_commits: Trigger update of commits for this pull request | |
808 | :type: update_commits: Optional(bool) |
|
866 | :type: update_commits: Optional(bool) | |
809 |
|
867 | |||
@@ -821,6 +879,12 b' def update_pull_request(' | |||||
821 | ], |
|
879 | ], | |
822 | "removed": [] |
|
880 | "removed": [] | |
823 | }, |
|
881 | }, | |
|
882 | "updated_observers": { | |||
|
883 | "added": [ | |||
|
884 | "username" | |||
|
885 | ], | |||
|
886 | "removed": [] | |||
|
887 | }, | |||
824 | "updated_commits": { |
|
888 | "updated_commits": { | |
825 | "added": [ |
|
889 | "added": [ | |
826 | "<sha1_hash>" |
|
890 | "<sha1_hash>" | |
@@ -852,36 +916,14 b' def update_pull_request(' | |||||
852 | pullrequestid,)) |
|
916 | pullrequestid,)) | |
853 |
|
917 | |||
854 | reviewer_objects = Optional.extract(reviewers) or [] |
|
918 | reviewer_objects = Optional.extract(reviewers) or [] | |
855 |
|
919 | observer_objects = Optional.extract(observers) or [] | ||
856 | if reviewer_objects: |
|
|||
857 | schema = ReviewerListSchema() |
|
|||
858 | try: |
|
|||
859 | reviewer_objects = schema.deserialize(reviewer_objects) |
|
|||
860 | except Invalid as err: |
|
|||
861 | raise JSONRPCValidationError(colander_exc=err) |
|
|||
862 |
|
||||
863 | # validate users |
|
|||
864 | for reviewer_object in reviewer_objects: |
|
|||
865 | user = get_user_or_error(reviewer_object['username']) |
|
|||
866 | reviewer_object['user_id'] = user.user_id |
|
|||
867 |
|
||||
868 | get_default_reviewers_data, get_validated_reviewers = \ |
|
|||
869 | PullRequestModel().get_reviewer_functions() |
|
|||
870 |
|
||||
871 | # re-use stored rules |
|
|||
872 | reviewer_rules = pull_request.reviewer_data |
|
|||
873 | try: |
|
|||
874 | reviewers = get_validated_reviewers( |
|
|||
875 | reviewer_objects, reviewer_rules) |
|
|||
876 | except ValueError as e: |
|
|||
877 | raise JSONRPCError('Reviewers Validation: {}'.format(e)) |
|
|||
878 | else: |
|
|||
879 | reviewers = [] |
|
|||
880 |
|
920 | |||
881 | title = Optional.extract(title) |
|
921 | title = Optional.extract(title) | |
882 | description = Optional.extract(description) |
|
922 | description = Optional.extract(description) | |
883 | description_renderer = Optional.extract(description_renderer) |
|
923 | description_renderer = Optional.extract(description_renderer) | |
884 |
|
924 | |||
|
925 | # Update title/description | |||
|
926 | title_changed = False | |||
885 | if title or description: |
|
927 | if title or description: | |
886 | PullRequestModel().edit( |
|
928 | PullRequestModel().edit( | |
887 | pull_request, |
|
929 | pull_request, | |
@@ -890,8 +932,12 b' def update_pull_request(' | |||||
890 | description_renderer or pull_request.description_renderer, |
|
932 | description_renderer or pull_request.description_renderer, | |
891 | apiuser) |
|
933 | apiuser) | |
892 | Session().commit() |
|
934 | Session().commit() | |
|
935 | title_changed = True | |||
893 |
|
936 | |||
894 | commit_changes = {"added": [], "common": [], "removed": []} |
|
937 | commit_changes = {"added": [], "common": [], "removed": []} | |
|
938 | ||||
|
939 | # Update commits | |||
|
940 | commits_changed = False | |||
895 | if str2bool(Optional.extract(update_commits)): |
|
941 | if str2bool(Optional.extract(update_commits)): | |
896 |
|
942 | |||
897 | if pull_request.pull_request_state != PullRequest.STATE_CREATED: |
|
943 | if pull_request.pull_request_state != PullRequest.STATE_CREATED: | |
@@ -907,12 +953,44 b' def update_pull_request(' | |||||
907 | pull_request, db_user) |
|
953 | pull_request, db_user) | |
908 | commit_changes = update_response.changes or commit_changes |
|
954 | commit_changes = update_response.changes or commit_changes | |
909 | Session().commit() |
|
955 | Session().commit() | |
|
956 | commits_changed = True | |||
910 |
|
957 | |||
|
958 | # Update reviewers | |||
|
959 | # serialize and validate passed in given reviewers | |||
|
960 | if reviewer_objects: | |||
|
961 | reviewer_objects = _reviewers_validation(reviewer_objects) | |||
|
962 | ||||
|
963 | if observer_objects: | |||
|
964 | observer_objects = _reviewers_validation(reviewer_objects) | |||
|
965 | ||||
|
966 | # re-use stored rules | |||
|
967 | default_reviewers_data = pull_request.reviewer_data | |||
|
968 | ||||
|
969 | __, validate_default_reviewers, validate_observers = \ | |||
|
970 | PullRequestModel().get_reviewer_functions() | |||
|
971 | ||||
|
972 | if reviewer_objects: | |||
|
973 | try: | |||
|
974 | reviewers = validate_default_reviewers(reviewer_objects, default_reviewers_data) | |||
|
975 | except ValueError as e: | |||
|
976 | raise JSONRPCError('Reviewers Validation: {}'.format(e)) | |||
|
977 | else: | |||
|
978 | reviewers = [] | |||
|
979 | ||||
|
980 | if observer_objects: | |||
|
981 | try: | |||
|
982 | observers = validate_default_reviewers(reviewer_objects, default_reviewers_data) | |||
|
983 | except ValueError as e: | |||
|
984 | raise JSONRPCError('Observer Validation: {}'.format(e)) | |||
|
985 | else: | |||
|
986 | observers = [] | |||
|
987 | ||||
|
988 | reviewers_changed = False | |||
911 | reviewers_changes = {"added": [], "removed": []} |
|
989 | reviewers_changes = {"added": [], "removed": []} | |
912 | if reviewers: |
|
990 | if reviewers: | |
913 | old_calculated_status = pull_request.calculated_review_status() |
|
991 | old_calculated_status = pull_request.calculated_review_status() | |
914 | added_reviewers, removed_reviewers = \ |
|
992 | added_reviewers, removed_reviewers = \ | |
915 | PullRequestModel().update_reviewers(pull_request, reviewers, apiuser) |
|
993 | PullRequestModel().update_reviewers(pull_request, reviewers, apiuser.get_instance()) | |
916 |
|
994 | |||
917 | reviewers_changes['added'] = sorted( |
|
995 | reviewers_changes['added'] = sorted( | |
918 | [get_user_or_error(n).username for n in added_reviewers]) |
|
996 | [get_user_or_error(n).username for n in added_reviewers]) | |
@@ -926,13 +1004,35 b' def update_pull_request(' | |||||
926 | PullRequestModel().trigger_pull_request_hook( |
|
1004 | PullRequestModel().trigger_pull_request_hook( | |
927 | pull_request, apiuser, 'review_status_change', |
|
1005 | pull_request, apiuser, 'review_status_change', | |
928 | data={'status': calculated_status}) |
|
1006 | data={'status': calculated_status}) | |
|
1007 | reviewers_changed = True | |||
|
1008 | ||||
|
1009 | observers_changed = False | |||
|
1010 | observers_changes = {"added": [], "removed": []} | |||
|
1011 | if observers: | |||
|
1012 | added_observers, removed_observers = \ | |||
|
1013 | PullRequestModel().update_observers(pull_request, observers, apiuser.get_instance()) | |||
|
1014 | ||||
|
1015 | observers_changes['added'] = sorted( | |||
|
1016 | [get_user_or_error(n).username for n in added_observers]) | |||
|
1017 | observers_changes['removed'] = sorted( | |||
|
1018 | [get_user_or_error(n).username for n in removed_observers]) | |||
|
1019 | Session().commit() | |||
|
1020 | ||||
|
1021 | reviewers_changed = True | |||
|
1022 | ||||
|
1023 | # push changed to channelstream | |||
|
1024 | if commits_changed or reviewers_changed or observers_changed: | |||
|
1025 | pr_broadcast_channel = channelstream.pr_channel(pull_request) | |||
|
1026 | msg = 'Pull request was updated.' | |||
|
1027 | channelstream.pr_update_channelstream_push( | |||
|
1028 | request, pr_broadcast_channel, apiuser, msg) | |||
929 |
|
1029 | |||
930 | data = { |
|
1030 | data = { | |
931 | 'msg': 'Updated pull request `{}`'.format( |
|
1031 | 'msg': 'Updated pull request `{}`'.format(pull_request.pull_request_id), | |
932 | pull_request.pull_request_id), |
|
|||
933 | 'pull_request': pull_request.get_api_data(), |
|
1032 | 'pull_request': pull_request.get_api_data(), | |
934 | 'updated_commits': commit_changes, |
|
1033 | 'updated_commits': commit_changes, | |
935 | 'updated_reviewers': reviewers_changes |
|
1034 | 'updated_reviewers': reviewers_changes, | |
|
1035 | 'updated_observers': observers_changes, | |||
936 | } |
|
1036 | } | |
937 |
|
1037 | |||
938 | return data |
|
1038 | return data |
@@ -29,7 +29,7 b' from rhodecode.api.utils import (' | |||||
29 | get_user_group_or_error, get_user_or_error, validate_repo_permissions, |
|
29 | get_user_group_or_error, get_user_or_error, validate_repo_permissions, | |
30 | get_perm_or_error, parse_args, get_origin, build_commit_data, |
|
30 | get_perm_or_error, parse_args, get_origin, build_commit_data, | |
31 | validate_set_owner_permissions) |
|
31 | validate_set_owner_permissions) | |
32 | from rhodecode.lib import audit_logger, rc_cache |
|
32 | from rhodecode.lib import audit_logger, rc_cache, channelstream | |
33 | from rhodecode.lib import repo_maintenance |
|
33 | from rhodecode.lib import repo_maintenance | |
34 | from rhodecode.lib.auth import ( |
|
34 | from rhodecode.lib.auth import ( | |
35 | HasPermissionAnyApi, HasUserGroupPermissionAnyApi, |
|
35 | HasPermissionAnyApi, HasUserGroupPermissionAnyApi, | |
@@ -1597,10 +1597,13 b' def comment_commit(' | |||||
1597 | } |
|
1597 | } | |
1598 |
|
1598 | |||
1599 | """ |
|
1599 | """ | |
|
1600 | _ = request.translate | |||
|
1601 | ||||
1600 | repo = get_repo_or_error(repoid) |
|
1602 | repo = get_repo_or_error(repoid) | |
1601 | if not has_superadmin_permission(apiuser): |
|
1603 | if not has_superadmin_permission(apiuser): | |
1602 | _perms = ('repository.read', 'repository.write', 'repository.admin') |
|
1604 | _perms = ('repository.read', 'repository.write', 'repository.admin') | |
1603 | validate_repo_permissions(apiuser, repoid, repo, _perms) |
|
1605 | validate_repo_permissions(apiuser, repoid, repo, _perms) | |
|
1606 | db_repo_name = repo.repo_name | |||
1604 |
|
1607 | |||
1605 | try: |
|
1608 | try: | |
1606 | commit = repo.scm_instance().get_commit(commit_id=commit_id) |
|
1609 | commit = repo.scm_instance().get_commit(commit_id=commit_id) | |
@@ -1650,6 +1653,8 b' def comment_commit(' | |||||
1650 | extra_recipients=extra_recipients, |
|
1653 | extra_recipients=extra_recipients, | |
1651 | send_email=send_email |
|
1654 | send_email=send_email | |
1652 | ) |
|
1655 | ) | |
|
1656 | is_inline = comment.is_inline | |||
|
1657 | ||||
1653 | if status: |
|
1658 | if status: | |
1654 | # also do a status change |
|
1659 | # also do a status change | |
1655 | try: |
|
1660 | try: | |
@@ -1669,6 +1674,17 b' def comment_commit(' | |||||
1669 | data={'comment': comment, 'commit': commit}) |
|
1674 | data={'comment': comment, 'commit': commit}) | |
1670 |
|
1675 | |||
1671 | Session().commit() |
|
1676 | Session().commit() | |
|
1677 | ||||
|
1678 | comment_broadcast_channel = channelstream.comment_channel( | |||
|
1679 | db_repo_name, commit_obj=commit) | |||
|
1680 | ||||
|
1681 | comment_data = {'comment': comment, 'comment_id': comment.comment_id} | |||
|
1682 | comment_type = 'inline' if is_inline else 'general' | |||
|
1683 | channelstream.comment_channelstream_push( | |||
|
1684 | request, comment_broadcast_channel, apiuser, | |||
|
1685 | _('posted a new {} comment').format(comment_type), | |||
|
1686 | comment_data=comment_data) | |||
|
1687 | ||||
1672 | return { |
|
1688 | return { | |
1673 | 'msg': ( |
|
1689 | 'msg': ( | |
1674 | 'Commented on commit `%s` for repository `%s`' % ( |
|
1690 | 'Commented on commit `%s` for repository `%s`' % ( |
@@ -474,9 +474,18 b' class AdminSettingsView(BaseAppView):' | |||||
474 | route_name='admin_settings_issuetracker_test', request_method='POST', |
|
474 | route_name='admin_settings_issuetracker_test', request_method='POST', | |
475 | renderer='string', xhr=True) |
|
475 | renderer='string', xhr=True) | |
476 | def settings_issuetracker_test(self): |
|
476 | def settings_issuetracker_test(self): | |
477 | return h.urlify_commit_message( |
|
477 | error_container = [] | |
|
478 | ||||
|
479 | urlified_commit = h.urlify_commit_message( | |||
478 | self.request.POST.get('test_text', ''), |
|
480 | self.request.POST.get('test_text', ''), | |
479 | 'repo_group/test_repo1') |
|
481 | 'repo_group/test_repo1', error_container=error_container) | |
|
482 | if error_container: | |||
|
483 | def converter(inp): | |||
|
484 | return h.html_escape(unicode(inp)) | |||
|
485 | ||||
|
486 | return 'ERRORS: ' + '\n'.join(map(converter, error_container)) | |||
|
487 | ||||
|
488 | return urlified_commit | |||
480 |
|
489 | |||
481 | @LoginRequired() |
|
490 | @LoginRequired() | |
482 | @HasPermissionAllDecorator('hg.admin') |
|
491 | @HasPermissionAllDecorator('hg.admin') |
@@ -34,6 +34,7 b' log = logging.getLogger(__name__)' | |||||
34 |
|
34 | |||
35 |
|
35 | |||
36 | class DebugStyleView(BaseAppView): |
|
36 | class DebugStyleView(BaseAppView): | |
|
37 | ||||
37 | def load_default_context(self): |
|
38 | def load_default_context(self): | |
38 | c = self._get_local_tmpl_context() |
|
39 | c = self._get_local_tmpl_context() | |
39 |
|
40 | |||
@@ -75,6 +76,7 b' Check if we should use full-topic or min' | |||||
75 | source_ref_parts=AttributeDict(type='branch', name='fix-ticket-2000'), |
|
76 | source_ref_parts=AttributeDict(type='branch', name='fix-ticket-2000'), | |
76 | target_ref_parts=AttributeDict(type='branch', name='master'), |
|
77 | target_ref_parts=AttributeDict(type='branch', name='master'), | |
77 | ) |
|
78 | ) | |
|
79 | ||||
78 | target_repo = AttributeDict(repo_name='repo_group/target_repo') |
|
80 | target_repo = AttributeDict(repo_name='repo_group/target_repo') | |
79 | source_repo = AttributeDict(repo_name='repo_group/source_repo') |
|
81 | source_repo = AttributeDict(repo_name='repo_group/source_repo') | |
80 | user = User.get_by_username(self.request.GET.get('user')) or self._rhodecode_db_user |
|
82 | user = User.get_by_username(self.request.GET.get('user')) or self._rhodecode_db_user | |
@@ -83,6 +85,7 b' Check if we should use full-topic or min' | |||||
83 | 'added': ['aaaaaaabbbbb', 'cccccccddddddd'], |
|
85 | 'added': ['aaaaaaabbbbb', 'cccccccddddddd'], | |
84 | 'removed': ['eeeeeeeeeee'], |
|
86 | 'removed': ['eeeeeeeeeee'], | |
85 | }) |
|
87 | }) | |
|
88 | ||||
86 | file_changes = AttributeDict({ |
|
89 | file_changes = AttributeDict({ | |
87 | 'added': ['a/file1.md', 'file2.py'], |
|
90 | 'added': ['a/file1.md', 'file2.py'], | |
88 | 'modified': ['b/modified_file.rst'], |
|
91 | 'modified': ['b/modified_file.rst'], | |
@@ -97,15 +100,19 b' Check if we should use full-topic or min' | |||||
97 | 'exc_message': 'Traceback (most recent call last):\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/tweens.py", line 41, in excview_tween\n response = handler(request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/router.py", line 148, in handle_request\n registry, request, context, context_iface, view_name\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/view.py", line 667, in _call_view\n response = view_callable(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/config/views.py", line 188, in attr_view\n return view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/config/views.py", line 214, in predicate_wrapper\n return view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/viewderivers.py", line 401, in viewresult_to_response\n result = view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/viewderivers.py", line 132, in _class_view\n response = getattr(inst, attr)()\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/apps/debug_style/views.py", line 355, in render_email\n template_type, **email_kwargs.get(email_id, {}))\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/model/notification.py", line 402, in render_email\n body = email_template.render(None, **_kwargs)\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/lib/partial_renderer.py", line 95, in render\n return self._render_with_exc(tmpl, args, kwargs)\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/lib/partial_renderer.py", line 79, in _render_with_exc\n return render_func.render(*args, **kwargs)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/template.py", line 476, in render\n return runtime._render(self, self.callable_, args, data)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 883, in _render\n **_kwargs_for_callable(callable_, data)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 920, in _render_context\n _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 947, in _exec_template\n callable_(context, *args, **kwargs)\n File "rhodecode_templates_email_templates_base_mako", line 63, in render_body\n File "rhodecode_templates_email_templates_exception_tracker_mako", line 43, in render_body\nAttributeError: \'str\' object has no attribute \'get\'\n', |
|
100 | 'exc_message': 'Traceback (most recent call last):\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/tweens.py", line 41, in excview_tween\n response = handler(request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/router.py", line 148, in handle_request\n registry, request, context, context_iface, view_name\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/view.py", line 667, in _call_view\n response = view_callable(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/config/views.py", line 188, in attr_view\n return view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/config/views.py", line 214, in predicate_wrapper\n return view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/viewderivers.py", line 401, in viewresult_to_response\n result = view(context, request)\n File "/nix/store/s43k2r9rysfbzmsjdqnxgzvvb7zjhkxb-python2.7-pyramid-1.10.4/lib/python2.7/site-packages/pyramid/viewderivers.py", line 132, in _class_view\n response = getattr(inst, attr)()\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/apps/debug_style/views.py", line 355, in render_email\n template_type, **email_kwargs.get(email_id, {}))\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/model/notification.py", line 402, in render_email\n body = email_template.render(None, **_kwargs)\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/lib/partial_renderer.py", line 95, in render\n return self._render_with_exc(tmpl, args, kwargs)\n File "/mnt/hgfs/marcink/workspace/rhodecode-enterprise-ce/rhodecode/lib/partial_renderer.py", line 79, in _render_with_exc\n return render_func.render(*args, **kwargs)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/template.py", line 476, in render\n return runtime._render(self, self.callable_, args, data)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 883, in _render\n **_kwargs_for_callable(callable_, data)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 920, in _render_context\n _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)\n File "/nix/store/dakh34sxz4yfr435c0cwjz0sd6hnd5g3-python2.7-mako-1.1.0/lib/python2.7/site-packages/mako/runtime.py", line 947, in _exec_template\n callable_(context, *args, **kwargs)\n File "rhodecode_templates_email_templates_base_mako", line 63, in render_body\n File "rhodecode_templates_email_templates_exception_tracker_mako", line 43, in render_body\nAttributeError: \'str\' object has no attribute \'get\'\n', | |
98 | 'exc_type': 'AttributeError' |
|
101 | 'exc_type': 'AttributeError' | |
99 | } |
|
102 | } | |
|
103 | ||||
100 | email_kwargs = { |
|
104 | email_kwargs = { | |
101 | 'test': {}, |
|
105 | 'test': {}, | |
|
106 | ||||
102 | 'message': { |
|
107 | 'message': { | |
103 | 'body': 'message body !' |
|
108 | 'body': 'message body !' | |
104 | }, |
|
109 | }, | |
|
110 | ||||
105 | 'email_test': { |
|
111 | 'email_test': { | |
106 | 'user': user, |
|
112 | 'user': user, | |
107 | 'date': datetime.datetime.now(), |
|
113 | 'date': datetime.datetime.now(), | |
108 | }, |
|
114 | }, | |
|
115 | ||||
109 | 'exception': { |
|
116 | 'exception': { | |
110 | 'email_prefix': '[RHODECODE ERROR]', |
|
117 | 'email_prefix': '[RHODECODE ERROR]', | |
111 | 'exc_id': exc_traceback['exc_id'], |
|
118 | 'exc_id': exc_traceback['exc_id'], | |
@@ -113,6 +120,7 b' Check if we should use full-topic or min' | |||||
113 | 'exc_type_name': 'NameError', |
|
120 | 'exc_type_name': 'NameError', | |
114 | 'exc_traceback': exc_traceback, |
|
121 | 'exc_traceback': exc_traceback, | |
115 | }, |
|
122 | }, | |
|
123 | ||||
116 | 'password_reset': { |
|
124 | 'password_reset': { | |
117 | 'password_reset_url': 'http://example.com/reset-rhodecode-password/token', |
|
125 | 'password_reset_url': 'http://example.com/reset-rhodecode-password/token', | |
118 |
|
126 | |||
@@ -121,6 +129,7 b' Check if we should use full-topic or min' | |||||
121 | 'email': 'test@rhodecode.com', |
|
129 | 'email': 'test@rhodecode.com', | |
122 | 'first_admin_email': User.get_first_super_admin().email |
|
130 | 'first_admin_email': User.get_first_super_admin().email | |
123 | }, |
|
131 | }, | |
|
132 | ||||
124 | 'password_reset_confirmation': { |
|
133 | 'password_reset_confirmation': { | |
125 | 'new_password': 'new-password-example', |
|
134 | 'new_password': 'new-password-example', | |
126 | 'user': user, |
|
135 | 'user': user, | |
@@ -128,6 +137,7 b' Check if we should use full-topic or min' | |||||
128 | 'email': 'test@rhodecode.com', |
|
137 | 'email': 'test@rhodecode.com', | |
129 | 'first_admin_email': User.get_first_super_admin().email |
|
138 | 'first_admin_email': User.get_first_super_admin().email | |
130 | }, |
|
139 | }, | |
|
140 | ||||
131 | 'registration': { |
|
141 | 'registration': { | |
132 | 'user': user, |
|
142 | 'user': user, | |
133 | 'date': datetime.datetime.now(), |
|
143 | 'date': datetime.datetime.now(), | |
@@ -161,6 +171,7 b' Check if we should use full-topic or min' | |||||
161 | 'mention': True, |
|
171 | 'mention': True, | |
162 |
|
172 | |||
163 | }, |
|
173 | }, | |
|
174 | ||||
164 | 'pull_request_comment+status': { |
|
175 | 'pull_request_comment+status': { | |
165 | 'user': user, |
|
176 | 'user': user, | |
166 |
|
177 | |||
@@ -201,6 +212,7 b' def db():' | |||||
201 | 'mention': True, |
|
212 | 'mention': True, | |
202 |
|
213 | |||
203 | }, |
|
214 | }, | |
|
215 | ||||
204 | 'pull_request_comment+file': { |
|
216 | 'pull_request_comment+file': { | |
205 | 'user': user, |
|
217 | 'user': user, | |
206 |
|
218 | |||
@@ -303,6 +315,7 b' This should work better !' | |||||
303 | 'renderer_type': 'markdown', |
|
315 | 'renderer_type': 'markdown', | |
304 | 'mention': True, |
|
316 | 'mention': True, | |
305 | }, |
|
317 | }, | |
|
318 | ||||
306 | 'cs_comment+status': { |
|
319 | 'cs_comment+status': { | |
307 | 'user': user, |
|
320 | 'user': user, | |
308 | 'commit': AttributeDict(idx=123, raw_id='a' * 40, message='Commit message'), |
|
321 | 'commit': AttributeDict(idx=123, raw_id='a' * 40, message='Commit message'), | |
@@ -328,6 +341,7 b' This is a multiline comment :)' | |||||
328 | 'renderer_type': 'markdown', |
|
341 | 'renderer_type': 'markdown', | |
329 | 'mention': True, |
|
342 | 'mention': True, | |
330 | }, |
|
343 | }, | |
|
344 | ||||
331 | 'cs_comment+file': { |
|
345 | 'cs_comment+file': { | |
332 | 'user': user, |
|
346 | 'user': user, | |
333 | 'commit': AttributeDict(idx=123, raw_id='a' * 40, message='Commit message'), |
|
347 | 'commit': AttributeDict(idx=123, raw_id='a' * 40, message='Commit message'), | |
@@ -371,8 +385,58 b' users: description edit fixes' | |||||
371 | 'pull_request_source_repo_url': 'http://source-repo/url', |
|
385 | 'pull_request_source_repo_url': 'http://source-repo/url', | |
372 |
|
386 | |||
373 | 'pull_request_url': 'http://code.rhodecode.com/_pull-request/123', |
|
387 | 'pull_request_url': 'http://code.rhodecode.com/_pull-request/123', | |
|
388 | 'user_role': 'reviewer', | |||
|
389 | }, | |||
|
390 | ||||
|
391 | 'pull_request+reviewer_role': { | |||
|
392 | 'user': user, | |||
|
393 | 'pull_request': pr, | |||
|
394 | 'pull_request_commits': [ | |||
|
395 | ('472d1df03bf7206e278fcedc6ac92b46b01c4e21', '''\ | |||
|
396 | my-account: moved email closer to profile as it's similar data just moved outside. | |||
|
397 | '''), | |||
|
398 | ('cbfa3061b6de2696c7161ed15ba5c6a0045f90a7', '''\ | |||
|
399 | users: description edit fixes | |||
|
400 | ||||
|
401 | - tests | |||
|
402 | - added metatags info | |||
|
403 | '''), | |||
|
404 | ], | |||
|
405 | ||||
|
406 | 'pull_request_target_repo': target_repo, | |||
|
407 | 'pull_request_target_repo_url': 'http://target-repo/url', | |||
|
408 | ||||
|
409 | 'pull_request_source_repo': source_repo, | |||
|
410 | 'pull_request_source_repo_url': 'http://source-repo/url', | |||
|
411 | ||||
|
412 | 'pull_request_url': 'http://code.rhodecode.com/_pull-request/123', | |||
|
413 | 'user_role': 'reviewer', | |||
|
414 | }, | |||
|
415 | ||||
|
416 | 'pull_request+observer_role': { | |||
|
417 | 'user': user, | |||
|
418 | 'pull_request': pr, | |||
|
419 | 'pull_request_commits': [ | |||
|
420 | ('472d1df03bf7206e278fcedc6ac92b46b01c4e21', '''\ | |||
|
421 | my-account: moved email closer to profile as it's similar data just moved outside. | |||
|
422 | '''), | |||
|
423 | ('cbfa3061b6de2696c7161ed15ba5c6a0045f90a7', '''\ | |||
|
424 | users: description edit fixes | |||
|
425 | ||||
|
426 | - tests | |||
|
427 | - added metatags info | |||
|
428 | '''), | |||
|
429 | ], | |||
|
430 | ||||
|
431 | 'pull_request_target_repo': target_repo, | |||
|
432 | 'pull_request_target_repo_url': 'http://target-repo/url', | |||
|
433 | ||||
|
434 | 'pull_request_source_repo': source_repo, | |||
|
435 | 'pull_request_source_repo_url': 'http://source-repo/url', | |||
|
436 | ||||
|
437 | 'pull_request_url': 'http://code.rhodecode.com/_pull-request/123', | |||
|
438 | 'user_role': 'observer' | |||
374 | } |
|
439 | } | |
375 |
|
||||
376 | } |
|
440 | } | |
377 |
|
441 | |||
378 | template_type = email_id.split('+')[0] |
|
442 | template_type = email_id.split('+')[0] | |
@@ -401,6 +465,7 b' users: description edit fixes' | |||||
401 | c = self.load_default_context() |
|
465 | c = self.load_default_context() | |
402 | c.active = os.path.splitext(t_path)[0] |
|
466 | c.active = os.path.splitext(t_path)[0] | |
403 | c.came_from = '' |
|
467 | c.came_from = '' | |
|
468 | # NOTE(marcink): extend the email types with variations based on data sets | |||
404 | c.email_types = { |
|
469 | c.email_types = { | |
405 | 'cs_comment+file': {}, |
|
470 | 'cs_comment+file': {}, | |
406 | 'cs_comment+status': {}, |
|
471 | 'cs_comment+status': {}, | |
@@ -409,6 +474,9 b' users: description edit fixes' | |||||
409 | 'pull_request_comment+status': {}, |
|
474 | 'pull_request_comment+status': {}, | |
410 |
|
475 | |||
411 | 'pull_request_update': {}, |
|
476 | 'pull_request_update': {}, | |
|
477 | ||||
|
478 | 'pull_request+reviewer_role': {}, | |||
|
479 | 'pull_request+observer_role': {}, | |||
412 | } |
|
480 | } | |
413 | c.email_types.update(EmailNotificationModel.email_types) |
|
481 | c.email_types.update(EmailNotificationModel.email_types) | |
414 |
|
482 |
@@ -32,7 +32,7 b' from rhodecode.lib.auth import (' | |||||
32 | HasRepoGroupPermissionAny, AuthUser) |
|
32 | HasRepoGroupPermissionAny, AuthUser) | |
33 | from rhodecode.lib.codeblocks import filenode_as_lines_tokens |
|
33 | from rhodecode.lib.codeblocks import filenode_as_lines_tokens | |
34 | from rhodecode.lib.index import searcher_from_config |
|
34 | from rhodecode.lib.index import searcher_from_config | |
35 | from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int |
|
35 | from rhodecode.lib.utils2 import safe_unicode, str2bool, safe_int, safe_str | |
36 | from rhodecode.lib.vcs.nodes import FileNode |
|
36 | from rhodecode.lib.vcs.nodes import FileNode | |
37 | from rhodecode.model.db import ( |
|
37 | from rhodecode.model.db import ( | |
38 | func, true, or_, case, cast, in_filter_generator, String, Session, |
|
38 | func, true, or_, case, cast, in_filter_generator, String, Session, | |
@@ -331,7 +331,8 b' class HomeView(BaseAppView, DataGridAppV' | |||||
331 | { |
|
331 | { | |
332 | 'id': obj.pull_request_id, |
|
332 | 'id': obj.pull_request_id, | |
333 | 'value': org_query, |
|
333 | 'value': org_query, | |
334 |
'value_display': 'pull request: `!{} - {}`'.format( |
|
334 | 'value_display': 'pull request: `!{} - {}`'.format( | |
|
335 | obj.pull_request_id, safe_str(obj.title[:50])), | |||
335 | 'type': 'pull_request', |
|
336 | 'type': 'pull_request', | |
336 | 'url': h.route_path('pull_requests_global', pull_request_id=obj.pull_request_id) |
|
337 | 'url': h.route_path('pull_requests_global', pull_request_id=obj.pull_request_id) | |
337 | } |
|
338 | } |
@@ -734,8 +734,8 b' class MyAccountView(BaseAppView, DataGri' | |||||
734 | comments_model = CommentsModel() |
|
734 | comments_model = CommentsModel() | |
735 | for pr in pull_requests: |
|
735 | for pr in pull_requests: | |
736 | repo_id = pr.target_repo_id |
|
736 | repo_id = pr.target_repo_id | |
737 | comments = comments_model.get_all_comments( |
|
737 | comments_count = comments_model.get_all_comments( | |
738 | repo_id, pull_request=pr) |
|
738 | repo_id, pull_request=pr, count_only=True) | |
739 | owned = pr.user_id == self._rhodecode_user.user_id |
|
739 | owned = pr.user_id == self._rhodecode_user.user_id | |
740 |
|
740 | |||
741 | data.append({ |
|
741 | data.append({ | |
@@ -760,8 +760,8 b' class MyAccountView(BaseAppView, DataGri' | |||||
760 | 'author': _render('pullrequest_author', |
|
760 | 'author': _render('pullrequest_author', | |
761 | pr.author.full_contact, ), |
|
761 | pr.author.full_contact, ), | |
762 | 'author_raw': pr.author.full_name, |
|
762 | 'author_raw': pr.author.full_name, | |
763 |
'comments': _render('pullrequest_comments', |
|
763 | 'comments': _render('pullrequest_comments', comments_count), | |
764 |
'comments_raw': |
|
764 | 'comments_raw': comments_count, | |
765 | 'closed': pr.is_closed(), |
|
765 | 'closed': pr.is_closed(), | |
766 | 'owned': owned |
|
766 | 'owned': owned | |
767 | }) |
|
767 | }) |
@@ -523,7 +523,9 b' class TestPullrequestsView(object):' | |||||
523 | pull_request = pr_util.create_pull_request() |
|
523 | pull_request = pr_util.create_pull_request() | |
524 | pull_request_id = pull_request.pull_request_id |
|
524 | pull_request_id = pull_request.pull_request_id | |
525 | PullRequestModel().update_reviewers( |
|
525 | PullRequestModel().update_reviewers( | |
526 | pull_request_id, [(1, ['reason'], False, []), (2, ['reason2'], False, [])], |
|
526 | pull_request_id, [ | |
|
527 | (1, ['reason'], False, 'reviewer', []), | |||
|
528 | (2, ['reason2'], False, 'reviewer', [])], | |||
527 | pull_request.author) |
|
529 | pull_request.author) | |
528 | author = pull_request.user_id |
|
530 | author = pull_request.user_id | |
529 | repo = pull_request.target_repo.repo_id |
|
531 | repo = pull_request.target_repo.repo_id | |
@@ -906,12 +908,13 b' class TestPullrequestsView(object):' | |||||
906 |
|
908 | |||
907 | # Change reviewers and check that a notification was made |
|
909 | # Change reviewers and check that a notification was made | |
908 | PullRequestModel().update_reviewers( |
|
910 | PullRequestModel().update_reviewers( | |
909 |
pull_request.pull_request_id, [ |
|
911 | pull_request.pull_request_id, [ | |
|
912 | (1, [], False, 'reviewer', []) | |||
|
913 | ], | |||
910 | pull_request.author) |
|
914 | pull_request.author) | |
911 | assert len(notifications.all()) == 2 |
|
915 | assert len(notifications.all()) == 2 | |
912 |
|
916 | |||
913 | def test_create_pull_request_stores_ancestor_commit_id(self, backend, |
|
917 | def test_create_pull_request_stores_ancestor_commit_id(self, backend, csrf_token): | |
914 | csrf_token): |
|
|||
915 | commits = [ |
|
918 | commits = [ | |
916 | {'message': 'ancestor', |
|
919 | {'message': 'ancestor', | |
917 | 'added': [FileNode('file_A', content='content_of_ancestor')]}, |
|
920 | 'added': [FileNode('file_A', content='content_of_ancestor')]}, |
@@ -18,14 +18,16 b'' | |||||
18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
20 |
|
20 | |||
21 | from rhodecode.lib import helpers as h |
|
21 | from rhodecode.lib import helpers as h, rc_cache | |
22 | from rhodecode.lib.utils2 import safe_int |
|
22 | from rhodecode.lib.utils2 import safe_int | |
23 | from rhodecode.model.pull_request import get_diff_info |
|
23 | from rhodecode.model.pull_request import get_diff_info | |
24 |
|
24 | from rhodecode.model.db import PullRequestReviewers | ||
25 | REVIEWER_API_VERSION = 'V3' |
|
25 | # V3 - Reviewers, with default rules data | |
|
26 | # v4 - Added observers metadata | |||
|
27 | REVIEWER_API_VERSION = 'V4' | |||
26 |
|
28 | |||
27 |
|
29 | |||
28 | def reviewer_as_json(user, reasons=None, mandatory=False, rules=None, user_group=None): |
|
30 | def reviewer_as_json(user, reasons=None, role=None, mandatory=False, rules=None, user_group=None): | |
29 | """ |
|
31 | """ | |
30 | Returns json struct of a reviewer for frontend |
|
32 | Returns json struct of a reviewer for frontend | |
31 |
|
33 | |||
@@ -33,11 +35,15 b' def reviewer_as_json(user, reasons=None,' | |||||
33 | :param reasons: list of strings of why they are reviewers |
|
35 | :param reasons: list of strings of why they are reviewers | |
34 | :param mandatory: bool, to set user as mandatory |
|
36 | :param mandatory: bool, to set user as mandatory | |
35 | """ |
|
37 | """ | |
|
38 | role = role or PullRequestReviewers.ROLE_REVIEWER | |||
|
39 | if role not in PullRequestReviewers.ROLES: | |||
|
40 | raise ValueError('role is not one of %s', PullRequestReviewers.ROLES) | |||
36 |
|
41 | |||
37 | return { |
|
42 | return { | |
38 | 'user_id': user.user_id, |
|
43 | 'user_id': user.user_id, | |
39 | 'reasons': reasons or [], |
|
44 | 'reasons': reasons or [], | |
40 | 'rules': rules or [], |
|
45 | 'rules': rules or [], | |
|
46 | 'role': role, | |||
41 | 'mandatory': mandatory, |
|
47 | 'mandatory': mandatory, | |
42 | 'user_group': user_group, |
|
48 | 'user_group': user_group, | |
43 | 'username': user.username, |
|
49 | 'username': user.username, | |
@@ -48,21 +54,36 b' def reviewer_as_json(user, reasons=None,' | |||||
48 | } |
|
54 | } | |
49 |
|
55 | |||
50 |
|
56 | |||
51 |
def |
|
57 | def to_reviewers(e): | |
52 | current_user, source_repo, source_commit, target_repo, target_commit): |
|
58 | if isinstance(e, (tuple, list)): | |
|
59 | return map(reviewer_as_json, e) | |||
|
60 | else: | |||
|
61 | return reviewer_as_json(e) | |||
|
62 | ||||
|
63 | ||||
|
64 | def get_default_reviewers_data(current_user, source_repo, source_ref, target_repo, target_ref, | |||
|
65 | include_diff_info=True): | |||
53 | """ |
|
66 | """ | |
54 | Return json for default reviewers of a repository |
|
67 | Return json for default reviewers of a repository | |
55 | """ |
|
68 | """ | |
56 |
|
69 | |||
|
70 | diff_info = {} | |||
|
71 | if include_diff_info: | |||
57 | diff_info = get_diff_info( |
|
72 | diff_info = get_diff_info( | |
58 |
source_repo, source_ |
|
73 | source_repo, source_ref.commit_id, target_repo, target_ref.commit_id) | |
59 |
|
74 | |||
60 | reasons = ['Default reviewer', 'Repository owner'] |
|
75 | reasons = ['Default reviewer', 'Repository owner'] | |
61 | json_reviewers = [reviewer_as_json( |
|
76 | json_reviewers = [reviewer_as_json( | |
62 | user=target_repo.user, reasons=reasons, mandatory=False, rules=None)] |
|
77 | user=target_repo.user, reasons=reasons, mandatory=False, rules=None, role=None)] | |
|
78 | ||||
|
79 | compute_key = rc_cache.utils.compute_key_from_params( | |||
|
80 | current_user.user_id, source_repo.repo_id, source_ref.type, source_ref.name, | |||
|
81 | source_ref.commit_id, target_repo.repo_id, target_ref.type, target_ref.name, | |||
|
82 | target_ref.commit_id) | |||
63 |
|
83 | |||
64 | return { |
|
84 | return { | |
65 | 'api_ver': REVIEWER_API_VERSION, # define version for later possible schema upgrade |
|
85 | 'api_ver': REVIEWER_API_VERSION, # define version for later possible schema upgrade | |
|
86 | 'compute_key': compute_key, | |||
66 | 'diff_info': diff_info, |
|
87 | 'diff_info': diff_info, | |
67 | 'reviewers': json_reviewers, |
|
88 | 'reviewers': json_reviewers, | |
68 | 'rules': {}, |
|
89 | 'rules': {}, | |
@@ -73,15 +94,18 b' def get_default_reviewers_data(' | |||||
73 | def validate_default_reviewers(review_members, reviewer_rules): |
|
94 | def validate_default_reviewers(review_members, reviewer_rules): | |
74 | """ |
|
95 | """ | |
75 | Function to validate submitted reviewers against the saved rules |
|
96 | Function to validate submitted reviewers against the saved rules | |
76 |
|
||||
77 | """ |
|
97 | """ | |
78 | reviewers = [] |
|
98 | reviewers = [] | |
79 | reviewer_by_id = {} |
|
99 | reviewer_by_id = {} | |
80 | for r in review_members: |
|
100 | for r in review_members: | |
81 | reviewer_user_id = safe_int(r['user_id']) |
|
101 | reviewer_user_id = safe_int(r['user_id']) | |
82 | entry = (reviewer_user_id, r['reasons'], r['mandatory'], r['rules']) |
|
102 | entry = (reviewer_user_id, r['reasons'], r['mandatory'], r['role'], r['rules']) | |
83 |
|
103 | |||
84 | reviewer_by_id[reviewer_user_id] = entry |
|
104 | reviewer_by_id[reviewer_user_id] = entry | |
85 | reviewers.append(entry) |
|
105 | reviewers.append(entry) | |
86 |
|
106 | |||
87 | return reviewers |
|
107 | return reviewers | |
|
108 | ||||
|
109 | ||||
|
110 | def validate_observers(observer_members, reviewer_rules): | |||
|
111 | return {} |
@@ -31,7 +31,7 b' from rhodecode.apps._base import RepoApp' | |||||
31 | from rhodecode.apps.file_store import utils as store_utils |
|
31 | from rhodecode.apps.file_store import utils as store_utils | |
32 | from rhodecode.apps.file_store.exceptions import FileNotAllowedException, FileOverSizeException |
|
32 | from rhodecode.apps.file_store.exceptions import FileNotAllowedException, FileOverSizeException | |
33 |
|
33 | |||
34 | from rhodecode.lib import diffs, codeblocks |
|
34 | from rhodecode.lib import diffs, codeblocks, channelstream | |
35 | from rhodecode.lib.auth import ( |
|
35 | from rhodecode.lib.auth import ( | |
36 | LoginRequired, HasRepoPermissionAnyDecorator, NotAnonymous, CSRFRequired) |
|
36 | LoginRequired, HasRepoPermissionAnyDecorator, NotAnonymous, CSRFRequired) | |
37 | from rhodecode.lib.ext_json import json |
|
37 | from rhodecode.lib.ext_json import json | |
@@ -170,7 +170,9 b' class RepoCommitsView(RepoAppView):' | |||||
170 | ) |
|
170 | ) | |
171 | reviewers_duplicates.add(_user_id) |
|
171 | reviewers_duplicates.add(_user_id) | |
172 |
|
172 | |||
173 |
c. |
|
173 | c.reviewers_count = len(reviewers) | |
|
174 | c.observers_count = 0 | |||
|
175 | ||||
174 | # from associated statuses, check the pull requests, and |
|
176 | # from associated statuses, check the pull requests, and | |
175 | # show comments from them |
|
177 | # show comments from them | |
176 | for pr in prs: |
|
178 | for pr in prs: | |
@@ -193,7 +195,7 b' class RepoCommitsView(RepoAppView):' | |||||
193 |
|
195 | |||
194 | for review_obj, member, reasons, mandatory, status in review_statuses: |
|
196 | for review_obj, member, reasons, mandatory, status in review_statuses: | |
195 | member_reviewer = h.reviewer_as_json( |
|
197 | member_reviewer = h.reviewer_as_json( | |
196 | member, reasons=reasons, mandatory=mandatory, |
|
198 | member, reasons=reasons, mandatory=mandatory, role=None, | |
197 | user_group=None |
|
199 | user_group=None | |
198 | ) |
|
200 | ) | |
199 |
|
201 | |||
@@ -207,10 +209,7 b' class RepoCommitsView(RepoAppView):' | |||||
207 |
|
209 | |||
208 | # NOTE(marcink): this uses the same voting logic as in pull-requests |
|
210 | # NOTE(marcink): this uses the same voting logic as in pull-requests | |
209 | c.commit_review_status = ChangesetStatusModel().calculate_status(review_statuses) |
|
211 | c.commit_review_status = ChangesetStatusModel().calculate_status(review_statuses) | |
210 |
c.commit_broadcast_channel = |
|
212 | c.commit_broadcast_channel = channelstream.comment_channel(c.repo_name, commit_obj=commit) | |
211 | c.repo_name, |
|
|||
212 | commit.raw_id |
|
|||
213 | ) |
|
|||
214 |
|
213 | |||
215 | diff = None |
|
214 | diff = None | |
216 | # Iterate over ranges (default commit view is always one commit) |
|
215 | # Iterate over ranges (default commit view is always one commit) | |
@@ -414,6 +413,7 b' class RepoCommitsView(RepoAppView):' | |||||
414 | resolves_comment_id=resolves_comment_id, |
|
413 | resolves_comment_id=resolves_comment_id, | |
415 | auth_user=self._rhodecode_user |
|
414 | auth_user=self._rhodecode_user | |
416 | ) |
|
415 | ) | |
|
416 | is_inline = comment.is_inline | |||
417 |
|
417 | |||
418 | # get status if set ! |
|
418 | # get status if set ! | |
419 | if status: |
|
419 | if status: | |
@@ -461,6 +461,16 b' class RepoCommitsView(RepoAppView):' | |||||
461 | data.update(comment.get_dict()) |
|
461 | data.update(comment.get_dict()) | |
462 | data.update({'rendered_text': rendered_comment}) |
|
462 | data.update({'rendered_text': rendered_comment}) | |
463 |
|
463 | |||
|
464 | comment_broadcast_channel = channelstream.comment_channel( | |||
|
465 | self.db_repo_name, commit_obj=commit) | |||
|
466 | ||||
|
467 | comment_data = data | |||
|
468 | comment_type = 'inline' if is_inline else 'general' | |||
|
469 | channelstream.comment_channelstream_push( | |||
|
470 | self.request, comment_broadcast_channel, self._rhodecode_user, | |||
|
471 | _('posted a new {} comment').format(comment_type), | |||
|
472 | comment_data=comment_data) | |||
|
473 | ||||
464 | return data |
|
474 | return data | |
465 |
|
475 | |||
466 | @LoginRequired() |
|
476 | @LoginRequired() |
@@ -39,14 +39,16 b' from rhodecode.lib.ext_json import json' | |||||
39 | from rhodecode.lib.auth import ( |
|
39 | from rhodecode.lib.auth import ( | |
40 | LoginRequired, HasRepoPermissionAny, HasRepoPermissionAnyDecorator, |
|
40 | LoginRequired, HasRepoPermissionAny, HasRepoPermissionAnyDecorator, | |
41 | NotAnonymous, CSRFRequired) |
|
41 | NotAnonymous, CSRFRequired) | |
42 | from rhodecode.lib.utils2 import str2bool, safe_str, safe_unicode, safe_int |
|
42 | from rhodecode.lib.utils2 import str2bool, safe_str, safe_unicode, safe_int, aslist | |
43 |
from rhodecode.lib.vcs.backends.base import |
|
43 | from rhodecode.lib.vcs.backends.base import ( | |
|
44 | EmptyCommit, UpdateFailureReason, unicode_to_reference) | |||
44 | from rhodecode.lib.vcs.exceptions import ( |
|
45 | from rhodecode.lib.vcs.exceptions import ( | |
45 | CommitDoesNotExistError, RepositoryRequirementError, EmptyRepositoryError) |
|
46 | CommitDoesNotExistError, RepositoryRequirementError, EmptyRepositoryError) | |
46 | from rhodecode.model.changeset_status import ChangesetStatusModel |
|
47 | from rhodecode.model.changeset_status import ChangesetStatusModel | |
47 | from rhodecode.model.comment import CommentsModel |
|
48 | from rhodecode.model.comment import CommentsModel | |
48 | from rhodecode.model.db import ( |
|
49 | from rhodecode.model.db import ( | |
49 |
func, or_, PullRequest, ChangesetComment, ChangesetStatus, Repository |
|
50 | func, or_, PullRequest, ChangesetComment, ChangesetStatus, Repository, | |
|
51 | PullRequestReviewers) | |||
50 | from rhodecode.model.forms import PullRequestForm |
|
52 | from rhodecode.model.forms import PullRequestForm | |
51 | from rhodecode.model.meta import Session |
|
53 | from rhodecode.model.meta import Session | |
52 | from rhodecode.model.pull_request import PullRequestModel, MergeCheck |
|
54 | from rhodecode.model.pull_request import PullRequestModel, MergeCheck | |
@@ -104,13 +106,14 b' class RepoPullRequestsView(RepoAppView, ' | |||||
104 | data = [] |
|
106 | data = [] | |
105 | comments_model = CommentsModel() |
|
107 | comments_model = CommentsModel() | |
106 | for pr in pull_requests: |
|
108 | for pr in pull_requests: | |
107 | comments = comments_model.get_all_comments( |
|
109 | comments_count = comments_model.get_all_comments( | |
108 | self.db_repo.repo_id, pull_request=pr) |
|
110 | self.db_repo.repo_id, pull_request=pr, count_only=True) | |
109 |
|
111 | |||
110 | data.append({ |
|
112 | data.append({ | |
111 | 'name': _render('pullrequest_name', |
|
113 | 'name': _render('pullrequest_name', | |
112 | pr.pull_request_id, pr.pull_request_state, |
|
114 | pr.pull_request_id, pr.pull_request_state, | |
113 |
pr.work_in_progress, pr.target_repo.repo_name |
|
115 | pr.work_in_progress, pr.target_repo.repo_name, | |
|
116 | short=True), | |||
114 | 'name_raw': pr.pull_request_id, |
|
117 | 'name_raw': pr.pull_request_id, | |
115 | 'status': _render('pullrequest_status', |
|
118 | 'status': _render('pullrequest_status', | |
116 | pr.calculated_review_status()), |
|
119 | pr.calculated_review_status()), | |
@@ -126,8 +129,8 b' class RepoPullRequestsView(RepoAppView, ' | |||||
126 | 'author': _render('pullrequest_author', |
|
129 | 'author': _render('pullrequest_author', | |
127 | pr.author.full_contact, ), |
|
130 | pr.author.full_contact, ), | |
128 | 'author_raw': pr.author.full_name, |
|
131 | 'author_raw': pr.author.full_name, | |
129 |
'comments': _render('pullrequest_comments', |
|
132 | 'comments': _render('pullrequest_comments', comments_count), | |
130 |
'comments_raw': |
|
133 | 'comments_raw': comments_count, | |
131 | 'closed': pr.is_closed(), |
|
134 | 'closed': pr.is_closed(), | |
132 | }) |
|
135 | }) | |
133 |
|
136 | |||
@@ -310,8 +313,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
310 | pull_request_id = pull_request.pull_request_id |
|
313 | pull_request_id = pull_request.pull_request_id | |
311 |
|
314 | |||
312 | c.state_progressing = pull_request.is_state_changing() |
|
315 | c.state_progressing = pull_request.is_state_changing() | |
313 |
c.pr_broadcast_channel = |
|
316 | c.pr_broadcast_channel = channelstream.pr_channel(pull_request) | |
314 | pull_request.target_repo.repo_name, pull_request.pull_request_id) |
|
|||
315 |
|
317 | |||
316 | _new_state = { |
|
318 | _new_state = { | |
317 | 'created': PullRequest.STATE_CREATED, |
|
319 | 'created': PullRequest.STATE_CREATED, | |
@@ -454,15 +456,18 b' class RepoPullRequestsView(RepoAppView, ' | |||||
454 | 'rhodecode:templates/pullrequests/pullrequest_merge_checks.mako' |
|
456 | 'rhodecode:templates/pullrequests/pullrequest_merge_checks.mako' | |
455 | return self._get_template_context(c) |
|
457 | return self._get_template_context(c) | |
456 |
|
458 | |||
457 |
c. |
|
459 | c.reviewers_count = pull_request.reviewers_count | |
|
460 | c.observers_count = pull_request.observers_count | |||
458 |
|
461 | |||
459 | # reviewers and statuses |
|
462 | # reviewers and statuses | |
460 | c.pull_request_default_reviewers_data_json = json.dumps(pull_request.reviewer_data) |
|
463 | c.pull_request_default_reviewers_data_json = json.dumps(pull_request.reviewer_data) | |
461 | c.pull_request_set_reviewers_data_json = collections.OrderedDict({'reviewers': []}) |
|
464 | c.pull_request_set_reviewers_data_json = collections.OrderedDict({'reviewers': []}) | |
|
465 | c.pull_request_set_observers_data_json = collections.OrderedDict({'observers': []}) | |||
462 |
|
466 | |||
463 | for review_obj, member, reasons, mandatory, status in pull_request_at_ver.reviewers_statuses(): |
|
467 | for review_obj, member, reasons, mandatory, status in pull_request_at_ver.reviewers_statuses(): | |
464 | member_reviewer = h.reviewer_as_json( |
|
468 | member_reviewer = h.reviewer_as_json( | |
465 | member, reasons=reasons, mandatory=mandatory, |
|
469 | member, reasons=reasons, mandatory=mandatory, | |
|
470 | role=review_obj.role, | |||
466 | user_group=review_obj.rule_user_group_data() |
|
471 | user_group=review_obj.rule_user_group_data() | |
467 | ) |
|
472 | ) | |
468 |
|
473 | |||
@@ -474,6 +479,17 b' class RepoPullRequestsView(RepoAppView, ' | |||||
474 |
|
479 | |||
475 | c.pull_request_set_reviewers_data_json = json.dumps(c.pull_request_set_reviewers_data_json) |
|
480 | c.pull_request_set_reviewers_data_json = json.dumps(c.pull_request_set_reviewers_data_json) | |
476 |
|
481 | |||
|
482 | for observer_obj, member in pull_request_at_ver.observers(): | |||
|
483 | member_observer = h.reviewer_as_json( | |||
|
484 | member, reasons=[], mandatory=False, | |||
|
485 | role=observer_obj.role, | |||
|
486 | user_group=observer_obj.rule_user_group_data() | |||
|
487 | ) | |||
|
488 | member_observer['allowed_to_update'] = c.allowed_to_update | |||
|
489 | c.pull_request_set_observers_data_json['observers'].append(member_observer) | |||
|
490 | ||||
|
491 | c.pull_request_set_observers_data_json = json.dumps(c.pull_request_set_observers_data_json) | |||
|
492 | ||||
477 | general_comments, inline_comments = \ |
|
493 | general_comments, inline_comments = \ | |
478 | self.register_comments_vars(c, pull_request_latest, versions) |
|
494 | self.register_comments_vars(c, pull_request_latest, versions) | |
479 |
|
495 | |||
@@ -745,7 +761,9 b' class RepoPullRequestsView(RepoAppView, ' | |||||
745 |
|
761 | |||
746 | # current user review statuses for each version |
|
762 | # current user review statuses for each version | |
747 | c.review_versions = {} |
|
763 | c.review_versions = {} | |
748 | if self._rhodecode_user.user_id in c.allowed_reviewers: |
|
764 | is_reviewer = PullRequestModel().is_user_reviewer( | |
|
765 | pull_request, self._rhodecode_user) | |||
|
766 | if is_reviewer: | |||
749 | for co in general_comments: |
|
767 | for co in general_comments: | |
750 | if co.author.user_id == self._rhodecode_user.user_id: |
|
768 | if co.author.user_id == self._rhodecode_user.user_id: | |
751 | status = co.status_change |
|
769 | status = co.status_change | |
@@ -961,13 +979,16 b' class RepoPullRequestsView(RepoAppView, ' | |||||
961 | } |
|
979 | } | |
962 | return data |
|
980 | return data | |
963 |
|
981 | |||
|
982 | def _get_existing_ids(self, post_data): | |||
|
983 | return filter(lambda e: e, map(safe_int, aslist(post_data.get('comments'), ','))) | |||
|
984 | ||||
964 | @LoginRequired() |
|
985 | @LoginRequired() | |
965 | @NotAnonymous() |
|
986 | @NotAnonymous() | |
966 | @HasRepoPermissionAnyDecorator( |
|
987 | @HasRepoPermissionAnyDecorator( | |
967 | 'repository.read', 'repository.write', 'repository.admin') |
|
988 | 'repository.read', 'repository.write', 'repository.admin') | |
968 | @view_config( |
|
989 | @view_config( | |
969 | route_name='pullrequest_comments', request_method='POST', |
|
990 | route_name='pullrequest_comments', request_method='POST', | |
970 | renderer='string', xhr=True) |
|
991 | renderer='string_html', xhr=True) | |
971 | def pullrequest_comments(self): |
|
992 | def pullrequest_comments(self): | |
972 | self.load_default_context() |
|
993 | self.load_default_context() | |
973 |
|
994 | |||
@@ -997,8 +1018,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
997 | self.register_comments_vars(c, pull_request_latest, versions) |
|
1018 | self.register_comments_vars(c, pull_request_latest, versions) | |
998 | all_comments = c.inline_comments_flat + c.comments |
|
1019 | all_comments = c.inline_comments_flat + c.comments | |
999 |
|
1020 | |||
1000 | existing_ids = filter( |
|
1021 | existing_ids = self._get_existing_ids(self.request.POST) | |
1001 | lambda e: e, map(safe_int, self.request.POST.getall('comments[]'))) |
|
|||
1002 | return _render('comments_table', all_comments, len(all_comments), |
|
1022 | return _render('comments_table', all_comments, len(all_comments), | |
1003 | existing_ids=existing_ids) |
|
1023 | existing_ids=existing_ids) | |
1004 |
|
1024 | |||
@@ -1008,7 +1028,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1008 | 'repository.read', 'repository.write', 'repository.admin') |
|
1028 | 'repository.read', 'repository.write', 'repository.admin') | |
1009 | @view_config( |
|
1029 | @view_config( | |
1010 | route_name='pullrequest_todos', request_method='POST', |
|
1030 | route_name='pullrequest_todos', request_method='POST', | |
1011 | renderer='string', xhr=True) |
|
1031 | renderer='string_html', xhr=True) | |
1012 | def pullrequest_todos(self): |
|
1032 | def pullrequest_todos(self): | |
1013 | self.load_default_context() |
|
1033 | self.load_default_context() | |
1014 |
|
1034 | |||
@@ -1040,8 +1060,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1040 | .get_pull_request_resolved_todos(pull_request) |
|
1060 | .get_pull_request_resolved_todos(pull_request) | |
1041 |
|
1061 | |||
1042 | all_comments = c.unresolved_comments + c.resolved_comments |
|
1062 | all_comments = c.unresolved_comments + c.resolved_comments | |
1043 | existing_ids = filter( |
|
1063 | existing_ids = self._get_existing_ids(self.request.POST) | |
1044 | lambda e: e, map(safe_int, self.request.POST.getall('comments[]'))) |
|
|||
1045 | return _render('comments_table', all_comments, len(c.unresolved_comments), |
|
1064 | return _render('comments_table', all_comments, len(c.unresolved_comments), | |
1046 | todo_comments=True, existing_ids=existing_ids) |
|
1065 | todo_comments=True, existing_ids=existing_ids) | |
1047 |
|
1066 | |||
@@ -1128,30 +1147,35 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1128 | source_scm = source_db_repo.scm_instance() |
|
1147 | source_scm = source_db_repo.scm_instance() | |
1129 | target_scm = target_db_repo.scm_instance() |
|
1148 | target_scm = target_db_repo.scm_instance() | |
1130 |
|
1149 | |||
1131 | source_commit = source_scm.get_commit(source_ref.split(':')[-1]) |
|
1150 | source_ref_obj = unicode_to_reference(source_ref) | |
1132 | target_commit = target_scm.get_commit(target_ref.split(':')[-1]) |
|
1151 | target_ref_obj = unicode_to_reference(target_ref) | |
|
1152 | ||||
|
1153 | source_commit = source_scm.get_commit(source_ref_obj.commit_id) | |||
|
1154 | target_commit = target_scm.get_commit(target_ref_obj.commit_id) | |||
1133 |
|
1155 | |||
1134 | ancestor = source_scm.get_common_ancestor( |
|
1156 | ancestor = source_scm.get_common_ancestor( | |
1135 | source_commit.raw_id, target_commit.raw_id, target_scm) |
|
1157 | source_commit.raw_id, target_commit.raw_id, target_scm) | |
1136 |
|
1158 | |||
1137 | # recalculate target ref based on ancestor |
|
1159 | # recalculate target ref based on ancestor | |
1138 | target_ref_type, target_ref_name, __ = _form['target_ref'].split(':') |
|
1160 | target_ref = ':'.join((target_ref_obj.type, target_ref_obj.name, ancestor)) | |
1139 | target_ref = ':'.join((target_ref_type, target_ref_name, ancestor)) |
|
|||
1140 |
|
1161 | |||
1141 | get_default_reviewers_data, validate_default_reviewers = \ |
|
1162 | get_default_reviewers_data, validate_default_reviewers, validate_observers = \ | |
1142 | PullRequestModel().get_reviewer_functions() |
|
1163 | PullRequestModel().get_reviewer_functions() | |
1143 |
|
1164 | |||
1144 | # recalculate reviewers logic, to make sure we can validate this |
|
1165 | # recalculate reviewers logic, to make sure we can validate this | |
1145 | reviewer_rules = get_default_reviewers_data( |
|
1166 | reviewer_rules = get_default_reviewers_data( | |
1146 |
self._rhodecode_db_user, |
|
1167 | self._rhodecode_db_user, | |
1147 |
source_ |
|
1168 | source_db_repo, | |
|
1169 | source_ref_obj, | |||
|
1170 | target_db_repo, | |||
|
1171 | target_ref_obj, | |||
|
1172 | include_diff_info=False) | |||
1148 |
|
1173 | |||
1149 |
|
|
1174 | reviewers = validate_default_reviewers(_form['review_members'], reviewer_rules) | |
1150 | reviewers = validate_default_reviewers( |
|
1175 | observers = validate_observers(_form['observer_members'], reviewer_rules) | |
1151 | given_reviewers, reviewer_rules) |
|
|||
1152 |
|
1176 | |||
1153 | pullrequest_title = _form['pullrequest_title'] |
|
1177 | pullrequest_title = _form['pullrequest_title'] | |
1154 |
title_source_ref = source_ref. |
|
1178 | title_source_ref = source_ref_obj.name | |
1155 | if not pullrequest_title: |
|
1179 | if not pullrequest_title: | |
1156 | pullrequest_title = PullRequestModel().generate_pullrequest_title( |
|
1180 | pullrequest_title = PullRequestModel().generate_pullrequest_title( | |
1157 | source=source_repo, |
|
1181 | source=source_repo, | |
@@ -1172,6 +1196,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1172 | revisions=commit_ids, |
|
1196 | revisions=commit_ids, | |
1173 | common_ancestor_id=common_ancestor_id, |
|
1197 | common_ancestor_id=common_ancestor_id, | |
1174 | reviewers=reviewers, |
|
1198 | reviewers=reviewers, | |
|
1199 | observers=observers, | |||
1175 | title=pullrequest_title, |
|
1200 | title=pullrequest_title, | |
1176 | description=description, |
|
1201 | description=description, | |
1177 | description_renderer=description_renderer, |
|
1202 | description_renderer=description_renderer, | |
@@ -1221,20 +1246,28 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1221 | 'redirect_url': redirect_url} |
|
1246 | 'redirect_url': redirect_url} | |
1222 |
|
1247 | |||
1223 | is_state_changing = pull_request.is_state_changing() |
|
1248 | is_state_changing = pull_request.is_state_changing() | |
1224 |
c.pr_broadcast_channel = |
|
1249 | c.pr_broadcast_channel = channelstream.pr_channel(pull_request) | |
1225 | pull_request.target_repo.repo_name, pull_request.pull_request_id) |
|
|||
1226 |
|
1250 | |||
1227 | # only owner or admin can update it |
|
1251 | # only owner or admin can update it | |
1228 | allowed_to_update = PullRequestModel().check_user_update( |
|
1252 | allowed_to_update = PullRequestModel().check_user_update( | |
1229 | pull_request, self._rhodecode_user) |
|
1253 | pull_request, self._rhodecode_user) | |
|
1254 | ||||
1230 | if allowed_to_update: |
|
1255 | if allowed_to_update: | |
1231 | controls = peppercorn.parse(self.request.POST.items()) |
|
1256 | controls = peppercorn.parse(self.request.POST.items()) | |
1232 | force_refresh = str2bool(self.request.POST.get('force_refresh')) |
|
1257 | force_refresh = str2bool(self.request.POST.get('force_refresh')) | |
1233 |
|
1258 | |||
1234 | if 'review_members' in controls: |
|
1259 | if 'review_members' in controls: | |
1235 | self._update_reviewers( |
|
1260 | self._update_reviewers( | |
|
1261 | c, | |||
1236 | pull_request, controls['review_members'], |
|
1262 | pull_request, controls['review_members'], | |
1237 |
pull_request.reviewer_data |
|
1263 | pull_request.reviewer_data, | |
|
1264 | PullRequestReviewers.ROLE_REVIEWER) | |||
|
1265 | elif 'observer_members' in controls: | |||
|
1266 | self._update_reviewers( | |||
|
1267 | c, | |||
|
1268 | pull_request, controls['observer_members'], | |||
|
1269 | pull_request.reviewer_data, | |||
|
1270 | PullRequestReviewers.ROLE_OBSERVER) | |||
1238 | elif str2bool(self.request.POST.get('update_commits', 'false')): |
|
1271 | elif str2bool(self.request.POST.get('update_commits', 'false')): | |
1239 | if is_state_changing: |
|
1272 | if is_state_changing: | |
1240 | log.debug('commits update: forbidden because pull request is in state %s', |
|
1273 | log.debug('commits update: forbidden because pull request is in state %s', | |
@@ -1255,6 +1288,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1255 | elif str2bool(self.request.POST.get('edit_pull_request', 'false')): |
|
1288 | elif str2bool(self.request.POST.get('edit_pull_request', 'false')): | |
1256 | self._edit_pull_request(pull_request) |
|
1289 | self._edit_pull_request(pull_request) | |
1257 | else: |
|
1290 | else: | |
|
1291 | log.error('Unhandled update data.') | |||
1258 | raise HTTPBadRequest() |
|
1292 | raise HTTPBadRequest() | |
1259 |
|
1293 | |||
1260 | return {'response': True, |
|
1294 | return {'response': True, | |
@@ -1262,6 +1296,9 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1262 | raise HTTPForbidden() |
|
1296 | raise HTTPForbidden() | |
1263 |
|
1297 | |||
1264 | def _edit_pull_request(self, pull_request): |
|
1298 | def _edit_pull_request(self, pull_request): | |
|
1299 | """ | |||
|
1300 | Edit title and description | |||
|
1301 | """ | |||
1265 | _ = self.request.translate |
|
1302 | _ = self.request.translate | |
1266 |
|
1303 | |||
1267 | try: |
|
1304 | try: | |
@@ -1302,27 +1339,15 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1302 |
|
1339 | |||
1303 | msg = _(u'Pull request updated to "{source_commit_id}" with ' |
|
1340 | msg = _(u'Pull request updated to "{source_commit_id}" with ' | |
1304 | u'{count_added} added, {count_removed} removed commits. ' |
|
1341 | u'{count_added} added, {count_removed} removed commits. ' | |
1305 | u'Source of changes: {change_source}') |
|
1342 | u'Source of changes: {change_source}.') | |
1306 | msg = msg.format( |
|
1343 | msg = msg.format( | |
1307 | source_commit_id=pull_request.source_ref_parts.commit_id, |
|
1344 | source_commit_id=pull_request.source_ref_parts.commit_id, | |
1308 | count_added=len(resp.changes.added), |
|
1345 | count_added=len(resp.changes.added), | |
1309 | count_removed=len(resp.changes.removed), |
|
1346 | count_removed=len(resp.changes.removed), | |
1310 | change_source=changed) |
|
1347 | change_source=changed) | |
1311 | h.flash(msg, category='success') |
|
1348 | h.flash(msg, category='success') | |
1312 |
|
1349 | channelstream.pr_update_channelstream_push( | ||
1313 | message = msg + ( |
|
1350 | self.request, c.pr_broadcast_channel, self._rhodecode_user, msg) | |
1314 | ' - <a onclick="window.location.reload()">' |
|
|||
1315 | '<strong>{}</strong></a>'.format(_('Reload page'))) |
|
|||
1316 |
|
||||
1317 | message_obj = { |
|
|||
1318 | 'message': message, |
|
|||
1319 | 'level': 'success', |
|
|||
1320 | 'topic': '/notifications' |
|
|||
1321 | } |
|
|||
1322 |
|
||||
1323 | channelstream.post_message( |
|
|||
1324 | c.pr_broadcast_channel, message_obj, self._rhodecode_user.username, |
|
|||
1325 | registry=self.request.registry) |
|
|||
1326 | else: |
|
1351 | else: | |
1327 | msg = PullRequestModel.UPDATE_STATUS_MESSAGES[resp.reason] |
|
1352 | msg = PullRequestModel.UPDATE_STATUS_MESSAGES[resp.reason] | |
1328 | warning_reasons = [ |
|
1353 | warning_reasons = [ | |
@@ -1332,6 +1357,55 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1332 | category = 'warning' if resp.reason in warning_reasons else 'error' |
|
1357 | category = 'warning' if resp.reason in warning_reasons else 'error' | |
1333 | h.flash(msg, category=category) |
|
1358 | h.flash(msg, category=category) | |
1334 |
|
1359 | |||
|
1360 | def _update_reviewers(self, c, pull_request, review_members, reviewer_rules, role): | |||
|
1361 | _ = self.request.translate | |||
|
1362 | ||||
|
1363 | get_default_reviewers_data, validate_default_reviewers, validate_observers = \ | |||
|
1364 | PullRequestModel().get_reviewer_functions() | |||
|
1365 | ||||
|
1366 | if role == PullRequestReviewers.ROLE_REVIEWER: | |||
|
1367 | try: | |||
|
1368 | reviewers = validate_default_reviewers(review_members, reviewer_rules) | |||
|
1369 | except ValueError as e: | |||
|
1370 | log.error('Reviewers Validation: {}'.format(e)) | |||
|
1371 | h.flash(e, category='error') | |||
|
1372 | return | |||
|
1373 | ||||
|
1374 | old_calculated_status = pull_request.calculated_review_status() | |||
|
1375 | PullRequestModel().update_reviewers( | |||
|
1376 | pull_request, reviewers, self._rhodecode_db_user) | |||
|
1377 | ||||
|
1378 | Session().commit() | |||
|
1379 | ||||
|
1380 | msg = _('Pull request reviewers updated.') | |||
|
1381 | h.flash(msg, category='success') | |||
|
1382 | channelstream.pr_update_channelstream_push( | |||
|
1383 | self.request, c.pr_broadcast_channel, self._rhodecode_user, msg) | |||
|
1384 | ||||
|
1385 | # trigger status changed if change in reviewers changes the status | |||
|
1386 | calculated_status = pull_request.calculated_review_status() | |||
|
1387 | if old_calculated_status != calculated_status: | |||
|
1388 | PullRequestModel().trigger_pull_request_hook( | |||
|
1389 | pull_request, self._rhodecode_user, 'review_status_change', | |||
|
1390 | data={'status': calculated_status}) | |||
|
1391 | ||||
|
1392 | elif role == PullRequestReviewers.ROLE_OBSERVER: | |||
|
1393 | try: | |||
|
1394 | observers = validate_observers(review_members, reviewer_rules) | |||
|
1395 | except ValueError as e: | |||
|
1396 | log.error('Observers Validation: {}'.format(e)) | |||
|
1397 | h.flash(e, category='error') | |||
|
1398 | return | |||
|
1399 | ||||
|
1400 | PullRequestModel().update_observers( | |||
|
1401 | pull_request, observers, self._rhodecode_db_user) | |||
|
1402 | ||||
|
1403 | Session().commit() | |||
|
1404 | msg = _('Pull request observers updated.') | |||
|
1405 | h.flash(msg, category='success') | |||
|
1406 | channelstream.pr_update_channelstream_push( | |||
|
1407 | self.request, c.pr_broadcast_channel, self._rhodecode_user, msg) | |||
|
1408 | ||||
1335 | @LoginRequired() |
|
1409 | @LoginRequired() | |
1336 | @NotAnonymous() |
|
1410 | @NotAnonymous() | |
1337 | @HasRepoPermissionAnyDecorator( |
|
1411 | @HasRepoPermissionAnyDecorator( | |
@@ -1408,32 +1482,6 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1408 | msg = merge_resp.merge_status_message |
|
1482 | msg = merge_resp.merge_status_message | |
1409 | h.flash(msg, category='error') |
|
1483 | h.flash(msg, category='error') | |
1410 |
|
1484 | |||
1411 | def _update_reviewers(self, pull_request, review_members, reviewer_rules): |
|
|||
1412 | _ = self.request.translate |
|
|||
1413 |
|
||||
1414 | get_default_reviewers_data, validate_default_reviewers = \ |
|
|||
1415 | PullRequestModel().get_reviewer_functions() |
|
|||
1416 |
|
||||
1417 | try: |
|
|||
1418 | reviewers = validate_default_reviewers(review_members, reviewer_rules) |
|
|||
1419 | except ValueError as e: |
|
|||
1420 | log.error('Reviewers Validation: {}'.format(e)) |
|
|||
1421 | h.flash(e, category='error') |
|
|||
1422 | return |
|
|||
1423 |
|
||||
1424 | old_calculated_status = pull_request.calculated_review_status() |
|
|||
1425 | PullRequestModel().update_reviewers( |
|
|||
1426 | pull_request, reviewers, self._rhodecode_user) |
|
|||
1427 | h.flash(_('Pull request reviewers updated.'), category='success') |
|
|||
1428 | Session().commit() |
|
|||
1429 |
|
||||
1430 | # trigger status changed if change in reviewers changes the status |
|
|||
1431 | calculated_status = pull_request.calculated_review_status() |
|
|||
1432 | if old_calculated_status != calculated_status: |
|
|||
1433 | PullRequestModel().trigger_pull_request_hook( |
|
|||
1434 | pull_request, self._rhodecode_user, 'review_status_change', |
|
|||
1435 | data={'status': calculated_status}) |
|
|||
1436 |
|
||||
1437 | @LoginRequired() |
|
1485 | @LoginRequired() | |
1438 | @NotAnonymous() |
|
1486 | @NotAnonymous() | |
1439 | @HasRepoPermissionAnyDecorator( |
|
1487 | @HasRepoPermissionAnyDecorator( | |
@@ -1488,8 +1536,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1488 | allowed_to_comment = PullRequestModel().check_user_comment( |
|
1536 | allowed_to_comment = PullRequestModel().check_user_comment( | |
1489 | pull_request, self._rhodecode_user) |
|
1537 | pull_request, self._rhodecode_user) | |
1490 | if not allowed_to_comment: |
|
1538 | if not allowed_to_comment: | |
1491 | log.debug( |
|
1539 | log.debug('comment: forbidden because pull request is from forbidden repo') | |
1492 | 'comment: forbidden because pull request is from forbidden repo') |
|
|||
1493 | raise HTTPForbidden() |
|
1540 | raise HTTPForbidden() | |
1494 |
|
1541 | |||
1495 | c = self.load_default_context() |
|
1542 | c = self.load_default_context() | |
@@ -1518,6 +1565,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1518 | pull_request, self._rhodecode_user, self.db_repo, message=text, |
|
1565 | pull_request, self._rhodecode_user, self.db_repo, message=text, | |
1519 | auth_user=self._rhodecode_user) |
|
1566 | auth_user=self._rhodecode_user) | |
1520 | Session().flush() |
|
1567 | Session().flush() | |
|
1568 | is_inline = comment.is_inline | |||
1521 |
|
1569 | |||
1522 | PullRequestModel().trigger_pull_request_hook( |
|
1570 | PullRequestModel().trigger_pull_request_hook( | |
1523 | pull_request, self._rhodecode_user, 'comment', |
|
1571 | pull_request, self._rhodecode_user, 'comment', | |
@@ -1551,6 +1599,7 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1551 | resolves_comment_id=resolves_comment_id, |
|
1599 | resolves_comment_id=resolves_comment_id, | |
1552 | auth_user=self._rhodecode_user |
|
1600 | auth_user=self._rhodecode_user | |
1553 | ) |
|
1601 | ) | |
|
1602 | is_inline = comment.is_inline | |||
1554 |
|
1603 | |||
1555 | if allowed_to_change_status: |
|
1604 | if allowed_to_change_status: | |
1556 | # calculate old status before we change it |
|
1605 | # calculate old status before we change it | |
@@ -1599,6 +1648,16 b' class RepoPullRequestsView(RepoAppView, ' | |||||
1599 | data.update(comment.get_dict()) |
|
1648 | data.update(comment.get_dict()) | |
1600 | data.update({'rendered_text': rendered_comment}) |
|
1649 | data.update({'rendered_text': rendered_comment}) | |
1601 |
|
1650 | |||
|
1651 | comment_broadcast_channel = channelstream.comment_channel( | |||
|
1652 | self.db_repo_name, pull_request_obj=pull_request) | |||
|
1653 | ||||
|
1654 | comment_data = data | |||
|
1655 | comment_type = 'inline' if is_inline else 'general' | |||
|
1656 | channelstream.comment_channelstream_push( | |||
|
1657 | self.request, comment_broadcast_channel, self._rhodecode_user, | |||
|
1658 | _('posted a new {} comment').format(comment_type), | |||
|
1659 | comment_data=comment_data) | |||
|
1660 | ||||
1602 | return data |
|
1661 | return data | |
1603 |
|
1662 | |||
1604 | @LoginRequired() |
|
1663 | @LoginRequired() |
@@ -25,6 +25,7 b' from pyramid.view import view_config' | |||||
25 | from rhodecode.apps._base import RepoAppView |
|
25 | from rhodecode.apps._base import RepoAppView | |
26 | from rhodecode.apps.repository.utils import get_default_reviewers_data |
|
26 | from rhodecode.apps.repository.utils import get_default_reviewers_data | |
27 | from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator |
|
27 | from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator | |
|
28 | from rhodecode.lib.vcs.backends.base import Reference | |||
28 | from rhodecode.model.db import Repository |
|
29 | from rhodecode.model.db import Repository | |
29 |
|
30 | |||
30 | log = logging.getLogger(__name__) |
|
31 | log = logging.getLogger(__name__) | |
@@ -61,13 +62,28 b' class RepoReviewRulesView(RepoAppView):' | |||||
61 | target_repo_name = request.GET.get('target_repo', source_repo_name) |
|
62 | target_repo_name = request.GET.get('target_repo', source_repo_name) | |
62 | target_repo = Repository.get_by_repo_name(target_repo_name) |
|
63 | target_repo = Repository.get_by_repo_name(target_repo_name) | |
63 |
|
64 | |||
64 | source_ref = request.GET['source_ref'] |
|
65 | current_user = request.user.get_instance() | |
65 | target_ref = request.GET['target_ref'] |
|
66 | ||
66 |
source_commit = |
|
67 | source_commit_id = request.GET['source_ref'] | |
67 | target_commit = target_repo.get_commit(target_ref) |
|
68 | source_type = request.GET['source_ref_type'] | |
|
69 | source_name = request.GET['source_ref_name'] | |||
|
70 | ||||
|
71 | target_commit_id = request.GET['target_ref'] | |||
|
72 | target_type = request.GET['target_ref_type'] | |||
|
73 | target_name = request.GET['target_ref_name'] | |||
68 |
|
74 | |||
69 | current_user = request.user.get_instance() |
|
75 | try: | |
70 | review_data = get_default_reviewers_data( |
|
76 | review_data = get_default_reviewers_data( | |
71 | current_user, source_repo, source_commit, target_repo, target_commit) |
|
77 | current_user, | |
|
78 | source_repo, | |||
|
79 | Reference(source_type, source_name, source_commit_id), | |||
|
80 | target_repo, | |||
|
81 | Reference(target_type, target_name, target_commit_id) | |||
|
82 | ) | |||
|
83 | except ValueError: | |||
|
84 | # No common ancestor | |||
|
85 | msg = "No Common ancestor found between target and source reference" | |||
|
86 | log.exception(msg) | |||
|
87 | return {'diff_info': {'error': msg}} | |||
72 |
|
88 | |||
73 | return review_data |
|
89 | return review_data |
@@ -341,6 +341,10 b' def includeme(config):' | |||||
341 | name='json_ext', |
|
341 | name='json_ext', | |
342 | factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json') |
|
342 | factory='rhodecode.lib.ext_json_renderer.pyramid_ext_json') | |
343 |
|
343 | |||
|
344 | config.add_renderer( | |||
|
345 | name='string_html', | |||
|
346 | factory='rhodecode.lib.string_renderer.html') | |||
|
347 | ||||
344 | # include RhodeCode plugins |
|
348 | # include RhodeCode plugins | |
345 | includes = aslist(settings.get('rhodecode.includes', [])) |
|
349 | includes = aslist(settings.get('rhodecode.includes', [])) | |
346 | for inc in includes: |
|
350 | for inc in includes: | |
@@ -408,6 +412,7 b' def sanitize_settings_and_apply_defaults' | |||||
408 | """ |
|
412 | """ | |
409 |
|
413 | |||
410 | settings.setdefault('rhodecode.edition', 'Community Edition') |
|
414 | settings.setdefault('rhodecode.edition', 'Community Edition') | |
|
415 | settings.setdefault('rhodecode.edition_id', 'CE') | |||
411 |
|
416 | |||
412 | if 'mako.default_filters' not in settings: |
|
417 | if 'mako.default_filters' not in settings: | |
413 | # set custom default filters if we don't have it defined |
|
418 | # set custom default filters if we don't have it defined |
@@ -113,7 +113,7 b' def _commits_as_dict(event, commit_ids, ' | |||||
113 | cs_data['permalink_url'] = RepoModel().get_commit_url( |
|
113 | cs_data['permalink_url'] = RepoModel().get_commit_url( | |
114 | repo, cs_data['raw_id'], request=event.request, |
|
114 | repo, cs_data['raw_id'], request=event.request, | |
115 | permalink=True) |
|
115 | permalink=True) | |
116 | urlified_message, issues_data = process_patterns( |
|
116 | urlified_message, issues_data, errors = process_patterns( | |
117 | cs_data['message'], repo.repo_name) |
|
117 | cs_data['message'], repo.repo_name) | |
118 | cs_data['issues'] = issues_data |
|
118 | cs_data['issues'] = issues_data | |
119 | cs_data['message_html'] = urlify_commit_message( |
|
119 | cs_data['message_html'] = urlify_commit_message( |
This diff has been collapsed as it changes many lines, (2262 lines changed) Show them Hide them | |||||
@@ -6,9 +6,9 b'' | |||||
6 | #, fuzzy |
|
6 | #, fuzzy | |
7 | msgid "" |
|
7 | msgid "" | |
8 | msgstr "" |
|
8 | msgstr "" | |
9 |
"Project-Id-Version: rhodecode-enterprise-ce 4.2 |
|
9 | "Project-Id-Version: rhodecode-enterprise-ce 4.21.0\n" | |
10 | "Report-Msgid-Bugs-To: marcin@rhodecode.com\n" |
|
10 | "Report-Msgid-Bugs-To: marcin@rhodecode.com\n" | |
11 |
"POT-Creation-Date: 2020- |
|
11 | "POT-Creation-Date: 2020-10-12 13:39+0000\n" | |
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
|
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | |
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
|
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | |
14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
|
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | |
@@ -17,6 +17,13 b' msgstr ""' | |||||
17 | "Content-Transfer-Encoding: 8bit\n" |
|
17 | "Content-Transfer-Encoding: 8bit\n" | |
18 | "Generated-By: Babel 1.3\n" |
|
18 | "Generated-By: Babel 1.3\n" | |
19 |
|
19 | |||
|
20 | #: rhodecode/api/views/pull_request_api.py:646 | |||
|
21 | #: rhodecode/api/views/repo_api.py:1685 | |||
|
22 | #: rhodecode/apps/repository/views/repo_commits.py:471 | |||
|
23 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1658 | |||
|
24 | msgid "posted a new {} comment" | |||
|
25 | msgstr "" | |||
|
26 | ||||
20 | #: rhodecode/apps/admin/views/defaults.py:90 |
|
27 | #: rhodecode/apps/admin/views/defaults.py:90 | |
21 | msgid "Default settings updated successfully" |
|
28 | msgid "Default settings updated successfully" | |
22 | msgstr "" |
|
29 | msgstr "" | |
@@ -55,10 +62,10 b' msgstr ""' | |||||
55 | #: rhodecode/templates/admin/gists/gist_show.mako:50 |
|
62 | #: rhodecode/templates/admin/gists/gist_show.mako:50 | |
56 | #: rhodecode/templates/admin/integrations/list.mako:172 |
|
63 | #: rhodecode/templates/admin/integrations/list.mako:172 | |
57 | #: rhodecode/templates/admin/my_account/my_account_profile.mako:7 |
|
64 | #: rhodecode/templates/admin/my_account/my_account_profile.mako:7 | |
58 |
#: rhodecode/templates/base/issue_tracker_settings.mako:13 |
|
65 | #: rhodecode/templates/base/issue_tracker_settings.mako:138 | |
59 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:2 |
|
66 | #: rhodecode/templates/changeset/changeset_file_comment.mako:213 | |
60 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:2 |
|
67 | #: rhodecode/templates/changeset/changeset_file_comment.mako:221 | |
61 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:20 |
|
68 | #: rhodecode/templates/changeset/changeset_file_comment.mako:230 | |
62 | #: rhodecode/templates/data_table/_dt_elements.mako:173 |
|
69 | #: rhodecode/templates/data_table/_dt_elements.mako:173 | |
63 | #: rhodecode/templates/data_table/_dt_elements.mako:251 |
|
70 | #: rhodecode/templates/data_table/_dt_elements.mako:251 | |
64 | #: rhodecode/templates/data_table/_dt_elements.mako:266 |
|
71 | #: rhodecode/templates/data_table/_dt_elements.mako:266 | |
@@ -69,8 +76,9 b' msgstr ""' | |||||
69 | #: rhodecode/templates/files/files_edit.mako:57 |
|
76 | #: rhodecode/templates/files/files_edit.mako:57 | |
70 | #: rhodecode/templates/files/files_source.mako:39 |
|
77 | #: rhodecode/templates/files/files_source.mako:39 | |
71 | #: rhodecode/templates/files/files_source.mako:52 |
|
78 | #: rhodecode/templates/files/files_source.mako:52 | |
72 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
79 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:83 | |
73 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
80 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:588 | |
|
81 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:645 | |||
74 | #: rhodecode/templates/user_group/profile.mako:8 |
|
82 | #: rhodecode/templates/user_group/profile.mako:8 | |
75 | #: rhodecode/templates/users/user_profile.mako:8 |
|
83 | #: rhodecode/templates/users/user_profile.mako:8 | |
76 | msgid "Edit" |
|
84 | msgid "Edit" | |
@@ -105,7 +113,7 b' msgstr ""' | |||||
105 | #: rhodecode/apps/admin/views/settings.py:163 |
|
113 | #: rhodecode/apps/admin/views/settings.py:163 | |
106 | #: rhodecode/apps/admin/views/settings.py:319 |
|
114 | #: rhodecode/apps/admin/views/settings.py:319 | |
107 | #: rhodecode/apps/admin/views/settings.py:394 |
|
115 | #: rhodecode/apps/admin/views/settings.py:394 | |
108 |
#: rhodecode/apps/admin/views/settings.py:7 |
|
116 | #: rhodecode/apps/admin/views/settings.py:736 | |
109 | #: rhodecode/apps/repository/views/repo_settings_vcs.py:124 |
|
117 | #: rhodecode/apps/repository/views/repo_settings_vcs.py:124 | |
110 | msgid "Some form inputs contain invalid data." |
|
118 | msgid "Some form inputs contain invalid data." | |
111 | msgstr "" |
|
119 | msgstr "" | |
@@ -137,46 +145,46 b' msgstr ""' | |||||
137 | msgid "Error occurred during updating visualisation settings" |
|
145 | msgid "Error occurred during updating visualisation settings" | |
138 | msgstr "" |
|
146 | msgstr "" | |
139 |
|
147 | |||
140 |
#: rhodecode/apps/admin/views/settings.py: |
|
148 | #: rhodecode/apps/admin/views/settings.py:507 | |
141 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:127 |
|
149 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:127 | |
142 | msgid "Invalid issue tracker pattern: {}" |
|
150 | msgid "Invalid issue tracker pattern: {}" | |
143 | msgstr "" |
|
151 | msgstr "" | |
144 |
|
152 | |||
145 |
#: rhodecode/apps/admin/views/settings.py:5 |
|
153 | #: rhodecode/apps/admin/views/settings.py:524 | |
146 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:136 |
|
154 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:136 | |
147 | msgid "Updated issue tracker entries" |
|
155 | msgid "Updated issue tracker entries" | |
148 | msgstr "" |
|
156 | msgstr "" | |
149 |
|
157 | |||
150 |
#: rhodecode/apps/admin/views/settings.py:5 |
|
158 | #: rhodecode/apps/admin/views/settings.py:544 | |
151 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:91 |
|
159 | #: rhodecode/apps/repository/views/repo_settings_issue_trackers.py:91 | |
152 | msgid "Removed issue tracker entry." |
|
160 | msgid "Removed issue tracker entry." | |
153 | msgstr "" |
|
161 | msgstr "" | |
154 |
|
162 | |||
155 |
#: rhodecode/apps/admin/views/settings.py:5 |
|
163 | #: rhodecode/apps/admin/views/settings.py:582 | |
156 | msgid "Please enter email address" |
|
164 | msgid "Please enter email address" | |
157 | msgstr "" |
|
165 | msgstr "" | |
158 |
|
166 | |||
159 |
#: rhodecode/apps/admin/views/settings.py:5 |
|
167 | #: rhodecode/apps/admin/views/settings.py:598 | |
160 | msgid "Send email task created" |
|
168 | msgid "Send email task created" | |
161 | msgstr "" |
|
169 | msgstr "" | |
162 |
|
170 | |||
163 |
#: rhodecode/apps/admin/views/settings.py:6 |
|
171 | #: rhodecode/apps/admin/views/settings.py:648 | |
164 | msgid "Added new hook" |
|
172 | msgid "Added new hook" | |
165 | msgstr "" |
|
173 | msgstr "" | |
166 |
|
174 | |||
167 |
#: rhodecode/apps/admin/views/settings.py:6 |
|
175 | #: rhodecode/apps/admin/views/settings.py:663 | |
168 | msgid "Updated hooks" |
|
176 | msgid "Updated hooks" | |
169 | msgstr "" |
|
177 | msgstr "" | |
170 |
|
178 | |||
171 |
#: rhodecode/apps/admin/views/settings.py:6 |
|
179 | #: rhodecode/apps/admin/views/settings.py:667 | |
172 | msgid "Error occurred during hook creation" |
|
180 | msgid "Error occurred during hook creation" | |
173 | msgstr "" |
|
181 | msgstr "" | |
174 |
|
182 | |||
175 |
#: rhodecode/apps/admin/views/settings.py:7 |
|
183 | #: rhodecode/apps/admin/views/settings.py:760 | |
176 | msgid "Error occurred during updating labs settings" |
|
184 | msgid "Error occurred during updating labs settings" | |
177 | msgstr "" |
|
185 | msgstr "" | |
178 |
|
186 | |||
179 |
#: rhodecode/apps/admin/views/settings.py:7 |
|
187 | #: rhodecode/apps/admin/views/settings.py:765 | |
180 | msgid "Updated Labs settings" |
|
188 | msgid "Updated Labs settings" | |
181 | msgstr "" |
|
189 | msgstr "" | |
182 |
|
190 | |||
@@ -586,10 +594,10 b' msgstr ""' | |||||
586 | msgid "1 month" |
|
594 | msgid "1 month" | |
587 | msgstr "" |
|
595 | msgstr "" | |
588 |
|
596 | |||
589 |
#: rhodecode/apps/gist/views.py:64 rhodecode/public/js/scripts.js:4 |
|
597 | #: rhodecode/apps/gist/views.py:64 rhodecode/public/js/scripts.js:48330 | |
590 | #: rhodecode/public/js/scripts.min.js:1 |
|
598 | #: rhodecode/public/js/scripts.min.js:1 | |
591 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 |
|
599 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:47 | |
592 |
#: rhodecode/public/js/src/rhodecode.js:6 |
|
600 | #: rhodecode/public/js/src/rhodecode.js:634 | |
593 | msgid "Lifetime" |
|
601 | msgid "Lifetime" | |
594 | msgstr "" |
|
602 | msgstr "" | |
595 |
|
603 | |||
@@ -640,19 +648,19 b' msgstr ""' | |||||
640 | msgid "Error occurred during update of gist %s" |
|
648 | msgid "Error occurred during update of gist %s" | |
641 | msgstr "" |
|
649 | msgstr "" | |
642 |
|
650 | |||
643 |
#: rhodecode/apps/home/views.py:45 |
|
651 | #: rhodecode/apps/home/views.py:453 | |
644 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:9 |
|
652 | #: rhodecode/apps/repository/views/repo_pull_requests.py:976 | |
645 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:219 |
|
653 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:219 | |
646 | #: rhodecode/templates/admin/repos/repo_add.mako:15 |
|
654 | #: rhodecode/templates/admin/repos/repo_add.mako:15 | |
647 | #: rhodecode/templates/admin/repos/repo_add.mako:19 |
|
655 | #: rhodecode/templates/admin/repos/repo_add.mako:19 | |
648 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:12 |
|
656 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:12 | |
649 |
#: rhodecode/templates/base/base.mako:11 |
|
657 | #: rhodecode/templates/base/base.mako:114 | |
650 |
#: rhodecode/templates/base/base.mako:13 |
|
658 | #: rhodecode/templates/base/base.mako:133 | |
651 |
#: rhodecode/templates/base/base.mako:119 |
|
659 | #: rhodecode/templates/base/base.mako:1191 | |
652 | msgid "Repositories" |
|
660 | msgid "Repositories" | |
653 | msgstr "" |
|
661 | msgstr "" | |
654 |
|
662 | |||
655 |
#: rhodecode/apps/home/views.py:4 |
|
663 | #: rhodecode/apps/home/views.py:480 | |
656 | #: rhodecode/templates/admin/integrations/form.mako:17 |
|
664 | #: rhodecode/templates/admin/integrations/form.mako:17 | |
657 | #: rhodecode/templates/admin/integrations/list.mako:10 |
|
665 | #: rhodecode/templates/admin/integrations/list.mako:10 | |
658 | #: rhodecode/templates/admin/permissions/permissions_objects.mako:31 |
|
666 | #: rhodecode/templates/admin/permissions/permissions_objects.mako:31 | |
@@ -779,7 +787,7 b' msgstr ""' | |||||
779 |
|
787 | |||
780 | #: rhodecode/apps/repository/views/repo_changelog.py:66 |
|
788 | #: rhodecode/apps/repository/views/repo_changelog.py:66 | |
781 | #: rhodecode/apps/repository/views/repo_compare.py:64 |
|
789 | #: rhodecode/apps/repository/views/repo_compare.py:64 | |
782 |
#: rhodecode/apps/repository/views/repo_pull_requests.py: |
|
790 | #: rhodecode/apps/repository/views/repo_pull_requests.py:825 | |
783 | msgid "There are no commits yet" |
|
791 | msgid "There are no commits yet" | |
784 | msgstr "" |
|
792 | msgstr "" | |
785 |
|
793 | |||
@@ -807,13 +815,13 b' msgstr ""' | |||||
807 | msgid "No such commit exists. Org exception: `{}`" |
|
815 | msgid "No such commit exists. Org exception: `{}`" | |
808 | msgstr "" |
|
816 | msgstr "" | |
809 |
|
817 | |||
810 |
#: rhodecode/apps/repository/views/repo_commits.py:3 |
|
818 | #: rhodecode/apps/repository/views/repo_commits.py:388 | |
811 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
819 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1582 | |
812 | #, python-format |
|
820 | #, python-format | |
813 | msgid "Status change %(transition_icon)s %(status)s" |
|
821 | msgid "Status change %(transition_icon)s %(status)s" | |
814 | msgstr "" |
|
822 | msgstr "" | |
815 |
|
823 | |||
816 |
#: rhodecode/apps/repository/views/repo_commits.py: |
|
824 | #: rhodecode/apps/repository/views/repo_commits.py:434 | |
817 | msgid "Changing the status of a commit associated with a closed pull request is not allowed" |
|
825 | msgid "Changing the status of a commit associated with a closed pull request is not allowed" | |
818 | msgstr "" |
|
826 | msgstr "" | |
819 |
|
827 | |||
@@ -878,104 +886,104 b' msgstr ""' | |||||
878 | msgid "No such commit exists for this repository. Commit: {}" |
|
886 | msgid "No such commit exists for this repository. Commit: {}" | |
879 | msgstr "" |
|
887 | msgstr "" | |
880 |
|
888 | |||
881 |
#: rhodecode/apps/repository/views/repo_files.py:34 |
|
889 | #: rhodecode/apps/repository/views/repo_files.py:345 | |
882 | msgid "Downloads disabled" |
|
890 | msgid "Downloads disabled" | |
883 | msgstr "" |
|
891 | msgstr "" | |
884 |
|
892 | |||
885 |
#: rhodecode/apps/repository/views/repo_files.py:3 |
|
893 | #: rhodecode/apps/repository/views/repo_files.py:351 | |
886 | msgid "Unknown archive type for: `{}`" |
|
894 | msgid "Unknown archive type for: `{}`" | |
887 | msgstr "" |
|
895 | msgstr "" | |
888 |
|
896 | |||
889 |
#: rhodecode/apps/repository/views/repo_files.py:35 |
|
897 | #: rhodecode/apps/repository/views/repo_files.py:357 | |
890 | msgid "Unknown commit_id {}" |
|
898 | msgid "Unknown commit_id {}" | |
891 | msgstr "" |
|
899 | msgstr "" | |
892 |
|
900 | |||
893 |
#: rhodecode/apps/repository/views/repo_files.py:3 |
|
901 | #: rhodecode/apps/repository/views/repo_files.py:360 | |
894 | msgid "Empty repository" |
|
902 | msgid "Empty repository" | |
895 | msgstr "" |
|
903 | msgstr "" | |
896 |
|
904 | |||
897 |
#: rhodecode/apps/repository/views/repo_files.py:36 |
|
905 | #: rhodecode/apps/repository/views/repo_files.py:365 | |
898 | msgid "No node at path {} for this repository" |
|
906 | msgid "No node at path {} for this repository" | |
899 | msgstr "" |
|
907 | msgstr "" | |
900 |
|
908 | |||
901 |
#: rhodecode/apps/repository/views/repo_files.py:41 |
|
909 | #: rhodecode/apps/repository/views/repo_files.py:414 | |
902 | msgid "Unknown archive type" |
|
910 | msgid "Unknown archive type" | |
903 | msgstr "" |
|
911 | msgstr "" | |
904 |
|
912 | |||
905 |
#: rhodecode/apps/repository/views/repo_files.py:100 |
|
913 | #: rhodecode/apps/repository/views/repo_files.py:1010 | |
906 | msgid "Changesets" |
|
914 | msgid "Changesets" | |
907 | msgstr "" |
|
915 | msgstr "" | |
908 |
|
916 | |||
909 |
#: rhodecode/apps/repository/views/repo_files.py:10 |
|
917 | #: rhodecode/apps/repository/views/repo_files.py:1031 | |
910 | #: rhodecode/apps/repository/views/repo_summary.py:264 |
|
918 | #: rhodecode/apps/repository/views/repo_summary.py:264 | |
911 |
#: rhodecode/model/pull_request.py:1 |
|
919 | #: rhodecode/model/pull_request.py:1903 rhodecode/model/scm.py:995 | |
912 | #: rhodecode/templates/base/vcs_settings.mako:235 |
|
920 | #: rhodecode/templates/base/vcs_settings.mako:235 | |
913 | #: rhodecode/templates/summary/components.mako:10 |
|
921 | #: rhodecode/templates/summary/components.mako:10 | |
914 | msgid "Branches" |
|
922 | msgid "Branches" | |
915 | msgstr "" |
|
923 | msgstr "" | |
916 |
|
924 | |||
917 |
#: rhodecode/apps/repository/views/repo_files.py:103 |
|
925 | #: rhodecode/apps/repository/views/repo_files.py:1035 | |
918 | #: rhodecode/model/scm.py:1012 rhodecode/templates/base/vcs_settings.mako:260 |
|
926 | #: rhodecode/model/scm.py:1012 rhodecode/templates/base/vcs_settings.mako:260 | |
919 | #: rhodecode/templates/summary/components.mako:34 |
|
927 | #: rhodecode/templates/summary/components.mako:34 | |
920 | msgid "Tags" |
|
928 | msgid "Tags" | |
921 | msgstr "" |
|
929 | msgstr "" | |
922 |
|
930 | |||
923 |
#: rhodecode/apps/repository/views/repo_files.py:11 |
|
931 | #: rhodecode/apps/repository/views/repo_files.py:1191 | |
924 |
#: rhodecode/apps/repository/views/repo_files.py:12 |
|
932 | #: rhodecode/apps/repository/views/repo_files.py:1220 | |
925 | msgid "Deleted file {} via RhodeCode Enterprise" |
|
933 | msgid "Deleted file {} via RhodeCode Enterprise" | |
926 | msgstr "" |
|
934 | msgstr "" | |
927 |
|
935 | |||
928 |
#: rhodecode/apps/repository/views/repo_files.py:12 |
|
936 | #: rhodecode/apps/repository/views/repo_files.py:1241 | |
929 | msgid "Successfully deleted file `{}`" |
|
937 | msgid "Successfully deleted file `{}`" | |
930 | msgstr "" |
|
938 | msgstr "" | |
931 |
|
939 | |||
932 |
#: rhodecode/apps/repository/views/repo_files.py:12 |
|
940 | #: rhodecode/apps/repository/views/repo_files.py:1245 | |
933 |
#: rhodecode/apps/repository/views/repo_files.py:13 |
|
941 | #: rhodecode/apps/repository/views/repo_files.py:1364 | |
934 |
#: rhodecode/apps/repository/views/repo_files.py:14 |
|
942 | #: rhodecode/apps/repository/views/repo_files.py:1497 | |
935 |
#: rhodecode/apps/repository/views/repo_files.py:16 |
|
943 | #: rhodecode/apps/repository/views/repo_files.py:1621 | |
936 | msgid "Error occurred during commit" |
|
944 | msgid "Error occurred during commit" | |
937 | msgstr "" |
|
945 | msgstr "" | |
938 |
|
946 | |||
939 |
#: rhodecode/apps/repository/views/repo_files.py:12 |
|
947 | #: rhodecode/apps/repository/views/repo_files.py:1278 | |
940 |
#: rhodecode/apps/repository/views/repo_files.py:13 |
|
948 | #: rhodecode/apps/repository/views/repo_files.py:1310 | |
941 | msgid "Edited file {} via RhodeCode Enterprise" |
|
949 | msgid "Edited file {} via RhodeCode Enterprise" | |
942 | msgstr "" |
|
950 | msgstr "" | |
943 |
|
951 | |||
944 |
#: rhodecode/apps/repository/views/repo_files.py:13 |
|
952 | #: rhodecode/apps/repository/views/repo_files.py:1333 | |
945 | msgid "No changes detected on {}" |
|
953 | msgid "No changes detected on {}" | |
946 | msgstr "" |
|
954 | msgstr "" | |
947 |
|
955 | |||
948 |
#: rhodecode/apps/repository/views/repo_files.py:13 |
|
956 | #: rhodecode/apps/repository/views/repo_files.py:1357 | |
949 | msgid "Successfully committed changes to file `{}`" |
|
957 | msgid "Successfully committed changes to file `{}`" | |
950 | msgstr "" |
|
958 | msgstr "" | |
951 |
|
959 | |||
952 |
#: rhodecode/apps/repository/views/repo_files.py:13 |
|
960 | #: rhodecode/apps/repository/views/repo_files.py:1399 | |
953 |
#: rhodecode/apps/repository/views/repo_files.py:14 |
|
961 | #: rhodecode/apps/repository/views/repo_files.py:1441 | |
954 | msgid "Added file via RhodeCode Enterprise" |
|
962 | msgid "Added file via RhodeCode Enterprise" | |
955 | msgstr "" |
|
963 | msgstr "" | |
956 |
|
964 | |||
957 |
#: rhodecode/apps/repository/views/repo_files.py:14 |
|
965 | #: rhodecode/apps/repository/views/repo_files.py:1457 | |
958 | msgid "No filename specified" |
|
966 | msgid "No filename specified" | |
959 | msgstr "" |
|
967 | msgstr "" | |
960 |
|
968 | |||
961 |
#: rhodecode/apps/repository/views/repo_files.py:14 |
|
969 | #: rhodecode/apps/repository/views/repo_files.py:1482 | |
962 | msgid "Successfully committed new file `{}`" |
|
970 | msgid "Successfully committed new file `{}`" | |
963 | msgstr "" |
|
971 | msgstr "" | |
964 |
|
972 | |||
965 |
#: rhodecode/apps/repository/views/repo_files.py:14 |
|
973 | #: rhodecode/apps/repository/views/repo_files.py:1490 | |
966 |
#: rhodecode/apps/repository/views/repo_files.py:1 |
|
974 | #: rhodecode/apps/repository/views/repo_files.py:1603 | |
967 | msgid "The location specified must be a relative path and must not contain .. in the path" |
|
975 | msgid "The location specified must be a relative path and must not contain .. in the path" | |
968 | msgstr "" |
|
976 | msgstr "" | |
969 |
|
977 | |||
970 |
#: rhodecode/apps/repository/views/repo_files.py:15 |
|
978 | #: rhodecode/apps/repository/views/repo_files.py:1548 | |
971 | msgid "Uploaded file via RhodeCode Enterprise" |
|
979 | msgid "Uploaded file via RhodeCode Enterprise" | |
972 | msgstr "" |
|
980 | msgstr "" | |
973 |
|
981 | |||
974 |
#: rhodecode/apps/repository/views/repo_files.py:15 |
|
982 | #: rhodecode/apps/repository/views/repo_files.py:1592 | |
975 | msgid "Successfully committed {} new files" |
|
983 | msgid "Successfully committed {} new files" | |
976 | msgstr "" |
|
984 | msgstr "" | |
977 |
|
985 | |||
978 |
#: rhodecode/apps/repository/views/repo_files.py:15 |
|
986 | #: rhodecode/apps/repository/views/repo_files.py:1594 | |
979 | msgid "Successfully committed 1 new file" |
|
987 | msgid "Successfully committed 1 new file" | |
980 | msgstr "" |
|
988 | msgstr "" | |
981 |
|
989 | |||
@@ -989,7 +997,7 b' msgid "An error occurred during reposito' | |||||
989 | msgstr "" |
|
997 | msgstr "" | |
990 |
|
998 | |||
991 | #: rhodecode/apps/repository/views/repo_permissions.py:57 |
|
999 | #: rhodecode/apps/repository/views/repo_permissions.py:57 | |
992 |
msgid "Explicitly add user or user group with write |
|
1000 | msgid "Explicitly add user or user group with write or higher permission to modify their branch permissions." | |
993 | msgstr "" |
|
1001 | msgstr "" | |
994 |
|
1002 | |||
995 | #: rhodecode/apps/repository/views/repo_permissions.py:92 |
|
1003 | #: rhodecode/apps/repository/views/repo_permissions.py:92 | |
@@ -1005,72 +1013,72 b' msgstr ""' | |||||
1005 | msgid "Error occurred during update of repository {}" |
|
1013 | msgid "Error occurred during update of repository {}" | |
1006 | msgstr "" |
|
1014 | msgstr "" | |
1007 |
|
1015 | |||
1008 |
#: rhodecode/apps/repository/views/repo_pull_requests.py: |
|
1016 | #: rhodecode/apps/repository/views/repo_pull_requests.py:325 | |
1009 | msgid "Pull Request state was force changed to `{}`" |
|
1017 | msgid "Pull Request state was force changed to `{}`" | |
1010 | msgstr "" |
|
1018 | msgstr "" | |
1011 |
|
1019 | |||
1012 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:8 |
|
1020 | #: rhodecode/apps/repository/views/repo_pull_requests.py:855 | |
1013 | msgid "Commit does not exist" |
|
1021 | msgid "Commit does not exist" | |
1014 | msgstr "" |
|
1022 | msgstr "" | |
1015 |
|
1023 | |||
1016 |
#: rhodecode/apps/repository/views/repo_pull_requests.py: |
|
1024 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1092 | |
1017 | msgid "Error creating pull request: {}" |
|
1025 | msgid "Error creating pull request: {}" | |
1018 | msgstr "" |
|
1026 | msgstr "" | |
1019 |
|
1027 | |||
1020 |
#: rhodecode/apps/repository/views/repo_pull_requests.py: |
|
1028 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1112 | |
1021 | msgid "source_repo or target repo not found" |
|
1029 | msgid "source_repo or target repo not found" | |
1022 | msgstr "" |
|
1030 | msgstr "" | |
1023 |
|
1031 | |||
1024 |
#: rhodecode/apps/repository/views/repo_pull_requests.py: |
|
1032 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1123 | |
1025 | msgid "Not Enough permissions to source repo `{}`." |
|
1033 | msgid "Not Enough permissions to source repo `{}`." | |
1026 | msgstr "" |
|
1034 | msgstr "" | |
1027 |
|
1035 | |||
1028 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1036 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1138 | |
1029 | msgid "Not Enough permissions to target repo `{}`." |
|
1037 | msgid "Not Enough permissions to target repo `{}`." | |
1030 | msgstr "" |
|
1038 | msgstr "" | |
1031 |
|
1039 | |||
1032 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1040 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1208 | |
1033 | msgid "Successfully opened new pull request" |
|
1041 | msgid "Successfully opened new pull request" | |
1034 | msgstr "" |
|
1042 | msgstr "" | |
1035 |
|
1043 | |||
1036 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1044 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1211 | |
1037 | msgid "Error occurred during creation of this pull request." |
|
1045 | msgid "Error occurred during creation of this pull request." | |
1038 | msgstr "" |
|
1046 | msgstr "" | |
1039 |
|
1047 | |||
1040 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1048 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1243 | |
1041 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1049 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1312 | |
1042 | msgid "Cannot update closed pull requests." |
|
1050 | msgid "Cannot update closed pull requests." | |
1043 | msgstr "" |
|
1051 | msgstr "" | |
1044 |
|
1052 | |||
1045 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1053 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1275 | |
1046 | msgid "Cannot update pull requests commits in state other than `{}`. Current state is: `{}`" |
|
1054 | msgid "Cannot update pull requests commits in state other than `{}`. Current state is: `{}`" | |
1047 | msgstr "" |
|
1055 | msgstr "" | |
1048 |
|
1056 | |||
1049 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1057 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1318 | |
1050 | msgid "Pull request title & description updated." |
|
1058 | msgid "Pull request title & description updated." | |
1051 | msgstr "" |
|
1059 | msgstr "" | |
1052 |
|
1060 | |||
1053 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1061 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1340 | |
1054 | msgid "Pull request updated to \"{source_commit_id}\" with {count_added} added, {count_removed} removed commits. Source of changes: {change_source}" |
|
1062 | msgid "Pull request updated to \"{source_commit_id}\" with {count_added} added, {count_removed} removed commits. Source of changes: {change_source}." | |
1055 | msgstr "" |
|
1063 | msgstr "" | |
1056 |
|
1064 | |||
1057 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1065 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1380 | |
1058 | msgid "Reload page" |
|
1066 | msgid "Pull request reviewers updated." | |
1059 | msgstr "" |
|
1067 | msgstr "" | |
1060 |
|
1068 | |||
1061 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1069 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1404 | |
|
1070 | msgid "Pull request observers updated." | |||
|
1071 | msgstr "" | |||
|
1072 | ||||
|
1073 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1431 | |||
1062 | msgid "Cannot merge pull requests in state other than `{}`. Current state is: `{}`" |
|
1074 | msgid "Cannot merge pull requests in state other than `{}`. Current state is: `{}`" | |
1063 | msgstr "" |
|
1075 | msgstr "" | |
1064 |
|
1076 | |||
1065 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1077 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1477 | |
1066 | msgid "Pull request was successfully merged and closed." |
|
1078 | msgid "Pull request was successfully merged and closed." | |
1067 | msgstr "" |
|
1079 | msgstr "" | |
1068 |
|
1080 | |||
1069 |
#: rhodecode/apps/repository/views/repo_pull_requests.py:1 |
|
1081 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1508 | |
1070 | msgid "Pull request reviewers updated." |
|
|||
1071 | msgstr "" |
|
|||
1072 |
|
||||
1073 | #: rhodecode/apps/repository/views/repo_pull_requests.py:1341 |
|
|||
1074 | msgid "Successfully deleted pull request" |
|
1082 | msgid "Successfully deleted pull request" | |
1075 | msgstr "" |
|
1083 | msgstr "" | |
1076 |
|
1084 | |||
@@ -1801,10 +1809,10 b' msgstr ""' | |||||
1801 | msgid "Reset" |
|
1809 | msgid "Reset" | |
1802 | msgstr "" |
|
1810 | msgstr "" | |
1803 |
|
1811 | |||
1804 |
#: rhodecode/forms/__init__.py:36 rhodecode/public/js/scripts.js:3831 |
|
1812 | #: rhodecode/forms/__init__.py:36 rhodecode/public/js/scripts.js:38315 | |
1805 | #: rhodecode/public/js/scripts.min.js:1 |
|
1813 | #: rhodecode/public/js/scripts.min.js:1 | |
1806 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:2 |
|
1814 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:29 | |
1807 |
#: rhodecode/public/js/src/rhodecode/utils/ajax.js:16 |
|
1815 | #: rhodecode/public/js/src/rhodecode/utils/ajax.js:165 | |
1808 | #: rhodecode/templates/admin/gists/gist_show.mako:59 |
|
1816 | #: rhodecode/templates/admin/gists/gist_show.mako:59 | |
1809 | #: rhodecode/templates/admin/integrations/list.mako:179 |
|
1817 | #: rhodecode/templates/admin/integrations/list.mako:179 | |
1810 | #: rhodecode/templates/admin/my_account/my_account_auth_tokens.mako:65 |
|
1818 | #: rhodecode/templates/admin/my_account/my_account_auth_tokens.mako:65 | |
@@ -1819,12 +1827,12 b' msgstr ""' | |||||
1819 | #: rhodecode/templates/admin/users/user_edit_emails.mako:34 |
|
1827 | #: rhodecode/templates/admin/users/user_edit_emails.mako:34 | |
1820 | #: rhodecode/templates/admin/users/user_edit_ips.mako:40 |
|
1828 | #: rhodecode/templates/admin/users/user_edit_ips.mako:40 | |
1821 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:35 |
|
1829 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:35 | |
1822 |
#: rhodecode/templates/base/issue_tracker_settings.mako:14 |
|
1830 | #: rhodecode/templates/base/issue_tracker_settings.mako:147 | |
1823 | #: rhodecode/templates/base/vcs_settings.mako:244 |
|
1831 | #: rhodecode/templates/base/vcs_settings.mako:244 | |
1824 | #: rhodecode/templates/base/vcs_settings.mako:269 |
|
1832 | #: rhodecode/templates/base/vcs_settings.mako:269 | |
1825 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:2 |
|
1833 | #: rhodecode/templates/changeset/changeset_file_comment.mako:216 | |
1826 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:2 |
|
1834 | #: rhodecode/templates/changeset/changeset_file_comment.mako:224 | |
1827 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:2 |
|
1835 | #: rhodecode/templates/changeset/changeset_file_comment.mako:233 | |
1828 | #: rhodecode/templates/data_table/_dt_elements.mako:436 |
|
1836 | #: rhodecode/templates/data_table/_dt_elements.mako:436 | |
1829 | #: rhodecode/templates/debug_style/buttons.html:132 |
|
1837 | #: rhodecode/templates/debug_style/buttons.html:132 | |
1830 | #: rhodecode/templates/files/files_source.mako:40 |
|
1838 | #: rhodecode/templates/files/files_source.mako:40 | |
@@ -2225,11 +2233,19 b' msgstr ""' | |||||
2225 | msgid "You need to be signed in to view this page" |
|
2233 | msgid "You need to be signed in to view this page" | |
2226 | msgstr "" |
|
2234 | msgstr "" | |
2227 |
|
2235 | |||
|
2236 | #: rhodecode/lib/channelstream.py:318 | |||
|
2237 | msgid " Reload page to load changes" | |||
|
2238 | msgstr "" | |||
|
2239 | ||||
|
2240 | #: rhodecode/lib/channelstream.py:348 | |||
|
2241 | msgid "Reload page to see new comments" | |||
|
2242 | msgstr "" | |||
|
2243 | ||||
2228 | #: rhodecode/lib/diffs.py:903 |
|
2244 | #: rhodecode/lib/diffs.py:903 | |
2229 | msgid "Click to select line" |
|
2245 | msgid "Click to select line" | |
2230 | msgstr "" |
|
2246 | msgstr "" | |
2231 |
|
2247 | |||
2232 |
#: rhodecode/lib/helpers.py:18 |
|
2248 | #: rhodecode/lib/helpers.py:1878 | |
2233 | msgid "" |
|
2249 | msgid "" | |
2234 | "Example filter terms:\n" |
|
2250 | "Example filter terms:\n" | |
2235 | " repository:vcs\n" |
|
2251 | " repository:vcs\n" | |
@@ -2251,7 +2267,7 b' msgid ""' | |||||
2251 | " \"username:test AND repository:test*\"\n" |
|
2267 | " \"username:test AND repository:test*\"\n" | |
2252 | msgstr "" |
|
2268 | msgstr "" | |
2253 |
|
2269 | |||
2254 |
#: rhodecode/lib/helpers.py:1 |
|
2270 | #: rhodecode/lib/helpers.py:1902 | |
2255 | #, python-format |
|
2271 | #, python-format | |
2256 | msgid "%s repository is not mapped to db perhaps it was created or renamed from the filesystem please run the application again in order to rescan repositories" |
|
2272 | msgid "%s repository is not mapped to db perhaps it was created or renamed from the filesystem please run the application again in order to rescan repositories" | |
2257 | msgstr "" |
|
2273 | msgstr "" | |
@@ -2290,7 +2306,7 b' msgstr ""' | |||||
2290 |
|
2306 | |||
2291 | #: rhodecode/lib/utils2.py:571 rhodecode/public/js/scripts.js:22612 |
|
2307 | #: rhodecode/lib/utils2.py:571 rhodecode/public/js/scripts.js:22612 | |
2292 | #: rhodecode/public/js/scripts.min.js:1 |
|
2308 | #: rhodecode/public/js/scripts.min.js:1 | |
2293 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
2309 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:136 | |
2294 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:174 |
|
2310 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:174 | |
2295 | msgid "just now" |
|
2311 | msgid "just now" | |
2296 | msgstr "" |
|
2312 | msgstr "" | |
@@ -2326,6 +2342,7 b' msgstr ""' | |||||
2326 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2987 |
|
2342 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2987 | |
2327 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3073 |
|
2343 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3073 | |
2328 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3079 |
|
2344 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3079 | |
|
2345 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3110 | |||
2329 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2275 |
|
2346 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2275 | |
2330 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2267 |
|
2347 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2267 | |
2331 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2266 |
|
2348 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2266 | |
@@ -2333,7 +2350,7 b' msgstr ""' | |||||
2333 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2270 |
|
2350 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2270 | |
2334 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2321 |
|
2351 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2321 | |
2335 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2322 |
|
2352 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2322 | |
2336 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2522 rhodecode/model/db.py:311 |
|
2353 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2522 rhodecode/model/db.py:3111 | |
2337 | msgid "Repository no access" |
|
2354 | msgid "Repository no access" | |
2338 | msgstr "" |
|
2355 | msgstr "" | |
2339 |
|
2356 | |||
@@ -2368,6 +2385,7 b' msgstr ""' | |||||
2368 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2988 |
|
2385 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2988 | |
2369 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3074 |
|
2386 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3074 | |
2370 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3080 |
|
2387 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3080 | |
|
2388 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3111 | |||
2371 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2276 |
|
2389 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2276 | |
2372 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2268 |
|
2390 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2268 | |
2373 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2267 |
|
2391 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2267 | |
@@ -2375,7 +2393,7 b' msgstr ""' | |||||
2375 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2271 |
|
2393 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2271 | |
2376 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2322 |
|
2394 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2322 | |
2377 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2323 |
|
2395 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2323 | |
2378 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2523 rhodecode/model/db.py:311 |
|
2396 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2523 rhodecode/model/db.py:3112 | |
2379 | msgid "Repository read access" |
|
2397 | msgid "Repository read access" | |
2380 | msgstr "" |
|
2398 | msgstr "" | |
2381 |
|
2399 | |||
@@ -2410,6 +2428,7 b' msgstr ""' | |||||
2410 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2989 |
|
2428 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2989 | |
2411 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3075 |
|
2429 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3075 | |
2412 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3081 |
|
2430 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3081 | |
|
2431 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3112 | |||
2413 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2277 |
|
2432 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2277 | |
2414 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2269 |
|
2433 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2269 | |
2415 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2268 |
|
2434 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2268 | |
@@ -2417,7 +2436,7 b' msgstr ""' | |||||
2417 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2272 |
|
2436 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2272 | |
2418 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2323 |
|
2437 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2323 | |
2419 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2324 |
|
2438 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2324 | |
2420 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2524 rhodecode/model/db.py:311 |
|
2439 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2524 rhodecode/model/db.py:3113 | |
2421 | msgid "Repository write access" |
|
2440 | msgid "Repository write access" | |
2422 | msgstr "" |
|
2441 | msgstr "" | |
2423 |
|
2442 | |||
@@ -2452,6 +2471,7 b' msgstr ""' | |||||
2452 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2990 |
|
2471 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2990 | |
2453 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3076 |
|
2472 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3076 | |
2454 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3082 |
|
2473 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3082 | |
|
2474 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3113 | |||
2455 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2278 |
|
2475 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2278 | |
2456 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2270 |
|
2476 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2270 | |
2457 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2269 |
|
2477 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2269 | |
@@ -2459,7 +2479,7 b' msgstr ""' | |||||
2459 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2273 |
|
2479 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2273 | |
2460 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2324 |
|
2480 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2324 | |
2461 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2325 |
|
2481 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2325 | |
2462 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2525 rhodecode/model/db.py:311 |
|
2482 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2525 rhodecode/model/db.py:3114 | |
2463 | msgid "Repository admin access" |
|
2483 | msgid "Repository admin access" | |
2464 | msgstr "" |
|
2484 | msgstr "" | |
2465 |
|
2485 | |||
@@ -2534,6 +2554,7 b' msgstr ""' | |||||
2534 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3013 |
|
2554 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3013 | |
2535 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3099 |
|
2555 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3099 | |
2536 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3105 |
|
2556 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3105 | |
|
2557 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3136 | |||
2537 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2296 |
|
2558 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2296 | |
2538 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2288 |
|
2559 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2288 | |
2539 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2287 |
|
2560 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2287 | |
@@ -2541,7 +2562,7 b' msgstr ""' | |||||
2541 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2291 |
|
2562 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2291 | |
2542 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2342 |
|
2563 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2342 | |
2543 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2343 |
|
2564 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2343 | |
2544 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2543 rhodecode/model/db.py:313 |
|
2565 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2543 rhodecode/model/db.py:3137 | |
2545 | msgid "Repository creation disabled" |
|
2566 | msgid "Repository creation disabled" | |
2546 | msgstr "" |
|
2567 | msgstr "" | |
2547 |
|
2568 | |||
@@ -2576,6 +2597,7 b' msgstr ""' | |||||
2576 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3014 |
|
2597 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3014 | |
2577 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3100 |
|
2598 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3100 | |
2578 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3106 |
|
2599 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3106 | |
|
2600 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3137 | |||
2579 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2297 |
|
2601 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2297 | |
2580 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2289 |
|
2602 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2289 | |
2581 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2288 |
|
2603 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2288 | |
@@ -2583,7 +2605,7 b' msgstr ""' | |||||
2583 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2292 |
|
2605 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2292 | |
2584 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2343 |
|
2606 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2343 | |
2585 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2344 |
|
2607 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2344 | |
2586 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2544 rhodecode/model/db.py:313 |
|
2608 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2544 rhodecode/model/db.py:3138 | |
2587 | msgid "Repository creation enabled" |
|
2609 | msgid "Repository creation enabled" | |
2588 | msgstr "" |
|
2610 | msgstr "" | |
2589 |
|
2611 | |||
@@ -2618,6 +2640,7 b' msgstr ""' | |||||
2618 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3018 |
|
2640 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3018 | |
2619 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3104 |
|
2641 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3104 | |
2620 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3110 |
|
2642 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3110 | |
|
2643 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3141 | |||
2621 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2301 |
|
2644 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2301 | |
2622 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2293 |
|
2645 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2293 | |
2623 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2292 |
|
2646 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2292 | |
@@ -2625,7 +2648,7 b' msgstr ""' | |||||
2625 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2296 |
|
2648 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2296 | |
2626 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2347 |
|
2649 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2347 | |
2627 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2348 |
|
2650 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2348 | |
2628 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2548 rhodecode/model/db.py:314 |
|
2651 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2548 rhodecode/model/db.py:3142 | |
2629 | msgid "Repository forking disabled" |
|
2652 | msgid "Repository forking disabled" | |
2630 | msgstr "" |
|
2653 | msgstr "" | |
2631 |
|
2654 | |||
@@ -2660,6 +2683,7 b' msgstr ""' | |||||
2660 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3019 |
|
2683 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3019 | |
2661 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3105 |
|
2684 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3105 | |
2662 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3111 |
|
2685 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3111 | |
|
2686 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3142 | |||
2663 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2302 |
|
2687 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2302 | |
2664 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2294 |
|
2688 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2294 | |
2665 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2293 |
|
2689 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2293 | |
@@ -2667,7 +2691,7 b' msgstr ""' | |||||
2667 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2297 |
|
2691 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2297 | |
2668 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2348 |
|
2692 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2348 | |
2669 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2349 |
|
2693 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2349 | |
2670 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2549 rhodecode/model/db.py:314 |
|
2694 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2549 rhodecode/model/db.py:3143 | |
2671 | msgid "Repository forking enabled" |
|
2695 | msgid "Repository forking enabled" | |
2672 | msgstr "" |
|
2696 | msgstr "" | |
2673 |
|
2697 | |||
@@ -2723,6 +2747,7 b' msgstr ""' | |||||
2723 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3757 |
|
2747 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3757 | |
2724 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3843 |
|
2748 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3843 | |
2725 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3890 |
|
2749 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3890 | |
|
2750 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3935 | |||
2726 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2915 |
|
2751 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2915 | |
2727 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2907 |
|
2752 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2907 | |
2728 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2907 |
|
2753 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2907 | |
@@ -2730,10 +2755,10 b' msgstr ""' | |||||
2730 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2910 |
|
2755 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2910 | |
2731 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3011 |
|
2756 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3011 | |
2732 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3012 |
|
2757 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3012 | |
2733 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3230 rhodecode/model/db.py:39 |
|
2758 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3230 rhodecode/model/db.py:3971 | |
2734 |
#: rhodecode/public/js/scripts.js:42 |
|
2759 | #: rhodecode/public/js/scripts.js:42424 rhodecode/public/js/scripts.min.js:1 | |
2735 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
2760 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:70 | |
2736 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
2761 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:445 | |
2737 | msgid "Not Reviewed" |
|
2762 | msgid "Not Reviewed" | |
2738 | msgstr "" |
|
2763 | msgstr "" | |
2739 |
|
2764 | |||
@@ -2768,6 +2793,7 b' msgstr ""' | |||||
2768 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3758 |
|
2793 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3758 | |
2769 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3844 |
|
2794 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3844 | |
2770 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3891 |
|
2795 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3891 | |
|
2796 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3936 | |||
2771 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2916 |
|
2797 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2916 | |
2772 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2908 |
|
2798 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2908 | |
2773 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2908 |
|
2799 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2908 | |
@@ -2775,7 +2801,7 b' msgstr ""' | |||||
2775 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2911 |
|
2801 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2911 | |
2776 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3012 |
|
2802 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3012 | |
2777 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3013 |
|
2803 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3013 | |
2778 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3231 rhodecode/model/db.py:39 |
|
2804 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3231 rhodecode/model/db.py:3972 | |
2779 | msgid "Approved" |
|
2805 | msgid "Approved" | |
2780 | msgstr "" |
|
2806 | msgstr "" | |
2781 |
|
2807 | |||
@@ -2810,6 +2836,7 b' msgstr ""' | |||||
2810 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3759 |
|
2836 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3759 | |
2811 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3845 |
|
2837 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3845 | |
2812 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3892 |
|
2838 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3892 | |
|
2839 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3937 | |||
2813 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2917 |
|
2840 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2917 | |
2814 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2909 |
|
2841 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2909 | |
2815 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2909 |
|
2842 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2909 | |
@@ -2817,7 +2844,7 b' msgstr ""' | |||||
2817 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2912 |
|
2844 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2912 | |
2818 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3013 |
|
2845 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3013 | |
2819 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3014 |
|
2846 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3014 | |
2820 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3232 rhodecode/model/db.py:39 |
|
2847 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3232 rhodecode/model/db.py:3973 | |
2821 | msgid "Rejected" |
|
2848 | msgid "Rejected" | |
2822 | msgstr "" |
|
2849 | msgstr "" | |
2823 |
|
2850 | |||
@@ -2852,6 +2879,7 b' msgstr ""' | |||||
2852 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3760 |
|
2879 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3760 | |
2853 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3846 |
|
2880 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3846 | |
2854 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3893 |
|
2881 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3893 | |
|
2882 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3938 | |||
2855 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2918 |
|
2883 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2918 | |
2856 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2910 |
|
2884 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2910 | |
2857 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2910 |
|
2885 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2910 | |
@@ -2859,7 +2887,7 b' msgstr ""' | |||||
2859 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2913 |
|
2887 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2913 | |
2860 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3014 |
|
2888 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3014 | |
2861 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3015 |
|
2889 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3015 | |
2862 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3233 rhodecode/model/db.py:39 |
|
2890 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3233 rhodecode/model/db.py:3974 | |
2863 | msgid "Under Review" |
|
2891 | msgid "Under Review" | |
2864 | msgstr "" |
|
2892 | msgstr "" | |
2865 |
|
2893 | |||
@@ -2891,6 +2919,7 b' msgstr ""' | |||||
2891 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2992 |
|
2919 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2992 | |
2892 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3078 |
|
2920 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3078 | |
2893 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3084 |
|
2921 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3084 | |
|
2922 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3115 | |||
2894 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2280 |
|
2923 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2280 | |
2895 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2272 |
|
2924 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2272 | |
2896 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2271 |
|
2925 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2271 | |
@@ -2898,7 +2927,7 b' msgstr ""' | |||||
2898 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2275 |
|
2927 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2275 | |
2899 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2326 |
|
2928 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2326 | |
2900 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2327 |
|
2929 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2327 | |
2901 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2527 rhodecode/model/db.py:311 |
|
2930 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2527 rhodecode/model/db.py:3116 | |
2902 | msgid "Repository group no access" |
|
2931 | msgid "Repository group no access" | |
2903 | msgstr "" |
|
2932 | msgstr "" | |
2904 |
|
2933 | |||
@@ -2930,6 +2959,7 b' msgstr ""' | |||||
2930 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2993 |
|
2959 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2993 | |
2931 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3079 |
|
2960 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3079 | |
2932 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3085 |
|
2961 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3085 | |
|
2962 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3116 | |||
2933 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2281 |
|
2963 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2281 | |
2934 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2273 |
|
2964 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2273 | |
2935 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2272 |
|
2965 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2272 | |
@@ -2937,7 +2967,7 b' msgstr ""' | |||||
2937 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2276 |
|
2967 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2276 | |
2938 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2327 |
|
2968 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2327 | |
2939 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2328 |
|
2969 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2328 | |
2940 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2528 rhodecode/model/db.py:311 |
|
2970 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2528 rhodecode/model/db.py:3117 | |
2941 | msgid "Repository group read access" |
|
2971 | msgid "Repository group read access" | |
2942 | msgstr "" |
|
2972 | msgstr "" | |
2943 |
|
2973 | |||
@@ -2969,6 +2999,7 b' msgstr ""' | |||||
2969 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2994 |
|
2999 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2994 | |
2970 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3080 |
|
3000 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3080 | |
2971 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3086 |
|
3001 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3086 | |
|
3002 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3117 | |||
2972 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2282 |
|
3003 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2282 | |
2973 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2274 |
|
3004 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2274 | |
2974 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2273 |
|
3005 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2273 | |
@@ -2976,7 +3007,7 b' msgstr ""' | |||||
2976 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2277 |
|
3007 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2277 | |
2977 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2328 |
|
3008 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2328 | |
2978 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2329 |
|
3009 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2329 | |
2979 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2529 rhodecode/model/db.py:311 |
|
3010 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2529 rhodecode/model/db.py:3118 | |
2980 | msgid "Repository group write access" |
|
3011 | msgid "Repository group write access" | |
2981 | msgstr "" |
|
3012 | msgstr "" | |
2982 |
|
3013 | |||
@@ -3008,6 +3039,7 b' msgstr ""' | |||||
3008 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2995 |
|
3039 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2995 | |
3009 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3081 |
|
3040 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3081 | |
3010 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3087 |
|
3041 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3087 | |
|
3042 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3118 | |||
3011 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2283 |
|
3043 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2283 | |
3012 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2275 |
|
3044 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2275 | |
3013 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2274 |
|
3045 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2274 | |
@@ -3015,7 +3047,7 b' msgstr ""' | |||||
3015 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2278 |
|
3047 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2278 | |
3016 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2329 |
|
3048 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2329 | |
3017 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2330 |
|
3049 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2330 | |
3018 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2530 rhodecode/model/db.py:311 |
|
3050 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2530 rhodecode/model/db.py:3119 | |
3019 | msgid "Repository group admin access" |
|
3051 | msgid "Repository group admin access" | |
3020 | msgstr "" |
|
3052 | msgstr "" | |
3021 |
|
3053 | |||
@@ -3046,6 +3078,7 b' msgstr ""' | |||||
3046 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2997 |
|
3078 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2997 | |
3047 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3083 |
|
3079 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3083 | |
3048 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3089 |
|
3080 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3089 | |
|
3081 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3120 | |||
3049 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2285 |
|
3082 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2285 | |
3050 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2277 |
|
3083 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2277 | |
3051 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2276 |
|
3084 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2276 | |
@@ -3053,7 +3086,7 b' msgstr ""' | |||||
3053 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2280 |
|
3086 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2280 | |
3054 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2331 |
|
3087 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2331 | |
3055 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2332 |
|
3088 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2332 | |
3056 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2532 rhodecode/model/db.py:312 |
|
3089 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2532 rhodecode/model/db.py:3121 | |
3057 | msgid "User group no access" |
|
3090 | msgid "User group no access" | |
3058 | msgstr "" |
|
3091 | msgstr "" | |
3059 |
|
3092 | |||
@@ -3084,6 +3117,7 b' msgstr ""' | |||||
3084 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2998 |
|
3117 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2998 | |
3085 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3084 |
|
3118 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3084 | |
3086 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3090 |
|
3119 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3090 | |
|
3120 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3121 | |||
3087 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2286 |
|
3121 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2286 | |
3088 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2278 |
|
3122 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2278 | |
3089 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2277 |
|
3123 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2277 | |
@@ -3091,7 +3125,7 b' msgstr ""' | |||||
3091 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2281 |
|
3125 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2281 | |
3092 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2332 |
|
3126 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2332 | |
3093 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2333 |
|
3127 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2333 | |
3094 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2533 rhodecode/model/db.py:312 |
|
3128 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2533 rhodecode/model/db.py:3122 | |
3095 | msgid "User group read access" |
|
3129 | msgid "User group read access" | |
3096 | msgstr "" |
|
3130 | msgstr "" | |
3097 |
|
3131 | |||
@@ -3122,6 +3156,7 b' msgstr ""' | |||||
3122 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2999 |
|
3156 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2999 | |
3123 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3085 |
|
3157 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3085 | |
3124 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3091 |
|
3158 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3091 | |
|
3159 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3122 | |||
3125 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2287 |
|
3160 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2287 | |
3126 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2279 |
|
3161 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2279 | |
3127 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2278 |
|
3162 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2278 | |
@@ -3129,7 +3164,7 b' msgstr ""' | |||||
3129 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2282 |
|
3164 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2282 | |
3130 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2333 |
|
3165 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2333 | |
3131 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2334 |
|
3166 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2334 | |
3132 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2534 rhodecode/model/db.py:312 |
|
3167 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2534 rhodecode/model/db.py:3123 | |
3133 | msgid "User group write access" |
|
3168 | msgid "User group write access" | |
3134 | msgstr "" |
|
3169 | msgstr "" | |
3135 |
|
3170 | |||
@@ -3160,6 +3195,7 b' msgstr ""' | |||||
3160 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3000 |
|
3195 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3000 | |
3161 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3086 |
|
3196 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3086 | |
3162 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3092 |
|
3197 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3092 | |
|
3198 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3123 | |||
3163 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2288 |
|
3199 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2288 | |
3164 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2280 |
|
3200 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2280 | |
3165 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2279 |
|
3201 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2279 | |
@@ -3167,7 +3203,7 b' msgstr ""' | |||||
3167 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2283 |
|
3203 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2283 | |
3168 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2334 |
|
3204 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2334 | |
3169 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2335 |
|
3205 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2335 | |
3170 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2535 rhodecode/model/db.py:312 |
|
3206 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2535 rhodecode/model/db.py:3124 | |
3171 | msgid "User group admin access" |
|
3207 | msgid "User group admin access" | |
3172 | msgstr "" |
|
3208 | msgstr "" | |
3173 |
|
3209 | |||
@@ -3198,6 +3234,7 b' msgstr ""' | |||||
3198 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3007 |
|
3234 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3007 | |
3199 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3093 |
|
3235 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3093 | |
3200 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3099 |
|
3236 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3099 | |
|
3237 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3130 | |||
3201 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2290 |
|
3238 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2290 | |
3202 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2282 |
|
3239 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2282 | |
3203 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2281 |
|
3240 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2281 | |
@@ -3205,7 +3242,7 b' msgstr ""' | |||||
3205 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2285 |
|
3242 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2285 | |
3206 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2336 |
|
3243 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2336 | |
3207 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2337 |
|
3244 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2337 | |
3208 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2537 rhodecode/model/db.py:313 |
|
3245 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2537 rhodecode/model/db.py:3131 | |
3209 | msgid "Repository Group creation disabled" |
|
3246 | msgid "Repository Group creation disabled" | |
3210 | msgstr "" |
|
3247 | msgstr "" | |
3211 |
|
3248 | |||
@@ -3236,6 +3273,7 b' msgstr ""' | |||||
3236 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3008 |
|
3273 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3008 | |
3237 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3094 |
|
3274 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3094 | |
3238 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3100 |
|
3275 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3100 | |
|
3276 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3131 | |||
3239 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2291 |
|
3277 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2291 | |
3240 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2283 |
|
3278 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2283 | |
3241 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2282 |
|
3279 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2282 | |
@@ -3243,7 +3281,7 b' msgstr ""' | |||||
3243 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2286 |
|
3281 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2286 | |
3244 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2337 |
|
3282 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2337 | |
3245 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2338 |
|
3283 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2338 | |
3246 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2538 rhodecode/model/db.py:313 |
|
3284 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2538 rhodecode/model/db.py:3132 | |
3247 | msgid "Repository Group creation enabled" |
|
3285 | msgid "Repository Group creation enabled" | |
3248 | msgstr "" |
|
3286 | msgstr "" | |
3249 |
|
3287 | |||
@@ -3274,6 +3312,7 b' msgstr ""' | |||||
3274 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3010 |
|
3312 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3010 | |
3275 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3096 |
|
3313 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3096 | |
3276 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3102 |
|
3314 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3102 | |
|
3315 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3133 | |||
3277 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2293 |
|
3316 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2293 | |
3278 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2285 |
|
3317 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2285 | |
3279 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2284 |
|
3318 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2284 | |
@@ -3281,7 +3320,7 b' msgstr ""' | |||||
3281 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2288 |
|
3320 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2288 | |
3282 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2339 |
|
3321 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2339 | |
3283 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2340 |
|
3322 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2340 | |
3284 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2540 rhodecode/model/db.py:313 |
|
3323 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2540 rhodecode/model/db.py:3134 | |
3285 | msgid "User Group creation disabled" |
|
3324 | msgid "User Group creation disabled" | |
3286 | msgstr "" |
|
3325 | msgstr "" | |
3287 |
|
3326 | |||
@@ -3312,6 +3351,7 b' msgstr ""' | |||||
3312 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3011 |
|
3351 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3011 | |
3313 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3097 |
|
3352 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3097 | |
3314 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3103 |
|
3353 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3103 | |
|
3354 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3134 | |||
3315 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2294 |
|
3355 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2294 | |
3316 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2286 |
|
3356 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2286 | |
3317 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2285 |
|
3357 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2285 | |
@@ -3319,7 +3359,7 b' msgstr ""' | |||||
3319 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2289 |
|
3359 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2289 | |
3320 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2340 |
|
3360 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2340 | |
3321 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2341 |
|
3361 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2341 | |
3322 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2541 rhodecode/model/db.py:313 |
|
3362 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2541 rhodecode/model/db.py:3135 | |
3323 | msgid "User Group creation enabled" |
|
3363 | msgid "User Group creation enabled" | |
3324 | msgstr "" |
|
3364 | msgstr "" | |
3325 |
|
3365 | |||
@@ -3350,6 +3390,7 b' msgstr ""' | |||||
3350 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3021 |
|
3390 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3021 | |
3351 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3107 |
|
3391 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3107 | |
3352 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3113 |
|
3392 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3113 | |
|
3393 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3144 | |||
3353 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2304 |
|
3394 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2304 | |
3354 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2296 |
|
3395 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2296 | |
3355 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2295 |
|
3396 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2295 | |
@@ -3357,7 +3398,7 b' msgstr ""' | |||||
3357 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2299 |
|
3398 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2299 | |
3358 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2350 |
|
3399 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2350 | |
3359 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2351 |
|
3400 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2351 | |
3360 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2551 rhodecode/model/db.py:314 |
|
3401 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2551 rhodecode/model/db.py:3145 | |
3361 | msgid "Registration disabled" |
|
3402 | msgid "Registration disabled" | |
3362 | msgstr "" |
|
3403 | msgstr "" | |
3363 |
|
3404 | |||
@@ -3388,6 +3429,7 b' msgstr ""' | |||||
3388 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3022 |
|
3429 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3022 | |
3389 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3108 |
|
3430 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3108 | |
3390 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3114 |
|
3431 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3114 | |
|
3432 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3145 | |||
3391 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2305 |
|
3433 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2305 | |
3392 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2297 |
|
3434 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2297 | |
3393 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2296 |
|
3435 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2296 | |
@@ -3395,7 +3437,7 b' msgstr ""' | |||||
3395 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2300 |
|
3437 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2300 | |
3396 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2351 |
|
3438 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2351 | |
3397 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2352 |
|
3439 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2352 | |
3398 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2552 rhodecode/model/db.py:314 |
|
3440 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2552 rhodecode/model/db.py:3146 | |
3399 | msgid "User Registration with manual account activation" |
|
3441 | msgid "User Registration with manual account activation" | |
3400 | msgstr "" |
|
3442 | msgstr "" | |
3401 |
|
3443 | |||
@@ -3426,6 +3468,7 b' msgstr ""' | |||||
3426 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3023 |
|
3468 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3023 | |
3427 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3109 |
|
3469 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3109 | |
3428 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3115 |
|
3470 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3115 | |
|
3471 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3146 | |||
3429 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2306 |
|
3472 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2306 | |
3430 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2298 |
|
3473 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2298 | |
3431 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2297 |
|
3474 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2297 | |
@@ -3433,7 +3476,7 b' msgstr ""' | |||||
3433 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2301 |
|
3476 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2301 | |
3434 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2352 |
|
3477 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2352 | |
3435 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2353 |
|
3478 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2353 | |
3436 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2553 rhodecode/model/db.py:314 |
|
3479 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2553 rhodecode/model/db.py:3147 | |
3437 | msgid "User Registration with automatic account activation" |
|
3480 | msgid "User Registration with automatic account activation" | |
3438 | msgstr "" |
|
3481 | msgstr "" | |
3439 |
|
3482 | |||
@@ -3464,6 +3507,7 b' msgstr ""' | |||||
3464 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3029 |
|
3507 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3029 | |
3465 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3115 |
|
3508 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3115 | |
3466 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3121 |
|
3509 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3121 | |
|
3510 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3152 | |||
3467 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2308 |
|
3511 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2308 | |
3468 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2300 |
|
3512 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2300 | |
3469 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2299 |
|
3513 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2299 | |
@@ -3471,7 +3515,7 b' msgstr ""' | |||||
3471 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2303 |
|
3515 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2303 | |
3472 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2358 |
|
3516 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2358 | |
3473 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2359 |
|
3517 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2359 | |
3474 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2559 rhodecode/model/db.py:315 |
|
3518 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2559 rhodecode/model/db.py:3153 | |
3475 | #: rhodecode/model/permission.py:105 |
|
3519 | #: rhodecode/model/permission.py:105 | |
3476 | msgid "Manual activation of external account" |
|
3520 | msgid "Manual activation of external account" | |
3477 | msgstr "" |
|
3521 | msgstr "" | |
@@ -3503,6 +3547,7 b' msgstr ""' | |||||
3503 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3030 |
|
3547 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3030 | |
3504 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3116 |
|
3548 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3116 | |
3505 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3122 |
|
3549 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3122 | |
|
3550 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3153 | |||
3506 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2309 |
|
3551 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2309 | |
3507 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2301 |
|
3552 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2301 | |
3508 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2300 |
|
3553 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2300 | |
@@ -3510,7 +3555,7 b' msgstr ""' | |||||
3510 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2304 |
|
3555 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2304 | |
3511 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2359 |
|
3556 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2359 | |
3512 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2360 |
|
3557 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2360 | |
3513 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2560 rhodecode/model/db.py:315 |
|
3558 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2560 rhodecode/model/db.py:3154 | |
3514 | #: rhodecode/model/permission.py:106 |
|
3559 | #: rhodecode/model/permission.py:106 | |
3515 | msgid "Automatic activation of external account" |
|
3560 | msgid "Automatic activation of external account" | |
3516 | msgstr "" |
|
3561 | msgstr "" | |
@@ -3536,6 +3581,7 b' msgstr ""' | |||||
3536 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3015 |
|
3581 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3015 | |
3537 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3101 |
|
3582 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3101 | |
3538 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3107 |
|
3583 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3107 | |
|
3584 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3138 | |||
3539 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2298 |
|
3585 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2298 | |
3540 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2290 |
|
3586 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2290 | |
3541 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2289 |
|
3587 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2289 | |
@@ -3543,7 +3589,7 b' msgstr ""' | |||||
3543 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2293 |
|
3589 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2293 | |
3544 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2344 |
|
3590 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2344 | |
3545 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2345 |
|
3591 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2345 | |
3546 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2545 rhodecode/model/db.py:313 |
|
3592 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2545 rhodecode/model/db.py:3139 | |
3547 | msgid "Repository creation enabled with write permission to a repository group" |
|
3593 | msgid "Repository creation enabled with write permission to a repository group" | |
3548 | msgstr "" |
|
3594 | msgstr "" | |
3549 |
|
3595 | |||
@@ -3568,6 +3614,7 b' msgstr ""' | |||||
3568 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3016 |
|
3614 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3016 | |
3569 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3102 |
|
3615 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3102 | |
3570 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3108 |
|
3616 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3108 | |
|
3617 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3139 | |||
3571 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2299 |
|
3618 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2299 | |
3572 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2291 |
|
3619 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2291 | |
3573 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2290 |
|
3620 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2290 | |
@@ -3575,7 +3622,7 b' msgstr ""' | |||||
3575 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2294 |
|
3622 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2294 | |
3576 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2345 |
|
3623 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2345 | |
3577 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2346 |
|
3624 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2346 | |
3578 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2546 rhodecode/model/db.py:31 |
|
3625 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2546 rhodecode/model/db.py:3140 | |
3579 | msgid "Repository creation disabled with write permission to a repository group" |
|
3626 | msgid "Repository creation disabled with write permission to a repository group" | |
3580 | msgstr "" |
|
3627 | msgstr "" | |
3581 |
|
3628 | |||
@@ -3597,6 +3644,7 b' msgstr ""' | |||||
3597 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2985 |
|
3644 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2985 | |
3598 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3071 |
|
3645 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3071 | |
3599 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3077 |
|
3646 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3077 | |
|
3647 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3108 | |||
3600 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2273 |
|
3648 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2273 | |
3601 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2265 |
|
3649 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2265 | |
3602 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2264 |
|
3650 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2264 | |
@@ -3604,7 +3652,7 b' msgstr ""' | |||||
3604 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2268 |
|
3652 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2268 | |
3605 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2319 |
|
3653 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2319 | |
3606 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2320 |
|
3654 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2320 | |
3607 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2520 rhodecode/model/db.py:310 |
|
3655 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2520 rhodecode/model/db.py:3109 | |
3608 | msgid "RhodeCode Super Administrator" |
|
3656 | msgid "RhodeCode Super Administrator" | |
3609 | msgstr "" |
|
3657 | msgstr "" | |
3610 |
|
3658 | |||
@@ -3624,6 +3672,7 b' msgstr ""' | |||||
3624 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3032 |
|
3672 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3032 | |
3625 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3118 |
|
3673 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3118 | |
3626 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3124 |
|
3674 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3124 | |
|
3675 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3155 | |||
3627 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2311 |
|
3676 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2311 | |
3628 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2303 |
|
3677 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2303 | |
3629 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2302 |
|
3678 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2302 | |
@@ -3631,7 +3680,7 b' msgstr ""' | |||||
3631 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2306 |
|
3680 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2306 | |
3632 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2361 |
|
3681 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2361 | |
3633 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2362 |
|
3682 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2362 | |
3634 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2562 rhodecode/model/db.py:315 |
|
3683 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2562 rhodecode/model/db.py:3156 | |
3635 | msgid "Inherit object permissions from default user disabled" |
|
3684 | msgid "Inherit object permissions from default user disabled" | |
3636 | msgstr "" |
|
3685 | msgstr "" | |
3637 |
|
3686 | |||
@@ -3651,6 +3700,7 b' msgstr ""' | |||||
3651 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3033 |
|
3700 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3033 | |
3652 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3119 |
|
3701 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3119 | |
3653 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3125 |
|
3702 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3125 | |
|
3703 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3156 | |||
3654 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2312 |
|
3704 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2312 | |
3655 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2304 |
|
3705 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2304 | |
3656 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2303 |
|
3706 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2303 | |
@@ -3658,7 +3708,7 b' msgstr ""' | |||||
3658 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2307 |
|
3708 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2307 | |
3659 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2362 |
|
3709 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2362 | |
3660 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2363 |
|
3710 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2363 | |
3661 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2563 rhodecode/model/db.py:315 |
|
3711 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2563 rhodecode/model/db.py:3157 | |
3662 | msgid "Inherit object permissions from default user enabled" |
|
3712 | msgid "Inherit object permissions from default user enabled" | |
3663 | msgstr "" |
|
3713 | msgstr "" | |
3664 |
|
3714 | |||
@@ -3670,6 +3720,7 b' msgstr ""' | |||||
3670 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1137 |
|
3720 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1137 | |
3671 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1189 |
|
3721 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1189 | |
3672 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1195 |
|
3722 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1195 | |
|
3723 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1202 | |||
3673 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:910 |
|
3724 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:910 | |
3674 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:911 |
|
3725 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:911 | |
3675 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:910 |
|
3726 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:910 | |
@@ -3677,7 +3728,7 b' msgstr ""' | |||||
3677 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:912 |
|
3728 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:912 | |
3678 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:955 |
|
3729 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:955 | |
3679 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:956 |
|
3730 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:956 | |
3680 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1050 rhodecode/model/db.py:120 |
|
3731 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1050 rhodecode/model/db.py:1203 | |
3681 | msgid "all" |
|
3732 | msgid "all" | |
3682 | msgstr "" |
|
3733 | msgstr "" | |
3683 |
|
3734 | |||
@@ -3689,6 +3740,7 b' msgstr ""' | |||||
3689 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1138 |
|
3740 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1138 | |
3690 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1190 |
|
3741 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1190 | |
3691 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1196 |
|
3742 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1196 | |
|
3743 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1203 | |||
3692 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:911 |
|
3744 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:911 | |
3693 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:912 |
|
3745 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:912 | |
3694 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:911 |
|
3746 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:911 | |
@@ -3696,7 +3748,7 b' msgstr ""' | |||||
3696 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:913 |
|
3748 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:913 | |
3697 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:956 |
|
3749 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:956 | |
3698 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:957 |
|
3750 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:957 | |
3699 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1051 rhodecode/model/db.py:120 |
|
3751 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1051 rhodecode/model/db.py:1204 | |
3700 | msgid "http/web interface" |
|
3752 | msgid "http/web interface" | |
3701 | msgstr "" |
|
3753 | msgstr "" | |
3702 |
|
3754 | |||
@@ -3708,6 +3760,7 b' msgstr ""' | |||||
3708 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1139 |
|
3760 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1139 | |
3709 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1191 |
|
3761 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1191 | |
3710 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1197 |
|
3762 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1197 | |
|
3763 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1204 | |||
3711 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:912 |
|
3764 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:912 | |
3712 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:913 |
|
3765 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:913 | |
3713 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:912 |
|
3766 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:912 | |
@@ -3715,7 +3768,7 b' msgstr ""' | |||||
3715 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:914 |
|
3768 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:914 | |
3716 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:957 |
|
3769 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:957 | |
3717 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:958 |
|
3770 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:958 | |
3718 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1052 rhodecode/model/db.py:120 |
|
3771 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1052 rhodecode/model/db.py:1205 | |
3719 | msgid "vcs (git/hg/svn protocol)" |
|
3772 | msgid "vcs (git/hg/svn protocol)" | |
3720 | msgstr "" |
|
3773 | msgstr "" | |
3721 |
|
3774 | |||
@@ -3727,6 +3780,7 b' msgstr ""' | |||||
3727 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1140 |
|
3780 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1140 | |
3728 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1192 |
|
3781 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1192 | |
3729 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1198 |
|
3782 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1198 | |
|
3783 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1205 | |||
3730 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:913 |
|
3784 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:913 | |
3731 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:914 |
|
3785 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:914 | |
3732 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:913 |
|
3786 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:913 | |
@@ -3734,7 +3788,7 b' msgstr ""' | |||||
3734 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:915 |
|
3788 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:915 | |
3735 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:958 |
|
3789 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:958 | |
3736 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:959 |
|
3790 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:959 | |
3737 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1053 rhodecode/model/db.py:120 |
|
3791 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1053 rhodecode/model/db.py:1206 | |
3738 | msgid "api calls" |
|
3792 | msgid "api calls" | |
3739 | msgstr "" |
|
3793 | msgstr "" | |
3740 |
|
3794 | |||
@@ -3746,6 +3800,7 b' msgstr ""' | |||||
3746 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1141 |
|
3800 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:1141 | |
3747 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1193 |
|
3801 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1193 | |
3748 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1199 |
|
3802 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1199 | |
|
3803 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1206 | |||
3749 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:914 |
|
3804 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:914 | |
3750 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:915 |
|
3805 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:915 | |
3751 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:914 |
|
3806 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:914 | |
@@ -3753,7 +3808,7 b' msgstr ""' | |||||
3753 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:916 |
|
3808 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:916 | |
3754 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:959 |
|
3809 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:959 | |
3755 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:960 |
|
3810 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:960 | |
3756 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1054 rhodecode/model/db.py:120 |
|
3811 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:1054 rhodecode/model/db.py:1207 | |
3757 | msgid "feed access" |
|
3812 | msgid "feed access" | |
3758 | msgstr "" |
|
3813 | msgstr "" | |
3759 |
|
3814 | |||
@@ -3765,6 +3820,7 b' msgstr ""' | |||||
3765 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2638 |
|
3820 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:2638 | |
3766 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:2729 |
|
3821 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:2729 | |
3767 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:2735 |
|
3822 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:2735 | |
|
3823 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:2766 | |||
3768 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2051 |
|
3824 | #: rhodecode/lib/dbmigrate/schema/db_4_3_0_0.py:2051 | |
3769 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2043 |
|
3825 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_0.py:2043 | |
3770 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2042 |
|
3826 | #: rhodecode/lib/dbmigrate/schema/db_4_4_0_1.py:2042 | |
@@ -3772,7 +3828,7 b' msgstr ""' | |||||
3772 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2046 |
|
3828 | #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2046 | |
3773 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2090 |
|
3829 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2090 | |
3774 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2091 |
|
3830 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2091 | |
3775 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2284 rhodecode/model/db.py:276 |
|
3831 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2284 rhodecode/model/db.py:2767 | |
3776 | msgid "No parent" |
|
3832 | msgid "No parent" | |
3777 | msgstr "" |
|
3833 | msgstr "" | |
3778 |
|
3834 | |||
@@ -3784,9 +3840,10 b' msgstr ""' | |||||
3784 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3025 |
|
3840 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3025 | |
3785 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3111 |
|
3841 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3111 | |
3786 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3117 |
|
3842 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3117 | |
|
3843 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3148 | |||
3787 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2354 |
|
3844 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2354 | |
3788 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2355 |
|
3845 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2355 | |
3789 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2555 rhodecode/model/db.py:314 |
|
3846 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2555 rhodecode/model/db.py:3149 | |
3790 | msgid "Password reset enabled" |
|
3847 | msgid "Password reset enabled" | |
3791 | msgstr "" |
|
3848 | msgstr "" | |
3792 |
|
3849 | |||
@@ -3798,9 +3855,10 b' msgstr ""' | |||||
3798 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3026 |
|
3855 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3026 | |
3799 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3112 |
|
3856 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3112 | |
3800 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3118 |
|
3857 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3118 | |
|
3858 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3149 | |||
3801 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2355 |
|
3859 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2355 | |
3802 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2356 |
|
3860 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2356 | |
3803 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2556 rhodecode/model/db.py:31 |
|
3861 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2556 rhodecode/model/db.py:3150 | |
3804 | msgid "Password reset hidden" |
|
3862 | msgid "Password reset hidden" | |
3805 | msgstr "" |
|
3863 | msgstr "" | |
3806 |
|
3864 | |||
@@ -3812,9 +3870,10 b' msgstr ""' | |||||
3812 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3027 |
|
3870 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3027 | |
3813 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3113 |
|
3871 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3113 | |
3814 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3119 |
|
3872 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3119 | |
|
3873 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3150 | |||
3815 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2356 |
|
3874 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:2356 | |
3816 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2357 |
|
3875 | #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:2357 | |
3817 |
#: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2557 rhodecode/model/db.py:315 |
|
3876 | #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:2557 rhodecode/model/db.py:3151 | |
3818 | msgid "Password reset disabled" |
|
3877 | msgid "Password reset disabled" | |
3819 | msgstr "" |
|
3878 | msgstr "" | |
3820 |
|
3879 | |||
@@ -3825,7 +3884,8 b' msgstr ""' | |||||
3825 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3002 |
|
3884 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3002 | |
3826 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3088 |
|
3885 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3088 | |
3827 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3094 |
|
3886 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3094 | |
3828 |
#: rhodecode/ |
|
3887 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3125 | |
|
3888 | #: rhodecode/model/db.py:3126 | |||
3829 | msgid "Branch no permissions" |
|
3889 | msgid "Branch no permissions" | |
3830 | msgstr "" |
|
3890 | msgstr "" | |
3831 |
|
3891 | |||
@@ -3836,7 +3896,8 b' msgstr ""' | |||||
3836 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3003 |
|
3896 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3003 | |
3837 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3089 |
|
3897 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3089 | |
3838 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3095 |
|
3898 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3095 | |
3839 |
#: rhodecode/ |
|
3899 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3126 | |
|
3900 | #: rhodecode/model/db.py:3127 | |||
3840 | msgid "Branch access by web merge" |
|
3901 | msgid "Branch access by web merge" | |
3841 | msgstr "" |
|
3902 | msgstr "" | |
3842 |
|
3903 | |||
@@ -3847,7 +3908,8 b' msgstr ""' | |||||
3847 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3004 |
|
3908 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3004 | |
3848 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3090 |
|
3909 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3090 | |
3849 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3096 |
|
3910 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3096 | |
3850 |
#: rhodecode/ |
|
3911 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3127 | |
|
3912 | #: rhodecode/model/db.py:3128 | |||
3851 | msgid "Branch access by push" |
|
3913 | msgid "Branch access by push" | |
3852 | msgstr "" |
|
3914 | msgstr "" | |
3853 |
|
3915 | |||
@@ -3858,16 +3920,48 b' msgstr ""' | |||||
3858 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3005 |
|
3920 | #: rhodecode/lib/dbmigrate/schema/db_4_18_0_1.py:3005 | |
3859 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3091 |
|
3921 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:3091 | |
3860 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3097 |
|
3922 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:3097 | |
3861 |
#: rhodecode/ |
|
3923 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:3128 | |
|
3924 | #: rhodecode/model/db.py:3129 | |||
3862 | msgid "Branch access by push with force" |
|
3925 | msgid "Branch access by push with force" | |
3863 | msgstr "" |
|
3926 | msgstr "" | |
3864 |
|
3927 | |||
3865 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1194 |
|
3928 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_0.py:1194 | |
3866 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1200 |
|
3929 | #: rhodecode/lib/dbmigrate/schema/db_4_19_0_2.py:1200 | |
3867 |
#: rhodecode/ |
|
3930 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1207 | |
|
3931 | #: rhodecode/model/db.py:1208 | |||
3868 | msgid "artifacts downloads" |
|
3932 | msgid "artifacts downloads" | |
3869 | msgstr "" |
|
3933 | msgstr "" | |
3870 |
|
3934 | |||
|
3935 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1213 | |||
|
3936 | #: rhodecode/model/db.py:1214 | |||
|
3937 | msgid "Token for all actions." | |||
|
3938 | msgstr "" | |||
|
3939 | ||||
|
3940 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1214 | |||
|
3941 | #: rhodecode/model/db.py:1215 | |||
|
3942 | msgid "Token to access RhodeCode pages via web interface without login using `api_access_controllers_whitelist` functionality." | |||
|
3943 | msgstr "" | |||
|
3944 | ||||
|
3945 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1216 | |||
|
3946 | #: rhodecode/model/db.py:1217 | |||
|
3947 | msgid "Token to interact over git/hg/svn protocols. Requires auth_token authentication plugin to be active. <br/>Such Token should be used then instead of a password to interact with a repository, and additionally can be limited to single repository using repo scope." | |||
|
3948 | msgstr "" | |||
|
3949 | ||||
|
3950 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1221 | |||
|
3951 | #: rhodecode/model/db.py:1222 | |||
|
3952 | msgid "Token limited to api calls." | |||
|
3953 | msgstr "" | |||
|
3954 | ||||
|
3955 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1222 | |||
|
3956 | #: rhodecode/model/db.py:1223 | |||
|
3957 | msgid "Token to read RSS/ATOM feed." | |||
|
3958 | msgstr "" | |||
|
3959 | ||||
|
3960 | #: rhodecode/lib/dbmigrate/schema/db_4_20_0_0.py:1223 | |||
|
3961 | #: rhodecode/model/db.py:1224 | |||
|
3962 | msgid "Token for artifacts downloads." | |||
|
3963 | msgstr "" | |||
|
3964 | ||||
3871 | #: rhodecode/lib/index/whoosh.py:189 |
|
3965 | #: rhodecode/lib/index/whoosh.py:189 | |
3872 | msgid "Index Type" |
|
3966 | msgid "Index Type" | |
3873 | msgstr "" |
|
3967 | msgstr "" | |
@@ -3888,51 +3982,51 b' msgstr ""' | |||||
3888 | msgid "Commit index" |
|
3982 | msgid "Commit index" | |
3889 | msgstr "" |
|
3983 | msgstr "" | |
3890 |
|
3984 | |||
3891 |
#: rhodecode/lib/vcs/backends/base.py:1 |
|
3985 | #: rhodecode/lib/vcs/backends/base.py:186 | |
3892 | msgid "This pull request can be automatically merged." |
|
3986 | msgid "This pull request can be automatically merged." | |
3893 | msgstr "" |
|
3987 | msgstr "" | |
3894 |
|
3988 | |||
3895 |
#: rhodecode/lib/vcs/backends/base.py:1 |
|
3989 | #: rhodecode/lib/vcs/backends/base.py:188 | |
3896 | msgid "This pull request cannot be merged because of an unhandled exception. {exception}" |
|
3990 | msgid "This pull request cannot be merged because of an unhandled exception. {exception}" | |
3897 | msgstr "" |
|
3991 | msgstr "" | |
3898 |
|
3992 | |||
3899 |
#: rhodecode/lib/vcs/backends/base.py:1 |
|
3993 | #: rhodecode/lib/vcs/backends/base.py:191 | |
3900 | msgid "This pull request cannot be merged because of merge conflicts. {unresolved_files}" |
|
3994 | msgid "This pull request cannot be merged because of merge conflicts. {unresolved_files}" | |
3901 | msgstr "" |
|
3995 | msgstr "" | |
3902 |
|
3996 | |||
3903 |
#: rhodecode/lib/vcs/backends/base.py:1 |
|
3997 | #: rhodecode/lib/vcs/backends/base.py:193 | |
3904 | msgid "This pull request could not be merged because push to target:`{target}@{merge_commit}` failed." |
|
3998 | msgid "This pull request could not be merged because push to target:`{target}@{merge_commit}` failed." | |
3905 | msgstr "" |
|
3999 | msgstr "" | |
3906 |
|
4000 | |||
3907 |
#: rhodecode/lib/vcs/backends/base.py:16 |
|
4001 | #: rhodecode/lib/vcs/backends/base.py:196 | |
3908 | msgid "This pull request cannot be merged because the target `{target_ref.name}` is not a head." |
|
4002 | msgid "This pull request cannot be merged because the target `{target_ref.name}` is not a head." | |
3909 | msgstr "" |
|
4003 | msgstr "" | |
3910 |
|
4004 | |||
3911 |
#: rhodecode/lib/vcs/backends/base.py:1 |
|
4005 | #: rhodecode/lib/vcs/backends/base.py:199 | |
3912 | msgid "This pull request cannot be merged because the source contains more branches than the target." |
|
4006 | msgid "This pull request cannot be merged because the source contains more branches than the target." | |
3913 | msgstr "" |
|
4007 | msgstr "" | |
3914 |
|
4008 | |||
3915 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4009 | #: rhodecode/lib/vcs/backends/base.py:202 | |
3916 | msgid "This pull request cannot be merged because the target `{target_ref.name}` has multiple heads: `{heads}`." |
|
4010 | msgid "This pull request cannot be merged because the target `{target_ref.name}` has multiple heads: `{heads}`." | |
3917 | msgstr "" |
|
4011 | msgstr "" | |
3918 |
|
4012 | |||
3919 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4013 | #: rhodecode/lib/vcs/backends/base.py:205 | |
3920 | msgid "This pull request cannot be merged because the target repository is locked by {locked_by}." |
|
4014 | msgid "This pull request cannot be merged because the target repository is locked by {locked_by}." | |
3921 | msgstr "" |
|
4015 | msgstr "" | |
3922 |
|
4016 | |||
3923 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4017 | #: rhodecode/lib/vcs/backends/base.py:209 | |
3924 | msgid "This pull request cannot be merged because the target reference `{target_ref.name}` is missing." |
|
4018 | msgid "This pull request cannot be merged because the target reference `{target_ref.name}` is missing." | |
3925 | msgstr "" |
|
4019 | msgstr "" | |
3926 |
|
4020 | |||
3927 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4021 | #: rhodecode/lib/vcs/backends/base.py:212 | |
3928 | msgid "This pull request cannot be merged because the source reference `{source_ref.name}` is missing." |
|
4022 | msgid "This pull request cannot be merged because the source reference `{source_ref.name}` is missing." | |
3929 | msgstr "" |
|
4023 | msgstr "" | |
3930 |
|
4024 | |||
3931 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4025 | #: rhodecode/lib/vcs/backends/base.py:215 | |
3932 | msgid "This pull request cannot be merged because of conflicts related to sub repositories." |
|
4026 | msgid "This pull request cannot be merged because of conflicts related to sub repositories." | |
3933 | msgstr "" |
|
4027 | msgstr "" | |
3934 |
|
4028 | |||
3935 |
#: rhodecode/lib/vcs/backends/base.py: |
|
4029 | #: rhodecode/lib/vcs/backends/base.py:220 | |
3936 | msgid "This pull request cannot be merged because the target or the source reference is missing." |
|
4030 | msgid "This pull request cannot be merged because the target or the source reference is missing." | |
3937 | msgstr "" |
|
4031 | msgstr "" | |
3938 |
|
4032 | |||
@@ -3952,38 +4046,6 b' msgstr ""' | |||||
3952 | msgid "1 month {end_date}" |
|
4046 | msgid "1 month {end_date}" | |
3953 | msgstr "" |
|
4047 | msgstr "" | |
3954 |
|
4048 | |||
3955 | #: rhodecode/model/comment.py:485 |
|
|||
3956 | msgid "made a comment" |
|
|||
3957 | msgstr "" |
|
|||
3958 |
|
||||
3959 | #: rhodecode/model/comment.py:486 |
|
|||
3960 | msgid "Show it now" |
|
|||
3961 | msgstr "" |
|
|||
3962 |
|
||||
3963 | #: rhodecode/model/db.py:1213 |
|
|||
3964 | msgid "Token for all actions." |
|
|||
3965 | msgstr "" |
|
|||
3966 |
|
||||
3967 | #: rhodecode/model/db.py:1214 |
|
|||
3968 | msgid "Token to access RhodeCode pages via web interface without login using `api_access_controllers_whitelist` functionality." |
|
|||
3969 | msgstr "" |
|
|||
3970 |
|
||||
3971 | #: rhodecode/model/db.py:1216 |
|
|||
3972 | msgid "Token to interact over git/hg/svn protocols. Requires auth_token authentication plugin to be active. <br/>Such Token should be used then instead of a password to interact with a repository, and additionally can be limited to single repository using repo scope." |
|
|||
3973 | msgstr "" |
|
|||
3974 |
|
||||
3975 | #: rhodecode/model/db.py:1221 |
|
|||
3976 | msgid "Token limited to api calls." |
|
|||
3977 | msgstr "" |
|
|||
3978 |
|
||||
3979 | #: rhodecode/model/db.py:1222 |
|
|||
3980 | msgid "Token to read RSS/ATOM feed." |
|
|||
3981 | msgstr "" |
|
|||
3982 |
|
||||
3983 | #: rhodecode/model/db.py:1223 |
|
|||
3984 | msgid "Token for artifacts downloads." |
|
|||
3985 | msgstr "" |
|
|||
3986 |
|
||||
3987 | #: rhodecode/model/forms.py:88 |
|
4049 | #: rhodecode/model/forms.py:88 | |
3988 | msgid "Please enter a login" |
|
4050 | msgid "Please enter a login" | |
3989 | msgstr "" |
|
4051 | msgstr "" | |
@@ -4094,8 +4156,8 b' msgstr ""' | |||||
4094 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:13 |
|
4156 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:13 | |
4095 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:13 |
|
4157 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:13 | |
4096 | #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:17 |
|
4158 | #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:17 | |
4097 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:3 |
|
4159 | #: rhodecode/templates/changeset/changeset_file_comment.mako:364 | |
4098 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
4160 | #: rhodecode/templates/changeset/changeset_file_comment.mako:415 | |
4099 | #: rhodecode/templates/data_table/_dt_elements.mako:450 |
|
4161 | #: rhodecode/templates/data_table/_dt_elements.mako:450 | |
4100 | msgid "Write" |
|
4162 | msgid "Write" | |
4101 | msgstr "" |
|
4163 | msgstr "" | |
@@ -4123,7 +4185,7 b' msgstr ""' | |||||
4123 | #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:18 |
|
4185 | #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:18 | |
4124 | #: rhodecode/templates/admin/users/user_add.mako:11 |
|
4186 | #: rhodecode/templates/admin/users/user_add.mako:11 | |
4125 | #: rhodecode/templates/admin/users/user_edit.mako:12 |
|
4187 | #: rhodecode/templates/admin/users/user_edit.mako:12 | |
4126 |
#: rhodecode/templates/base/base.mako:83 |
|
4188 | #: rhodecode/templates/base/base.mako:838 | |
4127 | msgid "Admin" |
|
4189 | msgid "Admin" | |
4128 | msgstr "" |
|
4190 | msgstr "" | |
4129 |
|
4191 | |||
@@ -4171,103 +4233,103 b' msgstr ""' | |||||
4171 | msgid "Disable password recovery" |
|
4233 | msgid "Disable password recovery" | |
4172 | msgstr "" |
|
4234 | msgstr "" | |
4173 |
|
4235 | |||
4174 |
#: rhodecode/model/pull_request.py:2 |
|
4236 | #: rhodecode/model/pull_request.py:245 | |
4175 | msgid "Pull request update successful." |
|
4237 | msgid "Pull request update successful." | |
4176 | msgstr "" |
|
4238 | msgstr "" | |
4177 |
|
4239 | |||
4178 |
#: rhodecode/model/pull_request.py:2 |
|
4240 | #: rhodecode/model/pull_request.py:247 | |
4179 | msgid "Pull request update failed because of an unknown error." |
|
4241 | msgid "Pull request update failed because of an unknown error." | |
4180 | msgstr "" |
|
4242 | msgstr "" | |
4181 |
|
4243 | |||
4182 |
#: rhodecode/model/pull_request.py:2 |
|
4244 | #: rhodecode/model/pull_request.py:249 | |
4183 | msgid "No update needed because the source and target have not changed." |
|
4245 | msgid "No update needed because the source and target have not changed." | |
4184 | msgstr "" |
|
4246 | msgstr "" | |
4185 |
|
4247 | |||
4186 |
#: rhodecode/model/pull_request.py:2 |
|
4248 | #: rhodecode/model/pull_request.py:251 | |
4187 | msgid "Pull request cannot be updated because the reference type is not supported for an update. Only Branch, Tag or Bookmark is allowed." |
|
4249 | msgid "Pull request cannot be updated because the reference type is not supported for an update. Only Branch, Tag or Bookmark is allowed." | |
4188 | msgstr "" |
|
4250 | msgstr "" | |
4189 |
|
4251 | |||
4190 |
#: rhodecode/model/pull_request.py:2 |
|
4252 | #: rhodecode/model/pull_request.py:254 | |
4191 | msgid "This pull request cannot be updated because the target reference is missing." |
|
4253 | msgid "This pull request cannot be updated because the target reference is missing." | |
4192 | msgstr "" |
|
4254 | msgstr "" | |
4193 |
|
4255 | |||
4194 |
#: rhodecode/model/pull_request.py:2 |
|
4256 | #: rhodecode/model/pull_request.py:257 | |
4195 | msgid "This pull request cannot be updated because the source reference is missing." |
|
4257 | msgid "This pull request cannot be updated because the source reference is missing." | |
4196 | msgstr "" |
|
4258 | msgstr "" | |
4197 |
|
4259 | |||
4198 |
#: rhodecode/model/pull_request.py:1 |
|
4260 | #: rhodecode/model/pull_request.py:1681 | |
4199 | msgid "Server-side pull request merging is disabled." |
|
4261 | msgid "Server-side pull request merging is disabled." | |
4200 | msgstr "" |
|
4262 | msgstr "" | |
4201 |
|
4263 | |||
4202 |
#: rhodecode/model/pull_request.py:1 |
|
4264 | #: rhodecode/model/pull_request.py:1684 | |
4203 | msgid "This pull request is closed." |
|
4265 | msgid "This pull request is closed." | |
4204 | msgstr "" |
|
4266 | msgstr "" | |
4205 |
|
4267 | |||
4206 |
#: rhodecode/model/pull_request.py:1 |
|
4268 | #: rhodecode/model/pull_request.py:1698 | |
4207 | msgid "Pull request merging is not supported." |
|
4269 | msgid "Pull request merging is not supported." | |
4208 | msgstr "" |
|
4270 | msgstr "" | |
4209 |
|
4271 | |||
4210 |
#: rhodecode/model/pull_request.py:1 |
|
4272 | #: rhodecode/model/pull_request.py:1715 | |
4211 | msgid "Target repository large files support is disabled." |
|
4273 | msgid "Target repository large files support is disabled." | |
4212 | msgstr "" |
|
4274 | msgstr "" | |
4213 |
|
4275 | |||
4214 |
#: rhodecode/model/pull_request.py:1 |
|
4276 | #: rhodecode/model/pull_request.py:1718 | |
4215 | msgid "Source repository large files support is disabled." |
|
4277 | msgid "Source repository large files support is disabled." | |
4216 | msgstr "" |
|
4278 | msgstr "" | |
4217 |
|
4279 | |||
4218 |
#: rhodecode/model/pull_request.py:1 |
|
4280 | #: rhodecode/model/pull_request.py:1902 rhodecode/model/scm.py:1004 | |
4219 | #: rhodecode/templates/admin/my_account/my_account.mako:32 |
|
4281 | #: rhodecode/templates/admin/my_account/my_account.mako:32 | |
4220 |
#: rhodecode/templates/base/base.mako:63 |
|
4282 | #: rhodecode/templates/base/base.mako:638 | |
4221 | #: rhodecode/templates/summary/components.mako:46 |
|
4283 | #: rhodecode/templates/summary/components.mako:46 | |
4222 | msgid "Bookmarks" |
|
4284 | msgid "Bookmarks" | |
4223 | msgstr "" |
|
4285 | msgstr "" | |
4224 |
|
4286 | |||
4225 |
#: rhodecode/model/pull_request.py:17 |
|
4287 | #: rhodecode/model/pull_request.py:1907 | |
4226 | msgid "Commit IDs" |
|
4288 | msgid "Commit IDs" | |
4227 | msgstr "" |
|
4289 | msgstr "" | |
4228 |
|
4290 | |||
4229 |
#: rhodecode/model/pull_request.py:1 |
|
4291 | #: rhodecode/model/pull_request.py:1910 | |
4230 | #: rhodecode/templates/summary/components.mako:22 |
|
4292 | #: rhodecode/templates/summary/components.mako:22 | |
4231 | msgid "Closed Branches" |
|
4293 | msgid "Closed Branches" | |
4232 | msgstr "" |
|
4294 | msgstr "" | |
4233 |
|
4295 | |||
4234 |
#: rhodecode/model/pull_request.py: |
|
4296 | #: rhodecode/model/pull_request.py:2094 | |
4235 | msgid "WIP marker in title prevents from accidental merge." |
|
4297 | msgid "WIP marker in title prevents from accidental merge." | |
4236 | msgstr "" |
|
4298 | msgstr "" | |
4237 |
|
4299 | |||
4238 |
#: rhodecode/model/pull_request.py: |
|
4300 | #: rhodecode/model/pull_request.py:2104 | |
4239 | msgid "User `{}` not allowed to perform merge." |
|
4301 | msgid "User `{}` not allowed to perform merge." | |
4240 | msgstr "" |
|
4302 | msgstr "" | |
4241 |
|
4303 | |||
4242 |
#: rhodecode/model/pull_request.py: |
|
4304 | #: rhodecode/model/pull_request.py:2122 | |
4243 | msgid "Target branch `{}` changes rejected by rule {}." |
|
4305 | msgid "Target branch `{}` changes rejected by rule {}." | |
4244 | msgstr "" |
|
4306 | msgstr "" | |
4245 |
|
4307 | |||
4246 |
#: rhodecode/model/pull_request.py: |
|
4308 | #: rhodecode/model/pull_request.py:2136 | |
4247 | msgid "Pull request reviewer approval is pending." |
|
4309 | msgid "Pull request reviewer approval is pending." | |
4248 | msgstr "" |
|
4310 | msgstr "" | |
4249 |
|
4311 | |||
4250 |
#: rhodecode/model/pull_request.py:1 |
|
4312 | #: rhodecode/model/pull_request.py:2150 | |
4251 | msgid "Cannot merge, {} TODO still not resolved." |
|
4313 | msgid "Cannot merge, {} TODO still not resolved." | |
4252 | msgstr "" |
|
4314 | msgstr "" | |
4253 |
|
4315 | |||
4254 |
#: rhodecode/model/pull_request.py: |
|
4316 | #: rhodecode/model/pull_request.py:2153 | |
4255 | msgid "Cannot merge, {} TODOs still not resolved." |
|
4317 | msgid "Cannot merge, {} TODOs still not resolved." | |
4256 | msgstr "" |
|
4318 | msgstr "" | |
4257 |
|
4319 | |||
4258 |
#: rhodecode/model/pull_request.py:2 |
|
4320 | #: rhodecode/model/pull_request.py:2208 | |
4259 | msgid "Merge strategy: rebase" |
|
4321 | msgid "Merge strategy: rebase" | |
4260 | msgstr "" |
|
4322 | msgstr "" | |
4261 |
|
4323 | |||
4262 |
#: rhodecode/model/pull_request.py:2 |
|
4324 | #: rhodecode/model/pull_request.py:2213 | |
4263 | msgid "Merge strategy: explicit merge commit" |
|
4325 | msgid "Merge strategy: explicit merge commit" | |
4264 | msgstr "" |
|
4326 | msgstr "" | |
4265 |
|
4327 | |||
4266 |
#: rhodecode/model/pull_request.py:2 |
|
4328 | #: rhodecode/model/pull_request.py:2221 | |
4267 | msgid "Source branch will be closed before the merge." |
|
4329 | msgid "Source branch will be closed before the merge." | |
4268 | msgstr "" |
|
4330 | msgstr "" | |
4269 |
|
4331 | |||
4270 |
#: rhodecode/model/pull_request.py:2 |
|
4332 | #: rhodecode/model/pull_request.py:2223 | |
4271 | msgid "Source branch will be deleted after the merge." |
|
4333 | msgid "Source branch will be deleted after the merge." | |
4272 | msgstr "" |
|
4334 | msgstr "" | |
4273 |
|
4335 | |||
@@ -4613,222 +4675,222 b' msgid ": , "' | |||||
4613 | msgstr "" |
|
4675 | msgstr "" | |
4614 |
|
4676 | |||
4615 | #: rhodecode/public/js/scripts.js:20822 rhodecode/public/js/scripts.min.js:1 |
|
4677 | #: rhodecode/public/js/scripts.js:20822 rhodecode/public/js/scripts.min.js:1 | |
4616 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4678 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:64 | |
4617 | #: rhodecode/public/js/src/plugins/jquery.autocomplete.js:87 |
|
4679 | #: rhodecode/public/js/src/plugins/jquery.autocomplete.js:87 | |
4618 | msgid "No results" |
|
4680 | msgid "No results" | |
4619 | msgstr "" |
|
4681 | msgstr "" | |
4620 |
|
4682 | |||
4621 | #: rhodecode/public/js/scripts.js:22547 rhodecode/public/js/scripts.min.js:1 |
|
4683 | #: rhodecode/public/js/scripts.js:22547 rhodecode/public/js/scripts.min.js:1 | |
4622 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4684 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:170 | |
4623 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:109 |
|
4685 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:109 | |
4624 | msgid "{0} year" |
|
4686 | msgid "{0} year" | |
4625 | msgstr "" |
|
4687 | msgstr "" | |
4626 |
|
4688 | |||
4627 | #: rhodecode/public/js/scripts.js:22548 rhodecode/public/js/scripts.min.js:1 |
|
4689 | #: rhodecode/public/js/scripts.js:22548 rhodecode/public/js/scripts.min.js:1 | |
4628 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4690 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:158 | |
4629 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:110 |
|
4691 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:110 | |
4630 | msgid "{0} month" |
|
4692 | msgid "{0} month" | |
4631 | msgstr "" |
|
4693 | msgstr "" | |
4632 |
|
4694 | |||
4633 | #: rhodecode/public/js/scripts.js:22549 rhodecode/public/js/scripts.min.js:1 |
|
4695 | #: rhodecode/public/js/scripts.js:22549 rhodecode/public/js/scripts.min.js:1 | |
4634 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4696 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:153 | |
4635 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:111 |
|
4697 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:111 | |
4636 | msgid "{0} day" |
|
4698 | msgid "{0} day" | |
4637 | msgstr "" |
|
4699 | msgstr "" | |
4638 |
|
4700 | |||
4639 | #: rhodecode/public/js/scripts.js:22550 rhodecode/public/js/scripts.min.js:1 |
|
4701 | #: rhodecode/public/js/scripts.js:22550 rhodecode/public/js/scripts.min.js:1 | |
4640 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4702 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:155 | |
4641 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:112 |
|
4703 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:112 | |
4642 | msgid "{0} hour" |
|
4704 | msgid "{0} hour" | |
4643 | msgstr "" |
|
4705 | msgstr "" | |
4644 |
|
4706 | |||
4645 | #: rhodecode/public/js/scripts.js:22551 rhodecode/public/js/scripts.min.js:1 |
|
4707 | #: rhodecode/public/js/scripts.js:22551 rhodecode/public/js/scripts.min.js:1 | |
4646 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4708 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:157 | |
4647 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:113 |
|
4709 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:113 | |
4648 | msgid "{0} min" |
|
4710 | msgid "{0} min" | |
4649 | msgstr "" |
|
4711 | msgstr "" | |
4650 |
|
4712 | |||
4651 | #: rhodecode/public/js/scripts.js:22552 rhodecode/public/js/scripts.min.js:1 |
|
4713 | #: rhodecode/public/js/scripts.js:22552 rhodecode/public/js/scripts.min.js:1 | |
4652 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4714 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:167 | |
4653 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:114 |
|
4715 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:114 | |
4654 | msgid "{0} sec" |
|
4716 | msgid "{0} sec" | |
4655 | msgstr "" |
|
4717 | msgstr "" | |
4656 |
|
4718 | |||
4657 | #: rhodecode/public/js/scripts.js:22572 rhodecode/public/js/scripts.min.js:1 |
|
4719 | #: rhodecode/public/js/scripts.js:22572 rhodecode/public/js/scripts.min.js:1 | |
4658 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4720 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:133 | |
4659 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:134 |
|
4721 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:134 | |
4660 | msgid "in {0}" |
|
4722 | msgid "in {0}" | |
4661 | msgstr "" |
|
4723 | msgstr "" | |
4662 |
|
4724 | |||
4663 | #: rhodecode/public/js/scripts.js:22580 rhodecode/public/js/scripts.min.js:1 |
|
4725 | #: rhodecode/public/js/scripts.js:22580 rhodecode/public/js/scripts.min.js:1 | |
4664 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4726 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:150 | |
4665 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:142 |
|
4727 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:142 | |
4666 | msgid "{0} ago" |
|
4728 | msgid "{0} ago" | |
4667 | msgstr "" |
|
4729 | msgstr "" | |
4668 |
|
4730 | |||
4669 | #: rhodecode/public/js/scripts.js:22592 rhodecode/public/js/scripts.min.js:1 |
|
4731 | #: rhodecode/public/js/scripts.js:22592 rhodecode/public/js/scripts.min.js:1 | |
4670 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4732 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:172 | |
4671 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:154 |
|
4733 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:154 | |
4672 | msgid "{0}, {1} ago" |
|
4734 | msgid "{0}, {1} ago" | |
4673 | msgstr "" |
|
4735 | msgstr "" | |
4674 |
|
4736 | |||
4675 | #: rhodecode/public/js/scripts.js:22594 rhodecode/public/js/scripts.min.js:1 |
|
4737 | #: rhodecode/public/js/scripts.js:22594 rhodecode/public/js/scripts.min.js:1 | |
4676 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4738 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:135 | |
4677 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:156 |
|
4739 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:156 | |
4678 | msgid "in {0}, {1}" |
|
4740 | msgid "in {0}, {1}" | |
4679 | msgstr "" |
|
4741 | msgstr "" | |
4680 |
|
4742 | |||
4681 | #: rhodecode/public/js/scripts.js:22598 rhodecode/public/js/scripts.min.js:1 |
|
4743 | #: rhodecode/public/js/scripts.js:22598 rhodecode/public/js/scripts.min.js:1 | |
4682 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4744 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:151 | |
4683 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:160 |
|
4745 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:160 | |
4684 | msgid "{0} and {1}" |
|
4746 | msgid "{0} and {1}" | |
4685 | msgstr "" |
|
4747 | msgstr "" | |
4686 |
|
4748 | |||
4687 | #: rhodecode/public/js/scripts.js:22600 rhodecode/public/js/scripts.min.js:1 |
|
4749 | #: rhodecode/public/js/scripts.js:22600 rhodecode/public/js/scripts.min.js:1 | |
4688 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4750 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:152 | |
4689 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:162 |
|
4751 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:162 | |
4690 | msgid "{0} and {1} ago" |
|
4752 | msgid "{0} and {1} ago" | |
4691 | msgstr "" |
|
4753 | msgstr "" | |
4692 |
|
4754 | |||
4693 | #: rhodecode/public/js/scripts.js:22602 rhodecode/public/js/scripts.min.js:1 |
|
4755 | #: rhodecode/public/js/scripts.js:22602 rhodecode/public/js/scripts.min.js:1 | |
4694 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4756 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:134 | |
4695 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:164 |
|
4757 | #: rhodecode/public/js/src/plugins/jquery.timeago-extension.js:164 | |
4696 | msgid "in {0} and {1}" |
|
4758 | msgid "in {0} and {1}" | |
4697 | msgstr "" |
|
4759 | msgstr "" | |
4698 |
|
4760 | |||
4699 | #: rhodecode/public/js/scripts.js:37600 rhodecode/public/js/scripts.min.js:1 |
|
4761 | #: rhodecode/public/js/scripts.js:37600 rhodecode/public/js/scripts.min.js:1 | |
4700 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4762 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:51 | |
4701 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:4 |
|
4763 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:4 | |
4702 | msgid "Loading more results..." |
|
4764 | msgid "Loading more results..." | |
4703 | msgstr "" |
|
4765 | msgstr "" | |
4704 |
|
4766 | |||
4705 | #: rhodecode/public/js/scripts.js:37603 rhodecode/public/js/scripts.min.js:1 |
|
4767 | #: rhodecode/public/js/scripts.js:37603 rhodecode/public/js/scripts.min.js:1 | |
4706 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4768 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:82 | |
4707 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:7 |
|
4769 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:7 | |
4708 | msgid "Searching..." |
|
4770 | msgid "Searching..." | |
4709 | msgstr "" |
|
4771 | msgstr "" | |
4710 |
|
4772 | |||
4711 | #: rhodecode/public/js/scripts.js:37606 rhodecode/public/js/scripts.min.js:1 |
|
4773 | #: rhodecode/public/js/scripts.js:37606 rhodecode/public/js/scripts.min.js:1 | |
4712 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:5 |
|
4774 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:57 | |
4713 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:10 |
|
4775 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:10 | |
4714 | msgid "No matches found" |
|
4776 | msgid "No matches found" | |
4715 | msgstr "" |
|
4777 | msgstr "" | |
4716 |
|
4778 | |||
4717 | #: rhodecode/public/js/scripts.js:37609 rhodecode/public/js/scripts.min.js:1 |
|
4779 | #: rhodecode/public/js/scripts.js:37609 rhodecode/public/js/scripts.min.js:1 | |
4718 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4780 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:50 | |
4719 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:13 |
|
4781 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:13 | |
4720 | msgid "Loading failed" |
|
4782 | msgid "Loading failed" | |
4721 | msgstr "" |
|
4783 | msgstr "" | |
4722 |
|
4784 | |||
4723 | #: rhodecode/public/js/scripts.js:37613 rhodecode/public/js/scripts.min.js:1 |
|
4785 | #: rhodecode/public/js/scripts.js:37613 rhodecode/public/js/scripts.min.js:1 | |
4724 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4786 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:72 | |
4725 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:17 |
|
4787 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:17 | |
4726 | msgid "One result is available, press enter to select it." |
|
4788 | msgid "One result is available, press enter to select it." | |
4727 | msgstr "" |
|
4789 | msgstr "" | |
4728 |
|
4790 | |||
4729 | #: rhodecode/public/js/scripts.js:37615 rhodecode/public/js/scripts.min.js:1 |
|
4791 | #: rhodecode/public/js/scripts.js:37615 rhodecode/public/js/scripts.min.js:1 | |
4730 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4792 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:166 | |
4731 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:19 |
|
4793 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:19 | |
4732 | msgid "{0} results are available, use up and down arrow keys to navigate." |
|
4794 | msgid "{0} results are available, use up and down arrow keys to navigate." | |
4733 | msgstr "" |
|
4795 | msgstr "" | |
4734 |
|
4796 | |||
4735 | #: rhodecode/public/js/scripts.js:37620 rhodecode/public/js/scripts.min.js:1 |
|
4797 | #: rhodecode/public/js/scripts.js:37620 rhodecode/public/js/scripts.min.js:1 | |
4736 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:7 |
|
4798 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:77 | |
4737 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:24 |
|
4799 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:24 | |
4738 | msgid "Please enter {0} or more character" |
|
4800 | msgid "Please enter {0} or more character" | |
4739 | msgstr "" |
|
4801 | msgstr "" | |
4740 |
|
4802 | |||
4741 | #: rhodecode/public/js/scripts.js:37622 rhodecode/public/js/scripts.min.js:1 |
|
4803 | #: rhodecode/public/js/scripts.js:37622 rhodecode/public/js/scripts.min.js:1 | |
4742 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:7 |
|
4804 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:78 | |
4743 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:26 |
|
4805 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:26 | |
4744 | msgid "Please enter {0} or more characters" |
|
4806 | msgid "Please enter {0} or more characters" | |
4745 | msgstr "" |
|
4807 | msgstr "" | |
4746 |
|
4808 | |||
4747 | #: rhodecode/public/js/scripts.js:37627 rhodecode/public/js/scripts.min.js:1 |
|
4809 | #: rhodecode/public/js/scripts.js:37627 rhodecode/public/js/scripts.min.js:1 | |
4748 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4810 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:75 | |
4749 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:31 |
|
4811 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:31 | |
4750 | msgid "Please delete {0} character" |
|
4812 | msgid "Please delete {0} character" | |
4751 | msgstr "" |
|
4813 | msgstr "" | |
4752 |
|
4814 | |||
4753 | #: rhodecode/public/js/scripts.js:37629 rhodecode/public/js/scripts.min.js:1 |
|
4815 | #: rhodecode/public/js/scripts.js:37629 rhodecode/public/js/scripts.min.js:1 | |
4754 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:7 |
|
4816 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:76 | |
4755 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:33 |
|
4817 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:33 | |
4756 | msgid "Please delete {0} characters" |
|
4818 | msgid "Please delete {0} characters" | |
4757 | msgstr "" |
|
4819 | msgstr "" | |
4758 |
|
4820 | |||
4759 | #: rhodecode/public/js/scripts.js:37633 rhodecode/public/js/scripts.min.js:1 |
|
4821 | #: rhodecode/public/js/scripts.js:37633 rhodecode/public/js/scripts.min.js:1 | |
4760 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4822 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:123 | |
4761 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:37 |
|
4823 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:37 | |
4762 | msgid "You can only select {0} item" |
|
4824 | msgid "You can only select {0} item" | |
4763 | msgstr "" |
|
4825 | msgstr "" | |
4764 |
|
4826 | |||
4765 | #: rhodecode/public/js/scripts.js:37635 rhodecode/public/js/scripts.min.js:1 |
|
4827 | #: rhodecode/public/js/scripts.js:37635 rhodecode/public/js/scripts.min.js:1 | |
4766 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4828 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:124 | |
4767 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:39 |
|
4829 | #: rhodecode/public/js/rhodecode/i18n/select2/translations.js:39 | |
4768 | msgid "You can only select {0} items" |
|
4830 | msgid "You can only select {0} items" | |
4769 | msgstr "" |
|
4831 | msgstr "" | |
4770 |
|
4832 | |||
4771 |
#: rhodecode/public/js/scripts.js:3828 |
|
4833 | #: rhodecode/public/js/scripts.js:38289 rhodecode/public/js/scripts.min.js:1 | |
4772 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4834 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:9 | |
4773 |
#: rhodecode/public/js/src/rhodecode/utils/ajax.js:13 |
|
4835 | #: rhodecode/public/js/src/rhodecode/utils/ajax.js:139 | |
4774 | msgid "Ajax Request Error" |
|
4836 | msgid "Ajax Request Error" | |
4775 | msgstr "" |
|
4837 | msgstr "" | |
4776 |
|
4838 | |||
4777 |
#: rhodecode/public/js/scripts.js:386 |
|
4839 | #: rhodecode/public/js/scripts.js:38691 rhodecode/public/js/scripts.min.js:1 | |
4778 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4840 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:142 | |
4779 | #: rhodecode/public/js/src/rhodecode/changelog.js:35 |
|
4841 | #: rhodecode/public/js/src/rhodecode/changelog.js:35 | |
4780 | msgid "showing {0} out of {1} commit" |
|
4842 | msgid "showing {0} out of {1} commit" | |
4781 | msgstr "" |
|
4843 | msgstr "" | |
4782 |
|
4844 | |||
4783 |
#: rhodecode/public/js/scripts.js:386 |
|
4845 | #: rhodecode/public/js/scripts.js:38693 rhodecode/public/js/scripts.min.js:1 | |
4784 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4846 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:143 | |
4785 | #: rhodecode/public/js/src/rhodecode/changelog.js:37 |
|
4847 | #: rhodecode/public/js/src/rhodecode/changelog.js:37 | |
4786 | msgid "showing {0} out of {1} commits" |
|
4848 | msgid "showing {0} out of {1} commits" | |
4787 | msgstr "" |
|
4849 | msgstr "" | |
4788 |
|
4850 | |||
4789 |
#: rhodecode/public/js/scripts.js:3922 |
|
4851 | #: rhodecode/public/js/scripts.js:39232 rhodecode/public/js/scripts.min.js:1 | |
4790 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4852 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:85 | |
4791 | #: rhodecode/public/js/src/rhodecode/codemirror.js:363 |
|
4853 | #: rhodecode/public/js/src/rhodecode/codemirror.js:363 | |
4792 | msgid "Set status to Approved" |
|
4854 | msgid "Set status to Approved" | |
4793 | msgstr "" |
|
4855 | msgstr "" | |
4794 |
|
4856 | |||
4795 |
#: rhodecode/public/js/scripts.js:392 |
|
4857 | #: rhodecode/public/js/scripts.js:39252 rhodecode/public/js/scripts.min.js:1 | |
4796 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:8 |
|
4858 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:86 | |
4797 | #: rhodecode/public/js/src/rhodecode/codemirror.js:383 |
|
4859 | #: rhodecode/public/js/src/rhodecode/codemirror.js:383 | |
4798 | msgid "Set status to Rejected" |
|
4860 | msgid "Set status to Rejected" | |
4799 | msgstr "" |
|
4861 | msgstr "" | |
4800 |
|
4862 | |||
4801 |
#: rhodecode/public/js/scripts.js:392 |
|
4863 | #: rhodecode/public/js/scripts.js:39271 rhodecode/public/js/scripts.min.js:1 | |
4802 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4864 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:106 | |
4803 | #: rhodecode/public/js/src/rhodecode/codemirror.js:402 |
|
4865 | #: rhodecode/public/js/src/rhodecode/codemirror.js:402 | |
4804 | msgid "TODO comment" |
|
4866 | msgid "TODO comment" | |
4805 | msgstr "" |
|
4867 | msgstr "" | |
4806 |
|
4868 | |||
4807 |
#: rhodecode/public/js/scripts.js:392 |
|
4869 | #: rhodecode/public/js/scripts.js:39291 rhodecode/public/js/scripts.min.js:1 | |
4808 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4870 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:71 | |
4809 | #: rhodecode/public/js/src/rhodecode/codemirror.js:422 |
|
4871 | #: rhodecode/public/js/src/rhodecode/codemirror.js:422 | |
4810 | msgid "Note Comment" |
|
4872 | msgid "Note Comment" | |
4811 | msgstr "" |
|
4873 | msgstr "" | |
4812 |
|
4874 | |||
4813 |
#: rhodecode/public/js/scripts.js:395 |
|
4875 | #: rhodecode/public/js/scripts.js:39592 rhodecode/public/js/scripts.js:39967 | |
4814 | #: rhodecode/public/js/scripts.min.js:1 |
|
4876 | #: rhodecode/public/js/scripts.min.js:1 | |
4815 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:9 |
|
4877 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:99 | |
4816 | #: rhodecode/public/js/src/rhodecode/codemirror.js:723 |
|
4878 | #: rhodecode/public/js/src/rhodecode/codemirror.js:723 | |
4817 | #: rhodecode/public/js/src/rhodecode/comments.js:254 |
|
4879 | #: rhodecode/public/js/src/rhodecode/comments.js:254 | |
4818 | msgid "Status Review" |
|
4880 | msgid "Status Review" | |
4819 | msgstr "" |
|
4881 | msgstr "" | |
4820 |
|
4882 | |||
4821 |
#: rhodecode/public/js/scripts.js:3960 |
|
4883 | #: rhodecode/public/js/scripts.js:39607 rhodecode/public/js/scripts.js:39982 | |
4822 | #: rhodecode/public/js/scripts.min.js:1 |
|
4884 | #: rhodecode/public/js/scripts.min.js:1 | |
4823 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:2 |
|
4885 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:24 | |
4824 | #: rhodecode/public/js/src/rhodecode/codemirror.js:738 |
|
4886 | #: rhodecode/public/js/src/rhodecode/codemirror.js:738 | |
4825 | #: rhodecode/public/js/src/rhodecode/comments.js:269 |
|
4887 | #: rhodecode/public/js/src/rhodecode/comments.js:269 | |
4826 | msgid "Comment text will be set automatically based on currently selected status ({0}) ..." |
|
4888 | msgid "Comment text will be set automatically based on currently selected status ({0}) ..." | |
4827 | msgstr "" |
|
4889 | msgstr "" | |
4828 |
|
4890 | |||
4829 |
#: rhodecode/public/js/scripts.js:3968 |
|
4891 | #: rhodecode/public/js/scripts.js:39688 rhodecode/public/js/scripts.js:40177 | |
4830 |
#: rhodecode/public/js/scripts.js:41 |
|
4892 | #: rhodecode/public/js/scripts.js:41535 rhodecode/public/js/scripts.min.js:1 | |
4831 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 |
|
4893 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:48 | |
4832 | #: rhodecode/public/js/src/rhodecode/codemirror.js:819 |
|
4894 | #: rhodecode/public/js/src/rhodecode/codemirror.js:819 | |
4833 | #: rhodecode/public/js/src/rhodecode/comments.js:464 |
|
4895 | #: rhodecode/public/js/src/rhodecode/comments.js:464 | |
4834 | #: rhodecode/public/js/src/rhodecode/files.js:499 |
|
4896 | #: rhodecode/public/js/src/rhodecode/files.js:499 | |
@@ -4836,263 +4898,270 b' msgstr ""' | |||||
4836 | msgid "Loading ..." |
|
4898 | msgid "Loading ..." | |
4837 | msgstr "" |
|
4899 | msgstr "" | |
4838 |
|
4900 | |||
4839 |
#: rhodecode/public/js/scripts.js:3984 |
|
4901 | #: rhodecode/public/js/scripts.js:39849 rhodecode/public/js/scripts.min.js:1 | |
|
4902 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:117 | |||
4840 | #: rhodecode/public/js/src/rhodecode/comments.js:136 |
|
4903 | #: rhodecode/public/js/src/rhodecode/comments.js:136 | |
4841 | msgid "Updated Comment" |
|
4904 | msgid "Updated Comment" | |
4842 | msgstr "" |
|
4905 | msgstr "" | |
4843 |
|
4906 | |||
4844 |
#: rhodecode/public/js/scripts.js:398 |
|
4907 | #: rhodecode/public/js/scripts.js:39873 rhodecode/public/js/scripts.min.js:1 | |
4845 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4908 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:141 | |
4846 | #: rhodecode/public/js/src/rhodecode/comments.js:160 |
|
4909 | #: rhodecode/public/js/src/rhodecode/comments.js:160 | |
4847 | msgid "resolve comment" |
|
4910 | msgid "resolve comment" | |
4848 | msgstr "" |
|
4911 | msgstr "" | |
4849 |
|
4912 | |||
4850 |
#: rhodecode/public/js/scripts.js:4012 |
|
4913 | #: rhodecode/public/js/scripts.js:40126 rhodecode/public/js/scripts.min.js:1 | |
4851 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4914 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:102 | |
4852 | #: rhodecode/public/js/src/rhodecode/comments.js:413 |
|
4915 | #: rhodecode/public/js/src/rhodecode/comments.js:413 | |
4853 | msgid "Submitting..." |
|
4916 | msgid "Submitting..." | |
4854 | msgstr "" |
|
4917 | msgstr "" | |
4855 |
|
4918 | |||
4856 |
#: rhodecode/public/js/scripts.js:404 |
|
4919 | #: rhodecode/public/js/scripts.js:40423 rhodecode/public/js/scripts.min.js:1 | |
4857 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4920 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:122 | |
4858 |
#: rhodecode/public/js/src/rhodecode/comments.js: |
|
4921 | #: rhodecode/public/js/src/rhodecode/comments.js:710 | |
4859 | msgid "Yes, delete comment #{0}!" |
|
4922 | msgid "Yes, delete comment #{0}!" | |
4860 | msgstr "" |
|
4923 | msgstr "" | |
4861 |
|
4924 | |||
4862 |
#: rhodecode/public/js/scripts.js:404 |
|
4925 | #: rhodecode/public/js/scripts.js:40487 rhodecode/public/js/scripts.min.js:1 | |
4863 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 |
|
4926 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:46 | |
4864 |
#: rhodecode/public/js/src/rhodecode/comments.js:7 |
|
4927 | #: rhodecode/public/js/src/rhodecode/comments.js:774 | |
4865 | msgid "Leave a resolution comment, or click resolve button to resolve TODO comment #{0}" |
|
4928 | msgid "Leave a resolution comment, or click resolve button to resolve TODO comment #{0}" | |
4866 | msgstr "" |
|
4929 | msgstr "" | |
4867 |
|
4930 | |||
4868 |
#: rhodecode/public/js/scripts.js:4066 |
|
4931 | #: rhodecode/public/js/scripts.js:40696 rhodecode/public/js/scripts.min.js:1 | |
4869 |
#: rhodecode/public/js/ |
|
4932 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:23 | |
|
4933 | #: rhodecode/public/js/src/rhodecode/comments.js:983 | |||
4870 | msgid "Comment body was not changed." |
|
4934 | msgid "Comment body was not changed." | |
4871 | msgstr "" |
|
4935 | msgstr "" | |
4872 |
|
4936 | |||
4873 |
#: rhodecode/public/js/scripts.js:408 |
|
4937 | #: rhodecode/public/js/scripts.js:40875 rhodecode/public/js/scripts.min.js:1 | |
4874 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4938 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:44 | |
4875 |
#: rhodecode/public/js/src/rhodecode/comments.js:11 |
|
4939 | #: rhodecode/public/js/src/rhodecode/comments.js:1162 | |
4876 | msgid "Leave a comment on line {0}." |
|
4940 | msgid "Leave a comment on line {0}." | |
4877 | msgstr "" |
|
4941 | msgstr "" | |
4878 |
|
4942 | |||
4879 |
#: rhodecode/public/js/scripts.js:4 |
|
4943 | #: rhodecode/public/js/scripts.js:41006 rhodecode/public/js/scripts.min.js:1 | |
4880 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:10 |
|
4944 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:107 | |
4881 |
#: rhodecode/public/js/src/rhodecode/comments.js:12 |
|
4945 | #: rhodecode/public/js/src/rhodecode/comments.js:1293 | |
4882 | msgid "TODO from comment {0} was fixed." |
|
4946 | msgid "TODO from comment {0} was fixed." | |
4883 | msgstr "" |
|
4947 | msgstr "" | |
4884 |
|
4948 | |||
4885 |
#: rhodecode/public/js/scripts.js:412 |
|
4949 | #: rhodecode/public/js/scripts.js:41284 rhodecode/public/js/scripts.min.js:1 | |
4886 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4950 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:145 | |
4887 | #: rhodecode/public/js/src/rhodecode/files.js:248 |
|
4951 | #: rhodecode/public/js/src/rhodecode/files.js:248 | |
4888 | msgid "truncated result" |
|
4952 | msgid "truncated result" | |
4889 | msgstr "" |
|
4953 | msgstr "" | |
4890 |
|
4954 | |||
4891 |
#: rhodecode/public/js/scripts.js:412 |
|
4955 | #: rhodecode/public/js/scripts.js:41286 rhodecode/public/js/scripts.min.js:1 | |
4892 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4956 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:146 | |
4893 | #: rhodecode/public/js/src/rhodecode/files.js:250 |
|
4957 | #: rhodecode/public/js/src/rhodecode/files.js:250 | |
4894 | msgid "truncated results" |
|
4958 | msgid "truncated results" | |
4895 | msgstr "" |
|
4959 | msgstr "" | |
4896 |
|
4960 | |||
4897 |
#: rhodecode/public/js/scripts.js:412 |
|
4961 | #: rhodecode/public/js/scripts.js:41295 rhodecode/public/js/scripts.min.js:1 | |
4898 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:5 |
|
4962 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:58 | |
4899 | #: rhodecode/public/js/src/rhodecode/files.js:259 |
|
4963 | #: rhodecode/public/js/src/rhodecode/files.js:259 | |
4900 | msgid "No matching files" |
|
4964 | msgid "No matching files" | |
4901 | msgstr "" |
|
4965 | msgstr "" | |
4902 |
|
4966 | |||
4903 |
#: rhodecode/public/js/scripts.js:413 |
|
4967 | #: rhodecode/public/js/scripts.js:41353 rhodecode/public/js/scripts.min.js:1 | |
4904 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4968 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:83 | |
4905 | #: rhodecode/public/js/src/rhodecode/files.js:317 |
|
4969 | #: rhodecode/public/js/src/rhodecode/files.js:317 | |
4906 | msgid "Selection link" |
|
4970 | msgid "Selection link" | |
4907 | msgstr "" |
|
4971 | msgstr "" | |
4908 |
|
4972 | |||
4909 |
#: rhodecode/public/js/scripts.js:414 |
|
4973 | #: rhodecode/public/js/scripts.js:41450 rhodecode/public/js/scripts.min.js:1 | |
4910 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
4974 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:10 | |
4911 | #: rhodecode/public/js/src/rhodecode/files.js:414 |
|
4975 | #: rhodecode/public/js/src/rhodecode/files.js:414 | |
4912 | msgid "All Authors" |
|
4976 | msgid "All Authors" | |
4913 | msgstr "" |
|
4977 | msgstr "" | |
4914 |
|
4978 | |||
4915 |
#: rhodecode/public/js/scripts.js:41 |
|
4979 | #: rhodecode/public/js/scripts.js:41600 rhodecode/public/js/scripts.js:41603 | |
4916 | #: rhodecode/public/js/scripts.min.js:1 |
|
4980 | #: rhodecode/public/js/scripts.min.js:1 | |
4917 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:3 |
|
4981 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:38 | |
4918 | #: rhodecode/public/js/src/rhodecode/files.js:564 |
|
4982 | #: rhodecode/public/js/src/rhodecode/files.js:564 | |
4919 | #: rhodecode/public/js/src/rhodecode/files.js:567 |
|
4983 | #: rhodecode/public/js/src/rhodecode/files.js:567 | |
4920 | msgid "File `{0}` has a newer version available, or has been removed. Click {1} to see the latest version." |
|
4984 | msgid "File `{0}` has a newer version available, or has been removed. Click {1} to see the latest version." | |
4921 | msgstr "" |
|
4985 | msgstr "" | |
4922 |
|
4986 | |||
4923 |
#: rhodecode/public/js/scripts.js:41 |
|
4987 | #: rhodecode/public/js/scripts.js:41606 rhodecode/public/js/scripts.min.js:1 | |
4924 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
4988 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:111 | |
4925 | #: rhodecode/public/js/src/rhodecode/files.js:570 |
|
4989 | #: rhodecode/public/js/src/rhodecode/files.js:570 | |
4926 | msgid "There is an existing path `{0}` at this commit." |
|
4990 | msgid "There is an existing path `{0}` at this commit." | |
4927 | msgstr "" |
|
4991 | msgstr "" | |
4928 |
|
4992 | |||
4929 |
#: rhodecode/public/js/scripts.js:41 |
|
4993 | #: rhodecode/public/js/scripts.js:41609 rhodecode/public/js/scripts.min.js:1 | |
4930 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:10 |
|
4994 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:110 | |
4931 | #: rhodecode/public/js/src/rhodecode/files.js:573 |
|
4995 | #: rhodecode/public/js/src/rhodecode/files.js:573 | |
4932 | msgid "There is a later version of file tree available. Click {0} to create a file at the latest tree." |
|
4996 | msgid "There is a later version of file tree available. Click {0} to create a file at the latest tree." | |
4933 | msgstr "" |
|
4997 | msgstr "" | |
4934 |
|
4998 | |||
4935 |
#: rhodecode/public/js/scripts.js:416 |
|
4999 | #: rhodecode/public/js/scripts.js:41663 rhodecode/public/js/scripts.min.js:1 | |
4936 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5000 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:101 | |
4937 | #: rhodecode/public/js/src/rhodecode/followers.js:26 |
|
5001 | #: rhodecode/public/js/src/rhodecode/followers.js:26 | |
4938 | msgid "Stopped watching this repository" |
|
5002 | msgid "Stopped watching this repository" | |
4939 | msgstr "" |
|
5003 | msgstr "" | |
4940 |
|
5004 | |||
4941 |
#: rhodecode/public/js/scripts.js:416 |
|
5005 | #: rhodecode/public/js/scripts.js:41664 rhodecode/public/js/scripts.min.js:1 | |
4942 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5006 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:121 | |
4943 | #: rhodecode/public/js/src/rhodecode/followers.js:27 |
|
5007 | #: rhodecode/public/js/src/rhodecode/followers.js:27 | |
4944 |
#: rhodecode/templates/base/base.mako:30 |
|
5008 | #: rhodecode/templates/base/base.mako:310 | |
4945 | msgid "Watch" |
|
5009 | msgid "Watch" | |
4946 | msgstr "" |
|
5010 | msgstr "" | |
4947 |
|
5011 | |||
4948 |
#: rhodecode/public/js/scripts.js:416 |
|
5012 | #: rhodecode/public/js/scripts.js:41667 rhodecode/public/js/scripts.min.js:1 | |
4949 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:9 |
|
5013 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:98 | |
4950 | #: rhodecode/public/js/src/rhodecode/followers.js:30 |
|
5014 | #: rhodecode/public/js/src/rhodecode/followers.js:30 | |
4951 | msgid "Started watching this repository" |
|
5015 | msgid "Started watching this repository" | |
4952 | msgstr "" |
|
5016 | msgstr "" | |
4953 |
|
5017 | |||
4954 |
#: rhodecode/public/js/scripts.js:416 |
|
5018 | #: rhodecode/public/js/scripts.js:41668 rhodecode/public/js/scripts.min.js:1 | |
4955 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5019 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:116 | |
4956 | #: rhodecode/public/js/src/rhodecode/followers.js:31 |
|
5020 | #: rhodecode/public/js/src/rhodecode/followers.js:31 | |
4957 |
#: rhodecode/templates/base/base.mako:30 |
|
5021 | #: rhodecode/templates/base/base.mako:308 | |
4958 | msgid "Unwatch" |
|
5022 | msgid "Unwatch" | |
4959 | msgstr "" |
|
5023 | msgstr "" | |
4960 |
|
5024 | |||
4961 |
#: rhodecode/public/js/scripts.js:42 |
|
5025 | #: rhodecode/public/js/scripts.js:42165 rhodecode/public/js/scripts.min.js:1 | |
4962 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5026 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:12 | |
4963 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js:1 |
|
5027 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:186 | |
4964 | msgid "All reviewers must vote." |
|
5028 | msgid "All reviewers must vote." | |
4965 | msgstr "" |
|
5029 | msgstr "" | |
4966 |
|
5030 | |||
4967 |
#: rhodecode/public/js/scripts.js:42 |
|
5031 | #: rhodecode/public/js/scripts.js:42174 rhodecode/public/js/scripts.min.js:1 | |
4968 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5032 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:11 | |
4969 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js:15 |
|
5033 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:195 | |
4970 | msgid "All individual reviewers must vote." |
|
5034 | msgid "All individual reviewers must vote." | |
4971 | msgstr "" |
|
5035 | msgstr "" | |
4972 |
|
5036 | |||
4973 |
#: rhodecode/public/js/scripts.js:42 |
|
5037 | #: rhodecode/public/js/scripts.js:42179 rhodecode/public/js/scripts.min.js:1 | |
4974 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5038 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:14 | |
4975 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5039 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:200 | |
4976 | msgid "At least {0} reviewer must vote." |
|
5040 | msgid "At least {0} reviewer must vote." | |
4977 | msgstr "" |
|
5041 | msgstr "" | |
4978 |
|
5042 | |||
4979 |
#: rhodecode/public/js/scripts.js:42 |
|
5043 | #: rhodecode/public/js/scripts.js:42185 rhodecode/public/js/scripts.min.js:1 | |
4980 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5044 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:15 | |
4981 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5045 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:206 | |
4982 | msgid "At least {0} reviewers must vote." |
|
5046 | msgid "At least {0} reviewers must vote." | |
4983 | msgstr "" |
|
5047 | msgstr "" | |
4984 |
|
5048 | |||
4985 |
#: rhodecode/public/js/scripts.js:42 |
|
5049 | #: rhodecode/public/js/scripts.js:42201 rhodecode/public/js/scripts.min.js:1 | |
4986 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5050 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:80 | |
4987 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5051 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:222 | |
4988 | msgid "Reviewers picked from source code changes." |
|
5052 | msgid "Reviewers picked from source code changes." | |
4989 | msgstr "" |
|
5053 | msgstr "" | |
4990 |
|
5054 | |||
4991 |
#: rhodecode/public/js/scripts.js:42 |
|
5055 | #: rhodecode/public/js/scripts.js:42209 rhodecode/public/js/scripts.min.js:1 | |
4992 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5056 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:8 | |
4993 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5057 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:230 | |
4994 | msgid "Adding new reviewers is forbidden." |
|
5058 | msgid "Adding new reviewers is forbidden." | |
4995 | msgstr "" |
|
5059 | msgstr "" | |
4996 |
|
5060 | |||
4997 |
#: rhodecode/public/js/scripts.js:42 |
|
5061 | #: rhodecode/public/js/scripts.js:42217 rhodecode/public/js/scripts.min.js:1 | |
4998 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5062 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:17 | |
4999 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5063 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:238 | |
5000 | msgid "Author is not allowed to be a reviewer." |
|
5064 | msgid "Author is not allowed to be a reviewer." | |
5001 | msgstr "" |
|
5065 | msgstr "" | |
5002 |
|
5066 | |||
5003 |
#: rhodecode/public/js/scripts.js:42 |
|
5067 | #: rhodecode/public/js/scripts.js:42231 rhodecode/public/js/scripts.min.js:1 | |
5004 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:2 |
|
5068 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:25 | |
5005 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js:2 |
|
5069 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:252 | |
5006 | msgid "Commit Authors are not allowed to be a reviewer." |
|
5070 | msgid "Commit Authors are not allowed to be a reviewer." | |
5007 | msgstr "" |
|
5071 | msgstr "" | |
5008 |
|
5072 | |||
5009 |
#: rhodecode/public/js/scripts.js:42 |
|
5073 | #: rhodecode/public/js/scripts.js:42238 rhodecode/public/js/scripts.min.js:1 | |
5010 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5074 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:65 | |
5011 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js:2 |
|
5075 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:259 | |
|
5076 | msgid "No review rules set." | |||
|
5077 | msgstr "" | |||
|
5078 | ||||
|
5079 | #: rhodecode/public/js/scripts.js:42283 rhodecode/public/js/scripts.min.js:1 | |||
|
5080 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:49 | |||
|
5081 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:304 | |||
5012 | msgid "Loading diff ..." |
|
5082 | msgid "Loading diff ..." | |
5013 | msgstr "" |
|
5083 | msgstr "" | |
5014 |
|
5084 | |||
5015 |
#: rhodecode/public/js/scripts.js:42 |
|
5085 | #: rhodecode/public/js/scripts.js:42336 rhodecode/public/js/scripts.min.js:1 | |
5016 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5086 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:109 | |
5017 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5087 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:357 | |
5018 | msgid "no commits" |
|
5088 | msgid "There are no commits to merge." | |
5019 | msgstr "" |
|
5089 | msgstr "" | |
5020 |
|
5090 | |||
5021 |
#: rhodecode/public/js/scripts.js:42 |
|
5091 | #: rhodecode/public/js/scripts.js:42408 rhodecode/public/js/scripts.min.js:1 | |
5022 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5092 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:120 | |
5023 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5093 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:429 | |
5024 | msgid "User `{0}` not allowed to be a reviewer" |
|
5094 | msgid "User `{0}` not allowed to be a reviewer" | |
5025 | msgstr "" |
|
5095 | msgstr "" | |
5026 |
|
5096 | |||
5027 |
#: rhodecode/public/js/scripts.js:42 |
|
5097 | #: rhodecode/public/js/scripts.js:42414 rhodecode/public/js/scripts.min.js:1 | |
5028 |
#: rhodecode/public/js/rhodecode/ |
|
5098 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:435 | |
5029 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:345 |
|
5099 | msgid "User `{0}` already in reviewers/observers" | |
5030 | msgid "User `{0}` already in reviewers" |
|
5100 | msgstr "" | |
5031 | msgstr "" |
|
5101 | ||
5032 |
|
5102 | #: rhodecode/public/js/scripts.js:42528 rhodecode/public/js/scripts.min.js:1 | ||
5033 |
#: rhodecode/public/js/ |
|
5103 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:126 | |
5034 |
#: rhodecode/public/js/rhodecode/ |
|
5104 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:549 | |
5035 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:448 |
|
|||
5036 | msgid "added manually by \"{0}\"" |
|
5105 | msgid "added manually by \"{0}\"" | |
5037 | msgstr "" |
|
5106 | msgstr "" | |
5038 |
|
5107 | |||
5039 |
#: rhodecode/public/js/scripts.js:42 |
|
5108 | #: rhodecode/public/js/scripts.js:42533 rhodecode/public/js/scripts.min.js:1 | |
5040 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5109 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:138 | |
5041 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5110 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:554 | |
5042 | msgid "member of \"{0}\"" |
|
5111 | msgid "member of \"{0}\"" | |
5043 | msgstr "" |
|
5112 | msgstr "" | |
5044 |
|
5113 | |||
5045 |
#: rhodecode/public/js/scripts.js:42 |
|
5114 | #: rhodecode/public/js/scripts.js:42766 rhodecode/public/js/scripts.min.js:1 | |
5046 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5115 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:118 | |
5047 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5116 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:787 | |
5048 | msgid "Updating..." |
|
5117 | msgid "Updating..." | |
5049 | msgstr "" |
|
5118 | msgstr "" | |
5050 |
|
5119 | |||
5051 |
#: rhodecode/public/js/scripts.js:42 |
|
5120 | #: rhodecode/public/js/scripts.js:42776 rhodecode/public/js/scripts.min.js:1 | |
5052 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5121 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:40 | |
5053 |
#: rhodecode/public/js/src/rhodecode/pullrequests.js: |
|
5122 | #: rhodecode/public/js/src/rhodecode/pullrequests.js:797 | |
5054 | msgid "Force updating..." |
|
5123 | msgid "Force updating..." | |
5055 | msgstr "" |
|
5124 | msgstr "" | |
5056 |
|
5125 | |||
5057 |
#: rhodecode/public/js/scripts.js:4 |
|
5126 | #: rhodecode/public/js/scripts.js:47613 rhodecode/public/js/scripts.min.js:1 | |
5058 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5127 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:94 | |
5059 | #: rhodecode/public/js/src/rhodecode/users.js:54 |
|
5128 | #: rhodecode/public/js/src/rhodecode/users.js:54 | |
5060 | msgid "Show this authentication token?" |
|
5129 | msgid "Show this authentication token?" | |
5061 | msgstr "" |
|
5130 | msgstr "" | |
5062 |
|
5131 | |||
5063 |
#: rhodecode/public/js/scripts.js:4 |
|
5132 | #: rhodecode/public/js/scripts.js:47615 rhodecode/public/js/scripts.min.js:1 | |
5064 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:8 |
|
5133 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:87 | |
5065 | #: rhodecode/public/js/src/rhodecode/users.js:56 |
|
5134 | #: rhodecode/public/js/src/rhodecode/users.js:56 | |
5066 | msgid "Show" |
|
5135 | msgid "Show" | |
5067 | msgstr "" |
|
5136 | msgstr "" | |
5068 |
|
5137 | |||
5069 |
#: rhodecode/public/js/scripts.js:47 |
|
5138 | #: rhodecode/public/js/scripts.js:47651 rhodecode/public/js/scripts.min.js:1 | |
5070 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5139 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:16 | |
5071 | #: rhodecode/public/js/src/rhodecode/users.js:92 |
|
5140 | #: rhodecode/public/js/src/rhodecode/users.js:92 | |
5072 | msgid "Authentication Token" |
|
5141 | msgid "Authentication Token" | |
5073 | msgstr "" |
|
5142 | msgstr "" | |
5074 |
|
5143 | |||
5075 |
#: rhodecode/public/js/scripts.js:47 |
|
5144 | #: rhodecode/public/js/scripts.js:47840 rhodecode/public/js/scripts.min.js:1 | |
5076 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5145 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:130 | |
5077 | #: rhodecode/public/js/src/rhodecode.js:144 |
|
5146 | #: rhodecode/public/js/src/rhodecode.js:144 | |
5078 | msgid "file" |
|
5147 | msgid "file" | |
5079 | msgstr "" |
|
5148 | msgstr "" | |
5080 |
|
5149 | |||
5081 |
#: rhodecode/public/js/scripts.js:47 |
|
5150 | #: rhodecode/public/js/scripts.js:47984 rhodecode/public/js/scripts.min.js:1 | |
5082 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5151 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:52 | |
5083 | #: rhodecode/public/js/src/rhodecode.js:288 |
|
5152 | #: rhodecode/public/js/src/rhodecode.js:288 | |
5084 | msgid "Loading..." |
|
5153 | msgid "Loading..." | |
5085 | msgstr "" |
|
5154 | msgstr "" | |
5086 |
|
5155 | |||
5087 |
#: rhodecode/public/js/scripts.js:4 |
|
5156 | #: rhodecode/public/js/scripts.js:48366 rhodecode/public/js/scripts.min.js:1 | |
5088 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5157 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:127 | |
5089 |
#: rhodecode/public/js/src/rhodecode.js:6 |
|
5158 | #: rhodecode/public/js/src/rhodecode.js:670 | |
5090 | msgid "date not in future" |
|
5159 | msgid "date not in future" | |
5091 | msgstr "" |
|
5160 | msgstr "" | |
5092 |
|
5161 | |||
5093 |
#: rhodecode/public/js/scripts.js:4 |
|
5162 | #: rhodecode/public/js/scripts.js:48374 rhodecode/public/js/scripts.min.js:1 | |
5094 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:9 |
|
5163 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:96 | |
5095 |
#: rhodecode/public/js/src/rhodecode.js:6 |
|
5164 | #: rhodecode/public/js/src/rhodecode.js:678 | |
5096 | msgid "Specified expiration date" |
|
5165 | msgid "Specified expiration date" | |
5097 | msgstr "" |
|
5166 | msgstr "" | |
5098 |
|
5167 | |||
@@ -5113,339 +5182,370 b' msgid "(from usergroup {0})"' | |||||
5113 | msgstr "" |
|
5182 | msgstr "" | |
5114 |
|
5183 | |||
5115 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:3 |
|
5184 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:3 | |
5116 |
msgid "<strong>{0} file</strong> changed |
|
5185 | msgid "<strong>, and {0} file</strong> changed." | |
5117 | msgstr "" |
|
5186 | msgstr "" | |
5118 |
|
5187 | |||
5119 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 |
|
5188 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 | |
5120 |
msgid "<strong>{0} files</strong> changed |
|
5189 | msgid "<strong>, and {0} files</strong> changed." | |
5121 | msgstr "" |
|
5190 | msgstr "" | |
5122 |
|
5191 | |||
5123 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:5 |
|
5192 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:5 | |
5124 | #: rhodecode/templates/codeblocks/diffs.mako:618 |
|
5193 | msgid "<strong>{0} file</strong> changed, " | |
5125 | #: rhodecode/templates/codeblocks/diffs.mako:622 |
|
5194 | msgstr "" | |
|
5195 | ||||
|
5196 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:6 | |||
|
5197 | msgid "<strong>{0} files</strong> changed, " | |||
|
5198 | msgstr "" | |||
|
5199 | ||||
|
5200 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:7 | |||
|
5201 | #: rhodecode/templates/codeblocks/diffs.mako:648 | |||
|
5202 | #: rhodecode/templates/codeblocks/diffs.mako:652 | |||
5126 | msgid "Add another comment" |
|
5203 | msgid "Add another comment" | |
5127 | msgstr "" |
|
5204 | msgstr "" | |
5128 |
|
5205 | |||
5129 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5206 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:13 | |
5130 | msgid "Are you sure to close this pull request without merging?" |
|
5207 | msgid "Are you sure to close this pull request without merging?" | |
5131 | msgstr "" |
|
5208 | msgstr "" | |
5132 |
|
5209 | |||
5133 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:16 |
|
|||
5134 | msgid "Changed files" |
|
|||
5135 | msgstr "" |
|
|||
5136 |
|
||||
5137 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:17 |
|
|||
5138 | #: rhodecode/public/js/src/i18n_messages.js:5 |
|
|||
5139 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:288 |
|
|||
5140 | msgid "Close" |
|
|||
5141 | msgstr "" |
|
|||
5142 |
|
||||
5143 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:18 |
|
5210 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:18 | |
5144 | #: rhodecode/templates/codeblocks/diffs.mako:131 |
|
5211 | msgid "Changed files" | |
5145 | msgid "Collapse all files" |
|
|||
5146 | msgstr "" |
|
5212 | msgstr "" | |
5147 |
|
5213 | |||
5148 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:19 |
|
5214 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:19 | |
5149 | msgid "Collapse {0} commit" |
|
5215 | #: rhodecode/public/js/src/i18n_messages.js:5 | |
|
5216 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:589 | |||
|
5217 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:592 | |||
|
5218 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:646 | |||
|
5219 | msgid "Close" | |||
5150 | msgstr "" |
|
5220 | msgstr "" | |
5151 |
|
5221 | |||
5152 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:20 |
|
5222 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:20 | |
|
5223 | #: rhodecode/templates/codeblocks/diffs.mako:133 | |||
|
5224 | msgid "Collapse all files" | |||
|
5225 | msgstr "" | |||
|
5226 | ||||
|
5227 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:21 | |||
|
5228 | msgid "Collapse {0} commit" | |||
|
5229 | msgstr "" | |||
|
5230 | ||||
|
5231 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:22 | |||
5153 | msgid "Collapse {0} commits" |
|
5232 | msgid "Collapse {0} commits" | |
5154 | msgstr "" |
|
5233 | msgstr "" | |
5155 |
|
5234 | |||
5156 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:23 |
|
|||
5157 | msgid "Context file: " |
|
|||
5158 | msgstr "" |
|
|||
5159 |
|
||||
5160 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:25 |
|
|||
5161 | msgid "Delete this comment?" |
|
|||
5162 | msgstr "" |
|
|||
5163 |
|
||||
5164 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:26 |
|
5235 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:26 | |
5165 | msgid "Diff to Commit " |
|
5236 | msgid "Compare summary: <strong>{0} commit</strong>" | |
5166 | msgstr "" |
|
5237 | msgstr "" | |
5167 |
|
5238 | |||
5168 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:27 |
|
5239 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:27 | |
5169 | msgid "Error during search operation" |
|
5240 | msgid "Compare summary: <strong>{0} commits</strong>" | |
5170 | msgstr "" |
|
5241 | msgstr "" | |
5171 |
|
5242 | |||
5172 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:28 |
|
5243 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:28 | |
5173 | #: rhodecode/templates/codeblocks/diffs.mako:129 |
|
5244 | msgid "Context file: " | |
5174 | msgid "Expand all files" |
|
|||
5175 | msgstr "" |
|
|||
5176 |
|
||||
5177 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:29 |
|
|||
5178 | msgid "Expand {0} commit" |
|
|||
5179 | msgstr "" |
|
5245 | msgstr "" | |
5180 |
|
5246 | |||
5181 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:30 |
|
5247 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:30 | |
5182 | msgid "Expand {0} commits" |
|
5248 | msgid "Delete this comment?" | |
5183 | msgstr "" |
|
5249 | msgstr "" | |
5184 |
|
5250 | |||
5185 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:31 |
|
5251 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:31 | |
5186 | msgid "Fetching repository state failed. Error code: {0} {1}. Try <a href=\"{2}\">refreshing</a> this page." |
|
5252 | msgid "Diff to Commit " | |
5187 | msgstr "" |
|
5253 | msgstr "" | |
5188 |
|
5254 | |||
5189 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:32 |
|
5255 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:32 | |
5190 | msgid "Fetching repository state failed. Error code: {0} {1}. Try refreshing this page." |
|
5256 | msgid "Error during search operation" | |
|
5257 | msgstr "" | |||
|
5258 | ||||
|
5259 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:33 | |||
|
5260 | #: rhodecode/templates/codeblocks/diffs.mako:131 | |||
|
5261 | msgid "Expand all files" | |||
5191 | msgstr "" |
|
5262 | msgstr "" | |
5192 |
|
5263 | |||
5193 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:34 |
|
5264 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:34 | |
5194 | msgid "Follow" |
|
5265 | msgid "Expand {0} commit" | |
|
5266 | msgstr "" | |||
|
5267 | ||||
|
5268 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:35 | |||
|
5269 | msgid "Expand {0} commits" | |||
5195 | msgstr "" |
|
5270 | msgstr "" | |
5196 |
|
5271 | |||
5197 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:36 |
|
5272 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:36 | |
5198 | msgid "Hide full context diff" |
|
5273 | msgid "Fetching repository state failed. Error code: {0} {1}. Try <a href=\"{2}\">refreshing</a> this page." | |
5199 | msgstr "" |
|
5274 | msgstr "" | |
5200 |
|
5275 | |||
5201 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:37 |
|
5276 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:37 | |
|
5277 | msgid "Fetching repository state failed. Error code: {0} {1}. Try refreshing this page." | |||
|
5278 | msgstr "" | |||
|
5279 | ||||
|
5280 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:39 | |||
|
5281 | msgid "Follow" | |||
|
5282 | msgstr "" | |||
|
5283 | ||||
|
5284 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:41 | |||
|
5285 | msgid "Hide full context diff" | |||
|
5286 | msgstr "" | |||
|
5287 | ||||
|
5288 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:42 | |||
5202 | msgid "Hide whitespace changes" |
|
5289 | msgid "Hide whitespace changes" | |
5203 | msgstr "" |
|
5290 | msgstr "" | |
5204 |
|
5291 | |||
5205 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:3 |
|
5292 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:43 | |
5206 | #: rhodecode/public/js/src/i18n_messages.js:4 |
|
5293 | #: rhodecode/public/js/src/i18n_messages.js:4 | |
5207 | msgid "Invite reviewers to this discussion" |
|
5294 | msgid "Invite reviewers to this discussion" | |
5208 | msgstr "" |
|
5295 | msgstr "" | |
5209 |
|
5296 | |||
5210 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:4 |
|
5297 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:45 | |
5211 | msgid "Leave a comment, or click resolve button to resolve TODO comment #{0}" |
|
5298 | msgid "Leave a comment, or click resolve button to resolve TODO comment #{0}" | |
5212 | msgstr "" |
|
5299 | msgstr "" | |
5213 |
|
5300 | |||
5214 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5301 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:53 | |
5215 | msgid "No bookmarks available yet." |
|
5302 | msgid "No bookmarks available yet." | |
5216 | msgstr "" |
|
5303 | msgstr "" | |
5217 |
|
5304 | |||
5218 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:49 |
|
|||
5219 | msgid "No branches available yet." |
|
|||
5220 | msgstr "" |
|
|||
5221 |
|
||||
5222 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:50 |
|
|||
5223 | msgid "No forks available yet." |
|
|||
5224 | msgstr "" |
|
|||
5225 |
|
||||
5226 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:51 |
|
|||
5227 | msgid "No gists available yet." |
|
|||
5228 | msgstr "" |
|
|||
5229 |
|
||||
5230 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:54 |
|
5305 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:54 | |
5231 |
msgid "No |
|
5306 | msgid "No branches available yet." | |
5232 | msgstr "" |
|
5307 | msgstr "" | |
5233 |
|
5308 | |||
5234 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:55 |
|
5309 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:55 | |
5235 |
msgid "No |
|
5310 | msgid "No forks available yet." | |
5236 | msgstr "" |
|
5311 | msgstr "" | |
5237 |
|
5312 | |||
5238 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:56 |
|
5313 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:56 | |
5239 |
msgid "No |
|
5314 | msgid "No gists available yet." | |
5240 | msgstr "" |
|
5315 | msgstr "" | |
5241 |
|
5316 | |||
5242 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:5 |
|
5317 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:59 | |
5243 |
msgid "No |
|
5318 | msgid "No pull requests available yet." | |
5244 | msgstr "" |
|
|||
5245 |
|
||||
5246 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:58 |
|
|||
5247 | msgid "No repository groups present." |
|
|||
5248 | msgstr "" |
|
5319 | msgstr "" | |
5249 |
|
5320 | |||
5250 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:60 |
|
5321 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:60 | |
5251 |
msgid "No |
|
5322 | msgid "No repositories available yet." | |
5252 | msgstr "" |
|
5323 | msgstr "" | |
5253 |
|
5324 | |||
5254 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:61 |
|
5325 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:61 | |
5255 | msgid "No tags available yet." |
|
5326 | msgid "No repositories present." | |
5256 | msgstr "" |
|
5327 | msgstr "" | |
5257 |
|
5328 | |||
5258 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:62 |
|
5329 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:62 | |
5259 |
msgid "No |
|
5330 | msgid "No repository groups available yet." | |
5260 | msgstr "" |
|
5331 | msgstr "" | |
5261 |
|
5332 | |||
5262 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:63 |
|
5333 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:63 | |
5263 | msgid "No users available yet." |
|
5334 | msgid "No repository groups present." | |
|
5335 | msgstr "" | |||
|
5336 | ||||
|
5337 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:66 | |||
|
5338 | msgid "No ssh keys available yet." | |||
5264 | msgstr "" |
|
5339 | msgstr "" | |
5265 |
|
5340 | |||
5266 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:67 |
|
5341 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:67 | |
5267 | #: rhodecode/templates/commits/changelog.mako:78 |
|
5342 | msgid "No tags available yet." | |
5268 | msgid "Open new pull request" |
|
|||
5269 | msgstr "" |
|
5343 | msgstr "" | |
5270 |
|
5344 | |||
5271 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:68 |
|
5345 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:68 | |
5272 | msgid "Open new pull request for selected commit" |
|
5346 | msgid "No user groups available yet." | |
|
5347 | msgstr "" | |||
|
5348 | ||||
|
5349 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:69 | |||
|
5350 | msgid "No users available yet." | |||
5273 | msgstr "" |
|
5351 | msgstr "" | |
5274 |
|
5352 | |||
5275 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:73 |
|
5353 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:73 | |
|
5354 | #: rhodecode/templates/commits/changelog.mako:78 | |||
|
5355 | msgid "Open new pull request" | |||
|
5356 | msgstr "" | |||
|
5357 | ||||
|
5358 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:74 | |||
|
5359 | msgid "Open new pull request for selected commit" | |||
|
5360 | msgstr "" | |||
|
5361 | ||||
|
5362 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:79 | |||
5276 | msgid "Please wait creating pull request..." |
|
5363 | msgid "Please wait creating pull request..." | |
5277 | msgstr "" |
|
5364 | msgstr "" | |
5278 |
|
5365 | |||
5279 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5366 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:81 | |
5280 | msgid "Saving..." |
|
5367 | msgid "Saving..." | |
5281 | msgstr "" |
|
5368 | msgstr "" | |
5282 |
|
5369 | |||
5283 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js: |
|
5370 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:84 | |
5284 | #: rhodecode/public/js/src/i18n_messages.js:6 |
|
5371 | #: rhodecode/public/js/src/i18n_messages.js:6 | |
5285 | #: rhodecode/templates/admin/settings/settings_email.mako:50 |
|
5372 | #: rhodecode/templates/admin/settings/settings_email.mako:50 | |
5286 | msgid "Send" |
|
5373 | msgid "Send" | |
5287 | msgstr "" |
|
5374 | msgstr "" | |
5288 |
|
5375 | |||
5289 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:8 |
|
5376 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:88 | |
5290 | msgid "Show at Commit " |
|
5377 | msgid "Show at Commit " | |
5291 | msgstr "" |
|
5378 | msgstr "" | |
5292 |
|
5379 | |||
5293 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:83 |
|
|||
5294 | msgid "Show commit range {0} ... {1}" |
|
|||
5295 | msgstr "" |
|
|||
5296 |
|
||||
5297 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:84 |
|
|||
5298 | msgid "Show full context diff" |
|
|||
5299 | msgstr "" |
|
|||
5300 |
|
||||
5301 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:85 |
|
|||
5302 | #: rhodecode/templates/admin/settings/settings_exceptions_browse.mako:40 |
|
|||
5303 | msgid "Show more" |
|
|||
5304 | msgstr "" |
|
|||
5305 |
|
||||
5306 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:86 |
|
|||
5307 | msgid "Show selected commit __S" |
|
|||
5308 | msgstr "" |
|
|||
5309 |
|
||||
5310 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:87 |
|
|||
5311 | msgid "Show selected commits __S ... __E" |
|
|||
5312 | msgstr "" |
|
|||
5313 |
|
||||
5314 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:89 |
|
5380 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:89 | |
5315 |
msgid "Show |
|
5381 | msgid "Show commit range {0} ... {1}" | |
|
5382 | msgstr "" | |||
|
5383 | ||||
|
5384 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:90 | |||
|
5385 | msgid "Show full context diff" | |||
5316 | msgstr "" |
|
5386 | msgstr "" | |
5317 |
|
5387 | |||
5318 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:91 |
|
5388 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:91 | |
5319 | msgid "Start following this repository" |
|
5389 | #: rhodecode/templates/admin/settings/settings_exceptions_browse.mako:40 | |
5320 | msgstr "" |
|
5390 | msgid "Show more" | |
5321 |
|
5391 | msgstr "" | ||
5322 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:94 |
|
5392 | ||
5323 | msgid "Stop following this repository" |
|
5393 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:92 | |
|
5394 | msgid "Show selected commit __S" | |||
|
5395 | msgstr "" | |||
|
5396 | ||||
|
5397 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:93 | |||
|
5398 | msgid "Show selected commits __S ... __E" | |||
|
5399 | msgstr "" | |||
|
5400 | ||||
|
5401 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:95 | |||
|
5402 | msgid "Show whitespace changes" | |||
5324 | msgstr "" |
|
5403 | msgstr "" | |
5325 |
|
5404 | |||
5326 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:97 |
|
5405 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:97 | |
5327 | #: rhodecode/public/js/src/i18n_messages.js:7 |
|
5406 | msgid "Start following this repository" | |
5328 | msgid "Switch to chat" |
|
5407 | msgstr "" | |
5329 | msgstr "" |
|
5408 | ||
5330 |
|
5409 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:100 | ||
5331 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:98 |
|
5410 | msgid "Stop following this repository" | |
5332 | #: rhodecode/public/js/src/i18n_messages.js:8 |
|
5411 | msgstr "" | |
5333 | msgid "Switch to comment" |
|
5412 | ||
5334 | msgstr "" |
|
5413 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:103 | |
5335 |
|
5414 | msgid "Switch target repository with the source." | ||
5336 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:101 |
|
|||
5337 | msgid "There are currently no open pull requests requiring your participation." |
|
|||
5338 | msgstr "" |
|
5415 | msgstr "" | |
5339 |
|
5416 | |||
5340 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:104 |
|
5417 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:104 | |
5341 | msgid "This pull requests will consist of <strong>{0} commit</strong>." |
|
5418 | #: rhodecode/public/js/src/i18n_messages.js:7 | |
|
5419 | msgid "Switch to chat" | |||
5342 | msgstr "" |
|
5420 | msgstr "" | |
5343 |
|
5421 | |||
5344 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:105 |
|
5422 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:105 | |
|
5423 | #: rhodecode/public/js/src/i18n_messages.js:8 | |||
|
5424 | msgid "Switch to comment" | |||
|
5425 | msgstr "" | |||
|
5426 | ||||
|
5427 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:108 | |||
|
5428 | msgid "There are currently no open pull requests requiring your participation." | |||
|
5429 | msgstr "" | |||
|
5430 | ||||
|
5431 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:112 | |||
|
5432 | msgid "This pull requests will consist of <strong>{0} commit</strong>." | |||
|
5433 | msgstr "" | |||
|
5434 | ||||
|
5435 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:113 | |||
5345 | msgid "This pull requests will consist of <strong>{0} commits</strong>." |
|
5436 | msgid "This pull requests will consist of <strong>{0} commits</strong>." | |
5346 | msgstr "" |
|
5437 | msgstr "" | |
5347 |
|
5438 | |||
5348 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5439 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:114 | |
5349 | msgid "Toggle Wide Mode diff" |
|
5440 | msgid "Toggle Wide Mode diff" | |
5350 | msgstr "" |
|
5441 | msgstr "" | |
5351 |
|
5442 | |||
5352 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5443 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:115 | |
5353 | msgid "Unfollow" |
|
5444 | msgid "Unfollow" | |
5354 | msgstr "" |
|
5445 | msgstr "" | |
5355 |
|
5446 | |||
5356 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:116 |
|
|||
5357 | #: rhodecode/templates/admin/auth/auth_settings.mako:69 |
|
|||
5358 | msgid "activated" |
|
|||
5359 | msgstr "" |
|
|||
5360 |
|
||||
5361 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:119 |
|
5447 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:119 | |
5362 | msgid "disabled" |
|
5448 | msgid "User `{0}` already in reviewers" | |
5363 | msgstr "" |
|
5449 | msgstr "" | |
5364 |
|
5450 | |||
5365 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:12 |
|
5451 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:125 | |
5366 | msgid "enabled" |
|
5452 | #: rhodecode/templates/admin/auth/auth_settings.mako:69 | |
5367 | msgstr "" |
|
5453 | msgid "activated" | |
5368 |
|
||||
5369 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:122 |
|
|||
5370 | msgid "files" |
|
|||
5371 | msgstr "" |
|
|||
5372 |
|
||||
5373 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:123 |
|
|||
5374 | msgid "go to numeric commit" |
|
|||
5375 | msgstr "" |
|
5454 | msgstr "" | |
5376 |
|
5455 | |||
5377 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:128 |
|
5456 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:128 | |
5378 | #: rhodecode/templates/index_base.mako:27 |
|
5457 | msgid "disabled" | |
5379 | #: rhodecode/templates/pullrequests/pullrequest.mako:136 |
|
5458 | msgstr "" | |
5380 | msgid "loading..." |
|
5459 | ||
|
5460 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:129 | |||
|
5461 | msgid "enabled" | |||
5381 | msgstr "" |
|
5462 | msgstr "" | |
5382 |
|
5463 | |||
5383 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:131 |
|
5464 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:131 | |
5384 | #: rhodecode/templates/admin/auth/auth_settings.mako:69 |
|
5465 | msgid "files" | |
5385 | msgid "not active" |
|
5466 | msgstr "" | |
5386 | msgstr "" |
|
5467 | ||
5387 |
|
5468 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:132 | ||
5388 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:135 |
|
5469 | msgid "go to numeric commit" | |
5389 | msgid "specify commit" |
|
5470 | msgstr "" | |
5390 | msgstr "" |
|
5471 | ||
5391 |
|
5472 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:137 | ||
5392 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:138 |
|
5473 | #: rhodecode/templates/index_base.mako:27 | |
5393 | msgid "{0} ({1} inactive) of {2} user groups ({3} inactive)" |
|
5474 | #: rhodecode/templates/pullrequests/pullrequest.mako:154 | |
|
5475 | #: rhodecode/templates/pullrequests/pullrequest.mako:178 | |||
|
5476 | msgid "loading..." | |||
5394 | msgstr "" |
|
5477 | msgstr "" | |
5395 |
|
5478 | |||
5396 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:139 |
|
5479 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:139 | |
5397 | msgid "{0} ({1} inactive) of {2} users ({3} inactive)" |
|
5480 | msgid "no commits" | |
5398 | msgstr "" |
|
5481 | msgstr "" | |
5399 |
|
5482 | |||
5400 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:140 |
|
5483 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:140 | |
5401 | msgid "{0} active out of {1} users" |
|
5484 | #: rhodecode/templates/admin/auth/auth_settings.mako:69 | |
5402 | msgstr "" |
|
5485 | msgid "not active" | |
5403 |
|
5486 | msgstr "" | ||
5404 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:145 |
|
5487 | ||
5405 | msgid "{0} days" |
|
5488 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:144 | |
|
5489 | msgid "specify commit" | |||
5406 | msgstr "" |
|
5490 | msgstr "" | |
5407 |
|
5491 | |||
5408 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:147 |
|
5492 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:147 | |
5409 | msgid "{0} hours" |
|
5493 | msgid "{0} ({1} inactive) of {2} user groups ({3} inactive)" | |
5410 | msgstr "" |
|
5494 | msgstr "" | |
5411 |
|
5495 | |||
5412 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5496 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:148 | |
5413 | msgid "{0} months" |
|
5497 | msgid "{0} ({1} inactive) of {2} users ({3} inactive)" | |
5414 | msgstr "" |
|
5498 | msgstr "" | |
5415 |
|
5499 | |||
5416 |
#: rhodecode/public/js/rhodecode/i18n/js_translations.js:1 |
|
5500 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:149 | |
5417 |
msgid "{0} of {1} |
|
5501 | msgid "{0} active out of {1} users" | |
5418 | msgstr "" |
|
|||
5419 |
|
||||
5420 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:152 |
|
|||
5421 | msgid "{0} of {1} repository groups" |
|
|||
5422 | msgstr "" |
|
|||
5423 |
|
||||
5424 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:153 |
|
|||
5425 | msgid "{0} out of {1} ssh keys" |
|
|||
5426 | msgstr "" |
|
5502 | msgstr "" | |
5427 |
|
5503 | |||
5428 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:154 |
|
5504 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:154 | |
5429 |
msgid "{0} |
|
5505 | msgid "{0} days" | |
5430 | msgstr "" |
|
|||
5431 |
|
||||
5432 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:155 |
|
|||
5433 | msgid "{0} repositories" |
|
|||
5434 | msgstr "" |
|
5506 | msgstr "" | |
5435 |
|
5507 | |||
5436 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:156 |
|
5508 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:156 | |
5437 |
msgid "{0} |
|
5509 | msgid "{0} hours" | |
5438 | msgstr "" |
|
5510 | msgstr "" | |
5439 |
|
5511 | |||
5440 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:159 |
|
5512 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:159 | |
5441 | msgid "{0} user groups ({1} inactive)" |
|
5513 | msgid "{0} months" | |
5442 | msgstr "" |
|
5514 | msgstr "" | |
5443 |
|
5515 | |||
5444 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:160 |
|
5516 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:160 | |
5445 |
msgid "{0} |
|
5517 | msgid "{0} of {1} repositories" | |
|
5518 | msgstr "" | |||
|
5519 | ||||
|
5520 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:161 | |||
|
5521 | msgid "{0} of {1} repository groups" | |||
5446 | msgstr "" |
|
5522 | msgstr "" | |
5447 |
|
5523 | |||
5448 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:162 |
|
5524 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:162 | |
|
5525 | msgid "{0} out of {1} ssh keys" | |||
|
5526 | msgstr "" | |||
|
5527 | ||||
|
5528 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:163 | |||
|
5529 | msgid "{0} out of {1} users" | |||
|
5530 | msgstr "" | |||
|
5531 | ||||
|
5532 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:164 | |||
|
5533 | msgid "{0} repositories" | |||
|
5534 | msgstr "" | |||
|
5535 | ||||
|
5536 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:165 | |||
|
5537 | msgid "{0} repository groups" | |||
|
5538 | msgstr "" | |||
|
5539 | ||||
|
5540 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:168 | |||
|
5541 | msgid "{0} user groups ({1} inactive)" | |||
|
5542 | msgstr "" | |||
|
5543 | ||||
|
5544 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:169 | |||
|
5545 | msgid "{0} users ({1} inactive)" | |||
|
5546 | msgstr "" | |||
|
5547 | ||||
|
5548 | #: rhodecode/public/js/rhodecode/i18n/js_translations.js:171 | |||
5449 | msgid "{0} years" |
|
5549 | msgid "{0} years" | |
5450 | msgstr "" |
|
5550 | msgstr "" | |
5451 |
|
5551 | |||
@@ -5479,10 +5579,10 b' msgstr ""' | |||||
5479 | #: rhodecode/templates/admin/users/user_edit_groups.mako:57 |
|
5579 | #: rhodecode/templates/admin/users/user_edit_groups.mako:57 | |
5480 | #: rhodecode/templates/base/perms_summary.mako:173 |
|
5580 | #: rhodecode/templates/base/perms_summary.mako:173 | |
5481 | #: rhodecode/templates/base/perms_summary.mako:247 |
|
5581 | #: rhodecode/templates/base/perms_summary.mako:247 | |
5482 |
#: rhodecode/templates/bookmarks/bookmarks.mako: |
|
5582 | #: rhodecode/templates/bookmarks/bookmarks.mako:69 | |
5483 |
#: rhodecode/templates/branches/branches.mako: |
|
5583 | #: rhodecode/templates/branches/branches.mako:68 | |
5484 | #: rhodecode/templates/files/files_browser_tree.mako:16 |
|
5584 | #: rhodecode/templates/files/files_browser_tree.mako:16 | |
5485 |
#: rhodecode/templates/tags/tags.mako: |
|
5585 | #: rhodecode/templates/tags/tags.mako:69 | |
5486 | msgid "Name" |
|
5586 | msgid "Name" | |
5487 | msgstr "" |
|
5587 | msgstr "" | |
5488 |
|
5588 | |||
@@ -5513,16 +5613,16 b' msgstr ""' | |||||
5513 | #: rhodecode/templates/admin/users/user_edit_profile.mako:74 |
|
5613 | #: rhodecode/templates/admin/users/user_edit_profile.mako:74 | |
5514 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:15 |
|
5614 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:15 | |
5515 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:57 |
|
5615 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:57 | |
5516 |
#: rhodecode/templates/base/issue_tracker_settings.mako:7 |
|
5616 | #: rhodecode/templates/base/issue_tracker_settings.mako:79 | |
5517 | #: rhodecode/templates/compare/compare_commits.mako:19 |
|
5617 | #: rhodecode/templates/compare/compare_commits.mako:19 | |
5518 |
#: rhodecode/templates/email_templates/pull_request_review.mako:4 |
|
5618 | #: rhodecode/templates/email_templates/pull_request_review.mako:49 | |
5519 |
#: rhodecode/templates/email_templates/pull_request_review.mako:1 |
|
5619 | #: rhodecode/templates/email_templates/pull_request_review.mako:134 | |
5520 | #: rhodecode/templates/email_templates/pull_request_update.mako:45 |
|
5620 | #: rhodecode/templates/email_templates/pull_request_update.mako:45 | |
5521 | #: rhodecode/templates/email_templates/pull_request_update.mako:139 |
|
5621 | #: rhodecode/templates/email_templates/pull_request_update.mako:139 | |
5522 | #: rhodecode/templates/forks/fork.mako:56 |
|
5622 | #: rhodecode/templates/forks/fork.mako:56 | |
5523 | #: rhodecode/templates/forks/forks.mako:62 |
|
5623 | #: rhodecode/templates/forks/forks.mako:62 | |
5524 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
5624 | #: rhodecode/templates/pullrequests/pullrequest.mako:104 | |
5525 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
5625 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:400 | |
5526 | #: rhodecode/templates/summary/components.mako:159 |
|
5626 | #: rhodecode/templates/summary/components.mako:159 | |
5527 | #: rhodecode/templates/user_group/profile.mako:25 |
|
5627 | #: rhodecode/templates/user_group/profile.mako:25 | |
5528 | #: rhodecode/templates/users/user_profile.mako:59 |
|
5628 | #: rhodecode/templates/users/user_profile.mako:59 | |
@@ -5557,19 +5657,18 b' msgstr ""' | |||||
5557 |
|
5657 | |||
5558 | #: rhodecode/templates/index_base.mako:190 |
|
5658 | #: rhodecode/templates/index_base.mako:190 | |
5559 | #: rhodecode/templates/admin/repos/repos.mako:98 |
|
5659 | #: rhodecode/templates/admin/repos/repos.mako:98 | |
5560 |
#: rhodecode/templates/bookmarks/bookmarks.mako:6 |
|
5660 | #: rhodecode/templates/bookmarks/bookmarks.mako:76 | |
5561 |
#: rhodecode/templates/branches/branches.mako: |
|
5661 | #: rhodecode/templates/branches/branches.mako:75 | |
5562 | #: rhodecode/templates/compare/compare_commits.mako:17 |
|
5662 | #: rhodecode/templates/compare/compare_commits.mako:17 | |
5563 | #: rhodecode/templates/email_templates/commit_comment.mako:60 |
|
5663 | #: rhodecode/templates/email_templates/commit_comment.mako:60 | |
5564 | #: rhodecode/templates/email_templates/commit_comment.mako:114 |
|
5664 | #: rhodecode/templates/email_templates/commit_comment.mako:114 | |
5565 | #: rhodecode/templates/email_templates/commit_comment.mako:141 |
|
5665 | #: rhodecode/templates/email_templates/commit_comment.mako:141 | |
5566 | #: rhodecode/templates/files/file_authors_box.mako:28 |
|
5666 | #: rhodecode/templates/files/file_authors_box.mako:28 | |
5567 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
5667 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:398 | |
5568 | #: rhodecode/templates/search/search_commit.mako:9 |
|
5668 | #: rhodecode/templates/search/search_commit.mako:9 | |
5569 | #: rhodecode/templates/summary/components.mako:117 |
|
5669 | #: rhodecode/templates/summary/components.mako:117 | |
5570 | #: rhodecode/templates/summary/components.mako:125 |
|
5670 | #: rhodecode/templates/summary/components.mako:125 | |
5571 |
#: rhodecode/templates/ |
|
5671 | #: rhodecode/templates/tags/tags.mako:76 | |
5572 | #: rhodecode/templates/tags/tags.mako:64 |
|
|||
5573 | msgid "Commit" |
|
5672 | msgid "Commit" | |
5574 | msgstr "" |
|
5673 | msgstr "" | |
5575 |
|
5674 | |||
@@ -5579,8 +5678,8 b' msgid "%s Repository group dashboard"' | |||||
5579 | msgstr "" |
|
5678 | msgstr "" | |
5580 |
|
5679 | |||
5581 | #: rhodecode/templates/index_repo_group.mako:13 |
|
5680 | #: rhodecode/templates/index_repo_group.mako:13 | |
|
5681 | #: rhodecode/templates/base/base.mako:810 | |||
5582 | #: rhodecode/templates/base/base.mako:811 |
|
5682 | #: rhodecode/templates/base/base.mako:811 | |
5583 | #: rhodecode/templates/base/base.mako:812 |
|
|||
5584 | msgid "Home" |
|
5683 | msgid "Home" | |
5585 | msgstr "" |
|
5684 | msgstr "" | |
5586 |
|
5685 | |||
@@ -5618,7 +5717,7 b' msgid "Please contact "' | |||||
5618 | msgstr "" |
|
5717 | msgstr "" | |
5619 |
|
5718 | |||
5620 | #: rhodecode/templates/login.mako:84 rhodecode/templates/password_reset.mako:39 |
|
5719 | #: rhodecode/templates/login.mako:84 rhodecode/templates/password_reset.mako:39 | |
5621 |
#: rhodecode/templates/base/base.mako:6 |
|
5720 | #: rhodecode/templates/base/base.mako:63 | |
5622 | msgid "Support" |
|
5721 | msgid "Support" | |
5623 | msgstr "" |
|
5722 | msgstr "" | |
5624 |
|
5723 | |||
@@ -5732,9 +5831,9 b' msgstr ""' | |||||
5732 |
|
5831 | |||
5733 | #: rhodecode/templates/admin/admin_audit_log_entry.mako:46 |
|
5832 | #: rhodecode/templates/admin/admin_audit_log_entry.mako:46 | |
5734 | #: rhodecode/templates/admin/admin_log_base.mako:11 |
|
5833 | #: rhodecode/templates/admin/admin_log_base.mako:11 | |
5735 |
#: rhodecode/templates/bookmarks/bookmarks.mako: |
|
5834 | #: rhodecode/templates/bookmarks/bookmarks.mako:71 | |
5736 |
#: rhodecode/templates/branches/branches.mako: |
|
5835 | #: rhodecode/templates/branches/branches.mako:70 | |
5737 |
#: rhodecode/templates/tags/tags.mako: |
|
5836 | #: rhodecode/templates/tags/tags.mako:71 | |
5738 | msgid "Date" |
|
5837 | msgid "Date" | |
5739 | msgstr "" |
|
5838 | msgstr "" | |
5740 |
|
5839 | |||
@@ -5775,16 +5874,16 b' msgstr ""' | |||||
5775 | #: rhodecode/templates/admin/admin_log_base.mako:10 |
|
5874 | #: rhodecode/templates/admin/admin_log_base.mako:10 | |
5776 | #: rhodecode/templates/admin/defaults/defaults.mako:32 |
|
5875 | #: rhodecode/templates/admin/defaults/defaults.mako:32 | |
5777 | #: rhodecode/templates/admin/permissions/permissions_objects.mako:16 |
|
5876 | #: rhodecode/templates/admin/permissions/permissions_objects.mako:16 | |
5778 | #: rhodecode/templates/base/base.mako:656 |
|
|||
5779 | #: rhodecode/templates/base/base.mako:658 |
|
5877 | #: rhodecode/templates/base/base.mako:658 | |
5780 | #: rhodecode/templates/base/base.mako:660 |
|
5878 | #: rhodecode/templates/base/base.mako:660 | |
|
5879 | #: rhodecode/templates/base/base.mako:662 | |||
5781 | #: rhodecode/templates/search/search_commit.mako:8 |
|
5880 | #: rhodecode/templates/search/search_commit.mako:8 | |
5782 | #: rhodecode/templates/search/search_path.mako:7 |
|
5881 | #: rhodecode/templates/search/search_path.mako:7 | |
5783 | msgid "Repository" |
|
5882 | msgid "Repository" | |
5784 | msgstr "" |
|
5883 | msgstr "" | |
5785 |
|
5884 | |||
5786 | #: rhodecode/templates/admin/admin_audit_logs.mako:5 |
|
5885 | #: rhodecode/templates/admin/admin_audit_logs.mako:5 | |
5787 |
#: rhodecode/templates/base/base.mako:11 |
|
5886 | #: rhodecode/templates/base/base.mako:113 | |
5788 | msgid "Admin audit logs" |
|
5887 | msgid "Admin audit logs" | |
5789 | msgstr "" |
|
5888 | msgstr "" | |
5790 |
|
5889 | |||
@@ -5891,7 +5990,7 b' msgid "Plugin Name"' | |||||
5891 | msgstr "" |
|
5990 | msgstr "" | |
5892 |
|
5991 | |||
5893 | #: rhodecode/templates/admin/auth/auth_settings.mako:62 |
|
5992 | #: rhodecode/templates/admin/auth/auth_settings.mako:62 | |
5894 |
#: rhodecode/templates/base/base.mako:6 |
|
5993 | #: rhodecode/templates/base/base.mako:64 | |
5895 | msgid "Documentation" |
|
5994 | msgid "Documentation" | |
5896 | msgstr "" |
|
5995 | msgstr "" | |
5897 |
|
5996 | |||
@@ -6008,10 +6107,10 b' msgid "Update Gist"' | |||||
6008 | msgstr "" |
|
6107 | msgstr "" | |
6009 |
|
6108 | |||
6010 | #: rhodecode/templates/admin/gists/gist_edit.mako:100 |
|
6109 | #: rhodecode/templates/admin/gists/gist_edit.mako:100 | |
6011 |
#: rhodecode/templates/base/issue_tracker_settings.mako:15 |
|
6110 | #: rhodecode/templates/base/issue_tracker_settings.mako:151 | |
6012 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:4 |
|
6111 | #: rhodecode/templates/changeset/changeset_file_comment.mako:487 | |
6013 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
6112 | #: rhodecode/templates/codeblocks/diffs.mako:90 | |
6014 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
6113 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:84 | |
6015 | msgid "Cancel" |
|
6114 | msgid "Cancel" | |
6016 | msgstr "" |
|
6115 | msgstr "" | |
6017 |
|
6116 | |||
@@ -6065,26 +6164,26 b' msgstr ""' | |||||
6065 | #: rhodecode/templates/admin/repos/repos.mako:25 |
|
6164 | #: rhodecode/templates/admin/repos/repos.mako:25 | |
6066 | #: rhodecode/templates/admin/user_groups/user_groups.mako:25 |
|
6165 | #: rhodecode/templates/admin/user_groups/user_groups.mako:25 | |
6067 | #: rhodecode/templates/admin/users/users.mako:26 |
|
6166 | #: rhodecode/templates/admin/users/users.mako:26 | |
6068 |
#: rhodecode/templates/bookmarks/bookmarks.mako:3 |
|
6167 | #: rhodecode/templates/bookmarks/bookmarks.mako:39 | |
6069 |
#: rhodecode/templates/branches/branches.mako:3 |
|
6168 | #: rhodecode/templates/branches/branches.mako:39 | |
6070 | #: rhodecode/templates/journal/journal.mako:12 |
|
6169 | #: rhodecode/templates/journal/journal.mako:12 | |
6071 | #: rhodecode/templates/pullrequests/pullrequests.mako:53 |
|
6170 | #: rhodecode/templates/pullrequests/pullrequests.mako:53 | |
6072 |
#: rhodecode/templates/tags/tags.mako:3 |
|
6171 | #: rhodecode/templates/tags/tags.mako:39 | |
6073 | msgid "quick filter..." |
|
6172 | msgid "quick filter..." | |
6074 | msgstr "" |
|
6173 | msgstr "" | |
6075 |
|
6174 | |||
6076 | #: rhodecode/templates/admin/gists/gist_index.mako:103 |
|
6175 | #: rhodecode/templates/admin/gists/gist_index.mako:103 | |
6077 |
#: rhodecode/templates/admin/my_account/my_account_pullrequests.mako: |
|
6176 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:85 | |
6078 |
#: rhodecode/templates/bookmarks/bookmarks.mako: |
|
6177 | #: rhodecode/templates/bookmarks/bookmarks.mako:73 | |
6079 |
#: rhodecode/templates/branches/branches.mako: |
|
6178 | #: rhodecode/templates/branches/branches.mako:72 | |
6080 | #: rhodecode/templates/commits/changelog.mako:119 |
|
6179 | #: rhodecode/templates/commits/changelog.mako:119 | |
6081 | #: rhodecode/templates/compare/compare_commits.mako:16 |
|
6180 | #: rhodecode/templates/compare/compare_commits.mako:16 | |
6082 | #: rhodecode/templates/files/files_browser_tree.mako:20 |
|
6181 | #: rhodecode/templates/files/files_browser_tree.mako:20 | |
6083 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
6182 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:397 | |
6084 | #: rhodecode/templates/pullrequests/pullrequests.mako:98 |
|
6183 | #: rhodecode/templates/pullrequests/pullrequests.mako:98 | |
6085 | #: rhodecode/templates/search/search_commit.mako:18 |
|
6184 | #: rhodecode/templates/search/search_commit.mako:18 | |
6086 | #: rhodecode/templates/summary/summary_commits.mako:11 |
|
6185 | #: rhodecode/templates/summary/summary_commits.mako:11 | |
6087 |
#: rhodecode/templates/tags/tags.mako: |
|
6186 | #: rhodecode/templates/tags/tags.mako:73 | |
6088 | msgid "Author" |
|
6187 | msgid "Author" | |
6089 | msgstr "" |
|
6188 | msgstr "" | |
6090 |
|
6189 | |||
@@ -6096,7 +6195,7 b' msgstr ""' | |||||
6096 | #: rhodecode/templates/admin/user_groups/user_group_edit_advanced.mako:7 |
|
6195 | #: rhodecode/templates/admin/user_groups/user_group_edit_advanced.mako:7 | |
6097 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:6 |
|
6196 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:6 | |
6098 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:16 |
|
6197 | #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:16 | |
6099 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
6198 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:60 | |
6100 | msgid "Created on" |
|
6199 | msgid "Created on" | |
6101 | msgstr "" |
|
6200 | msgstr "" | |
6102 |
|
6201 | |||
@@ -6105,7 +6204,7 b' msgid "Expires"' | |||||
6105 | msgstr "" |
|
6204 | msgstr "" | |
6106 |
|
6205 | |||
6107 | #: rhodecode/templates/admin/gists/gist_new.mako:5 |
|
6206 | #: rhodecode/templates/admin/gists/gist_new.mako:5 | |
6108 |
#: rhodecode/templates/base/base.mako:57 |
|
6207 | #: rhodecode/templates/base/base.mako:577 | |
6109 | msgid "New Gist" |
|
6208 | msgid "New Gist" | |
6110 | msgstr "" |
|
6209 | msgstr "" | |
6111 |
|
6210 | |||
@@ -6197,7 +6296,7 b' msgstr ""' | |||||
6197 | #: rhodecode/templates/admin/integrations/new.mako:15 |
|
6296 | #: rhodecode/templates/admin/integrations/new.mako:15 | |
6198 | #: rhodecode/templates/admin/repo_groups/repo_group_edit.mako:33 |
|
6297 | #: rhodecode/templates/admin/repo_groups/repo_group_edit.mako:33 | |
6199 | #: rhodecode/templates/admin/repos/repo_edit.mako:74 |
|
6298 | #: rhodecode/templates/admin/repos/repo_edit.mako:74 | |
6200 |
#: rhodecode/templates/base/base.mako:1 |
|
6299 | #: rhodecode/templates/base/base.mako:120 | |
6201 | msgid "Integrations" |
|
6300 | msgid "Integrations" | |
6202 | msgstr "" |
|
6301 | msgstr "" | |
6203 |
|
6302 | |||
@@ -6212,7 +6311,7 b' msgstr ""' | |||||
6212 | #: rhodecode/templates/admin/settings/settings.mako:14 |
|
6311 | #: rhodecode/templates/admin/settings/settings.mako:14 | |
6213 | #: rhodecode/templates/admin/user_groups/user_group_edit.mako:34 |
|
6312 | #: rhodecode/templates/admin/user_groups/user_group_edit.mako:34 | |
6214 | #: rhodecode/templates/admin/user_groups/user_group_edit_settings.mako:9 |
|
6313 | #: rhodecode/templates/admin/user_groups/user_group_edit_settings.mako:9 | |
6215 |
#: rhodecode/templates/base/base.mako:12 |
|
6314 | #: rhodecode/templates/base/base.mako:122 | |
6216 | msgid "Settings" |
|
6315 | msgid "Settings" | |
6217 | msgstr "" |
|
6316 | msgstr "" | |
6218 |
|
6317 | |||
@@ -6313,7 +6412,7 b' msgid "No description available"' | |||||
6313 | msgstr "" |
|
6412 | msgstr "" | |
6314 |
|
6413 | |||
6315 | #: rhodecode/templates/admin/my_account/my_account.mako:5 |
|
6414 | #: rhodecode/templates/admin/my_account/my_account.mako:5 | |
6316 |
#: rhodecode/templates/base/base.mako:62 |
|
6415 | #: rhodecode/templates/base/base.mako:622 | |
6317 | msgid "My account" |
|
6416 | msgid "My account" | |
6318 | msgstr "" |
|
6417 | msgstr "" | |
6319 |
|
6418 | |||
@@ -6364,15 +6463,15 b' msgstr ""' | |||||
6364 |
|
6463 | |||
6365 | #: rhodecode/templates/admin/my_account/my_account.mako:45 |
|
6464 | #: rhodecode/templates/admin/my_account/my_account.mako:45 | |
6366 | #: rhodecode/templates/admin/notifications/notifications_show_all.mako:42 |
|
6465 | #: rhodecode/templates/admin/notifications/notifications_show_all.mako:42 | |
6367 |
#: rhodecode/templates/base/base.mako:38 |
|
6466 | #: rhodecode/templates/base/base.mako:385 | |
6368 |
#: rhodecode/templates/base/base.mako:62 |
|
6467 | #: rhodecode/templates/base/base.mako:626 | |
6369 | msgid "Pull Requests" |
|
6468 | msgid "Pull Requests" | |
6370 | msgstr "" |
|
6469 | msgstr "" | |
6371 |
|
6470 | |||
6372 | #: rhodecode/templates/admin/my_account/my_account.mako:46 |
|
6471 | #: rhodecode/templates/admin/my_account/my_account.mako:46 | |
6373 | #: rhodecode/templates/admin/permissions/permissions.mako:14 |
|
6472 | #: rhodecode/templates/admin/permissions/permissions.mako:14 | |
6374 | #: rhodecode/templates/admin/user_groups/user_group_edit.mako:35 |
|
6473 | #: rhodecode/templates/admin/user_groups/user_group_edit.mako:35 | |
6375 |
#: rhodecode/templates/base/base.mako:11 |
|
6474 | #: rhodecode/templates/base/base.mako:118 | |
6376 | msgid "Permissions" |
|
6475 | msgid "Permissions" | |
6377 | msgstr "" |
|
6476 | msgstr "" | |
6378 |
|
6477 | |||
@@ -6592,27 +6691,27 b' msgstr ""' | |||||
6592 | msgid "Pull Requests You Participate In" |
|
6691 | msgid "Pull Requests You Participate In" | |
6593 | msgstr "" |
|
6692 | msgstr "" | |
6594 |
|
6693 | |||
6595 |
#: rhodecode/templates/admin/my_account/my_account_pullrequests.mako: |
|
6694 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:73 | |
6596 | msgid "Target Repo" |
|
6695 | #: rhodecode/templates/pullrequests/pullrequests.mako:94 | |
|
6696 | msgid "Id" | |||
6597 | msgstr "" |
|
6697 | msgstr "" | |
6598 |
|
6698 | |||
6599 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:79 |
|
6699 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:79 | |
6600 | #: rhodecode/templates/pullrequests/pullrequests.mako:94 |
|
|||
6601 | msgid "Id" |
|
|||
6602 | msgstr "" |
|
|||
6603 |
|
||||
6604 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:85 |
|
|||
6605 | #: rhodecode/templates/admin/settings/settings_global.mako:9 |
|
6700 | #: rhodecode/templates/admin/settings/settings_global.mako:9 | |
6606 |
#: rhodecode/templates/email_templates/pull_request_review.mako:4 |
|
6701 | #: rhodecode/templates/email_templates/pull_request_review.mako:47 | |
6607 | #: rhodecode/templates/email_templates/pull_request_update.mako:43 |
|
6702 | #: rhodecode/templates/email_templates/pull_request_update.mako:43 | |
6608 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
6703 | #: rhodecode/templates/pullrequests/pullrequest.mako:91 | |
6609 | #: rhodecode/templates/pullrequests/pullrequests.mako:96 |
|
6704 | #: rhodecode/templates/pullrequests/pullrequests.mako:96 | |
6610 | msgid "Title" |
|
6705 | msgid "Title" | |
6611 | msgstr "" |
|
6706 | msgstr "" | |
6612 |
|
6707 | |||
|
6708 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:97 | |||
|
6709 | #: rhodecode/templates/pullrequests/pullrequests.mako:102 | |||
|
6710 | msgid "Last Update" | |||
|
6711 | msgstr "" | |||
|
6712 | ||||
6613 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:103 |
|
6713 | #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:103 | |
6614 | #: rhodecode/templates/pullrequests/pullrequests.mako:102 |
|
6714 | msgid "Target Repo" | |
6615 | msgid "Last Update" |
|
|||
6616 | msgstr "" |
|
6715 | msgstr "" | |
6617 |
|
6716 | |||
6618 | #: rhodecode/templates/admin/my_account/my_account_repos.mako:3 |
|
6717 | #: rhodecode/templates/admin/my_account/my_account_repos.mako:3 | |
@@ -6717,8 +6816,10 b' msgid "Unread"' | |||||
6717 | msgstr "" |
|
6816 | msgstr "" | |
6718 |
|
6817 | |||
6719 | #: rhodecode/templates/admin/notifications/notifications_show_all.mako:41 |
|
6818 | #: rhodecode/templates/admin/notifications/notifications_show_all.mako:41 | |
6720 |
#: rhodecode/templates/changeset/changeset.mako: |
|
6819 | #: rhodecode/templates/changeset/changeset.mako:254 | |
6721 |
#: rhodecode/templates/ |
|
6820 | #: rhodecode/templates/changeset/changeset.mako:264 | |
|
6821 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:729 | |||
|
6822 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:739 | |||
6722 | msgid "Comments" |
|
6823 | msgid "Comments" | |
6723 | msgstr "" |
|
6824 | msgstr "" | |
6724 |
|
6825 | |||
@@ -6798,6 +6899,7 b' msgstr ""' | |||||
6798 | #: rhodecode/templates/admin/repos/repo_edit_reviewers.mako:6 |
|
6899 | #: rhodecode/templates/admin/repos/repo_edit_reviewers.mako:6 | |
6799 | #: rhodecode/templates/admin/settings/settings_automation.mako:6 |
|
6900 | #: rhodecode/templates/admin/settings/settings_automation.mako:6 | |
6800 | #: rhodecode/templates/artifacts/artifact_list.mako:24 |
|
6901 | #: rhodecode/templates/artifacts/artifact_list.mako:24 | |
|
6902 | #: rhodecode/templates/pullrequests/pullrequest.mako:197 | |||
6801 | msgid "This feature is available in RhodeCode EE edition only. Contact {sales_email} to obtain a trial license." |
|
6903 | msgid "This feature is available in RhodeCode EE edition only. Contact {sales_email} to obtain a trial license." | |
6802 | msgstr "" |
|
6904 | msgstr "" | |
6803 |
|
6905 | |||
@@ -6887,8 +6989,8 b' msgstr ""' | |||||
6887 |
|
6989 | |||
6888 | #: rhodecode/templates/admin/repo_groups/repo_group_add.mako:14 |
|
6990 | #: rhodecode/templates/admin/repo_groups/repo_group_add.mako:14 | |
6889 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:13 |
|
6991 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:13 | |
6890 |
#: rhodecode/templates/base/base.mako:11 |
|
6992 | #: rhodecode/templates/base/base.mako:115 | |
6891 |
#: rhodecode/templates/base/base.mako:13 |
|
6993 | #: rhodecode/templates/base/base.mako:136 | |
6892 | msgid "Repository groups" |
|
6994 | msgid "Repository groups" | |
6893 | msgstr "" |
|
6995 | msgstr "" | |
6894 |
|
6996 | |||
@@ -6903,7 +7005,7 b' msgstr ""' | |||||
6903 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_settings.mako:25 |
|
7005 | #: rhodecode/templates/admin/repo_groups/repo_group_edit_settings.mako:25 | |
6904 | #: rhodecode/templates/admin/repos/repo_add_base.mako:43 |
|
7006 | #: rhodecode/templates/admin/repos/repo_add_base.mako:43 | |
6905 | #: rhodecode/templates/admin/repos/repo_edit_settings.mako:33 |
|
7007 | #: rhodecode/templates/admin/repos/repo_edit_settings.mako:33 | |
6906 |
#: rhodecode/templates/base/base.mako:6 |
|
7008 | #: rhodecode/templates/base/base.mako:671 | |
6907 | #: rhodecode/templates/data_table/_dt_elements.mako:217 |
|
7009 | #: rhodecode/templates/data_table/_dt_elements.mako:217 | |
6908 | #: rhodecode/templates/forks/fork.mako:41 |
|
7010 | #: rhodecode/templates/forks/fork.mako:41 | |
6909 | msgid "Repository group" |
|
7011 | msgid "Repository group" | |
@@ -7153,7 +7255,7 b' msgid "Import Existing Repository ?"' | |||||
7153 | msgstr "" |
|
7255 | msgstr "" | |
7154 |
|
7256 | |||
7155 | #: rhodecode/templates/admin/repos/repo_add_base.mako:23 |
|
7257 | #: rhodecode/templates/admin/repos/repo_add_base.mako:23 | |
7156 |
#: rhodecode/templates/base/base.mako:33 |
|
7258 | #: rhodecode/templates/base/base.mako:332 | |
7157 | msgid "Clone from" |
|
7259 | msgid "Clone from" | |
7158 | msgstr "" |
|
7260 | msgstr "" | |
7159 |
|
7261 | |||
@@ -7538,13 +7640,13 b' msgid "Inherited Issue Tracker Patterns"' | |||||
7538 | msgstr "" |
|
7640 | msgstr "" | |
7539 |
|
7641 | |||
7540 | #: rhodecode/templates/admin/repos/repo_edit_issuetracker.mako:31 |
|
7642 | #: rhodecode/templates/admin/repos/repo_edit_issuetracker.mako:31 | |
7541 |
#: rhodecode/templates/base/issue_tracker_settings.mako: |
|
7643 | #: rhodecode/templates/base/issue_tracker_settings.mako:80 | |
7542 | #: rhodecode/templates/base/perms_summary.mako:174 |
|
7644 | #: rhodecode/templates/base/perms_summary.mako:174 | |
7543 | msgid "Pattern" |
|
7645 | msgid "Pattern" | |
7544 | msgstr "" |
|
7646 | msgstr "" | |
7545 |
|
7647 | |||
7546 | #: rhodecode/templates/admin/repos/repo_edit_issuetracker.mako:32 |
|
7648 | #: rhodecode/templates/admin/repos/repo_edit_issuetracker.mako:32 | |
7547 |
#: rhodecode/templates/base/issue_tracker_settings.mako:8 |
|
7649 | #: rhodecode/templates/base/issue_tracker_settings.mako:81 | |
7548 | msgid "Url" |
|
7650 | msgid "Url" | |
7549 | msgstr "" |
|
7651 | msgstr "" | |
7550 |
|
7652 | |||
@@ -7608,11 +7710,11 b' msgid "un-set private mode"' | |||||
7608 | msgstr "" |
|
7710 | msgstr "" | |
7609 |
|
7711 | |||
7610 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:109 |
|
7712 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:109 | |
7611 |
msgid "used by {} branch rule, requires write |
|
7713 | msgid "used by {} branch rule, requires write or higher permissions" | |
7612 | msgstr "" |
|
7714 | msgstr "" | |
7613 |
|
7715 | |||
7614 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:111 |
|
7716 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:111 | |
7615 |
msgid "used by {} branch rules, requires write |
|
7717 | msgid "used by {} branch rules, requires write or higher permissions" | |
7616 | msgstr "" |
|
7718 | msgstr "" | |
7617 |
|
7719 | |||
7618 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:125 |
|
7720 | #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:125 | |
@@ -8422,8 +8524,8 b' msgstr ""' | |||||
8422 |
|
8524 | |||
8423 | #: rhodecode/templates/admin/user_groups/user_group_add.mako:13 |
|
8525 | #: rhodecode/templates/admin/user_groups/user_group_add.mako:13 | |
8424 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:14 |
|
8526 | #: rhodecode/templates/admin/users/user_edit_advanced.mako:14 | |
8425 |
#: rhodecode/templates/base/base.mako:11 |
|
8527 | #: rhodecode/templates/base/base.mako:117 | |
8426 |
#: rhodecode/templates/base/base.mako:13 |
|
8528 | #: rhodecode/templates/base/base.mako:139 | |
8427 | msgid "User groups" |
|
8529 | msgid "User groups" | |
8428 | msgstr "" |
|
8530 | msgstr "" | |
8429 |
|
8531 | |||
@@ -8555,7 +8657,7 b' msgstr ""' | |||||
8555 |
|
8657 | |||
8556 | #: rhodecode/templates/admin/users/user_add.mako:13 |
|
8658 | #: rhodecode/templates/admin/users/user_add.mako:13 | |
8557 | #: rhodecode/templates/admin/users/user_edit.mako:14 |
|
8659 | #: rhodecode/templates/admin/users/user_edit.mako:14 | |
8558 |
#: rhodecode/templates/base/base.mako:11 |
|
8660 | #: rhodecode/templates/base/base.mako:116 | |
8559 | msgid "Users" |
|
8661 | msgid "Users" | |
8560 | msgstr "" |
|
8662 | msgstr "" | |
8561 |
|
8663 | |||
@@ -8919,69 +9021,69 b' msgstr ""' | |||||
8919 | msgid "{} Artifacts" |
|
9021 | msgid "{} Artifacts" | |
8920 | msgstr "" |
|
9022 | msgstr "" | |
8921 |
|
9023 | |||
8922 |
#: rhodecode/templates/base/base.mako:7 |
|
9024 | #: rhodecode/templates/base/base.mako:73 | |
8923 | msgid "RhodeCode instance id: {}" |
|
9025 | msgid "RhodeCode instance id: {}" | |
8924 | msgstr "" |
|
9026 | msgstr "" | |
8925 |
|
9027 | |||
8926 | #: rhodecode/templates/base/base.mako:99 |
|
|||
8927 | msgid "Super-admin Panel" |
|
|||
8928 | msgstr "" |
|
|||
8929 |
|
||||
8930 | #: rhodecode/templates/base/base.mako:101 |
|
9028 | #: rhodecode/templates/base/base.mako:101 | |
|
9029 | msgid "Super-admin Panel" | |||
|
9030 | msgstr "" | |||
|
9031 | ||||
|
9032 | #: rhodecode/templates/base/base.mako:103 | |||
8931 | msgid "Delegated Admin Panel" |
|
9033 | msgid "Delegated Admin Panel" | |
8932 | msgstr "" |
|
9034 | msgstr "" | |
8933 |
|
9035 | |||
8934 | #: rhodecode/templates/base/base.mako:117 |
|
|||
8935 | msgid "Authentication" |
|
|||
8936 | msgstr "" |
|
|||
8937 |
|
||||
8938 | #: rhodecode/templates/base/base.mako:119 |
|
9036 | #: rhodecode/templates/base/base.mako:119 | |
|
9037 | msgid "Authentication" | |||
|
9038 | msgstr "" | |||
|
9039 | ||||
|
9040 | #: rhodecode/templates/base/base.mako:121 | |||
8939 | msgid "Defaults" |
|
9041 | msgid "Defaults" | |
8940 | msgstr "" |
|
9042 | msgstr "" | |
8941 |
|
9043 | |||
8942 |
#: rhodecode/templates/base/base.mako:1 |
|
9044 | #: rhodecode/templates/base/base.mako:161 | |
8943 |
#: rhodecode/templates/base/base.mako:1 |
|
9045 | #: rhodecode/templates/base/base.mako:201 | |
8944 |
#: rhodecode/templates/changeset/changeset.mako:1 |
|
9046 | #: rhodecode/templates/changeset/changeset.mako:142 | |
8945 | #: rhodecode/templates/files/files_source_header.mako:57 |
|
9047 | #: rhodecode/templates/files/files_source_header.mako:57 | |
8946 | #: rhodecode/templates/files/files_tree_header.mako:44 |
|
9048 | #: rhodecode/templates/files/files_tree_header.mako:44 | |
8947 | #: rhodecode/templates/summary/components.mako:275 |
|
9049 | #: rhodecode/templates/summary/components.mako:275 | |
8948 | msgid "Show More" |
|
9050 | msgid "Show More" | |
8949 | msgstr "" |
|
9051 | msgstr "" | |
8950 |
|
9052 | |||
8951 |
#: rhodecode/templates/base/base.mako:30 |
|
9053 | #: rhodecode/templates/base/base.mako:304 | |
8952 |
#: rhodecode/templates/base/base.mako:31 |
|
9054 | #: rhodecode/templates/base/base.mako:315 | |
8953 | msgid "RSS Feed" |
|
9055 | msgid "RSS Feed" | |
8954 | msgstr "" |
|
9056 | msgstr "" | |
8955 |
|
9057 | |||
8956 |
#: rhodecode/templates/base/base.mako:30 |
|
9058 | #: rhodecode/templates/base/base.mako:306 | |
8957 | msgid "Watch this Repository and actions on it in your personalized journal" |
|
9059 | msgid "Watch this Repository and actions on it in your personalized journal" | |
8958 | msgstr "" |
|
9060 | msgstr "" | |
8959 |
|
9061 | |||
8960 |
#: rhodecode/templates/base/base.mako:32 |
|
9062 | #: rhodecode/templates/base/base.mako:324 | |
8961 | msgid "Fork of" |
|
9063 | msgid "Fork of" | |
8962 | msgstr "" |
|
9064 | msgstr "" | |
8963 |
|
9065 | |||
8964 |
#: rhodecode/templates/base/base.mako:3 |
|
9066 | #: rhodecode/templates/base/base.mako:341 | |
8965 | #, python-format |
|
9067 | #, python-format | |
8966 | msgid "Repository locked by %(user)s" |
|
9068 | msgid "Repository locked by %(user)s" | |
8967 | msgstr "" |
|
9069 | msgstr "" | |
8968 |
|
9070 | |||
8969 |
#: rhodecode/templates/base/base.mako:34 |
|
9071 | #: rhodecode/templates/base/base.mako:346 | |
8970 | msgid "Repository not locked. Pull repository to lock it." |
|
9072 | msgid "Repository not locked. Pull repository to lock it." | |
8971 | msgstr "" |
|
9073 | msgstr "" | |
8972 |
|
9074 | |||
8973 |
#: rhodecode/templates/base/base.mako:36 |
|
9075 | #: rhodecode/templates/base/base.mako:362 | |
8974 | msgid "This repository has been archived. It is now read-only." |
|
9076 | msgid "This repository has been archived. It is now read-only." | |
8975 | msgstr "" |
|
9077 | msgstr "" | |
8976 |
|
9078 | |||
8977 |
#: rhodecode/templates/base/base.mako:37 |
|
9079 | #: rhodecode/templates/base/base.mako:375 | |
8978 | #: rhodecode/templates/data_table/_dt_elements.mako:58 |
|
9080 | #: rhodecode/templates/data_table/_dt_elements.mako:58 | |
8979 | #: rhodecode/templates/data_table/_dt_elements.mako:59 |
|
9081 | #: rhodecode/templates/data_table/_dt_elements.mako:59 | |
8980 | #: rhodecode/templates/data_table/_dt_elements.mako:207 |
|
9082 | #: rhodecode/templates/data_table/_dt_elements.mako:207 | |
8981 | msgid "Summary" |
|
9083 | msgid "Summary" | |
8982 | msgstr "" |
|
9084 | msgstr "" | |
8983 |
|
9085 | |||
8984 |
#: rhodecode/templates/base/base.mako:37 |
|
9086 | #: rhodecode/templates/base/base.mako:376 | |
8985 | #: rhodecode/templates/data_table/_dt_elements.mako:63 |
|
9087 | #: rhodecode/templates/data_table/_dt_elements.mako:63 | |
8986 | #: rhodecode/templates/data_table/_dt_elements.mako:64 |
|
9088 | #: rhodecode/templates/data_table/_dt_elements.mako:64 | |
8987 | #: rhodecode/templates/files/file_authors_box.mako:30 |
|
9089 | #: rhodecode/templates/files/file_authors_box.mako:30 | |
@@ -8991,7 +9093,7 b' msgstr ""' | |||||
8991 | msgid "Commits" |
|
9093 | msgid "Commits" | |
8992 | msgstr "" |
|
9094 | msgstr "" | |
8993 |
|
9095 | |||
8994 |
#: rhodecode/templates/base/base.mako:37 |
|
9096 | #: rhodecode/templates/base/base.mako:377 | |
8995 | #: rhodecode/templates/data_table/_dt_elements.mako:68 |
|
9097 | #: rhodecode/templates/data_table/_dt_elements.mako:68 | |
8996 | #: rhodecode/templates/data_table/_dt_elements.mako:69 |
|
9098 | #: rhodecode/templates/data_table/_dt_elements.mako:69 | |
8997 | #: rhodecode/templates/files/files.mako:15 |
|
9099 | #: rhodecode/templates/files/files.mako:15 | |
@@ -8999,87 +9101,87 b' msgstr ""' | |||||
8999 | msgid "Files" |
|
9101 | msgid "Files" | |
9000 | msgstr "" |
|
9102 | msgstr "" | |
9001 |
|
9103 | |||
9002 |
#: rhodecode/templates/base/base.mako:37 |
|
9104 | #: rhodecode/templates/base/base.mako:378 | |
9003 |
#: rhodecode/templates/bookmarks/bookmarks.mako: |
|
9105 | #: rhodecode/templates/bookmarks/bookmarks.mako:78 | |
9004 |
#: rhodecode/templates/branches/branches.mako: |
|
9106 | #: rhodecode/templates/branches/branches.mako:77 | |
9005 |
#: rhodecode/templates/tags/tags.mako: |
|
9107 | #: rhodecode/templates/tags/tags.mako:78 | |
9006 | msgid "Compare" |
|
9108 | msgid "Compare" | |
9007 | msgstr "" |
|
9109 | msgstr "" | |
9008 |
|
9110 | |||
9009 |
#: rhodecode/templates/base/base.mako:38 |
|
9111 | #: rhodecode/templates/base/base.mako:383 | |
9010 | #, python-format |
|
9112 | #, python-format | |
9011 | msgid "Show Pull Requests for %s" |
|
9113 | msgid "Show Pull Requests for %s" | |
9012 | msgstr "" |
|
9114 | msgstr "" | |
9013 |
|
9115 | |||
9014 |
#: rhodecode/templates/base/base.mako:39 |
|
9116 | #: rhodecode/templates/base/base.mako:394 | |
9015 | msgid "Artifacts" |
|
9117 | msgid "Artifacts" | |
9016 | msgstr "" |
|
9118 | msgstr "" | |
9017 |
|
9119 | |||
9018 |
#: rhodecode/templates/base/base.mako: |
|
9120 | #: rhodecode/templates/base/base.mako:400 | |
9019 | msgid "Repository Settings" |
|
9121 | msgid "Repository Settings" | |
9020 | msgstr "" |
|
9122 | msgstr "" | |
9021 |
|
9123 | |||
9022 |
#: rhodecode/templates/base/base.mako:40 |
|
9124 | #: rhodecode/templates/base/base.mako:406 | |
9023 | msgid "Options" |
|
9125 | msgid "Options" | |
9024 | msgstr "" |
|
9126 | msgstr "" | |
9025 |
|
9127 | |||
9026 | #: rhodecode/templates/base/base.mako:409 |
|
|||
9027 | msgid "Unlock Repository" |
|
|||
9028 | msgstr "" |
|
|||
9029 |
|
||||
9030 | #: rhodecode/templates/base/base.mako:411 |
|
9128 | #: rhodecode/templates/base/base.mako:411 | |
|
9129 | msgid "Unlock Repository" | |||
|
9130 | msgstr "" | |||
|
9131 | ||||
|
9132 | #: rhodecode/templates/base/base.mako:413 | |||
9031 | msgid "Lock Repository" |
|
9133 | msgid "Lock Repository" | |
9032 | msgstr "" |
|
9134 | msgstr "" | |
9033 |
|
9135 | |||
9034 |
#: rhodecode/templates/base/base.mako:46 |
|
9136 | #: rhodecode/templates/base/base.mako:466 | |
9035 | msgid "Group Home" |
|
9137 | msgid "Group Home" | |
9036 | msgstr "" |
|
9138 | msgstr "" | |
9037 |
|
9139 | |||
9038 |
#: rhodecode/templates/base/base.mako:4 |
|
9140 | #: rhodecode/templates/base/base.mako:470 | |
9039 | msgid "You have admin right to this group, and can edit it" |
|
9141 | msgid "You have admin right to this group, and can edit it" | |
9040 | msgstr "" |
|
9142 | msgstr "" | |
9041 |
|
9143 | |||
9042 |
#: rhodecode/templates/base/base.mako:4 |
|
9144 | #: rhodecode/templates/base/base.mako:470 | |
9043 | msgid "Group Settings" |
|
9145 | msgid "Group Settings" | |
9044 | msgstr "" |
|
9146 | msgstr "" | |
9045 |
|
9147 | |||
9046 | #: rhodecode/templates/base/base.mako:519 |
|
|||
9047 | msgid "This Repository" |
|
|||
9048 | msgstr "" |
|
|||
9049 |
|
||||
9050 | #: rhodecode/templates/base/base.mako:521 |
|
9148 | #: rhodecode/templates/base/base.mako:521 | |
|
9149 | msgid "This Repository" | |||
|
9150 | msgstr "" | |||
|
9151 | ||||
|
9152 | #: rhodecode/templates/base/base.mako:523 | |||
9051 | msgid "Create Pull Request" |
|
9153 | msgid "Create Pull Request" | |
9052 | msgstr "" |
|
9154 | msgstr "" | |
9053 |
|
9155 | |||
9054 |
#: rhodecode/templates/base/base.mako:52 |
|
9156 | #: rhodecode/templates/base/base.mako:527 | |
9055 | msgid "Fork this repository" |
|
9157 | msgid "Fork this repository" | |
9056 | msgstr "" |
|
9158 | msgstr "" | |
9057 |
|
9159 | |||
9058 |
#: rhodecode/templates/base/base.mako:53 |
|
9160 | #: rhodecode/templates/base/base.mako:534 | |
9059 | msgid "This Repository Group" |
|
9161 | msgid "This Repository Group" | |
9060 | msgstr "" |
|
9162 | msgstr "" | |
9061 |
|
9163 | |||
9062 |
#: rhodecode/templates/base/base.mako:53 |
|
9164 | #: rhodecode/templates/base/base.mako:538 | |
9063 |
#: rhodecode/templates/base/base.mako:55 |
|
9165 | #: rhodecode/templates/base/base.mako:554 | |
9064 |
#: rhodecode/templates/base/base.mako:56 |
|
9166 | #: rhodecode/templates/base/base.mako:566 | |
9065 | msgid "New Repository" |
|
9167 | msgid "New Repository" | |
9066 | msgstr "" |
|
9168 | msgstr "" | |
9067 |
|
9169 | |||
9068 |
#: rhodecode/templates/base/base.mako:54 |
|
9170 | #: rhodecode/templates/base/base.mako:544 | |
9069 |
#: rhodecode/templates/base/base.mako:55 |
|
9171 | #: rhodecode/templates/base/base.mako:558 | |
9070 |
#: rhodecode/templates/base/base.mako:57 |
|
9172 | #: rhodecode/templates/base/base.mako:572 | |
9071 | msgid "New Repository Group" |
|
9173 | msgid "New Repository Group" | |
9072 | msgstr "" |
|
9174 | msgstr "" | |
9073 |
|
9175 | |||
9074 |
#: rhodecode/templates/base/base.mako:59 |
|
9176 | #: rhodecode/templates/base/base.mako:599 | |
9075 | msgid "Sign in" |
|
9177 | msgid "Sign in" | |
9076 | msgstr "" |
|
9178 | msgstr "" | |
9077 |
|
9179 | |||
9078 |
#: rhodecode/templates/base/base.mako:62 |
|
9180 | #: rhodecode/templates/base/base.mako:624 | |
9079 | msgid "My personal group" |
|
9181 | msgid "My personal group" | |
9080 | msgstr "" |
|
9182 | msgstr "" | |
9081 |
|
9183 | |||
9082 |
#: rhodecode/templates/base/base.mako:6 |
|
9184 | #: rhodecode/templates/base/base.mako:630 | |
9083 | #: rhodecode/templates/debug_style/alerts.html:5 |
|
9185 | #: rhodecode/templates/debug_style/alerts.html:5 | |
9084 | #: rhodecode/templates/debug_style/buttons.html:5 |
|
9186 | #: rhodecode/templates/debug_style/buttons.html:5 | |
9085 | #: rhodecode/templates/debug_style/code-block.html:6 |
|
9187 | #: rhodecode/templates/debug_style/code-block.html:6 | |
@@ -9102,61 +9204,61 b' msgstr ""' | |||||
9102 | msgid "Style" |
|
9204 | msgid "Style" | |
9103 | msgstr "" |
|
9205 | msgstr "" | |
9104 |
|
9206 | |||
9105 |
#: rhodecode/templates/base/base.mako:6 |
|
9207 | #: rhodecode/templates/base/base.mako:631 | |
9106 | msgid "[Style]" |
|
9208 | msgid "[Style]" | |
9107 | msgstr "" |
|
9209 | msgstr "" | |
9108 |
|
9210 | |||
9109 |
#: rhodecode/templates/base/base.mako:64 |
|
9211 | #: rhodecode/templates/base/base.mako:648 | |
9110 | msgid "No Bookmarks yet." |
|
9212 | msgid "No Bookmarks yet." | |
9111 | msgstr "" |
|
9213 | msgstr "" | |
9112 |
|
9214 | |||
9113 |
#: rhodecode/templates/base/base.mako:68 |
|
9215 | #: rhodecode/templates/base/base.mako:686 | |
9114 | msgid "Sign Out" |
|
9216 | msgid "Sign Out" | |
9115 | msgstr "" |
|
9217 | msgstr "" | |
9116 |
|
9218 | |||
9117 |
#: rhodecode/templates/base/base.mako:73 |
|
9219 | #: rhodecode/templates/base/base.mako:731 | |
9118 | msgid "dismiss" |
|
9220 | msgid "dismiss" | |
9119 | msgstr "" |
|
9221 | msgstr "" | |
9120 |
|
9222 | |||
9121 |
#: rhodecode/templates/base/base.mako:77 |
|
9223 | #: rhodecode/templates/base/base.mako:772 | |
9122 | msgid "search / go to..." |
|
9224 | msgid "search / go to..." | |
9123 | msgstr "" |
|
9225 | msgstr "" | |
9124 |
|
9226 | |||
|
9227 | #: rhodecode/templates/base/base.mako:817 | |||
|
9228 | msgid "Show activity journal" | |||
|
9229 | msgstr "" | |||
|
9230 | ||||
9125 | #: rhodecode/templates/base/base.mako:818 |
|
9231 | #: rhodecode/templates/base/base.mako:818 | |
9126 | msgid "Show activity journal" |
|
|||
9127 | msgstr "" |
|
|||
9128 |
|
||||
9129 | #: rhodecode/templates/base/base.mako:819 |
|
|||
9130 | #: rhodecode/templates/journal/journal.mako:4 |
|
9232 | #: rhodecode/templates/journal/journal.mako:4 | |
9131 | #: rhodecode/templates/journal/journal.mako:14 |
|
9233 | #: rhodecode/templates/journal/journal.mako:14 | |
9132 | msgid "Journal" |
|
9234 | msgid "Journal" | |
9133 | msgstr "" |
|
9235 | msgstr "" | |
9134 |
|
9236 | |||
9135 |
#: rhodecode/templates/base/base.mako:82 |
|
9237 | #: rhodecode/templates/base/base.mako:823 | |
9136 | msgid "Show Public activity journal" |
|
9238 | msgid "Show Public activity journal" | |
9137 | msgstr "" |
|
9239 | msgstr "" | |
9138 |
|
9240 | |||
9139 |
#: rhodecode/templates/base/base.mako:82 |
|
9241 | #: rhodecode/templates/base/base.mako:824 | |
9140 | msgid "Public journal" |
|
9242 | msgid "Public journal" | |
9141 | msgstr "" |
|
9243 | msgstr "" | |
9142 |
|
9244 | |||
|
9245 | #: rhodecode/templates/base/base.mako:830 | |||
|
9246 | msgid "Show Gists" | |||
|
9247 | msgstr "" | |||
|
9248 | ||||
9143 | #: rhodecode/templates/base/base.mako:831 |
|
9249 | #: rhodecode/templates/base/base.mako:831 | |
9144 | msgid "Show Gists" |
|
|||
9145 | msgstr "" |
|
|||
9146 |
|
||||
9147 | #: rhodecode/templates/base/base.mako:832 |
|
|||
9148 | msgid "Gists" |
|
9250 | msgid "Gists" | |
9149 | msgstr "" |
|
9251 | msgstr "" | |
9150 |
|
9252 | |||
9151 |
#: rhodecode/templates/base/base.mako:83 |
|
9253 | #: rhodecode/templates/base/base.mako:837 | |
9152 | msgid "Admin settings" |
|
9254 | msgid "Admin settings" | |
9153 | msgstr "" |
|
9255 | msgstr "" | |
9154 |
|
9256 | |||
9155 |
#: rhodecode/templates/base/base.mako:115 |
|
9257 | #: rhodecode/templates/base/base.mako:1154 | |
9156 | msgid "Keyboard shortcuts" |
|
9258 | msgid "Keyboard shortcuts" | |
9157 | msgstr "" |
|
9259 | msgstr "" | |
9158 |
|
9260 | |||
9159 |
#: rhodecode/templates/base/base.mako:116 |
|
9261 | #: rhodecode/templates/base/base.mako:1162 | |
9160 | msgid "Site-wide shortcuts" |
|
9262 | msgid "Site-wide shortcuts" | |
9161 | msgstr "" |
|
9263 | msgstr "" | |
9162 |
|
9264 | |||
@@ -9235,36 +9337,36 b' msgid ""' | |||||
9235 | "permission by members of user groups." |
|
9337 | "permission by members of user groups." | |
9236 | msgstr "" |
|
9338 | msgstr "" | |
9237 |
|
9339 | |||
9238 |
#: rhodecode/templates/base/issue_tracker_settings.mako:8 |
|
9340 | #: rhodecode/templates/base/issue_tracker_settings.mako:82 | |
9239 | msgid "Extra Prefix" |
|
9341 | msgid "Extra Prefix" | |
9240 | msgstr "" |
|
9342 | msgstr "" | |
9241 |
|
9343 | |||
9242 |
#: rhodecode/templates/base/issue_tracker_settings.mako:9 |
|
9344 | #: rhodecode/templates/base/issue_tracker_settings.mako:93 | |
9243 | msgid "show examples" |
|
9345 | msgid "show examples" | |
9244 | msgstr "" |
|
9346 | msgstr "" | |
9245 |
|
9347 | |||
9246 |
#: rhodecode/templates/base/issue_tracker_settings.mako:16 |
|
9348 | #: rhodecode/templates/base/issue_tracker_settings.mako:161 | |
9247 | msgid "Add new" |
|
9349 | msgid "Add new" | |
9248 | msgstr "" |
|
9350 | msgstr "" | |
9249 |
|
9351 | |||
9250 |
#: rhodecode/templates/base/issue_tracker_settings.mako:16 |
|
9352 | #: rhodecode/templates/base/issue_tracker_settings.mako:169 | |
9251 | msgid "New Entry" |
|
9353 | msgid "New Entry" | |
9252 | msgstr "" |
|
9354 | msgstr "" | |
9253 |
|
9355 | |||
9254 |
#: rhodecode/templates/base/issue_tracker_settings.mako:17 |
|
9356 | #: rhodecode/templates/base/issue_tracker_settings.mako:173 | |
9255 | msgid "Confirm to remove this pattern:" |
|
9357 | msgid "Confirm to remove this pattern:" | |
9256 | msgstr "" |
|
9358 | msgstr "" | |
9257 |
|
9359 | |||
9258 |
#: rhodecode/templates/base/issue_tracker_settings.mako: |
|
9360 | #: rhodecode/templates/base/issue_tracker_settings.mako:300 | |
9259 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:3 |
|
9361 | #: rhodecode/templates/changeset/changeset_file_comment.mako:367 | |
9260 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9362 | #: rhodecode/templates/changeset/changeset_file_comment.mako:418 | |
9261 | #: rhodecode/templates/data_table/_dt_elements.mako:453 |
|
9363 | #: rhodecode/templates/data_table/_dt_elements.mako:453 | |
9262 | #: rhodecode/templates/files/files_add.mako:59 |
|
9364 | #: rhodecode/templates/files/files_add.mako:59 | |
9263 | #: rhodecode/templates/files/files_edit.mako:61 |
|
9365 | #: rhodecode/templates/files/files_edit.mako:61 | |
9264 | msgid "Preview" |
|
9366 | msgid "Preview" | |
9265 | msgstr "" |
|
9367 | msgstr "" | |
9266 |
|
9368 | |||
9267 |
#: rhodecode/templates/base/issue_tracker_settings.mako: |
|
9369 | #: rhodecode/templates/base/issue_tracker_settings.mako:301 | |
9268 | msgid "Test Pattern Preview" |
|
9370 | msgid "Test Pattern Preview" | |
9269 | msgstr "" |
|
9371 | msgstr "" | |
9270 |
|
9372 | |||
@@ -9593,10 +9695,6 b' msgstr ""' | |||||
9593 | msgid "Compare Selected Bookmarks" |
|
9695 | msgid "Compare Selected Bookmarks" | |
9594 | msgstr "" |
|
9696 | msgstr "" | |
9595 |
|
9697 | |||
9596 | #: rhodecode/templates/bookmarks/bookmarks.mako:34 |
|
|||
9597 | msgid "bookmarks" |
|
|||
9598 | msgstr "" |
|
|||
9599 |
|
||||
9600 | #: rhodecode/templates/branches/branches.mako:5 |
|
9698 | #: rhodecode/templates/branches/branches.mako:5 | |
9601 | #, python-format |
|
9699 | #, python-format | |
9602 | msgid "%s Branches" |
|
9700 | msgid "%s Branches" | |
@@ -9606,15 +9704,11 b' msgstr ""' | |||||
9606 | msgid "Compare Selected Branches" |
|
9704 | msgid "Compare Selected Branches" | |
9607 | msgstr "" |
|
9705 | msgstr "" | |
9608 |
|
9706 | |||
9609 |
#: rhodecode/templates/ |
|
9707 | #: rhodecode/templates/changeset/changeset.mako:11 | |
9610 | msgid "branches" |
|
|||
9611 | msgstr "" |
|
|||
9612 |
|
||||
9613 | #: rhodecode/templates/changeset/changeset.mako:9 |
|
|||
9614 | msgid "{} Commit" |
|
9708 | msgid "{} Commit" | |
9615 | msgstr "" |
|
9709 | msgstr "" | |
9616 |
|
9710 | |||
9617 |
#: rhodecode/templates/changeset/changeset.mako: |
|
9711 | #: rhodecode/templates/changeset/changeset.mako:80 | |
9618 | #: rhodecode/templates/commits/changelog_elements.mako:56 |
|
9712 | #: rhodecode/templates/commits/changelog_elements.mako:56 | |
9619 | #: rhodecode/templates/files/files_source_header.mako:48 |
|
9713 | #: rhodecode/templates/files/files_source_header.mako:48 | |
9620 | #: rhodecode/templates/files/files_tree_header.mako:35 |
|
9714 | #: rhodecode/templates/files/files_tree_header.mako:35 | |
@@ -9622,166 +9716,119 b' msgstr ""' | |||||
9622 | msgid "Copy the full commit id" |
|
9716 | msgid "Copy the full commit id" | |
9623 | msgstr "" |
|
9717 | msgstr "" | |
9624 |
|
9718 | |||
9625 |
#: rhodecode/templates/changeset/changeset.mako:8 |
|
9719 | #: rhodecode/templates/changeset/changeset.mako:85 | |
9626 | msgid "Commit phase" |
|
9720 | msgid "Commit phase" | |
9627 | msgstr "" |
|
9721 | msgstr "" | |
9628 |
|
9722 | |||
9629 |
#: rhodecode/templates/changeset/changeset.mako:9 |
|
9723 | #: rhodecode/templates/changeset/changeset.mako:92 | |
9630 |
#: rhodecode/templates/changeset/changeset.mako:9 |
|
9724 | #: rhodecode/templates/changeset/changeset.mako:99 | |
9631 | msgid "Evolve State" |
|
9725 | msgid "Evolve State" | |
9632 | msgstr "" |
|
9726 | msgstr "" | |
9633 |
|
9727 | |||
9634 |
#: rhodecode/templates/changeset/changeset.mako:9 |
|
9728 | #: rhodecode/templates/changeset/changeset.mako:93 | |
9635 | msgid "obsolete" |
|
9729 | msgid "obsolete" | |
9636 | msgstr "" |
|
9730 | msgstr "" | |
9637 |
|
9731 | |||
9638 |
#: rhodecode/templates/changeset/changeset.mako: |
|
9732 | #: rhodecode/templates/changeset/changeset.mako:100 | |
9639 | msgid "hidden" |
|
9733 | msgid "hidden" | |
9640 | msgstr "" |
|
9734 | msgstr "" | |
9641 |
|
9735 | |||
9642 |
#: rhodecode/templates/changeset/changeset.mako:1 |
|
9736 | #: rhodecode/templates/changeset/changeset.mako:106 | |
9643 |
msgid "Commit |
|
9737 | msgid "Parent Commit" | |
|
9738 | msgstr "" | |||
|
9739 | ||||
|
9740 | #: rhodecode/templates/changeset/changeset.mako:106 | |||
|
9741 | msgid "parent" | |||
|
9742 | msgstr "" | |||
|
9743 | ||||
|
9744 | #: rhodecode/templates/changeset/changeset.mako:110 | |||
|
9745 | msgid "Child Commit" | |||
|
9746 | msgstr "" | |||
|
9747 | ||||
|
9748 | #: rhodecode/templates/changeset/changeset.mako:110 | |||
|
9749 | msgid "child" | |||
9644 | msgstr "" |
|
9750 | msgstr "" | |
9645 |
|
9751 | |||
9646 | #: rhodecode/templates/changeset/changeset.mako:120 |
|
9752 | #: rhodecode/templates/changeset/changeset.mako:120 | |
9647 | msgid "Parent Commit" |
|
9753 | msgid "Diff options" | |
9648 | msgstr "" |
|
|||
9649 |
|
||||
9650 | #: rhodecode/templates/changeset/changeset.mako:120 |
|
|||
9651 | msgid "parent" |
|
|||
9652 | msgstr "" |
|
9754 | msgstr "" | |
9653 |
|
9755 | |||
9654 | #: rhodecode/templates/changeset/changeset.mako:124 |
|
9756 | #: rhodecode/templates/changeset/changeset.mako:124 | |
9655 | msgid "Child Commit" |
|
9757 | msgid "Raw Diff" | |
9656 | msgstr "" |
|
9758 | msgstr "" | |
9657 |
|
9759 | |||
9658 |
#: rhodecode/templates/changeset/changeset.mako:12 |
|
9760 | #: rhodecode/templates/changeset/changeset.mako:128 | |
9659 |
msgid " |
|
9761 | msgid "Patch Diff" | |
9660 | msgstr "" |
|
9762 | msgstr "" | |
9661 |
|
9763 | |||
9662 | #: rhodecode/templates/changeset/changeset.mako:132 |
|
9764 | #: rhodecode/templates/changeset/changeset.mako:132 | |
9663 | msgid "Diff options" |
|
|||
9664 | msgstr "" |
|
|||
9665 |
|
||||
9666 | #: rhodecode/templates/changeset/changeset.mako:136 |
|
|||
9667 | msgid "Raw Diff" |
|
|||
9668 | msgstr "" |
|
|||
9669 |
|
||||
9670 | #: rhodecode/templates/changeset/changeset.mako:140 |
|
|||
9671 | msgid "Patch Diff" |
|
|||
9672 | msgstr "" |
|
|||
9673 |
|
||||
9674 | #: rhodecode/templates/changeset/changeset.mako:144 |
|
|||
9675 | msgid "Download Diff" |
|
9765 | msgid "Download Diff" | |
9676 | msgstr "" |
|
9766 | msgstr "" | |
9677 |
|
9767 | |||
9678 |
#: rhodecode/templates/changeset/changeset.mako: |
|
9768 | #: rhodecode/templates/changeset/changeset.mako:162 | |
|
9769 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:504 | |||
|
9770 | msgid "General Comments" | |||
|
9771 | msgstr "" | |||
|
9772 | ||||
|
9773 | #: rhodecode/templates/changeset/changeset.mako:203 | |||
|
9774 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:585 | |||
|
9775 | msgid "Reviewers" | |||
|
9776 | msgstr "" | |||
|
9777 | ||||
|
9778 | #: rhodecode/templates/changeset/changeset.mako:244 | |||
|
9779 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:718 | |||
|
9780 | msgid "No TODOs yet" | |||
|
9781 | msgstr "" | |||
|
9782 | ||||
|
9783 | #: rhodecode/templates/changeset/changeset.mako:276 | |||
|
9784 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:769 | |||
|
9785 | msgid "No Comments yet" | |||
|
9786 | msgstr "" | |||
|
9787 | ||||
|
9788 | #: rhodecode/templates/changeset/changeset.mako:332 | |||
9679 | msgid "No Child Commits" |
|
9789 | msgid "No Child Commits" | |
9680 | msgstr "" |
|
9790 | msgstr "" | |
9681 |
|
9791 | |||
9682 |
#: rhodecode/templates/changeset/changeset.mako: |
|
9792 | #: rhodecode/templates/changeset/changeset.mako:379 | |
9683 | msgid "No Parent Commits" |
|
9793 | msgid "No Parent Commits" | |
9684 | msgstr "" |
|
9794 | msgstr "" | |
9685 |
|
9795 | |||
9686 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:4 |
|
9796 | #: rhodecode/templates/changeset/changeset_file_comment.mako:47 | |
9687 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:401 |
|
|||
9688 | msgid "Resolved by comment #{}" |
|
9797 | msgid "Resolved by comment #{}" | |
9689 | msgstr "" |
|
9798 | msgstr "" | |
9690 |
|
9799 | |||
9691 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9800 | #: rhodecode/templates/changeset/changeset_file_comment.mako:55 | |
9692 | msgid "Click to create resolution comment." |
|
9801 | msgid "Click to create resolution comment." | |
9693 | msgstr "" |
|
9802 | msgstr "" | |
9694 |
|
9803 | |||
9695 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9804 | #: rhodecode/templates/changeset/changeset_file_comment.mako:64 | |
9696 | msgid "This comment resolves TODO #{}" |
|
9805 | msgid "This comment resolves TODO #{}" | |
9697 | msgstr "" |
|
9806 | msgstr "" | |
9698 |
|
9807 | |||
9699 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:9 |
|
9808 | #: rhodecode/templates/changeset/changeset_file_comment.mako:96 | |
9700 | msgid "Status from pull request." |
|
9809 | msgid "Status from pull request." | |
9701 | msgstr "" |
|
9810 | msgstr "" | |
9702 |
|
9811 | |||
9703 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:1 |
|
9812 | #: rhodecode/templates/changeset/changeset_file_comment.mako:113 | |
9704 | msgid "Pull request author" |
|
9813 | msgid "Pull request author" | |
9705 | msgstr "" |
|
9814 | msgstr "" | |
9706 |
|
9815 | |||
9707 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:1 |
|
9816 | #: rhodecode/templates/changeset/changeset_file_comment.mako:114 | |
9708 | msgid "author" |
|
9817 | msgid "author" | |
9709 | msgstr "" |
|
9818 | msgstr "" | |
9710 |
|
9819 | |||
9711 | #: rhodecode/templates/changeset/changeset_file_comment.mako:163 |
|
|||
9712 | #: rhodecode/templates/changeset/changeset_file_comment.mako:179 |
|
|||
9713 | msgid "Outdated comment from pull request version v{0}, latest v{1}" |
|
|||
9714 | msgstr "" |
|
|||
9715 |
|
||||
9716 | #: rhodecode/templates/changeset/changeset_file_comment.mako:167 |
|
9820 | #: rhodecode/templates/changeset/changeset_file_comment.mako:167 | |
9717 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:18 |
|
9821 | #: rhodecode/templates/changeset/changeset_file_comment.mako:181 | |
|
9822 | msgid "Outdated comment from pull request version v{0}, latest v{1}" | |||
|
9823 | msgstr "" | |||
|
9824 | ||||
|
9825 | #: rhodecode/templates/changeset/changeset_file_comment.mako:170 | |||
|
9826 | #: rhodecode/templates/changeset/changeset_file_comment.mako:186 | |||
9718 | msgid "Comment from pull request version v{0}, latest v{1}" |
|
9827 | msgid "Comment from pull request version v{0}, latest v{1}" | |
9719 | msgstr "" |
|
9828 | msgstr "" | |
9720 |
|
9829 | |||
9721 |
#: rhodecode/templates/changeset/changeset_file_comment.mako:20 |
|
9830 | #: rhodecode/templates/changeset/changeset_file_comment.mako:202 | |
9722 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9831 | #: rhodecode/templates/changeset/changeset_file_comment.mako:480 | |
9723 | #: rhodecode/templates/changeset/changeset_file_comment.mako:209 |
|
|||
9724 | #: rhodecode/templates/changeset/changeset_file_comment.mako:210 |
|
|||
9725 | msgid "Action unavailable" |
|
|||
9726 | msgstr "" |
|
|||
9727 |
|
||||
9728 | #: rhodecode/templates/changeset/changeset_file_comment.mako:214 |
|
|||
9729 | msgid "Jump to the previous outdated comment" |
|
|||
9730 | msgstr "" |
|
|||
9731 |
|
||||
9732 | #: rhodecode/templates/changeset/changeset_file_comment.mako:215 |
|
|||
9733 | msgid "Jump to the next outdated comment" |
|
|||
9734 | msgstr "" |
|
|||
9735 |
|
||||
9736 | #: rhodecode/templates/changeset/changeset_file_comment.mako:217 |
|
|||
9737 | msgid "Jump to the previous comment" |
|
|||
9738 | msgstr "" |
|
|||
9739 |
|
||||
9740 | #: rhodecode/templates/changeset/changeset_file_comment.mako:218 |
|
|||
9741 | msgid "Jump to the next comment" |
|
|||
9742 | msgstr "" |
|
|||
9743 |
|
||||
9744 | #: rhodecode/templates/changeset/changeset_file_comment.mako:257 |
|
|||
9745 | msgid "Leave a comment on this Pull Request." |
|
|||
9746 | msgstr "" |
|
|||
9747 |
|
||||
9748 | #: rhodecode/templates/changeset/changeset_file_comment.mako:259 |
|
|||
9749 | msgid "Leave a comment on {} commits in this range." |
|
|||
9750 | msgstr "" |
|
|||
9751 |
|
||||
9752 | #: rhodecode/templates/changeset/changeset_file_comment.mako:261 |
|
|||
9753 | msgid "Leave a comment on this Commit." |
|
|||
9754 | msgstr "" |
|
|||
9755 |
|
||||
9756 | #: rhodecode/templates/changeset/changeset_file_comment.mako:348 |
|
|||
9757 | #: rhodecode/templates/codeblocks/diffs.mako:83 |
|
|||
9758 | msgid "You need to be logged in to leave comments." |
|
|||
9759 | msgstr "" |
|
|||
9760 |
|
||||
9761 | #: rhodecode/templates/changeset/changeset_file_comment.mako:349 |
|
|||
9762 | #: rhodecode/templates/codeblocks/diffs.mako:83 |
|
|||
9763 | msgid "Login now" |
|
|||
9764 | msgstr "" |
|
|||
9765 |
|
||||
9766 | #: rhodecode/templates/changeset/changeset_file_comment.mako:396 |
|
|||
9767 | msgid "Mark as" |
|
|||
9768 | msgstr "" |
|
|||
9769 |
|
||||
9770 | #: rhodecode/templates/changeset/changeset_file_comment.mako:419 |
|
|||
9771 | #: rhodecode/templates/files/files_upload.mako:86 |
|
|||
9772 | msgid "Drag'n Drop files here or" |
|
|||
9773 | msgstr "" |
|
|||
9774 |
|
||||
9775 | #: rhodecode/templates/changeset/changeset_file_comment.mako:419 |
|
|||
9776 | #: rhodecode/templates/files/files_upload.mako:86 |
|
|||
9777 | msgid "Choose your files" |
|
|||
9778 | msgstr "" |
|
|||
9779 |
|
||||
9780 | #: rhodecode/templates/changeset/changeset_file_comment.mako:422 |
|
|||
9781 | msgid "uploading..." |
|
|||
9782 | msgstr "" |
|
|||
9783 |
|
||||
9784 | #: rhodecode/templates/changeset/changeset_file_comment.mako:453 |
|
|||
9785 | #: rhodecode/templates/compare/compare_diff.mako:108 |
|
9832 | #: rhodecode/templates/compare/compare_diff.mako:108 | |
9786 | #: rhodecode/templates/compare/compare_diff.mako:116 |
|
9833 | #: rhodecode/templates/compare/compare_diff.mako:116 | |
9787 | #: rhodecode/templates/compare/compare_diff.mako:124 |
|
9834 | #: rhodecode/templates/compare/compare_diff.mako:124 | |
@@ -9789,30 +9836,97 b' msgstr ""' | |||||
9789 | msgid "Comment" |
|
9836 | msgid "Comment" | |
9790 | msgstr "" |
|
9837 | msgstr "" | |
9791 |
|
9838 | |||
9792 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9839 | #: rhodecode/templates/changeset/changeset_file_comment.mako:203 | |
9793 |
#: rhodecode/templates/ |
|
9840 | #: rhodecode/templates/files/files_source.mako:117 | |
9794 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:103 |
|
9841 | msgid "Copy permalink" | |
|
9842 | msgstr "" | |||
|
9843 | ||||
|
9844 | #: rhodecode/templates/changeset/changeset_file_comment.mako:221 | |||
|
9845 | #: rhodecode/templates/changeset/changeset_file_comment.mako:224 | |||
|
9846 | #: rhodecode/templates/changeset/changeset_file_comment.mako:230 | |||
|
9847 | #: rhodecode/templates/changeset/changeset_file_comment.mako:233 | |||
|
9848 | msgid "Action unavailable" | |||
|
9849 | msgstr "" | |||
|
9850 | ||||
|
9851 | #: rhodecode/templates/changeset/changeset_file_comment.mako:241 | |||
|
9852 | msgid "Jump to the previous outdated comment" | |||
|
9853 | msgstr "" | |||
|
9854 | ||||
|
9855 | #: rhodecode/templates/changeset/changeset_file_comment.mako:242 | |||
|
9856 | msgid "Jump to the next outdated comment" | |||
|
9857 | msgstr "" | |||
|
9858 | ||||
|
9859 | #: rhodecode/templates/changeset/changeset_file_comment.mako:244 | |||
|
9860 | msgid "Jump to the previous comment" | |||
|
9861 | msgstr "" | |||
|
9862 | ||||
|
9863 | #: rhodecode/templates/changeset/changeset_file_comment.mako:245 | |||
|
9864 | msgid "Jump to the next comment" | |||
|
9865 | msgstr "" | |||
|
9866 | ||||
|
9867 | #: rhodecode/templates/changeset/changeset_file_comment.mako:284 | |||
|
9868 | msgid "Leave a comment on this Pull Request." | |||
|
9869 | msgstr "" | |||
|
9870 | ||||
|
9871 | #: rhodecode/templates/changeset/changeset_file_comment.mako:286 | |||
|
9872 | msgid "Leave a comment on {} commits in this range." | |||
|
9873 | msgstr "" | |||
|
9874 | ||||
|
9875 | #: rhodecode/templates/changeset/changeset_file_comment.mako:288 | |||
|
9876 | msgid "Leave a comment on this Commit." | |||
|
9877 | msgstr "" | |||
|
9878 | ||||
|
9879 | #: rhodecode/templates/changeset/changeset_file_comment.mako:375 | |||
|
9880 | #: rhodecode/templates/codeblocks/diffs.mako:85 | |||
|
9881 | msgid "You need to be logged in to leave comments." | |||
|
9882 | msgstr "" | |||
|
9883 | ||||
|
9884 | #: rhodecode/templates/changeset/changeset_file_comment.mako:376 | |||
|
9885 | #: rhodecode/templates/codeblocks/diffs.mako:85 | |||
|
9886 | msgid "Login now" | |||
|
9887 | msgstr "" | |||
|
9888 | ||||
|
9889 | #: rhodecode/templates/changeset/changeset_file_comment.mako:423 | |||
|
9890 | msgid "Mark as" | |||
|
9891 | msgstr "" | |||
|
9892 | ||||
|
9893 | #: rhodecode/templates/changeset/changeset_file_comment.mako:446 | |||
|
9894 | #: rhodecode/templates/files/files_upload.mako:86 | |||
|
9895 | msgid "Drag'n Drop files here or" | |||
|
9896 | msgstr "" | |||
|
9897 | ||||
|
9898 | #: rhodecode/templates/changeset/changeset_file_comment.mako:446 | |||
|
9899 | #: rhodecode/templates/files/files_upload.mako:86 | |||
|
9900 | msgid "Choose your files" | |||
|
9901 | msgstr "" | |||
|
9902 | ||||
|
9903 | #: rhodecode/templates/changeset/changeset_file_comment.mako:449 | |||
|
9904 | msgid "uploading..." | |||
|
9905 | msgstr "" | |||
|
9906 | ||||
|
9907 | #: rhodecode/templates/changeset/changeset_file_comment.mako:499 | |||
|
9908 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:48 | |||
9795 | #: rhodecode/templates/pullrequests/pullrequests.mako:31 |
|
9909 | #: rhodecode/templates/pullrequests/pullrequests.mako:31 | |
9796 | msgid "Closed" |
|
9910 | msgid "Closed" | |
9797 | msgstr "" |
|
9911 | msgstr "" | |
9798 |
|
9912 | |||
9799 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9913 | #: rhodecode/templates/changeset/changeset_file_comment.mako:508 | |
9800 | msgid "Comments parsed using {} syntax." |
|
9914 | msgid "Comments parsed using {} syntax." | |
9801 | msgstr "" |
|
9915 | msgstr "" | |
9802 |
|
9916 | |||
9803 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9917 | #: rhodecode/templates/changeset/changeset_file_comment.mako:509 | |
9804 | msgid "Use @username inside this text to send notification to this RhodeCode user" |
|
9918 | msgid "Use @username inside this text to send notification to this RhodeCode user" | |
9805 | msgstr "" |
|
9919 | msgstr "" | |
9806 |
|
9920 | |||
9807 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9921 | #: rhodecode/templates/changeset/changeset_file_comment.mako:510 | |
9808 | msgid "and" |
|
9922 | msgid "and" | |
9809 | msgstr "" |
|
9923 | msgstr "" | |
9810 |
|
9924 | |||
9811 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9925 | #: rhodecode/templates/changeset/changeset_file_comment.mako:511 | |
9812 | msgid "Start typing with / for certain actions to be triggered via text box." |
|
9926 | msgid "Start typing with / for certain actions to be triggered via text box." | |
9813 | msgstr "" |
|
9927 | msgstr "" | |
9814 |
|
9928 | |||
9815 |
#: rhodecode/templates/changeset/changeset_file_comment.mako: |
|
9929 | #: rhodecode/templates/changeset/changeset_file_comment.mako:512 | |
9816 | msgid "actions supported." |
|
9930 | msgid "actions supported." | |
9817 | msgstr "" |
|
9931 | msgstr "" | |
9818 |
|
9932 | |||
@@ -9845,8 +9959,8 b' msgstr ""' | |||||
9845 | #: rhodecode/templates/changeset/diff_block.mako:10 |
|
9959 | #: rhodecode/templates/changeset/diff_block.mako:10 | |
9846 | #: rhodecode/templates/changeset/diff_block.mako:25 |
|
9960 | #: rhodecode/templates/changeset/diff_block.mako:25 | |
9847 | #: rhodecode/templates/changeset/diff_block.mako:46 |
|
9961 | #: rhodecode/templates/changeset/diff_block.mako:46 | |
9848 |
#: rhodecode/templates/codeblocks/diffs.mako:20 |
|
9962 | #: rhodecode/templates/codeblocks/diffs.mako:210 | |
9849 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
9963 | #: rhodecode/templates/codeblocks/diffs.mako:341 | |
9850 | msgid "Showing a big diff might take some time and resources, continue?" |
|
9964 | msgid "Showing a big diff might take some time and resources, continue?" | |
9851 | msgstr "" |
|
9965 | msgstr "" | |
9852 |
|
9966 | |||
@@ -9854,8 +9968,8 b' msgstr ""' | |||||
9854 | #: rhodecode/templates/changeset/diff_block.mako:10 |
|
9968 | #: rhodecode/templates/changeset/diff_block.mako:10 | |
9855 | #: rhodecode/templates/changeset/diff_block.mako:25 |
|
9969 | #: rhodecode/templates/changeset/diff_block.mako:25 | |
9856 | #: rhodecode/templates/changeset/diff_block.mako:46 |
|
9970 | #: rhodecode/templates/changeset/diff_block.mako:46 | |
9857 |
#: rhodecode/templates/codeblocks/diffs.mako:20 |
|
9971 | #: rhodecode/templates/codeblocks/diffs.mako:210 | |
9858 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
9972 | #: rhodecode/templates/codeblocks/diffs.mako:341 | |
9859 | msgid "Show full diff" |
|
9973 | msgid "Show full diff" | |
9860 | msgstr "" |
|
9974 | msgstr "" | |
9861 |
|
9975 | |||
@@ -9868,173 +9982,148 b' msgstr ""' | |||||
9868 | msgid "Diff was truncated. File content available only in full diff." |
|
9982 | msgid "Diff was truncated. File content available only in full diff." | |
9869 | msgstr "" |
|
9983 | msgstr "" | |
9870 |
|
9984 | |||
9871 |
#: rhodecode/templates/codeblocks/diffs.mako:14 |
|
9985 | #: rhodecode/templates/codeblocks/diffs.mako:143 | |
9872 | msgid "not available in this view" |
|
9986 | msgid "not available in this view" | |
9873 | msgstr "" |
|
9987 | msgstr "" | |
9874 |
|
9988 | |||
9875 |
#: rhodecode/templates/codeblocks/diffs.mako:15 |
|
9989 | #: rhodecode/templates/codeblocks/diffs.mako:152 | |
9876 | msgid "{} unresolved" |
|
9990 | msgid "{} unresolved" | |
9877 | msgstr "" |
|
9991 | msgstr "" | |
9878 |
|
9992 | |||
9879 |
#: rhodecode/templates/codeblocks/diffs.mako:15 |
|
9993 | #: rhodecode/templates/codeblocks/diffs.mako:155 | |
9880 | msgid "0 unresolved" |
|
9994 | msgid "0 unresolved" | |
9881 | msgstr "" |
|
9995 | msgstr "" | |
9882 |
|
9996 | |||
9883 |
#: rhodecode/templates/codeblocks/diffs.mako:15 |
|
9997 | #: rhodecode/templates/codeblocks/diffs.mako:158 | |
9884 | msgid "{} Resolved" |
|
9998 | msgid "{} Resolved" | |
9885 | msgstr "" |
|
9999 | msgstr "" | |
9886 |
|
10000 | |||
9887 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10001 | #: rhodecode/templates/codeblocks/diffs.mako:209 | |
9888 | msgid "0 General" |
|
|||
9889 | msgstr "" |
|
|||
9890 |
|
||||
9891 | #: rhodecode/templates/codeblocks/diffs.mako:178 |
|
|||
9892 | msgid "0 Inline" |
|
|||
9893 | msgstr "" |
|
|||
9894 |
|
||||
9895 | #: rhodecode/templates/codeblocks/diffs.mako:189 |
|
|||
9896 | #: rhodecode/templates/codeblocks/diffs.mako:194 |
|
|||
9897 | msgid "{} Outdated" |
|
|||
9898 | msgstr "" |
|
|||
9899 |
|
||||
9900 | #: rhodecode/templates/codeblocks/diffs.mako:191 |
|
|||
9901 | msgid "show outdated" |
|
|||
9902 | msgstr "" |
|
|||
9903 |
|
||||
9904 | #: rhodecode/templates/codeblocks/diffs.mako:192 |
|
|||
9905 | msgid "hide outdated" |
|
|||
9906 | msgstr "" |
|
|||
9907 |
|
||||
9908 | #: rhodecode/templates/codeblocks/diffs.mako:207 |
|
|||
9909 | msgid "The requested changes are too big and content was truncated." |
|
10002 | msgid "The requested changes are too big and content was truncated." | |
9910 | msgstr "" |
|
10003 | msgstr "" | |
9911 |
|
10004 | |||
9912 |
#: rhodecode/templates/codeblocks/diffs.mako:2 |
|
10005 | #: rhodecode/templates/codeblocks/diffs.mako:226 | |
9913 | msgid "Some changes may be hidden" |
|
10006 | msgid "Some changes may be hidden" | |
9914 | msgstr "" |
|
10007 | msgstr "" | |
9915 |
|
10008 | |||
9916 |
#: rhodecode/templates/codeblocks/diffs.mako:2 |
|
10009 | #: rhodecode/templates/codeblocks/diffs.mako:228 | |
9917 | msgid "No files" |
|
10010 | msgid "No files" | |
9918 | msgstr "" |
|
10011 | msgstr "" | |
9919 |
|
10012 | |||
9920 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10013 | #: rhodecode/templates/codeblocks/diffs.mako:341 | |
9921 | msgid "The requested commit or file is too big and content was truncated." |
|
10014 | msgid "The requested commit or file is too big and content was truncated." | |
9922 | msgstr "" |
|
10015 | msgstr "" | |
9923 |
|
10016 | |||
9924 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10017 | #: rhodecode/templates/codeblocks/diffs.mako:348 | |
9925 | #, python-format |
|
10018 | #, python-format | |
9926 | msgid "This diff has been collapsed as it changes many lines, (%i lines changed)" |
|
10019 | msgid "This diff has been collapsed as it changes many lines, (%i lines changed)" | |
9927 | msgstr "" |
|
10020 | msgstr "" | |
9928 |
|
10021 | |||
9929 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10022 | #: rhodecode/templates/codeblocks/diffs.mako:350 | |
9930 | msgid "Show them" |
|
10023 | msgid "Show them" | |
9931 | msgstr "" |
|
10024 | msgstr "" | |
9932 |
|
10025 | |||
9933 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10026 | #: rhodecode/templates/codeblocks/diffs.mako:353 | |
9934 | msgid "Hide them" |
|
10027 | msgid "Hide them" | |
9935 | msgstr "" |
|
10028 | msgstr "" | |
9936 |
|
10029 | |||
9937 |
#: rhodecode/templates/codeblocks/diffs.mako:3 |
|
10030 | #: rhodecode/templates/codeblocks/diffs.mako:390 | |
9938 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10031 | #: rhodecode/templates/codeblocks/diffs.mako:409 | |
9939 | msgid "Unmatched/outdated inline comments below" |
|
10032 | msgid "Unmatched/outdated inline comments below" | |
9940 | msgstr "" |
|
10033 | msgstr "" | |
9941 |
|
10034 | |||
9942 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10035 | #: rhodecode/templates/codeblocks/diffs.mako:415 | |
9943 | msgid "Unmatched/outdated comments below" |
|
10036 | msgid "Unmatched/outdated comments below" | |
9944 | msgstr "" |
|
10037 | msgstr "" | |
9945 |
|
10038 | |||
9946 |
#: rhodecode/templates/codeblocks/diffs.mako:4 |
|
10039 | #: rhodecode/templates/codeblocks/diffs.mako:489 | |
9947 | msgid "This file was removed from diff during updates to this pull-request." |
|
10040 | msgid "This file was removed from diff during updates to this pull-request." | |
9948 | msgstr "" |
|
10041 | msgstr "" | |
9949 |
|
10042 | |||
9950 |
#: rhodecode/templates/codeblocks/diffs.mako:4 |
|
10043 | #: rhodecode/templates/codeblocks/diffs.mako:490 | |
9951 | msgid "There are still outdated/unresolved comments attached to it." |
|
10044 | msgid "There are still outdated/unresolved comments attached to it." | |
9952 | msgstr "" |
|
10045 | msgstr "" | |
9953 |
|
10046 | |||
9954 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10047 | #: rhodecode/templates/codeblocks/diffs.mako:596 | |
9955 | msgid "Copy file path" |
|
10048 | #: rhodecode/templates/codeblocks/diffs.mako:614 | |
9956 | msgstr "" |
|
|||
9957 |
|
||||
9958 | #: rhodecode/templates/codeblocks/diffs.mako:566 |
|
|||
9959 | #: rhodecode/templates/codeblocks/diffs.mako:584 |
|
|||
9960 | #, python-format |
|
10049 | #, python-format | |
9961 | msgid "Show file at commit: %(commit_id)s" |
|
10050 | msgid "Show file at commit: %(commit_id)s" | |
9962 | msgstr "" |
|
10051 | msgstr "" | |
9963 |
|
10052 | |||
9964 |
#: rhodecode/templates/codeblocks/diffs.mako:5 |
|
10053 | #: rhodecode/templates/codeblocks/diffs.mako:598 | |
9965 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10054 | #: rhodecode/templates/codeblocks/diffs.mako:605 | |
9966 | msgid "Show file before" |
|
10055 | msgid "Show file before" | |
9967 | msgstr "" |
|
10056 | msgstr "" | |
9968 |
|
10057 | |||
9969 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10058 | #: rhodecode/templates/codeblocks/diffs.mako:603 | |
9970 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10059 | #: rhodecode/templates/codeblocks/diffs.mako:621 | |
9971 | #, python-format |
|
10060 | #, python-format | |
9972 | msgid "File not present at commit: %(commit_id)s" |
|
10061 | msgid "File not present at commit: %(commit_id)s" | |
9973 | msgstr "" |
|
10062 | msgstr "" | |
9974 |
|
10063 | |||
9975 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10064 | #: rhodecode/templates/codeblocks/diffs.mako:616 | |
9976 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10065 | #: rhodecode/templates/codeblocks/diffs.mako:623 | |
9977 | msgid "Show file after" |
|
10066 | msgid "Show file after" | |
9978 | msgstr "" |
|
10067 | msgstr "" | |
9979 |
|
10068 | |||
9980 |
#: rhodecode/templates/codeblocks/diffs.mako:6 |
|
10069 | #: rhodecode/templates/codeblocks/diffs.mako:630 | |
9981 | msgid "Show comments" |
|
10070 | msgid "Show comments" | |
9982 | msgstr "" |
|
10071 | msgstr "" | |
9983 |
|
10072 | |||
9984 |
#: rhodecode/templates/codeblocks/diffs.mako:6 |
|
10073 | #: rhodecode/templates/codeblocks/diffs.mako:630 | |
9985 | msgid "Hide comments" |
|
10074 | msgid "Hide comments" | |
9986 | msgstr "" |
|
10075 | msgstr "" | |
9987 |
|
10076 | |||
9988 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10077 | #: rhodecode/templates/codeblocks/diffs.mako:721 | |
9989 |
#: rhodecode/templates/codeblocks/diffs.mako:7 |
|
10078 | #: rhodecode/templates/codeblocks/diffs.mako:764 | |
9990 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10079 | #: rhodecode/templates/codeblocks/diffs.mako:826 | |
9991 | msgid "comments including outdated: {}. Click here to display them." |
|
10080 | msgid "comments including outdated: {}. Click here to display them." | |
9992 | msgstr "" |
|
10081 | msgstr "" | |
9993 |
|
10082 | |||
9994 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10083 | #: rhodecode/templates/codeblocks/diffs.mako:723 | |
9995 |
#: rhodecode/templates/codeblocks/diffs.mako:7 |
|
10084 | #: rhodecode/templates/codeblocks/diffs.mako:766 | |
9996 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10085 | #: rhodecode/templates/codeblocks/diffs.mako:828 | |
9997 | msgid "comments: {}. Click to toggle them." |
|
10086 | msgid "comments: {}. Click to toggle them." | |
9998 | msgstr "" |
|
10087 | msgstr "" | |
9999 |
|
10088 | |||
10000 |
#: rhodecode/templates/codeblocks/diffs.mako:8 |
|
10089 | #: rhodecode/templates/codeblocks/diffs.mako:897 | |
10001 | msgid "Toggle wide diff" |
|
10090 | msgid "Toggle wide diff" | |
10002 | msgstr "" |
|
10091 | msgstr "" | |
10003 |
|
10092 | |||
10004 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10093 | #: rhodecode/templates/codeblocks/diffs.mako:905 | |
10005 | msgid "View diff as side by side" |
|
10094 | msgid "View diff as side by side" | |
10006 | msgstr "" |
|
10095 | msgstr "" | |
10007 |
|
10096 | |||
10008 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10097 | #: rhodecode/templates/codeblocks/diffs.mako:907 | |
10009 | msgid "Side by Side" |
|
10098 | msgid "Side by Side" | |
10010 | msgstr "" |
|
10099 | msgstr "" | |
10011 |
|
10100 | |||
10012 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10101 | #: rhodecode/templates/codeblocks/diffs.mako:912 | |
10013 | msgid "View diff as unified" |
|
10102 | msgid "View diff as unified" | |
10014 | msgstr "" |
|
10103 | msgstr "" | |
10015 |
|
10104 | |||
10016 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10105 | #: rhodecode/templates/codeblocks/diffs.mako:913 | |
10017 | msgid "Unified" |
|
10106 | msgid "Unified" | |
10018 | msgstr "" |
|
10107 | msgstr "" | |
10019 |
|
10108 | |||
10020 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10109 | #: rhodecode/templates/codeblocks/diffs.mako:918 | |
10021 | msgid "Turn off: Show the diff as commit range" |
|
10110 | msgid "Turn off: Show the diff as commit range" | |
10022 | msgstr "" |
|
10111 | msgstr "" | |
10023 |
|
10112 | |||
10024 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10113 | #: rhodecode/templates/codeblocks/diffs.mako:921 | |
10025 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10114 | #: rhodecode/templates/codeblocks/diffs.mako:928 | |
10026 | msgid "Range Diff" |
|
10115 | msgid "Range Diff" | |
10027 | msgstr "" |
|
10116 | msgstr "" | |
10028 |
|
10117 | |||
10029 |
#: rhodecode/templates/codeblocks/diffs.mako: |
|
10118 | #: rhodecode/templates/codeblocks/diffs.mako:925 | |
10030 | msgid "Show the diff as commit range" |
|
10119 | msgid "Show the diff as commit range" | |
10031 | msgstr "" |
|
10120 | msgstr "" | |
10032 |
|
10121 | |||
10033 |
#: rhodecode/templates/codeblocks/diffs.mako:9 |
|
10122 | #: rhodecode/templates/codeblocks/diffs.mako:990 | |
10034 | msgid "Disabled on range diff" |
|
10123 | msgid "Disabled on range diff" | |
10035 | msgstr "" |
|
10124 | msgstr "" | |
10036 |
|
10125 | |||
10037 |
#: rhodecode/templates/codeblocks/diffs.mako:12 |
|
10126 | #: rhodecode/templates/codeblocks/diffs.mako:1297 | |
10038 | msgid "..." |
|
10127 | msgid "..." | |
10039 | msgstr "" |
|
10128 | msgstr "" | |
10040 |
|
10129 | |||
@@ -10139,8 +10228,8 b' msgid "Hidden Evolve State"' | |||||
10139 | msgstr "" |
|
10228 | msgstr "" | |
10140 |
|
10229 | |||
10141 | #: rhodecode/templates/commits/changelog_elements.mako:80 |
|
10230 | #: rhodecode/templates/commits/changelog_elements.mako:80 | |
10142 |
#: rhodecode/templates/compare/compare_commits.mako:4 |
|
10231 | #: rhodecode/templates/compare/compare_commits.mako:47 | |
10143 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
10232 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:435 | |
10144 | #: rhodecode/templates/search/search_commit.mako:34 |
|
10233 | #: rhodecode/templates/search/search_commit.mako:34 | |
10145 | msgid "Expand commit message" |
|
10234 | msgid "Expand commit message" | |
10146 | msgstr "" |
|
10235 | msgstr "" | |
@@ -10192,11 +10281,11 b' msgid "Compare was calculated based on t' | |||||
10192 | msgstr "" |
|
10281 | msgstr "" | |
10193 |
|
10282 | |||
10194 | #: rhodecode/templates/compare/compare_commits.mako:15 |
|
10283 | #: rhodecode/templates/compare/compare_commits.mako:15 | |
10195 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
10284 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:396 | |
10196 | msgid "Time" |
|
10285 | msgid "Time" | |
10197 | msgstr "" |
|
10286 | msgstr "" | |
10198 |
|
10287 | |||
10199 |
#: rhodecode/templates/compare/compare_commits.mako:6 |
|
10288 | #: rhodecode/templates/compare/compare_commits.mako:65 | |
10200 | msgid "No commits in this compare" |
|
10289 | msgid "No commits in this compare" | |
10201 | msgstr "" |
|
10290 | msgstr "" | |
10202 |
|
10291 | |||
@@ -10313,11 +10402,11 b' msgid "personal"' | |||||
10313 | msgstr "" |
|
10402 | msgstr "" | |
10314 |
|
10403 | |||
10315 | #: rhodecode/templates/data_table/_dt_elements.mako:387 |
|
10404 | #: rhodecode/templates/data_table/_dt_elements.mako:387 | |
10316 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:5 |
|
10405 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:59 | |
10317 | msgid "Pull request !{}" |
|
10406 | msgid "Pull request !{}" | |
10318 | msgstr "" |
|
10407 | msgstr "" | |
10319 |
|
10408 | |||
10320 |
#: rhodecode/templates/data_table/_dt_elements.mako:39 |
|
10409 | #: rhodecode/templates/data_table/_dt_elements.mako:396 | |
10321 | msgid "Work in progress" |
|
10410 | msgid "Work in progress" | |
10322 | msgstr "" |
|
10411 | msgstr "" | |
10323 |
|
10412 | |||
@@ -10575,7 +10664,7 b' msgid "Pull Request"' | |||||
10575 | msgstr "" |
|
10664 | msgstr "" | |
10576 |
|
10665 | |||
10577 | #: rhodecode/templates/email_templates/pull_request_comment.mako:67 |
|
10666 | #: rhodecode/templates/email_templates/pull_request_comment.mako:67 | |
10578 |
#: rhodecode/templates/email_templates/pull_request_review.mako:4 |
|
10667 | #: rhodecode/templates/email_templates/pull_request_review.mako:45 | |
10579 | #: rhodecode/templates/email_templates/pull_request_update.mako:41 |
|
10668 | #: rhodecode/templates/email_templates/pull_request_update.mako:41 | |
10580 | msgid "Commit flow: {source_ref_type}:{source_ref_name} of {source_repo_url} into {target_ref_type}:{target_ref_name} of {target_repo_url}" |
|
10669 | msgid "Commit flow: {source_ref_type}:{source_ref_name} of {source_repo_url} into {target_ref_type}:{target_ref_name} of {target_repo_url}" | |
10581 | msgstr "" |
|
10670 | msgstr "" | |
@@ -10598,8 +10687,8 b' msgstr ""' | |||||
10598 |
|
10687 | |||
10599 | #: rhodecode/templates/email_templates/pull_request_comment.mako:134 |
|
10688 | #: rhodecode/templates/email_templates/pull_request_comment.mako:134 | |
10600 | #: rhodecode/templates/email_templates/pull_request_comment.mako:164 |
|
10689 | #: rhodecode/templates/email_templates/pull_request_comment.mako:164 | |
10601 |
#: rhodecode/templates/email_templates/pull_request_review.mako: |
|
10690 | #: rhodecode/templates/email_templates/pull_request_review.mako:100 | |
10602 |
#: rhodecode/templates/email_templates/pull_request_review.mako:1 |
|
10691 | #: rhodecode/templates/email_templates/pull_request_review.mako:116 | |
10603 | #: rhodecode/templates/email_templates/pull_request_update.mako:104 |
|
10692 | #: rhodecode/templates/email_templates/pull_request_update.mako:104 | |
10604 | #: rhodecode/templates/email_templates/pull_request_update.mako:121 |
|
10693 | #: rhodecode/templates/email_templates/pull_request_update.mako:121 | |
10605 | msgid "Pull request" |
|
10694 | msgid "Pull request" | |
@@ -10618,39 +10707,43 b' msgid "Submitted review status"' | |||||
10618 | msgstr "" |
|
10707 | msgstr "" | |
10619 |
|
10708 | |||
10620 | #: rhodecode/templates/email_templates/pull_request_comment.mako:173 |
|
10709 | #: rhodecode/templates/email_templates/pull_request_comment.mako:173 | |
10621 |
#: rhodecode/templates/email_templates/pull_request_review.mako:1 |
|
10710 | #: rhodecode/templates/email_templates/pull_request_review.mako:125 | |
10622 | #: rhodecode/templates/email_templates/pull_request_update.mako:130 |
|
10711 | #: rhodecode/templates/email_templates/pull_request_update.mako:130 | |
10623 | msgid "Commit Flow" |
|
10712 | msgid "Commit Flow" | |
10624 | msgstr "" |
|
10713 | msgstr "" | |
10625 |
|
10714 | |||
10626 | #: rhodecode/templates/email_templates/pull_request_comment.mako:175 |
|
10715 | #: rhodecode/templates/email_templates/pull_request_comment.mako:175 | |
10627 | #: rhodecode/templates/email_templates/pull_request_comment.mako:177 |
|
10716 | #: rhodecode/templates/email_templates/pull_request_comment.mako:177 | |
10628 |
#: rhodecode/templates/email_templates/pull_request_review.mako:1 |
|
10717 | #: rhodecode/templates/email_templates/pull_request_review.mako:127 | |
10629 |
#: rhodecode/templates/email_templates/pull_request_review.mako:12 |
|
10718 | #: rhodecode/templates/email_templates/pull_request_review.mako:129 | |
10630 | #: rhodecode/templates/email_templates/pull_request_update.mako:132 |
|
10719 | #: rhodecode/templates/email_templates/pull_request_update.mako:132 | |
10631 | #: rhodecode/templates/email_templates/pull_request_update.mako:134 |
|
10720 | #: rhodecode/templates/email_templates/pull_request_update.mako:134 | |
10632 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:1 |
|
10721 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:114 | |
10633 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:13 |
|
10722 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:123 | |
10634 | msgid "of" |
|
10723 | msgid "of" | |
10635 | msgstr "" |
|
10724 | msgstr "" | |
10636 |
|
10725 | |||
10637 |
#: rhodecode/templates/email_templates/pull_request_review.mako:1 |
|
10726 | #: rhodecode/templates/email_templates/pull_request_review.mako:15 | |
|
10727 | msgid "{user} added you as observer to pull request. !{pr_id}: \"{pr_title}\"" | |||
|
10728 | msgstr "" | |||
|
10729 | ||||
|
10730 | #: rhodecode/templates/email_templates/pull_request_review.mako:17 | |||
10638 | msgid "{user} requested a pull request review. !{pr_id}: \"{pr_title}\"" |
|
10731 | msgid "{user} requested a pull request review. !{pr_id}: \"{pr_title}\"" | |
10639 | msgstr "" |
|
10732 | msgstr "" | |
10640 |
|
10733 | |||
10641 |
#: rhodecode/templates/email_templates/pull_request_review.mako:3 |
|
10734 | #: rhodecode/templates/email_templates/pull_request_review.mako:43 | |
10642 | #: rhodecode/templates/email_templates/pull_request_update.mako:39 |
|
10735 | #: rhodecode/templates/email_templates/pull_request_update.mako:39 | |
10643 | msgid "Pull Request link" |
|
10736 | msgid "Pull Request link" | |
10644 | msgstr "" |
|
10737 | msgstr "" | |
10645 |
|
10738 | |||
10646 |
#: rhodecode/templates/email_templates/pull_request_review.mako:8 |
|
10739 | #: rhodecode/templates/email_templates/pull_request_review.mako:89 | |
|
10740 | msgid "added you as observer to" | |||
|
10741 | msgstr "" | |||
|
10742 | ||||
|
10743 | #: rhodecode/templates/email_templates/pull_request_review.mako:95 | |||
10647 | msgid "requested a" |
|
10744 | msgid "requested a" | |
10648 | msgstr "" |
|
10745 | msgstr "" | |
10649 |
|
10746 | |||
10650 | #: rhodecode/templates/email_templates/pull_request_review.mako:87 |
|
|||
10651 | msgid "pull request review." |
|
|||
10652 | msgstr "" |
|
|||
10653 |
|
||||
10654 | #: rhodecode/templates/email_templates/pull_request_update.mako:14 |
|
10747 | #: rhodecode/templates/email_templates/pull_request_update.mako:14 | |
10655 | msgid "{updating_user} updated pull request. !{pr_id}: \"{pr_title}\"" |
|
10748 | msgid "{updating_user} updated pull request. !{pr_id}: \"{pr_title}\"" | |
10656 | msgstr "" |
|
10749 | msgstr "" | |
@@ -10865,10 +10958,6 b' msgstr ""' | |||||
10865 | msgid "Raw" |
|
10958 | msgid "Raw" | |
10866 | msgstr "" |
|
10959 | msgstr "" | |
10867 |
|
10960 | |||
10868 | #: rhodecode/templates/files/files_source.mako:117 |
|
|||
10869 | msgid "Copy permalink" |
|
|||
10870 | msgstr "" |
|
|||
10871 |
|
||||
10872 | #: rhodecode/templates/files/files_source.mako:133 |
|
10961 | #: rhodecode/templates/files/files_source.mako:133 | |
10873 | msgid "Binary file ({})" |
|
10962 | msgid "Binary file ({})" | |
10874 | msgstr "" |
|
10963 | msgstr "" | |
@@ -10971,64 +11060,59 b' msgid "RSS public journal feed"' | |||||
10971 | msgstr "" |
|
11060 | msgstr "" | |
10972 |
|
11061 | |||
10973 | #: rhodecode/templates/pullrequests/pullrequest.mako:5 |
|
11062 | #: rhodecode/templates/pullrequests/pullrequest.mako:5 | |
10974 | #: rhodecode/templates/pullrequests/pullrequest.mako:28 |
|
|||
10975 | msgid "New pull request" |
|
11063 | msgid "New pull request" | |
10976 | msgstr "" |
|
11064 | msgstr "" | |
10977 |
|
11065 | |||
10978 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11066 | #: rhodecode/templates/pullrequests/pullrequest.mako:33 | |
10979 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:1 |
|
11067 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:104 | |
10980 | msgid "Commit flow" |
|
11068 | msgid "Commit flow" | |
10981 | msgstr "" |
|
11069 | msgstr "" | |
10982 |
|
11070 | |||
10983 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11071 | #: rhodecode/templates/pullrequests/pullrequest.mako:41 | |
10984 | msgid "Source repository" |
|
11072 | msgid "Source repository" | |
10985 | msgstr "" |
|
11073 | msgstr "" | |
10986 |
|
11074 | |||
10987 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11075 | #: rhodecode/templates/pullrequests/pullrequest.mako:69 | |
|
11076 | msgid "Target repository" | |||
|
11077 | msgstr "" | |||
|
11078 | ||||
|
11079 | #: rhodecode/templates/pullrequests/pullrequest.mako:76 | |||
10988 | msgid "Loading refs..." |
|
11080 | msgid "Loading refs..." | |
10989 | msgstr "" |
|
11081 | msgstr "" | |
10990 |
|
11082 | |||
10991 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11083 | #: rhodecode/templates/pullrequests/pullrequest.mako:115 | |
10992 | msgid "Submit Pull Request" |
|
11084 | msgid "Reviewers / Observers" | |
10993 | msgstr "" |
|
11085 | msgstr "" | |
10994 |
|
11086 | |||
10995 |
#: rhodecode/templates/pullrequests/pullrequest.mako:1 |
|
11087 | #: rhodecode/templates/pullrequests/pullrequest.mako:121 | |
10996 | msgid "Author of this pull request" |
|
11088 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:571 | |
10997 | msgstr "" |
|
|||
10998 |
|
||||
10999 | #: rhodecode/templates/pullrequests/pullrequest.mako:125 |
|
|||
11000 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:286 |
|
|||
11001 | msgid "Reviewer rules" |
|
11089 | msgid "Reviewer rules" | |
11002 | msgstr "" |
|
11090 | msgstr "" | |
11003 |
|
11091 | |||
11004 |
#: rhodecode/templates/pullrequests/pullrequest.mako:1 |
|
11092 | #: rhodecode/templates/pullrequests/pullrequest.mako:167 | |
11005 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:3 |
|
11093 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:613 | |
11006 | msgid "Pull request reviewers" |
|
|||
11007 | msgstr "" |
|
|||
11008 |
|
||||
11009 | #: rhodecode/templates/pullrequests/pullrequest.mako:146 |
|
|||
11010 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:344 |
|
|||
11011 | msgid "Add reviewer or reviewer group" |
|
11094 | msgid "Add reviewer or reviewer group" | |
11012 | msgstr "" |
|
11095 | msgstr "" | |
11013 |
|
11096 | |||
11014 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11097 | #: rhodecode/templates/pullrequests/pullrequest.mako:191 | |
|
11098 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:666 | |||
|
11099 | msgid "Add observer or observer group" | |||
|
11100 | msgstr "" | |||
|
11101 | ||||
|
11102 | #: rhodecode/templates/pullrequests/pullrequest.mako:216 | |||
|
11103 | msgid "Submit Pull Request" | |||
|
11104 | msgstr "" | |||
|
11105 | ||||
|
11106 | #: rhodecode/templates/pullrequests/pullrequest.mako:392 | |||
11015 | msgid "Show detailed compare." |
|
11107 | msgid "Show detailed compare." | |
11016 | msgstr "" |
|
11108 | msgstr "" | |
11017 |
|
11109 | |||
11018 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11110 | #: rhodecode/templates/pullrequests/pullrequest.mako:498 | |
11019 | msgid "There are no commits to merge." |
|
11111 | #: rhodecode/templates/pullrequests/pullrequest.mako:526 | |
11020 | msgstr "" |
|
|||
11021 |
|
||||
11022 | #: rhodecode/templates/pullrequests/pullrequest.mako:418 |
|
|||
11023 | #: rhodecode/templates/pullrequests/pullrequest.mako:444 |
|
|||
11024 | msgid "Select commit reference" |
|
11112 | msgid "Select commit reference" | |
11025 | msgstr "" |
|
11113 | msgstr "" | |
11026 |
|
11114 | |||
11027 |
#: rhodecode/templates/pullrequests/pullrequest.mako: |
|
11115 | #: rhodecode/templates/pullrequests/pullrequest.mako:594 | |
11028 | msgid "Target repository" |
|
|||
11029 | msgstr "" |
|
|||
11030 |
|
||||
11031 | #: rhodecode/templates/pullrequests/pullrequest.mako:513 |
|
|||
11032 | msgid "Please select source and target" |
|
11116 | msgid "Please select source and target" | |
11033 | msgstr "" |
|
11117 | msgstr "" | |
11034 |
|
11118 | |||
@@ -11063,212 +11147,230 b' msgstr ""' | |||||
11063 | msgid "Login to Merge this Pull Request" |
|
11147 | msgid "Login to Merge this Pull Request" | |
11064 | msgstr "" |
|
11148 | msgstr "" | |
11065 |
|
11149 | |||
11066 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11150 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:8 | |
11067 | msgid "{} Pull Request !{}" |
|
11151 | msgid "{} Pull Request !{}" | |
11068 | msgstr "" |
|
11152 | msgstr "" | |
11069 |
|
11153 | |||
11070 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11154 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:61 | |
11071 | msgid "Last updated on" |
|
11155 | msgid "Last updated on" | |
11072 | msgstr "" |
|
11156 | msgstr "" | |
11073 |
|
11157 | |||
11074 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:53 |
|
|||
11075 | msgid "by" |
|
|||
11076 | msgstr "" |
|
|||
11077 |
|
||||
11078 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:62 |
|
11158 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:62 | |
11079 | msgid "Update title & description" |
|
11159 | msgid "by" | |
11080 | msgstr "" |
|
|||
11081 |
|
||||
11082 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:68 |
|
|||
11083 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:71 |
|
|||
11084 | msgid "Delete pull request" |
|
|||
11085 | msgstr "" |
|
11160 | msgstr "" | |
11086 |
|
11161 | |||
11087 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:71 |
|
11162 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:71 | |
|
11163 | msgid "Update title & description" | |||
|
11164 | msgstr "" | |||
|
11165 | ||||
|
11166 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:77 | |||
|
11167 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:80 | |||
|
11168 | msgid "Delete pull request" | |||
|
11169 | msgstr "" | |||
|
11170 | ||||
|
11171 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:80 | |||
11088 | msgid "Not allowed to delete this pull request" |
|
11172 | msgid "Not allowed to delete this pull request" | |
11089 | msgstr "" |
|
11173 | msgstr "" | |
11090 |
|
11174 | |||
11091 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11175 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:90 | |
11092 | msgid "Rendered using {} renderer" |
|
11176 | msgid "Rendered using {} renderer" | |
11093 | msgstr "" |
|
11177 | msgstr "" | |
11094 |
|
11178 | |||
11095 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11179 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:137 | |
11096 | msgid "Review status" |
|
|||
11097 | msgstr "" |
|
|||
11098 |
|
||||
11099 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:151 |
|
|||
11100 | msgid "Common ancestor" |
|
11180 | msgid "Common ancestor" | |
11101 | msgstr "" |
|
11181 | msgstr "" | |
11102 |
|
11182 | |||
11103 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:1 |
|
11183 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:141 | |
11104 | msgid "not available" |
|
11184 | msgid "not available" | |
11105 | msgstr "" |
|
11185 | msgstr "" | |
11106 |
|
11186 | |||
|
11187 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:153 | |||
|
11188 | msgid "Pull changes from source" | |||
|
11189 | msgstr "" | |||
|
11190 | ||||
|
11191 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:154 | |||
|
11192 | msgid "Copy the pull url" | |||
|
11193 | msgstr "" | |||
|
11194 | ||||
|
11195 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:166 | |||
|
11196 | msgid "Clone repository in its merged state using shadow repository" | |||
|
11197 | msgstr "" | |||
|
11198 | ||||
|
11199 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:166 | |||
|
11200 | msgid "Clone from shadow repository" | |||
|
11201 | msgstr "" | |||
|
11202 | ||||
11107 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:167 |
|
11203 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:167 | |
11108 | msgid "Pull changes from source" |
|
|||
11109 | msgstr "" |
|
|||
11110 |
|
||||
11111 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:168 |
|
|||
11112 | msgid "Copy the pull url" |
|
|||
11113 | msgstr "" |
|
|||
11114 |
|
||||
11115 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:180 |
|
|||
11116 | msgid "Clone repository in its merged state using shadow repository" |
|
|||
11117 | msgstr "" |
|
|||
11118 |
|
||||
11119 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:180 |
|
|||
11120 | msgid "Clone from shadow repository" |
|
|||
11121 | msgstr "" |
|
|||
11122 |
|
||||
11123 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:181 |
|
|||
11124 | #: rhodecode/templates/summary/components.mako:78 |
|
11204 | #: rhodecode/templates/summary/components.mako:78 | |
11125 | msgid "Copy the clone url" |
|
11205 | msgid "Copy the clone url" | |
11126 | msgstr "" |
|
11206 | msgstr "" | |
11127 |
|
11207 | |||
11128 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:1 |
|
11208 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:171 | |
11129 | msgid "Shadow repository data not available" |
|
11209 | msgid "Shadow repository data not available" | |
11130 | msgstr "" |
|
11210 | msgstr "" | |
11131 |
|
11211 | |||
11132 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11212 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:187 | |
11133 | msgid "Versions" |
|
11213 | msgid "Versions" | |
11134 | msgstr "" |
|
11214 | msgstr "" | |
11135 |
|
11215 | |||
11136 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11216 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:199 | |
11137 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:21 |
|
11217 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:201 | |
11138 | msgid "show versions" |
|
11218 | msgid "show versions" | |
11139 | msgstr "" |
|
11219 | msgstr "" | |
11140 |
|
11220 | |||
11141 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11221 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:200 | |
11142 | msgid "hide versions" |
|
11222 | msgid "hide versions" | |
11143 | msgstr "" |
|
11223 | msgstr "" | |
11144 |
|
11224 | |||
11145 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11225 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:225 | |
11146 | msgid "Your review status at this version" |
|
11226 | msgid "Your review status at this version" | |
11147 | msgstr "" |
|
11227 | msgstr "" | |
11148 |
|
11228 | |||
11149 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11229 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:230 | |
11150 | msgid "Comments from pull request version v{0}" |
|
11230 | msgid "Comments from pull request version v{0}" | |
11151 | msgstr "" |
|
11231 | msgstr "" | |
11152 |
|
11232 | |||
11153 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11233 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:248 | |
11154 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11234 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:252 | |
11155 | msgid "select versions to show changes" |
|
11235 | msgid "select versions to show changes" | |
11156 | msgstr "" |
|
11236 | msgstr "" | |
11157 |
|
11237 | |||
11158 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11238 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:249 | |
11159 | msgid "show changes between versions" |
|
11239 | msgid "show changes between versions" | |
11160 | msgstr "" |
|
11240 | msgstr "" | |
11161 |
|
11241 | |||
11162 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11242 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:250 | |
11163 | msgid "show pull request for this version" |
|
11243 | msgid "show pull request for this version" | |
11164 | msgstr "" |
|
11244 | msgstr "" | |
11165 |
|
11245 | |||
11166 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:2 |
|
11246 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:259 | |
11167 | msgid "Pull request versions not available" |
|
11247 | msgid "Pull request versions not available" | |
11168 | msgstr "" |
|
11248 | msgstr "" | |
11169 |
|
11249 | |||
11170 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11250 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:279 | |
11171 | msgid "Save Changes" |
|
|||
11172 | msgstr "" |
|
|||
11173 |
|
||||
11174 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:386 |
|
|||
11175 | msgid "unresolved TODOs unavailable in this view" |
|
|||
11176 | msgstr "" |
|
|||
11177 |
|
||||
11178 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:422 |
|
|||
11179 | msgid "No unresolved TODOs" |
|
|||
11180 | msgstr "" |
|
|||
11181 |
|
||||
11182 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:440 |
|
|||
11183 | msgid "Cannot show diff when pull request state is changing. Current progress state" |
|
11251 | msgid "Cannot show diff when pull request state is changing. Current progress state" | |
11184 | msgstr "" |
|
11252 | msgstr "" | |
11185 |
|
11253 | |||
11186 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11254 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:297 | |
11187 | msgid "Missing requirements:" |
|
11255 | msgid "Missing requirements:" | |
11188 | msgstr "" |
|
11256 | msgstr "" | |
11189 |
|
11257 | |||
11190 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11258 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:298 | |
11191 | msgid "These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled." |
|
11259 | msgid "These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled." | |
11192 | msgstr "" |
|
11260 | msgstr "" | |
11193 |
|
11261 | |||
11194 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11262 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:306 | |
11195 | msgid "Missing commits" |
|
11263 | msgid "Missing commits" | |
11196 | msgstr "" |
|
11264 | msgstr "" | |
11197 |
|
11265 | |||
11198 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11266 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:307 | |
11199 | msgid "This pull request cannot be displayed, because one or more commits no longer exist in the source repository." |
|
11267 | msgid "This pull request cannot be displayed, because one or more commits no longer exist in the source repository." | |
11200 | msgstr "" |
|
11268 | msgstr "" | |
11201 |
|
11269 | |||
11202 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11270 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:308 | |
11203 | msgid "Please update this pull request, push the commits back into the source repository, or consider closing this pull request." |
|
11271 | msgid "Please update this pull request, push the commits back into the source repository, or consider closing this pull request." | |
11204 | msgstr "" |
|
11272 | msgstr "" | |
11205 |
|
11273 | |||
11206 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11274 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:309 | |
11207 | msgid "Consider doing a `force update commits` in case you think this is an error." |
|
11275 | msgid "Consider doing a `force update commits` in case you think this is an error." | |
11208 | msgstr "" |
|
11276 | msgstr "" | |
11209 |
|
11277 | |||
11210 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11278 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:317 | |
11211 | msgid "There are new changes for `{}:{}` in source repository, please consider updating this pull request." |
|
11279 | msgid "There are new changes for `{}:{}` in source repository, please consider updating this pull request." | |
11212 | msgstr "" |
|
11280 | msgstr "" | |
11213 |
|
11281 | |||
11214 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako: |
|
11282 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:328 | |
11215 | #, python-format |
|
11283 | msgid "Showing changes at v{}, commenting is disabled." | |
11216 | msgid "Showing changes at v%d, commenting is disabled." |
|
11284 | msgstr "" | |
|
11285 | ||||
|
11286 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:351 | |||
|
11287 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:373 | |||
|
11288 | msgid "Update commits" | |||
|
11289 | msgstr "" | |||
|
11290 | ||||
|
11291 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:354 | |||
|
11292 | msgid "more update options" | |||
|
11293 | msgstr "" | |||
|
11294 | ||||
|
11295 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:362 | |||
|
11296 | msgid "Force update commits" | |||
|
11297 | msgstr "" | |||
|
11298 | ||||
|
11299 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:365 | |||
|
11300 | msgid "Update commits and force refresh this pull request." | |||
|
11301 | msgstr "" | |||
|
11302 | ||||
|
11303 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:373 | |||
|
11304 | msgid "Update is disabled for current view" | |||
|
11305 | msgstr "" | |||
|
11306 | ||||
|
11307 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:385 | |||
|
11308 | msgid "Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled" | |||
|
11309 | msgstr "" | |||
|
11310 | ||||
|
11311 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:389 | |||
|
11312 | msgid "commits added: {}, removed: {}" | |||
|
11313 | msgstr "" | |||
|
11314 | ||||
|
11315 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:407 | |||
|
11316 | msgid "Commit added in displayed changes" | |||
|
11317 | msgstr "" | |||
|
11318 | ||||
|
11319 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:409 | |||
|
11320 | msgid "Commit removed in displayed changes" | |||
11217 | msgstr "" |
|
11321 | msgstr "" | |
11218 |
|
11322 | |||
11219 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:512 |
|
11323 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:512 | |
11220 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:534 |
|
11324 | msgid "there is {num} general comment from older versions" | |
11221 | msgid "Update commits" |
|
11325 | msgstr "" | |
|
11326 | ||||
|
11327 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:513 | |||
|
11328 | msgid "show it" | |||
11222 | msgstr "" |
|
11329 | msgstr "" | |
11223 |
|
11330 | |||
11224 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:515 |
|
11331 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:515 | |
11225 | msgid "more update options" |
|
|||
11226 | msgstr "" |
|
|||
11227 |
|
||||
11228 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:523 |
|
|||
11229 | msgid "Force update commits" |
|
|||
11230 | msgstr "" |
|
|||
11231 |
|
||||
11232 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:526 |
|
|||
11233 | msgid "Update commits and force refresh this pull request." |
|
|||
11234 | msgstr "" |
|
|||
11235 |
|
||||
11236 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:534 |
|
|||
11237 | msgid "Update is disabled for current view" |
|
|||
11238 | msgstr "" |
|
|||
11239 |
|
||||
11240 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:545 |
|
|||
11241 | msgid "Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled" |
|
|||
11242 | msgstr "" |
|
|||
11243 |
|
||||
11244 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:549 |
|
|||
11245 | msgid "commits added: {}, removed: {}" |
|
|||
11246 | msgstr "" |
|
|||
11247 |
|
||||
11248 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:567 |
|
|||
11249 | msgid "Commit added in displayed changes" |
|
|||
11250 | msgstr "" |
|
|||
11251 |
|
||||
11252 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:569 |
|
|||
11253 | msgid "Commit removed in displayed changes" |
|
|||
11254 | msgstr "" |
|
|||
11255 |
|
||||
11256 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:678 |
|
|||
11257 | msgid "there is {num} general comment from older versions" |
|
|||
11258 | msgstr "" |
|
|||
11259 |
|
||||
11260 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:679 |
|
|||
11261 | msgid "show it" |
|
|||
11262 | msgstr "" |
|
|||
11263 |
|
||||
11264 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:681 |
|
|||
11265 | msgid "there are {num} general comments from older versions" |
|
11332 | msgid "there are {num} general comments from older versions" | |
11266 | msgstr "" |
|
11333 | msgstr "" | |
11267 |
|
11334 | |||
11268 |
#: rhodecode/templates/pullrequests/pullrequest_show.mako:6 |
|
11335 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:516 | |
11269 | msgid "show them" |
|
11336 | msgid "show them" | |
11270 | msgstr "" |
|
11337 | msgstr "" | |
11271 |
|
11338 | |||
|
11339 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:591 | |||
|
11340 | msgid "Show rules" | |||
|
11341 | msgstr "" | |||
|
11342 | ||||
|
11343 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:618 | |||
|
11344 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:671 | |||
|
11345 | msgid "Save Changes" | |||
|
11346 | msgstr "" | |||
|
11347 | ||||
|
11348 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:642 | |||
|
11349 | msgid "Observers" | |||
|
11350 | msgstr "" | |||
|
11351 | ||||
|
11352 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:708 | |||
|
11353 | msgid "TODOs unavailable when browsing versions" | |||
|
11354 | msgstr "" | |||
|
11355 | ||||
|
11356 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:780 | |||
|
11357 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:788 | |||
|
11358 | msgid "Referenced Tickets" | |||
|
11359 | msgstr "" | |||
|
11360 | ||||
|
11361 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:794 | |||
|
11362 | msgid "In pull request description" | |||
|
11363 | msgstr "" | |||
|
11364 | ||||
|
11365 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:808 | |||
|
11366 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:827 | |||
|
11367 | msgid "No Ticket data found." | |||
|
11368 | msgstr "" | |||
|
11369 | ||||
|
11370 | #: rhodecode/templates/pullrequests/pullrequest_show.mako:813 | |||
|
11371 | msgid "In commit messages" | |||
|
11372 | msgstr "" | |||
|
11373 | ||||
11272 | #: rhodecode/templates/pullrequests/pullrequests.mako:4 |
|
11374 | #: rhodecode/templates/pullrequests/pullrequests.mako:4 | |
11273 | msgid "{} Pull Requests" |
|
11375 | msgid "{} Pull Requests" | |
11274 | msgstr "" |
|
11376 | msgstr "" | |
@@ -11461,10 +11563,6 b' msgstr ""' | |||||
11461 | msgid "Compare Selected Tags" |
|
11563 | msgid "Compare Selected Tags" | |
11462 | msgstr "" |
|
11564 | msgstr "" | |
11463 |
|
11565 | |||
11464 | #: rhodecode/templates/tags/tags.mako:34 |
|
|||
11465 | msgid "tags" |
|
|||
11466 | msgstr "" |
|
|||
11467 |
|
||||
11468 | #: rhodecode/templates/user_group/profile.mako:6 |
|
11566 | #: rhodecode/templates/user_group/profile.mako:6 | |
11469 | msgid "User Group Profile" |
|
11567 | msgid "User Group Profile" | |
11470 | msgstr "" |
|
11568 | msgstr "" |
@@ -88,6 +88,9 b' ACTIONS_V1 = {' | |||||
88 | 'repo.pull_request.reviewer.add': '', |
|
88 | 'repo.pull_request.reviewer.add': '', | |
89 | 'repo.pull_request.reviewer.delete': '', |
|
89 | 'repo.pull_request.reviewer.delete': '', | |
90 |
|
90 | |||
|
91 | 'repo.pull_request.observer.add': '', | |||
|
92 | 'repo.pull_request.observer.delete': '', | |||
|
93 | ||||
91 | 'repo.commit.strip': {'commit_id': ''}, |
|
94 | 'repo.commit.strip': {'commit_id': ''}, | |
92 | 'repo.commit.comment.create': {'data': {}}, |
|
95 | 'repo.commit.comment.create': {'data': {}}, | |
93 | 'repo.commit.comment.delete': {'data': {}}, |
|
96 | 'repo.commit.comment.delete': {'data': {}}, |
@@ -293,6 +293,7 b' def attach_context_attributes(context, r' | |||||
293 | context.rc_config = rc_config |
|
293 | context.rc_config = rc_config | |
294 | context.rhodecode_version = rhodecode.__version__ |
|
294 | context.rhodecode_version = rhodecode.__version__ | |
295 | context.rhodecode_edition = config.get('rhodecode.edition') |
|
295 | context.rhodecode_edition = config.get('rhodecode.edition') | |
|
296 | context.rhodecode_edition_id = config.get('rhodecode.edition_id') | |||
296 | # unique secret + version does not leak the version but keep consistency |
|
297 | # unique secret + version does not leak the version but keep consistency | |
297 | context.rhodecode_version_hash = calculate_version_hash(config) |
|
298 | context.rhodecode_version_hash = calculate_version_hash(config) | |
298 |
|
299 |
@@ -225,14 +225,26 b' def write_history(config, message):' | |||||
225 |
|
225 | |||
226 | def get_connection_validators(registry): |
|
226 | def get_connection_validators(registry): | |
227 | validators = [] |
|
227 | validators = [] | |
228 |
for k, config in registry.rhodecode_plugins. |
|
228 | for k, config in registry.rhodecode_plugins.items(): | |
229 | validator = config.get('channelstream', {}).get('connect_validator') |
|
229 | validator = config.get('channelstream', {}).get('connect_validator') | |
230 | if validator: |
|
230 | if validator: | |
231 | validators.append(validator) |
|
231 | validators.append(validator) | |
232 | return validators |
|
232 | return validators | |
233 |
|
233 | |||
234 |
|
234 | |||
|
235 | def get_channelstream_config(registry=None): | |||
|
236 | if not registry: | |||
|
237 | registry = get_current_registry() | |||
|
238 | ||||
|
239 | rhodecode_plugins = getattr(registry, 'rhodecode_plugins', {}) | |||
|
240 | channelstream_config = rhodecode_plugins.get('channelstream', {}) | |||
|
241 | return channelstream_config | |||
|
242 | ||||
|
243 | ||||
235 | def post_message(channel, message, username, registry=None): |
|
244 | def post_message(channel, message, username, registry=None): | |
|
245 | channelstream_config = get_channelstream_config(registry) | |||
|
246 | if not channelstream_config.get('enabled'): | |||
|
247 | return | |||
236 |
|
248 | |||
237 | message_obj = message |
|
249 | message_obj = message | |
238 | if isinstance(message, basestring): |
|
250 | if isinstance(message, basestring): | |
@@ -242,13 +254,7 b' def post_message(channel, message, usern' | |||||
242 | 'topic': '/notifications' |
|
254 | 'topic': '/notifications' | |
243 | } |
|
255 | } | |
244 |
|
256 | |||
245 | if not registry: |
|
|||
246 | registry = get_current_registry() |
|
|||
247 |
|
||||
248 | log.debug('Channelstream: sending notification to channel %s', channel) |
|
257 | log.debug('Channelstream: sending notification to channel %s', channel) | |
249 | rhodecode_plugins = getattr(registry, 'rhodecode_plugins', {}) |
|
|||
250 | channelstream_config = rhodecode_plugins.get('channelstream', {}) |
|
|||
251 | if channelstream_config.get('enabled'): |
|
|||
252 |
|
|
258 | payload = { | |
253 |
|
|
259 | 'type': 'message', | |
254 |
|
|
260 | 'timestamp': datetime.datetime.utcnow(), | |
@@ -265,3 +271,101 b' def post_message(channel, message, usern' | |||||
265 |
|
|
271 | except ChannelstreamException: | |
266 |
|
|
272 | log.exception('Failed to send channelstream data') | |
267 |
|
|
273 | raise | |
|
274 | ||||
|
275 | ||||
|
276 | def _reload_link(label): | |||
|
277 | return ( | |||
|
278 | '<a onclick="window.location.reload()">' | |||
|
279 | '<strong>{}</strong>' | |||
|
280 | '</a>'.format(label) | |||
|
281 | ) | |||
|
282 | ||||
|
283 | ||||
|
284 | def pr_channel(pull_request): | |||
|
285 | repo_name = pull_request.target_repo.repo_name | |||
|
286 | pull_request_id = pull_request.pull_request_id | |||
|
287 | channel = '/repo${}$/pr/{}'.format(repo_name, pull_request_id) | |||
|
288 | log.debug('Getting pull-request channelstream broadcast channel: %s', channel) | |||
|
289 | return channel | |||
|
290 | ||||
|
291 | ||||
|
292 | def comment_channel(repo_name, commit_obj=None, pull_request_obj=None): | |||
|
293 | channel = None | |||
|
294 | if commit_obj: | |||
|
295 | channel = u'/repo${}$/commit/{}'.format( | |||
|
296 | repo_name, commit_obj.raw_id | |||
|
297 | ) | |||
|
298 | elif pull_request_obj: | |||
|
299 | channel = u'/repo${}$/pr/{}'.format( | |||
|
300 | repo_name, pull_request_obj.pull_request_id | |||
|
301 | ) | |||
|
302 | log.debug('Getting comment channelstream broadcast channel: %s', channel) | |||
|
303 | ||||
|
304 | return channel | |||
|
305 | ||||
|
306 | ||||
|
307 | def pr_update_channelstream_push(request, pr_broadcast_channel, user, msg, **kwargs): | |||
|
308 | """ | |||
|
309 | Channel push on pull request update | |||
|
310 | """ | |||
|
311 | if not pr_broadcast_channel: | |||
|
312 | return | |||
|
313 | ||||
|
314 | _ = request.translate | |||
|
315 | ||||
|
316 | message = '{} {}'.format( | |||
|
317 | msg, | |||
|
318 | _reload_link(_(' Reload page to load changes'))) | |||
|
319 | ||||
|
320 | message_obj = { | |||
|
321 | 'message': message, | |||
|
322 | 'level': 'success', | |||
|
323 | 'topic': '/notifications' | |||
|
324 | } | |||
|
325 | ||||
|
326 | post_message( | |||
|
327 | pr_broadcast_channel, message_obj, user.username, | |||
|
328 | registry=request.registry) | |||
|
329 | ||||
|
330 | ||||
|
331 | def comment_channelstream_push(request, comment_broadcast_channel, user, msg, **kwargs): | |||
|
332 | """ | |||
|
333 | Channelstream push on comment action, on commit, or pull-request | |||
|
334 | """ | |||
|
335 | if not comment_broadcast_channel: | |||
|
336 | return | |||
|
337 | ||||
|
338 | _ = request.translate | |||
|
339 | ||||
|
340 | comment_data = kwargs.pop('comment_data', {}) | |||
|
341 | user_data = kwargs.pop('user_data', {}) | |||
|
342 | comment_id = comment_data.get('comment_id') | |||
|
343 | ||||
|
344 | message = '<strong>{}</strong> {} #{}, {}'.format( | |||
|
345 | user.username, | |||
|
346 | msg, | |||
|
347 | comment_id, | |||
|
348 | _reload_link(_('Reload page to see new comments')), | |||
|
349 | ) | |||
|
350 | ||||
|
351 | message_obj = { | |||
|
352 | 'message': message, | |||
|
353 | 'level': 'success', | |||
|
354 | 'topic': '/notifications' | |||
|
355 | } | |||
|
356 | ||||
|
357 | post_message( | |||
|
358 | comment_broadcast_channel, message_obj, user.username, | |||
|
359 | registry=request.registry) | |||
|
360 | ||||
|
361 | message_obj = { | |||
|
362 | 'message': None, | |||
|
363 | 'user': user.username, | |||
|
364 | 'comment_id': comment_id, | |||
|
365 | 'comment_data': comment_data, | |||
|
366 | 'user_data': user_data, | |||
|
367 | 'topic': '/comment' | |||
|
368 | } | |||
|
369 | post_message( | |||
|
370 | comment_broadcast_channel, message_obj, user.username, | |||
|
371 | registry=request.registry) |
@@ -131,7 +131,7 b' def send_exc_email(request, exc_id, exc_' | |||||
131 |
|
131 | |||
132 | # NOTE(marcink): needed for email template rendering |
|
132 | # NOTE(marcink): needed for email template rendering | |
133 | user_id = None |
|
133 | user_id = None | |
134 | if request: |
|
134 | if hasattr(request, 'user'): | |
135 | user_id = request.user.user_id |
|
135 | user_id = request.user.user_id | |
136 | attach_context_attributes(TemplateArgs(), request, user_id=user_id, is_api=True) |
|
136 | attach_context_attributes(TemplateArgs(), request, user_id=user_id, is_api=True) | |
137 |
|
137 |
@@ -38,6 +38,7 b' import re' | |||||
38 | import time |
|
38 | import time | |
39 | import string |
|
39 | import string | |
40 | import hashlib |
|
40 | import hashlib | |
|
41 | import regex | |||
41 | from collections import OrderedDict |
|
42 | from collections import OrderedDict | |
42 |
|
43 | |||
43 | import pygments |
|
44 | import pygments | |
@@ -1103,6 +1104,10 b' def bool2icon(value, show_at_false=True)' | |||||
1103 | return HTML.tag('i', class_="icon-false", title='False') |
|
1104 | return HTML.tag('i', class_="icon-false", title='False') | |
1104 | return HTML.tag('i') |
|
1105 | return HTML.tag('i') | |
1105 |
|
1106 | |||
|
1107 | ||||
|
1108 | def b64(inp): | |||
|
1109 | return base64.b64encode(inp) | |||
|
1110 | ||||
1106 | #============================================================================== |
|
1111 | #============================================================================== | |
1107 | # PERMS |
|
1112 | # PERMS | |
1108 | #============================================================================== |
|
1113 | #============================================================================== | |
@@ -1653,7 +1658,7 b' def get_active_pattern_entries(repo_name' | |||||
1653 | return active_entries |
|
1658 | return active_entries | |
1654 |
|
1659 | |||
1655 |
|
1660 | |||
1656 | pr_pattern_re = re.compile(r'(?:(?:^!)|(?: !))(\d+)') |
|
1661 | pr_pattern_re = regex.compile(r'(?:(?:^!)|(?: !))(\d+)') | |
1657 |
|
1662 | |||
1658 | allowed_link_formats = [ |
|
1663 | allowed_link_formats = [ | |
1659 | 'html', 'rst', 'markdown', 'html+hovercard', 'rst+hovercard', 'markdown+hovercard'] |
|
1664 | 'html', 'rst', 'markdown', 'html+hovercard', 'rst+hovercard', 'markdown+hovercard'] | |
@@ -1670,6 +1675,7 b' def process_patterns(text_string, repo_n' | |||||
1670 | active_entries = get_active_pattern_entries(repo_name) |
|
1675 | active_entries = get_active_pattern_entries(repo_name) | |
1671 |
|
1676 | |||
1672 | issues_data = [] |
|
1677 | issues_data = [] | |
|
1678 | errors = [] | |||
1673 | new_text = text_string |
|
1679 | new_text = text_string | |
1674 |
|
1680 | |||
1675 | log.debug('Got %s entries to process', len(active_entries)) |
|
1681 | log.debug('Got %s entries to process', len(active_entries)) | |
@@ -1687,9 +1693,11 b' def process_patterns(text_string, repo_n' | |||||
1687 | pattern = entry['pat_compiled'] |
|
1693 | pattern = entry['pat_compiled'] | |
1688 | else: |
|
1694 | else: | |
1689 | try: |
|
1695 | try: | |
1690 | pattern = re.compile(r'%s' % entry['pat']) |
|
1696 | pattern = regex.compile(r'%s' % entry['pat']) | |
1691 | except re.error: |
|
1697 | except regex.error as e: | |
1692 | log.exception('issue tracker pattern: `%s` failed to compile', entry['pat']) |
|
1698 | regex_err = ValueError('{}:{}'.format(entry['pat'], e)) | |
|
1699 | log.exception('issue tracker pattern: `%s` failed to compile', regex_err) | |||
|
1700 | errors.append(regex_err) | |||
1693 | continue |
|
1701 | continue | |
1694 |
|
1702 | |||
1695 | data_func = partial( |
|
1703 | data_func = partial( | |
@@ -1721,11 +1729,11 b' def process_patterns(text_string, repo_n' | |||||
1721 | new_text = pr_pattern_re.sub(pr_url_func, new_text) |
|
1729 | new_text = pr_pattern_re.sub(pr_url_func, new_text) | |
1722 | log.debug('processed !pr pattern') |
|
1730 | log.debug('processed !pr pattern') | |
1723 |
|
1731 | |||
1724 | return new_text, issues_data |
|
1732 | return new_text, issues_data, errors | |
1725 |
|
1733 | |||
1726 |
|
1734 | |||
1727 | def urlify_commit_message(commit_text, repository=None, active_pattern_entries=None, |
|
1735 | def urlify_commit_message(commit_text, repository=None, active_pattern_entries=None, | |
1728 | issues_container=None): |
|
1736 | issues_container=None, error_container=None): | |
1729 | """ |
|
1737 | """ | |
1730 | Parses given text message and makes proper links. |
|
1738 | Parses given text message and makes proper links. | |
1731 | issues are linked to given issue-server, and rest is a commit link |
|
1739 | issues are linked to given issue-server, and rest is a commit link | |
@@ -1745,12 +1753,15 b' def urlify_commit_message(commit_text, r' | |||||
1745 | new_text = urlify_commits(new_text, repository) |
|
1753 | new_text = urlify_commits(new_text, repository) | |
1746 |
|
1754 | |||
1747 | # process issue tracker patterns |
|
1755 | # process issue tracker patterns | |
1748 |
new_text, issues = process_patterns( |
|
1756 | new_text, issues, errors = process_patterns( | |
1749 |
|
|
1757 | new_text, repository or '', active_entries=active_pattern_entries) | |
1750 |
|
1758 | |||
1751 | if issues_container is not None: |
|
1759 | if issues_container is not None: | |
1752 | issues_container.extend(issues) |
|
1760 | issues_container.extend(issues) | |
1753 |
|
1761 | |||
|
1762 | if error_container is not None: | |||
|
1763 | error_container.extend(errors) | |||
|
1764 | ||||
1754 | return literal(new_text) |
|
1765 | return literal(new_text) | |
1755 |
|
1766 | |||
1756 |
|
1767 | |||
@@ -1805,7 +1816,7 b" def render(source, renderer='rst', menti" | |||||
1805 | elif renderer == 'rst': |
|
1816 | elif renderer == 'rst': | |
1806 | if repo_name: |
|
1817 | if repo_name: | |
1807 | # process patterns on comments if we pass in repo name |
|
1818 | # process patterns on comments if we pass in repo name | |
1808 | source, issues = process_patterns( |
|
1819 | source, issues, errors = process_patterns( | |
1809 | source, repo_name, link_format='rst', |
|
1820 | source, repo_name, link_format='rst', | |
1810 | active_entries=active_pattern_entries) |
|
1821 | active_entries=active_pattern_entries) | |
1811 | if issues_container is not None: |
|
1822 | if issues_container is not None: | |
@@ -1819,7 +1830,7 b" def render(source, renderer='rst', menti" | |||||
1819 | elif renderer == 'markdown': |
|
1830 | elif renderer == 'markdown': | |
1820 | if repo_name: |
|
1831 | if repo_name: | |
1821 | # process patterns on comments if we pass in repo name |
|
1832 | # process patterns on comments if we pass in repo name | |
1822 | source, issues = process_patterns( |
|
1833 | source, issues, errors = process_patterns( | |
1823 | source, repo_name, link_format='markdown', |
|
1834 | source, repo_name, link_format='markdown', | |
1824 | active_entries=active_pattern_entries) |
|
1835 | active_entries=active_pattern_entries) | |
1825 | if issues_container is not None: |
|
1836 | if issues_container is not None: |
@@ -57,7 +57,43 b' FILEMODE_DEFAULT = 0o100644' | |||||
57 | FILEMODE_EXECUTABLE = 0o100755 |
|
57 | FILEMODE_EXECUTABLE = 0o100755 | |
58 | EMPTY_COMMIT_ID = '0' * 40 |
|
58 | EMPTY_COMMIT_ID = '0' * 40 | |
59 |
|
59 | |||
60 | Reference = collections.namedtuple('Reference', ('type', 'name', 'commit_id')) |
|
60 | _Reference = collections.namedtuple('Reference', ('type', 'name', 'commit_id')) | |
|
61 | ||||
|
62 | ||||
|
63 | class Reference(_Reference): | |||
|
64 | ||||
|
65 | @property | |||
|
66 | def branch(self): | |||
|
67 | if self.type == 'branch': | |||
|
68 | return self.name | |||
|
69 | ||||
|
70 | @property | |||
|
71 | def bookmark(self): | |||
|
72 | if self.type == 'book': | |||
|
73 | return self.name | |||
|
74 | ||||
|
75 | ||||
|
76 | def unicode_to_reference(raw): | |||
|
77 | """ | |||
|
78 | Convert a unicode (or string) to a reference object. | |||
|
79 | If unicode evaluates to False it returns None. | |||
|
80 | """ | |||
|
81 | if raw: | |||
|
82 | refs = raw.split(':') | |||
|
83 | return Reference(*refs) | |||
|
84 | else: | |||
|
85 | return None | |||
|
86 | ||||
|
87 | ||||
|
88 | def reference_to_unicode(ref): | |||
|
89 | """ | |||
|
90 | Convert a reference object to unicode. | |||
|
91 | If reference is None it returns None. | |||
|
92 | """ | |||
|
93 | if ref: | |||
|
94 | return u':'.join(ref) | |||
|
95 | else: | |||
|
96 | return None | |||
61 |
|
97 | |||
62 |
|
98 | |||
63 | class MergeFailureReason(object): |
|
99 | class MergeFailureReason(object): |
@@ -25,7 +25,7 b' import collections' | |||||
25 |
|
25 | |||
26 | from rhodecode.model import BaseModel |
|
26 | from rhodecode.model import BaseModel | |
27 | from rhodecode.model.db import ( |
|
27 | from rhodecode.model.db import ( | |
28 | ChangesetStatus, ChangesetComment, PullRequest, Session) |
|
28 | ChangesetStatus, ChangesetComment, PullRequest, PullRequestReviewers, Session) | |
29 | from rhodecode.lib.exceptions import StatusChangeOnClosedPullRequestError |
|
29 | from rhodecode.lib.exceptions import StatusChangeOnClosedPullRequestError | |
30 | from rhodecode.lib.markup_renderer import ( |
|
30 | from rhodecode.lib.markup_renderer import ( | |
31 | DEFAULT_COMMENTS_RENDERER, RstTemplateRenderer) |
|
31 | DEFAULT_COMMENTS_RENDERER, RstTemplateRenderer) | |
@@ -383,15 +383,14 b' class ChangesetStatusModel(BaseModel):' | |||||
383 | pull_request.source_repo, |
|
383 | pull_request.source_repo, | |
384 | pull_request=pull_request, |
|
384 | pull_request=pull_request, | |
385 | with_revisions=True) |
|
385 | with_revisions=True) | |
|
386 | reviewers = pull_request.get_pull_request_reviewers( | |||
|
387 | role=PullRequestReviewers.ROLE_REVIEWER) | |||
|
388 | return self.aggregate_votes_by_user(_commit_statuses, reviewers) | |||
386 |
|
389 | |||
387 | return self.aggregate_votes_by_user(_commit_statuses, pull_request.reviewers) |
|
390 | def calculated_review_status(self, pull_request): | |
388 |
|
||||
389 | def calculated_review_status(self, pull_request, reviewers_statuses=None): |
|
|||
390 | """ |
|
391 | """ | |
391 | calculate pull request status based on reviewers, it should be a list |
|
392 | calculate pull request status based on reviewers, it should be a list | |
392 | of two element lists. |
|
393 | of two element lists. | |
393 |
|
||||
394 | :param reviewers_statuses: |
|
|||
395 | """ |
|
394 | """ | |
396 |
reviewers = |
|
395 | reviewers = self.reviewers_statuses(pull_request) | |
397 | return self.calculate_status(reviewers) |
|
396 | return self.calculate_status(reviewers) |
@@ -399,7 +399,7 b' class CommentsModel(BaseModel):' | |||||
399 | recipients += [pull_request_obj.author] |
|
399 | recipients += [pull_request_obj.author] | |
400 |
|
400 | |||
401 | # add the reviewers to notification |
|
401 | # add the reviewers to notification | |
402 | recipients += [x.user for x in pull_request_obj.reviewers] |
|
402 | recipients += [x.user for x in pull_request_obj.get_pull_request_reviewers()] | |
403 |
|
403 | |||
404 | pr_target_repo = pull_request_obj.target_repo |
|
404 | pr_target_repo = pull_request_obj.target_repo | |
405 | pr_source_repo = pull_request_obj.source_repo |
|
405 | pr_source_repo = pull_request_obj.source_repo | |
@@ -436,9 +436,8 b' class CommentsModel(BaseModel):' | |||||
436 | 'thread_ids': [pr_url, pr_comment_url], |
|
436 | 'thread_ids': [pr_url, pr_comment_url], | |
437 | }) |
|
437 | }) | |
438 |
|
438 | |||
|
439 | if send_email: | |||
439 | recipients += [self._get_user(u) for u in (extra_recipients or [])] |
|
440 | recipients += [self._get_user(u) for u in (extra_recipients or [])] | |
440 |
|
||||
441 | if send_email: |
|
|||
442 | # pre-generate the subject for notification itself |
|
441 | # pre-generate the subject for notification itself | |
443 | (subject, _e, body_plaintext) = EmailNotificationModel().render_email( |
|
442 | (subject, _e, body_plaintext) = EmailNotificationModel().render_email( | |
444 | notification_type, **kwargs) |
|
443 | notification_type, **kwargs) | |
@@ -463,55 +462,11 b' class CommentsModel(BaseModel):' | |||||
463 | else: |
|
462 | else: | |
464 | action = 'repo.commit.comment.create' |
|
463 | action = 'repo.commit.comment.create' | |
465 |
|
464 | |||
466 | comment_id = comment.comment_id |
|
|||
467 | comment_data = comment.get_api_data() |
|
465 | comment_data = comment.get_api_data() | |
468 |
|
466 | |||
469 | self._log_audit_action( |
|
467 | self._log_audit_action( | |
470 | action, {'data': comment_data}, auth_user, comment) |
|
468 | action, {'data': comment_data}, auth_user, comment) | |
471 |
|
469 | |||
472 | channel = None |
|
|||
473 | if commit_obj: |
|
|||
474 | repo_name = repo.repo_name |
|
|||
475 | channel = u'/repo${}$/commit/{}'.format( |
|
|||
476 | repo_name, |
|
|||
477 | commit_obj.raw_id |
|
|||
478 | ) |
|
|||
479 | elif pull_request_obj: |
|
|||
480 | repo_name = pr_target_repo.repo_name |
|
|||
481 | channel = u'/repo${}$/pr/{}'.format( |
|
|||
482 | repo_name, |
|
|||
483 | pull_request_obj.pull_request_id |
|
|||
484 | ) |
|
|||
485 |
|
||||
486 | if channel: |
|
|||
487 | username = user.username |
|
|||
488 | message = '<strong>{}</strong> {} #{}, {}' |
|
|||
489 | message = message.format( |
|
|||
490 | username, |
|
|||
491 | _('posted a new comment'), |
|
|||
492 | comment_id, |
|
|||
493 | _('Refresh the page to see new comments.')) |
|
|||
494 |
|
||||
495 | message_obj = { |
|
|||
496 | 'message': message, |
|
|||
497 | 'level': 'success', |
|
|||
498 | 'topic': '/notifications' |
|
|||
499 | } |
|
|||
500 |
|
||||
501 | channelstream.post_message( |
|
|||
502 | channel, message_obj, user.username, |
|
|||
503 | registry=get_current_registry()) |
|
|||
504 |
|
||||
505 | message_obj = { |
|
|||
506 | 'message': None, |
|
|||
507 | 'user': username, |
|
|||
508 | 'comment_id': comment_id, |
|
|||
509 | 'topic': '/comment' |
|
|||
510 | } |
|
|||
511 | channelstream.post_message( |
|
|||
512 | channel, message_obj, user.username, |
|
|||
513 | registry=get_current_registry()) |
|
|||
514 |
|
||||
515 | return comment |
|
470 | return comment | |
516 |
|
471 | |||
517 | def edit(self, comment_id, text, auth_user, version): |
|
472 | def edit(self, comment_id, text, auth_user, version): | |
@@ -586,17 +541,20 b' class CommentsModel(BaseModel):' | |||||
586 |
|
541 | |||
587 | return comment |
|
542 | return comment | |
588 |
|
543 | |||
589 | def get_all_comments(self, repo_id, revision=None, pull_request=None): |
|
544 | def get_all_comments(self, repo_id, revision=None, pull_request=None, count_only=False): | |
590 | q = ChangesetComment.query()\ |
|
545 | q = ChangesetComment.query()\ | |
591 | .filter(ChangesetComment.repo_id == repo_id) |
|
546 | .filter(ChangesetComment.repo_id == repo_id) | |
592 | if revision: |
|
547 | if revision: | |
593 | q = q.filter(ChangesetComment.revision == revision) |
|
548 | q = q.filter(ChangesetComment.revision == revision) | |
594 | elif pull_request: |
|
549 | elif pull_request: | |
595 | pull_request = self.__get_pull_request(pull_request) |
|
550 | pull_request = self.__get_pull_request(pull_request) | |
596 | q = q.filter(ChangesetComment.pull_request == pull_request) |
|
551 | q = q.filter(ChangesetComment.pull_request_id == pull_request.pull_request_id) | |
597 | else: |
|
552 | else: | |
598 | raise Exception('Please specify commit or pull_request') |
|
553 | raise Exception('Please specify commit or pull_request') | |
599 | q = q.order_by(ChangesetComment.created_on) |
|
554 | q = q.order_by(ChangesetComment.created_on) | |
|
555 | if count_only: | |||
|
556 | return q.count() | |||
|
557 | ||||
600 | return q.all() |
|
558 | return q.all() | |
601 |
|
559 | |||
602 | def get_url(self, comment, request=None, permalink=False, anchor=None): |
|
560 | def get_url(self, comment, request=None, permalink=False, anchor=None): |
@@ -56,7 +56,8 b' from webhelpers2.text import remove_form' | |||||
56 |
|
56 | |||
57 | from rhodecode.translation import _ |
|
57 | from rhodecode.translation import _ | |
58 | from rhodecode.lib.vcs import get_vcs_instance, VCSError |
|
58 | from rhodecode.lib.vcs import get_vcs_instance, VCSError | |
59 |
from rhodecode.lib.vcs.backends.base import |
|
59 | from rhodecode.lib.vcs.backends.base import ( | |
|
60 | EmptyCommit, Reference, unicode_to_reference, reference_to_unicode) | |||
60 | from rhodecode.lib.utils2 import ( |
|
61 | from rhodecode.lib.utils2 import ( | |
61 | str2bool, safe_str, get_commit_safe, safe_unicode, sha1_safe, |
|
62 | str2bool, safe_str, get_commit_safe, safe_unicode, sha1_safe, | |
62 | time_to_datetime, aslist, Optional, safe_int, get_clone_url, AttributeDict, |
|
63 | time_to_datetime, aslist, Optional, safe_int, get_clone_url, AttributeDict, | |
@@ -3773,12 +3774,12 b' class ChangesetComment(Base, BaseModel):' | |||||
3773 | resolved_comment = relationship('ChangesetComment', remote_side=comment_id, back_populates='resolved_by') |
|
3774 | resolved_comment = relationship('ChangesetComment', remote_side=comment_id, back_populates='resolved_by') | |
3774 | resolved_by = relationship('ChangesetComment', back_populates='resolved_comment') |
|
3775 | resolved_by = relationship('ChangesetComment', back_populates='resolved_comment') | |
3775 |
|
3776 | |||
3776 |
author = relationship('User', lazy=' |
|
3777 | author = relationship('User', lazy='select') | |
3777 | repo = relationship('Repository') |
|
3778 | repo = relationship('Repository') | |
3778 |
status_change = relationship('ChangesetStatus', cascade="all, delete-orphan", lazy=' |
|
3779 | status_change = relationship('ChangesetStatus', cascade="all, delete-orphan", lazy='select') | |
3779 |
pull_request = relationship('PullRequest', lazy=' |
|
3780 | pull_request = relationship('PullRequest', lazy='select') | |
3780 | pull_request_version = relationship('PullRequestVersion') |
|
3781 | pull_request_version = relationship('PullRequestVersion', lazy='select') | |
3781 |
history = relationship('ChangesetCommentHistory', cascade='all, delete-orphan', lazy=' |
|
3782 | history = relationship('ChangesetCommentHistory', cascade='all, delete-orphan', lazy='select', order_by='ChangesetCommentHistory.version') | |
3782 |
|
3783 | |||
3783 | @classmethod |
|
3784 | @classmethod | |
3784 | def get_users(cls, revision=None, pull_request_id=None): |
|
3785 | def get_users(cls, revision=None, pull_request_id=None): | |
@@ -3983,10 +3984,10 b' class ChangesetStatus(Base, BaseModel):' | |||||
3983 | version = Column('version', Integer(), nullable=False, default=0) |
|
3984 | version = Column('version', Integer(), nullable=False, default=0) | |
3984 | pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True) |
|
3985 | pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True) | |
3985 |
|
3986 | |||
3986 |
author = relationship('User', lazy=' |
|
3987 | author = relationship('User', lazy='select') | |
3987 | repo = relationship('Repository') |
|
3988 | repo = relationship('Repository', lazy='select') | |
3988 |
comment = relationship('ChangesetComment', lazy=' |
|
3989 | comment = relationship('ChangesetComment', lazy='select') | |
3989 |
pull_request = relationship('PullRequest', lazy=' |
|
3990 | pull_request = relationship('PullRequest', lazy='select') | |
3990 |
|
3991 | |||
3991 | def __unicode__(self): |
|
3992 | def __unicode__(self): | |
3992 | return u"<%s('%s[v%s]:%s')>" % ( |
|
3993 | return u"<%s('%s[v%s]:%s')>" % ( | |
@@ -4248,26 +4249,11 b' class _PullRequestBase(BaseModel):' | |||||
4248 |
|
4249 | |||
4249 | @staticmethod |
|
4250 | @staticmethod | |
4250 | def unicode_to_reference(raw): |
|
4251 | def unicode_to_reference(raw): | |
4251 | """ |
|
4252 | return unicode_to_reference(raw) | |
4252 | Convert a unicode (or string) to a reference object. |
|
|||
4253 | If unicode evaluates to False it returns None. |
|
|||
4254 | """ |
|
|||
4255 | if raw: |
|
|||
4256 | refs = raw.split(':') |
|
|||
4257 | return Reference(*refs) |
|
|||
4258 | else: |
|
|||
4259 | return None |
|
|||
4260 |
|
4253 | |||
4261 | @staticmethod |
|
4254 | @staticmethod | |
4262 | def reference_to_unicode(ref): |
|
4255 | def reference_to_unicode(ref): | |
4263 | """ |
|
4256 | return reference_to_unicode(ref) | |
4264 | Convert a reference object to unicode. |
|
|||
4265 | If reference is None it returns None. |
|
|||
4266 | """ |
|
|||
4267 | if ref: |
|
|||
4268 | return u':'.join(ref) |
|
|||
4269 | else: |
|
|||
4270 | return None |
|
|||
4271 |
|
4257 | |||
4272 | def get_api_data(self, with_merge_state=True): |
|
4258 | def get_api_data(self, with_merge_state=True): | |
4273 | from rhodecode.model.pull_request import PullRequestModel |
|
4259 | from rhodecode.model.pull_request import PullRequestModel | |
@@ -4465,6 +4451,37 b' class PullRequest(Base, _PullRequestBase' | |||||
4465 | from rhodecode.model.changeset_status import ChangesetStatusModel |
|
4451 | from rhodecode.model.changeset_status import ChangesetStatusModel | |
4466 | return ChangesetStatusModel().reviewers_statuses(self) |
|
4452 | return ChangesetStatusModel().reviewers_statuses(self) | |
4467 |
|
4453 | |||
|
4454 | def get_pull_request_reviewers(self, role=None): | |||
|
4455 | qry = PullRequestReviewers.query()\ | |||
|
4456 | .filter(PullRequestReviewers.pull_request_id == self.pull_request_id) | |||
|
4457 | if role: | |||
|
4458 | qry = qry.filter(PullRequestReviewers.role == role) | |||
|
4459 | ||||
|
4460 | return qry.all() | |||
|
4461 | ||||
|
4462 | @property | |||
|
4463 | def reviewers_count(self): | |||
|
4464 | qry = PullRequestReviewers.query()\ | |||
|
4465 | .filter(PullRequestReviewers.pull_request_id == self.pull_request_id)\ | |||
|
4466 | .filter(PullRequestReviewers.role == PullRequestReviewers.ROLE_REVIEWER) | |||
|
4467 | return qry.count() | |||
|
4468 | ||||
|
4469 | @property | |||
|
4470 | def observers_count(self): | |||
|
4471 | qry = PullRequestReviewers.query()\ | |||
|
4472 | .filter(PullRequestReviewers.pull_request_id == self.pull_request_id)\ | |||
|
4473 | .filter(PullRequestReviewers.role == PullRequestReviewers.ROLE_OBSERVER) | |||
|
4474 | return qry.count() | |||
|
4475 | ||||
|
4476 | def observers(self): | |||
|
4477 | qry = PullRequestReviewers.query()\ | |||
|
4478 | .filter(PullRequestReviewers.pull_request_id == self.pull_request_id)\ | |||
|
4479 | .filter(PullRequestReviewers.role == PullRequestReviewers.ROLE_OBSERVER)\ | |||
|
4480 | .all() | |||
|
4481 | ||||
|
4482 | for entry in qry: | |||
|
4483 | yield entry, entry.user | |||
|
4484 | ||||
4468 | @property |
|
4485 | @property | |
4469 | def workspace_id(self): |
|
4486 | def workspace_id(self): | |
4470 | from rhodecode.model.pull_request import PullRequestModel |
|
4487 | from rhodecode.model.pull_request import PullRequestModel | |
@@ -4512,6 +4529,9 b' class PullRequestVersion(Base, _PullRequ' | |||||
4512 | @property |
|
4529 | @property | |
4513 | def reviewers(self): |
|
4530 | def reviewers(self): | |
4514 | return self.pull_request.reviewers |
|
4531 | return self.pull_request.reviewers | |
|
4532 | @property | |||
|
4533 | def reviewers(self): | |||
|
4534 | return self.pull_request.reviewers | |||
4515 |
|
4535 | |||
4516 | @property |
|
4536 | @property | |
4517 | def versions(self): |
|
4537 | def versions(self): | |
@@ -4530,6 +4550,9 b' class PullRequestVersion(Base, _PullRequ' | |||||
4530 | def reviewers_statuses(self): |
|
4550 | def reviewers_statuses(self): | |
4531 | return self.pull_request.reviewers_statuses() |
|
4551 | return self.pull_request.reviewers_statuses() | |
4532 |
|
4552 | |||
|
4553 | def observers(self): | |||
|
4554 | return self.pull_request.observers() | |||
|
4555 | ||||
4533 |
|
4556 | |||
4534 | class PullRequestReviewers(Base, BaseModel): |
|
4557 | class PullRequestReviewers(Base, BaseModel): | |
4535 | __tablename__ = 'pull_request_reviewers' |
|
4558 | __tablename__ = 'pull_request_reviewers' | |
@@ -4538,6 +4561,7 b' class PullRequestReviewers(Base, BaseMod' | |||||
4538 | ) |
|
4561 | ) | |
4539 | ROLE_REVIEWER = u'reviewer' |
|
4562 | ROLE_REVIEWER = u'reviewer' | |
4540 | ROLE_OBSERVER = u'observer' |
|
4563 | ROLE_OBSERVER = u'observer' | |
|
4564 | ROLES = [ROLE_REVIEWER, ROLE_OBSERVER] | |||
4541 |
|
4565 | |||
4542 | @hybrid_property |
|
4566 | @hybrid_property | |
4543 | def reasons(self): |
|
4567 | def reasons(self): | |
@@ -4589,6 +4613,15 b' class PullRequestReviewers(Base, BaseMod' | |||||
4589 |
|
4613 | |||
4590 | return user_group_data |
|
4614 | return user_group_data | |
4591 |
|
4615 | |||
|
4616 | @classmethod | |||
|
4617 | def get_pull_request_reviewers(cls, pull_request_id, role=None): | |||
|
4618 | qry = PullRequestReviewers.query()\ | |||
|
4619 | .filter(PullRequestReviewers.pull_request_id == pull_request_id) | |||
|
4620 | if role: | |||
|
4621 | qry = qry.filter(PullRequestReviewers.role == role) | |||
|
4622 | ||||
|
4623 | return qry.all() | |||
|
4624 | ||||
4592 | def __unicode__(self): |
|
4625 | def __unicode__(self): | |
4593 | return u"<%s('id:%s')>" % (self.__class__.__name__, |
|
4626 | return u"<%s('id:%s')>" % (self.__class__.__name__, | |
4594 | self.pull_requests_reviewers_id) |
|
4627 | self.pull_requests_reviewers_id) | |
@@ -4954,16 +4987,21 b' class RepoReviewRuleUser(Base, BaseModel' | |||||
4954 | __table_args__ = ( |
|
4987 | __table_args__ = ( | |
4955 | base_table_args |
|
4988 | base_table_args | |
4956 | ) |
|
4989 | ) | |
|
4990 | ROLE_REVIEWER = u'reviewer' | |||
|
4991 | ROLE_OBSERVER = u'observer' | |||
|
4992 | ROLES = [ROLE_REVIEWER, ROLE_OBSERVER] | |||
4957 |
|
4993 | |||
4958 | repo_review_rule_user_id = Column('repo_review_rule_user_id', Integer(), primary_key=True) |
|
4994 | repo_review_rule_user_id = Column('repo_review_rule_user_id', Integer(), primary_key=True) | |
4959 | repo_review_rule_id = Column("repo_review_rule_id", Integer(), ForeignKey('repo_review_rules.repo_review_rule_id')) |
|
4995 | repo_review_rule_id = Column("repo_review_rule_id", Integer(), ForeignKey('repo_review_rules.repo_review_rule_id')) | |
4960 | user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False) |
|
4996 | user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False) | |
4961 | mandatory = Column("mandatory", Boolean(), nullable=False, default=False) |
|
4997 | mandatory = Column("mandatory", Boolean(), nullable=False, default=False) | |
|
4998 | role = Column('role', Unicode(255), nullable=True, default=ROLE_REVIEWER) | |||
4962 | user = relationship('User') |
|
4999 | user = relationship('User') | |
4963 |
|
5000 | |||
4964 | def rule_data(self): |
|
5001 | def rule_data(self): | |
4965 | return { |
|
5002 | return { | |
4966 | 'mandatory': self.mandatory |
|
5003 | 'mandatory': self.mandatory, | |
|
5004 | 'role': self.role, | |||
4967 | } |
|
5005 | } | |
4968 |
|
5006 | |||
4969 |
|
5007 | |||
@@ -4974,17 +5012,22 b' class RepoReviewRuleUserGroup(Base, Base' | |||||
4974 | ) |
|
5012 | ) | |
4975 |
|
5013 | |||
4976 | VOTE_RULE_ALL = -1 |
|
5014 | VOTE_RULE_ALL = -1 | |
|
5015 | ROLE_REVIEWER = u'reviewer' | |||
|
5016 | ROLE_OBSERVER = u'observer' | |||
|
5017 | ROLES = [ROLE_REVIEWER, ROLE_OBSERVER] | |||
4977 |
|
5018 | |||
4978 | repo_review_rule_users_group_id = Column('repo_review_rule_users_group_id', Integer(), primary_key=True) |
|
5019 | repo_review_rule_users_group_id = Column('repo_review_rule_users_group_id', Integer(), primary_key=True) | |
4979 | repo_review_rule_id = Column("repo_review_rule_id", Integer(), ForeignKey('repo_review_rules.repo_review_rule_id')) |
|
5020 | repo_review_rule_id = Column("repo_review_rule_id", Integer(), ForeignKey('repo_review_rules.repo_review_rule_id')) | |
4980 | users_group_id = Column("users_group_id", Integer(),ForeignKey('users_groups.users_group_id'), nullable=False) |
|
5021 | users_group_id = Column("users_group_id", Integer(),ForeignKey('users_groups.users_group_id'), nullable=False) | |
4981 | mandatory = Column("mandatory", Boolean(), nullable=False, default=False) |
|
5022 | mandatory = Column("mandatory", Boolean(), nullable=False, default=False) | |
|
5023 | role = Column('role', Unicode(255), nullable=True, default=ROLE_REVIEWER) | |||
4982 | vote_rule = Column("vote_rule", Integer(), nullable=True, default=VOTE_RULE_ALL) |
|
5024 | vote_rule = Column("vote_rule", Integer(), nullable=True, default=VOTE_RULE_ALL) | |
4983 | users_group = relationship('UserGroup') |
|
5025 | users_group = relationship('UserGroup') | |
4984 |
|
5026 | |||
4985 | def rule_data(self): |
|
5027 | def rule_data(self): | |
4986 | return { |
|
5028 | return { | |
4987 | 'mandatory': self.mandatory, |
|
5029 | 'mandatory': self.mandatory, | |
|
5030 | 'role': self.role, | |||
4988 | 'vote_rule': self.vote_rule |
|
5031 | 'vote_rule': self.vote_rule | |
4989 | } |
|
5032 | } | |
4990 |
|
5033 |
@@ -601,6 +601,14 b' def PullRequestForm(localizer, repo_id):' | |||||
601 | reasons = All() |
|
601 | reasons = All() | |
602 | rules = All(v.UniqueList(localizer, convert=int)()) |
|
602 | rules = All(v.UniqueList(localizer, convert=int)()) | |
603 | mandatory = v.StringBoolean() |
|
603 | mandatory = v.StringBoolean() | |
|
604 | role = v.String(if_missing='reviewer') | |||
|
605 | ||||
|
606 | class ObserverForm(formencode.Schema): | |||
|
607 | user_id = v.Int(not_empty=True) | |||
|
608 | reasons = All() | |||
|
609 | rules = All(v.UniqueList(localizer, convert=int)()) | |||
|
610 | mandatory = v.StringBoolean() | |||
|
611 | role = v.String(if_missing='observer') | |||
604 |
|
612 | |||
605 | class _PullRequestForm(formencode.Schema): |
|
613 | class _PullRequestForm(formencode.Schema): | |
606 | allow_extra_fields = True |
|
614 | allow_extra_fields = True | |
@@ -614,6 +622,7 b' def PullRequestForm(localizer, repo_id):' | |||||
614 | revisions = All(#v.NotReviewedRevisions(localizer, repo_id)(), |
|
622 | revisions = All(#v.NotReviewedRevisions(localizer, repo_id)(), | |
615 | v.UniqueList(localizer)(not_empty=True)) |
|
623 | v.UniqueList(localizer)(not_empty=True)) | |
616 | review_members = formencode.ForEach(ReviewerForm()) |
|
624 | review_members = formencode.ForEach(ReviewerForm()) | |
|
625 | observer_members = formencode.ForEach(ObserverForm()) | |||
617 | pullrequest_title = v.UnicodeString(strip=True, required=True, min=1, max=255) |
|
626 | pullrequest_title = v.UnicodeString(strip=True, required=True, min=1, max=255) | |
618 | pullrequest_desc = v.UnicodeString(strip=True, required=False) |
|
627 | pullrequest_desc = v.UnicodeString(strip=True, required=False) | |
619 | description_renderer = v.UnicodeString(strip=True, required=False) |
|
628 | description_renderer = v.UnicodeString(strip=True, required=False) |
@@ -154,28 +154,56 b' def get_diff_info(' | |||||
154 |
|
154 | |||
155 | commits = [] |
|
155 | commits = [] | |
156 | if get_commit_authors: |
|
156 | if get_commit_authors: | |
157 | commits = target_scm.compare( |
|
157 | log.debug('Obtaining commit authors from set of commits') | |
|
158 | _compare_data = target_scm.compare( | |||
158 | target_ref, source_ref, source_scm, merge=True, |
|
159 | target_ref, source_ref, source_scm, merge=True, | |
159 |
pre_load=["author"] |
|
160 | pre_load=["author", "date", "message"] | |
|
161 | ) | |||
160 |
|
162 | |||
161 |
for commit in |
|
163 | for commit in _compare_data: | |
162 | user = User.get_from_cs_author(commit.author) |
|
164 | # NOTE(marcink): we serialize here, so we don't produce more vcsserver calls on data returned | |
|
165 | # at this function which is later called via JSON serialization | |||
|
166 | serialized_commit = dict( | |||
|
167 | author=commit.author, | |||
|
168 | date=commit.date, | |||
|
169 | message=commit.message, | |||
|
170 | commit_id=commit.raw_id, | |||
|
171 | raw_id=commit.raw_id | |||
|
172 | ) | |||
|
173 | commits.append(serialized_commit) | |||
|
174 | user = User.get_from_cs_author(serialized_commit['author']) | |||
163 | if user and user not in commit_authors: |
|
175 | if user and user not in commit_authors: | |
164 | commit_authors.append(user) |
|
176 | commit_authors.append(user) | |
165 |
|
177 | |||
166 | # lines |
|
178 | # lines | |
167 | if get_authors: |
|
179 | if get_authors: | |
|
180 | log.debug('Calculating authors of changed files') | |||
168 | target_commit = source_repo.get_commit(ancestor_id) |
|
181 | target_commit = source_repo.get_commit(ancestor_id) | |
169 |
|
182 | |||
170 | for fname, lines in changed_lines.items(): |
|
183 | for fname, lines in changed_lines.items(): | |
|
184 | ||||
171 | try: |
|
185 | try: | |
172 | node = target_commit.get_node(fname) |
|
186 | node = target_commit.get_node(fname, pre_load=["is_binary"]) | |
173 | except Exception: |
|
187 | except Exception: | |
|
188 | log.exception("Failed to load node with path %s", fname) | |||
174 | continue |
|
189 | continue | |
175 |
|
190 | |||
176 | if not isinstance(node, FileNode): |
|
191 | if not isinstance(node, FileNode): | |
177 | continue |
|
192 | continue | |
178 |
|
193 | |||
|
194 | # NOTE(marcink): for binary node we don't do annotation, just use last author | |||
|
195 | if node.is_binary: | |||
|
196 | author = node.last_commit.author | |||
|
197 | email = node.last_commit.author_email | |||
|
198 | ||||
|
199 | user = User.get_from_cs_author(author) | |||
|
200 | if user: | |||
|
201 | user_counts[user.user_id] = user_counts.get(user.user_id, 0) + 1 | |||
|
202 | author_counts[author] = author_counts.get(author, 0) + 1 | |||
|
203 | email_counts[email] = email_counts.get(email, 0) + 1 | |||
|
204 | ||||
|
205 | continue | |||
|
206 | ||||
179 | for annotation in node.annotate: |
|
207 | for annotation in node.annotate: | |
180 | line_no, commit_id, get_commit_func, line_text = annotation |
|
208 | line_no, commit_id, get_commit_func, line_text = annotation | |
181 | if line_no in lines: |
|
209 | if line_no in lines: | |
@@ -190,6 +218,8 b' def get_diff_info(' | |||||
190 | author_counts[author] = author_counts.get(author, 0) + 1 |
|
218 | author_counts[author] = author_counts.get(author, 0) + 1 | |
191 | email_counts[email] = email_counts.get(email, 0) + 1 |
|
219 | email_counts[email] = email_counts.get(email, 0) + 1 | |
192 |
|
220 | |||
|
221 | log.debug('Default reviewers processing finished') | |||
|
222 | ||||
193 | return { |
|
223 | return { | |
194 | 'commits': commits, |
|
224 | 'commits': commits, | |
195 | 'files': all_files_changes, |
|
225 | 'files': all_files_changes, | |
@@ -260,10 +290,16 b' class PullRequestModel(BaseModel):' | |||||
260 | _perms = ('repository.admin',) |
|
290 | _perms = ('repository.admin',) | |
261 | return self._check_perms(_perms, pull_request, user) or owner |
|
291 | return self._check_perms(_perms, pull_request, user) or owner | |
262 |
|
292 | |||
|
293 | def is_user_reviewer(self, pull_request, user): | |||
|
294 | return user.user_id in [ | |||
|
295 | x.user_id for x in | |||
|
296 | pull_request.get_pull_request_reviewers(PullRequestReviewers.ROLE_REVIEWER) | |||
|
297 | if x.user | |||
|
298 | ] | |||
|
299 | ||||
263 | def check_user_change_status(self, pull_request, user, api=False): |
|
300 | def check_user_change_status(self, pull_request, user, api=False): | |
264 | reviewer = user.user_id in [x.user_id for x in |
|
301 | return self.check_user_update(pull_request, user, api) \ | |
265 | pull_request.reviewers] |
|
302 | or self.is_user_reviewer(pull_request, user) | |
266 | return self.check_user_update(pull_request, user, api) or reviewer |
|
|||
267 |
|
303 | |||
268 | def check_user_comment(self, pull_request, user): |
|
304 | def check_user_comment(self, pull_request, user): | |
269 | owner = user.user_id == pull_request.user_id |
|
305 | owner = user.user_id == pull_request.user_id | |
@@ -575,7 +611,7 b' class PullRequestModel(BaseModel):' | |||||
575 | pull_request_display_obj, at_version |
|
611 | pull_request_display_obj, at_version | |
576 |
|
612 | |||
577 | def create(self, created_by, source_repo, source_ref, target_repo, |
|
613 | def create(self, created_by, source_repo, source_ref, target_repo, | |
578 | target_ref, revisions, reviewers, title, description=None, |
|
614 | target_ref, revisions, reviewers, observers, title, description=None, | |
579 | common_ancestor_id=None, |
|
615 | common_ancestor_id=None, | |
580 | description_renderer=None, |
|
616 | description_renderer=None, | |
581 | reviewer_data=None, translator=None, auth_user=None): |
|
617 | reviewer_data=None, translator=None, auth_user=None): | |
@@ -606,7 +642,7 b' class PullRequestModel(BaseModel):' | |||||
606 | reviewer_ids = set() |
|
642 | reviewer_ids = set() | |
607 | # members / reviewers |
|
643 | # members / reviewers | |
608 | for reviewer_object in reviewers: |
|
644 | for reviewer_object in reviewers: | |
609 | user_id, reasons, mandatory, rules = reviewer_object |
|
645 | user_id, reasons, mandatory, role, rules = reviewer_object | |
610 | user = self._get_user(user_id) |
|
646 | user = self._get_user(user_id) | |
611 |
|
647 | |||
612 | # skip duplicates |
|
648 | # skip duplicates | |
@@ -620,6 +656,7 b' class PullRequestModel(BaseModel):' | |||||
620 | reviewer.pull_request = pull_request |
|
656 | reviewer.pull_request = pull_request | |
621 | reviewer.reasons = reasons |
|
657 | reviewer.reasons = reasons | |
622 | reviewer.mandatory = mandatory |
|
658 | reviewer.mandatory = mandatory | |
|
659 | reviewer.role = role | |||
623 |
|
660 | |||
624 | # NOTE(marcink): pick only first rule for now |
|
661 | # NOTE(marcink): pick only first rule for now | |
625 | rule_id = list(rules)[0] if rules else None |
|
662 | rule_id = list(rules)[0] if rules else None | |
@@ -653,6 +690,33 b' class PullRequestModel(BaseModel):' | |||||
653 | Session().add(reviewer) |
|
690 | Session().add(reviewer) | |
654 | Session().flush() |
|
691 | Session().flush() | |
655 |
|
692 | |||
|
693 | for observer_object in observers: | |||
|
694 | user_id, reasons, mandatory, role, rules = observer_object | |||
|
695 | user = self._get_user(user_id) | |||
|
696 | ||||
|
697 | # skip duplicates from reviewers | |||
|
698 | if user.user_id in reviewer_ids: | |||
|
699 | continue | |||
|
700 | ||||
|
701 | #reviewer_ids.add(user.user_id) | |||
|
702 | ||||
|
703 | observer = PullRequestReviewers() | |||
|
704 | observer.user = user | |||
|
705 | observer.pull_request = pull_request | |||
|
706 | observer.reasons = reasons | |||
|
707 | observer.mandatory = mandatory | |||
|
708 | observer.role = role | |||
|
709 | ||||
|
710 | # NOTE(marcink): pick only first rule for now | |||
|
711 | rule_id = list(rules)[0] if rules else None | |||
|
712 | rule = RepoReviewRule.get(rule_id) if rule_id else None | |||
|
713 | if rule: | |||
|
714 | # TODO(marcink): do we need this for observers ?? | |||
|
715 | pass | |||
|
716 | ||||
|
717 | Session().add(observer) | |||
|
718 | Session().flush() | |||
|
719 | ||||
656 | # Set approval status to "Under Review" for all commits which are |
|
720 | # Set approval status to "Under Review" for all commits which are | |
657 | # part of this pull request. |
|
721 | # part of this pull request. | |
658 | ChangesetStatusModel().set_status( |
|
722 | ChangesetStatusModel().set_status( | |
@@ -678,7 +742,7 b' class PullRequestModel(BaseModel):' | |||||
678 | MergeCheck.validate( |
|
742 | MergeCheck.validate( | |
679 | pull_request, auth_user=auth_user, translator=translator) |
|
743 | pull_request, auth_user=auth_user, translator=translator) | |
680 |
|
744 | |||
681 | self.notify_reviewers(pull_request, reviewer_ids) |
|
745 | self.notify_reviewers(pull_request, reviewer_ids, created_by_user) | |
682 | self.trigger_pull_request_hook(pull_request, created_by_user, 'create') |
|
746 | self.trigger_pull_request_hook(pull_request, created_by_user, 'create') | |
683 |
|
747 | |||
684 | creation_data = pull_request.get_api_data(with_merge_state=False) |
|
748 | creation_data = pull_request.get_api_data(with_merge_state=False) | |
@@ -1204,23 +1268,25 b' class PullRequestModel(BaseModel):' | |||||
1204 |
|
1268 | |||
1205 | :param pull_request: the pr to update |
|
1269 | :param pull_request: the pr to update | |
1206 | :param reviewer_data: list of tuples |
|
1270 | :param reviewer_data: list of tuples | |
1207 | [(user, ['reason1', 'reason2'], mandatory_flag, [rules])] |
|
1271 | [(user, ['reason1', 'reason2'], mandatory_flag, role, [rules])] | |
|
1272 | :param user: current use who triggers this action | |||
1208 | """ |
|
1273 | """ | |
|
1274 | ||||
1209 | pull_request = self.__get_pull_request(pull_request) |
|
1275 | pull_request = self.__get_pull_request(pull_request) | |
1210 | if pull_request.is_closed(): |
|
1276 | if pull_request.is_closed(): | |
1211 | raise ValueError('This pull request is closed') |
|
1277 | raise ValueError('This pull request is closed') | |
1212 |
|
1278 | |||
1213 | reviewers = {} |
|
1279 | reviewers = {} | |
1214 | for user_id, reasons, mandatory, rules in reviewer_data: |
|
1280 | for user_id, reasons, mandatory, role, rules in reviewer_data: | |
1215 | if isinstance(user_id, (int, compat.string_types)): |
|
1281 | if isinstance(user_id, (int, compat.string_types)): | |
1216 | user_id = self._get_user(user_id).user_id |
|
1282 | user_id = self._get_user(user_id).user_id | |
1217 | reviewers[user_id] = { |
|
1283 | reviewers[user_id] = { | |
1218 | 'reasons': reasons, 'mandatory': mandatory} |
|
1284 | 'reasons': reasons, 'mandatory': mandatory, 'role': role} | |
1219 |
|
1285 | |||
1220 | reviewers_ids = set(reviewers.keys()) |
|
1286 | reviewers_ids = set(reviewers.keys()) | |
1221 |
current_reviewers = PullRequestReviewers. |
|
1287 | current_reviewers = PullRequestReviewers.get_pull_request_reviewers( | |
1222 | .filter(PullRequestReviewers.pull_request == |
|
1288 | pull_request.pull_request_id, role=PullRequestReviewers.ROLE_REVIEWER) | |
1223 | pull_request).all() |
|
1289 | ||
1224 | current_reviewers_ids = set([x.user.user_id for x in current_reviewers]) |
|
1290 | current_reviewers_ids = set([x.user.user_id for x in current_reviewers]) | |
1225 |
|
1291 | |||
1226 | ids_to_add = reviewers_ids.difference(current_reviewers_ids) |
|
1292 | ids_to_add = reviewers_ids.difference(current_reviewers_ids) | |
@@ -1241,16 +1307,19 b' class PullRequestModel(BaseModel):' | |||||
1241 | reviewer.reasons = reviewers[uid]['reasons'] |
|
1307 | reviewer.reasons = reviewers[uid]['reasons'] | |
1242 | # NOTE(marcink): mandatory shouldn't be changed now |
|
1308 | # NOTE(marcink): mandatory shouldn't be changed now | |
1243 | # reviewer.mandatory = reviewers[uid]['reasons'] |
|
1309 | # reviewer.mandatory = reviewers[uid]['reasons'] | |
|
1310 | # NOTE(marcink): role should be hardcoded, so we won't edit it. | |||
|
1311 | reviewer.role = PullRequestReviewers.ROLE_REVIEWER | |||
1244 | Session().add(reviewer) |
|
1312 | Session().add(reviewer) | |
1245 | added_audit_reviewers.append(reviewer.get_dict()) |
|
1313 | added_audit_reviewers.append(reviewer.get_dict()) | |
1246 |
|
1314 | |||
1247 | for uid in ids_to_remove: |
|
1315 | for uid in ids_to_remove: | |
1248 | changed = True |
|
1316 | changed = True | |
1249 |
# NOTE(marcink): we fetch "ALL" reviewers using .all(). |
|
1317 | # NOTE(marcink): we fetch "ALL" reviewers objects using .all(). | |
1250 |
# |
|
1318 | # This is an edge case that handles previous state of having the same reviewer twice. | |
1251 | # this CAN happen due to the lack of DB checks |
|
1319 | # this CAN happen due to the lack of DB checks | |
1252 | reviewers = PullRequestReviewers.query()\ |
|
1320 | reviewers = PullRequestReviewers.query()\ | |
1253 | .filter(PullRequestReviewers.user_id == uid, |
|
1321 | .filter(PullRequestReviewers.user_id == uid, | |
|
1322 | PullRequestReviewers.role == PullRequestReviewers.ROLE_REVIEWER, | |||
1254 | PullRequestReviewers.pull_request == pull_request)\ |
|
1323 | PullRequestReviewers.pull_request == pull_request)\ | |
1255 | .all() |
|
1324 | .all() | |
1256 |
|
1325 | |||
@@ -1273,7 +1342,90 b' class PullRequestModel(BaseModel):' | |||||
1273 | 'repo.pull_request.reviewer.delete', {'old_data': user_data}, |
|
1342 | 'repo.pull_request.reviewer.delete', {'old_data': user_data}, | |
1274 | user, pull_request) |
|
1343 | user, pull_request) | |
1275 |
|
1344 | |||
1276 | self.notify_reviewers(pull_request, ids_to_add) |
|
1345 | self.notify_reviewers(pull_request, ids_to_add, user) | |
|
1346 | return ids_to_add, ids_to_remove | |||
|
1347 | ||||
|
1348 | def update_observers(self, pull_request, observer_data, user): | |||
|
1349 | """ | |||
|
1350 | Update the observers in the pull request | |||
|
1351 | ||||
|
1352 | :param pull_request: the pr to update | |||
|
1353 | :param observer_data: list of tuples | |||
|
1354 | [(user, ['reason1', 'reason2'], mandatory_flag, role, [rules])] | |||
|
1355 | :param user: current use who triggers this action | |||
|
1356 | """ | |||
|
1357 | pull_request = self.__get_pull_request(pull_request) | |||
|
1358 | if pull_request.is_closed(): | |||
|
1359 | raise ValueError('This pull request is closed') | |||
|
1360 | ||||
|
1361 | observers = {} | |||
|
1362 | for user_id, reasons, mandatory, role, rules in observer_data: | |||
|
1363 | if isinstance(user_id, (int, compat.string_types)): | |||
|
1364 | user_id = self._get_user(user_id).user_id | |||
|
1365 | observers[user_id] = { | |||
|
1366 | 'reasons': reasons, 'observers': mandatory, 'role': role} | |||
|
1367 | ||||
|
1368 | observers_ids = set(observers.keys()) | |||
|
1369 | current_observers = PullRequestReviewers.get_pull_request_reviewers( | |||
|
1370 | pull_request.pull_request_id, role=PullRequestReviewers.ROLE_OBSERVER) | |||
|
1371 | ||||
|
1372 | current_observers_ids = set([x.user.user_id for x in current_observers]) | |||
|
1373 | ||||
|
1374 | ids_to_add = observers_ids.difference(current_observers_ids) | |||
|
1375 | ids_to_remove = current_observers_ids.difference(observers_ids) | |||
|
1376 | ||||
|
1377 | log.debug("Adding %s observer", ids_to_add) | |||
|
1378 | log.debug("Removing %s observer", ids_to_remove) | |||
|
1379 | changed = False | |||
|
1380 | added_audit_observers = [] | |||
|
1381 | removed_audit_observers = [] | |||
|
1382 | ||||
|
1383 | for uid in ids_to_add: | |||
|
1384 | changed = True | |||
|
1385 | _usr = self._get_user(uid) | |||
|
1386 | observer = PullRequestReviewers() | |||
|
1387 | observer.user = _usr | |||
|
1388 | observer.pull_request = pull_request | |||
|
1389 | observer.reasons = observers[uid]['reasons'] | |||
|
1390 | # NOTE(marcink): mandatory shouldn't be changed now | |||
|
1391 | # observer.mandatory = observer[uid]['reasons'] | |||
|
1392 | ||||
|
1393 | # NOTE(marcink): role should be hardcoded, so we won't edit it. | |||
|
1394 | observer.role = PullRequestReviewers.ROLE_OBSERVER | |||
|
1395 | Session().add(observer) | |||
|
1396 | added_audit_observers.append(observer.get_dict()) | |||
|
1397 | ||||
|
1398 | for uid in ids_to_remove: | |||
|
1399 | changed = True | |||
|
1400 | # NOTE(marcink): we fetch "ALL" reviewers objects using .all(). | |||
|
1401 | # This is an edge case that handles previous state of having the same reviewer twice. | |||
|
1402 | # this CAN happen due to the lack of DB checks | |||
|
1403 | observers = PullRequestReviewers.query()\ | |||
|
1404 | .filter(PullRequestReviewers.user_id == uid, | |||
|
1405 | PullRequestReviewers.role == PullRequestReviewers.ROLE_OBSERVER, | |||
|
1406 | PullRequestReviewers.pull_request == pull_request)\ | |||
|
1407 | .all() | |||
|
1408 | ||||
|
1409 | for obj in observers: | |||
|
1410 | added_audit_observers.append(obj.get_dict()) | |||
|
1411 | Session().delete(obj) | |||
|
1412 | ||||
|
1413 | if changed: | |||
|
1414 | Session().expire_all() | |||
|
1415 | pull_request.updated_on = datetime.datetime.now() | |||
|
1416 | Session().add(pull_request) | |||
|
1417 | ||||
|
1418 | # finally store audit logs | |||
|
1419 | for user_data in added_audit_observers: | |||
|
1420 | self._log_audit_action( | |||
|
1421 | 'repo.pull_request.observer.add', {'data': user_data}, | |||
|
1422 | user, pull_request) | |||
|
1423 | for user_data in removed_audit_observers: | |||
|
1424 | self._log_audit_action( | |||
|
1425 | 'repo.pull_request.observer.delete', {'old_data': user_data}, | |||
|
1426 | user, pull_request) | |||
|
1427 | ||||
|
1428 | self.notify_observers(pull_request, ids_to_add, user) | |||
1277 | return ids_to_add, ids_to_remove |
|
1429 | return ids_to_add, ids_to_remove | |
1278 |
|
1430 | |||
1279 | def get_url(self, pull_request, request=None, permalink=False): |
|
1431 | def get_url(self, pull_request, request=None, permalink=False): | |
@@ -1301,16 +1453,16 b' class PullRequestModel(BaseModel):' | |||||
1301 | pr_url = urllib.unquote(self.get_url(pull_request, request=request)) |
|
1453 | pr_url = urllib.unquote(self.get_url(pull_request, request=request)) | |
1302 | return safe_unicode('{pr_url}/repository'.format(pr_url=pr_url)) |
|
1454 | return safe_unicode('{pr_url}/repository'.format(pr_url=pr_url)) | |
1303 |
|
1455 | |||
1304 |
def notify_reviewers(self, pull_request, |
|
1456 | def _notify_reviewers(self, pull_request, user_ids, role, user): | |
1305 | # notification to reviewers |
|
1457 | # notification to reviewers/observers | |
1306 |
if not |
|
1458 | if not user_ids: | |
1307 | return |
|
1459 | return | |
1308 |
|
1460 | |||
1309 |
log.debug('Notify following |
|
1461 | log.debug('Notify following %s users about pull-request %s', role, user_ids) | |
1310 |
|
1462 | |||
1311 | pull_request_obj = pull_request |
|
1463 | pull_request_obj = pull_request | |
1312 | # get the current participants of this pull request |
|
1464 | # get the current participants of this pull request | |
1313 |
recipients = |
|
1465 | recipients = user_ids | |
1314 | notification_type = EmailNotificationModel.TYPE_PULL_REQUEST |
|
1466 | notification_type = EmailNotificationModel.TYPE_PULL_REQUEST | |
1315 |
|
1467 | |||
1316 | pr_source_repo = pull_request_obj.source_repo |
|
1468 | pr_source_repo = pull_request_obj.source_repo | |
@@ -1332,8 +1484,10 b' class PullRequestModel(BaseModel):' | |||||
1332 | (x.raw_id, x.message) |
|
1484 | (x.raw_id, x.message) | |
1333 | for x in map(pr_source_repo.get_commit, pull_request.revisions)] |
|
1485 | for x in map(pr_source_repo.get_commit, pull_request.revisions)] | |
1334 |
|
1486 | |||
|
1487 | current_rhodecode_user = user | |||
1335 | kwargs = { |
|
1488 | kwargs = { | |
1336 |
'user': |
|
1489 | 'user': current_rhodecode_user, | |
|
1490 | 'pull_request_author': pull_request.author, | |||
1337 | 'pull_request': pull_request_obj, |
|
1491 | 'pull_request': pull_request_obj, | |
1338 | 'pull_request_commits': pull_request_commits, |
|
1492 | 'pull_request_commits': pull_request_commits, | |
1339 |
|
1493 | |||
@@ -1345,6 +1499,7 b' class PullRequestModel(BaseModel):' | |||||
1345 |
|
1499 | |||
1346 | 'pull_request_url': pr_url, |
|
1500 | 'pull_request_url': pr_url, | |
1347 | 'thread_ids': [pr_url], |
|
1501 | 'thread_ids': [pr_url], | |
|
1502 | 'user_role': role | |||
1348 | } |
|
1503 | } | |
1349 |
|
1504 | |||
1350 | # pre-generate the subject for notification itself |
|
1505 | # pre-generate the subject for notification itself | |
@@ -1353,7 +1508,7 b' class PullRequestModel(BaseModel):' | |||||
1353 |
|
1508 | |||
1354 | # create notification objects, and emails |
|
1509 | # create notification objects, and emails | |
1355 | NotificationModel().create( |
|
1510 | NotificationModel().create( | |
1356 |
created_by= |
|
1511 | created_by=current_rhodecode_user, | |
1357 | notification_subject=subject, |
|
1512 | notification_subject=subject, | |
1358 | notification_body=body_plaintext, |
|
1513 | notification_body=body_plaintext, | |
1359 | notification_type=notification_type, |
|
1514 | notification_type=notification_type, | |
@@ -1361,11 +1516,19 b' class PullRequestModel(BaseModel):' | |||||
1361 | email_kwargs=kwargs, |
|
1516 | email_kwargs=kwargs, | |
1362 | ) |
|
1517 | ) | |
1363 |
|
1518 | |||
|
1519 | def notify_reviewers(self, pull_request, reviewers_ids, user): | |||
|
1520 | return self._notify_reviewers(pull_request, reviewers_ids, | |||
|
1521 | PullRequestReviewers.ROLE_REVIEWER, user) | |||
|
1522 | ||||
|
1523 | def notify_observers(self, pull_request, observers_ids, user): | |||
|
1524 | return self._notify_reviewers(pull_request, observers_ids, | |||
|
1525 | PullRequestReviewers.ROLE_OBSERVER, user) | |||
|
1526 | ||||
1364 | def notify_users(self, pull_request, updating_user, ancestor_commit_id, |
|
1527 | def notify_users(self, pull_request, updating_user, ancestor_commit_id, | |
1365 | commit_changes, file_changes): |
|
1528 | commit_changes, file_changes): | |
1366 |
|
1529 | |||
1367 | updating_user_id = updating_user.user_id |
|
1530 | updating_user_id = updating_user.user_id | |
1368 | reviewers = set([x.user.user_id for x in pull_request.reviewers]) |
|
1531 | reviewers = set([x.user.user_id for x in pull_request.get_pull_request_reviewers()]) | |
1369 | # NOTE(marcink): send notification to all other users except to |
|
1532 | # NOTE(marcink): send notification to all other users except to | |
1370 | # person who updated the PR |
|
1533 | # person who updated the PR | |
1371 | recipients = reviewers.difference(set([updating_user_id])) |
|
1534 | recipients = reviewers.difference(set([updating_user_id])) | |
@@ -1874,11 +2037,13 b' class PullRequestModel(BaseModel):' | |||||
1874 | try: |
|
2037 | try: | |
1875 | from rc_reviewers.utils import get_default_reviewers_data |
|
2038 | from rc_reviewers.utils import get_default_reviewers_data | |
1876 | from rc_reviewers.utils import validate_default_reviewers |
|
2039 | from rc_reviewers.utils import validate_default_reviewers | |
|
2040 | from rc_reviewers.utils import validate_observers | |||
1877 | except ImportError: |
|
2041 | except ImportError: | |
1878 | from rhodecode.apps.repository.utils import get_default_reviewers_data |
|
2042 | from rhodecode.apps.repository.utils import get_default_reviewers_data | |
1879 | from rhodecode.apps.repository.utils import validate_default_reviewers |
|
2043 | from rhodecode.apps.repository.utils import validate_default_reviewers | |
|
2044 | from rhodecode.apps.repository.utils import validate_observers | |||
1880 |
|
2045 | |||
1881 | return get_default_reviewers_data, validate_default_reviewers |
|
2046 | return get_default_reviewers_data, validate_default_reviewers, validate_observers | |
1882 |
|
2047 | |||
1883 |
|
2048 | |||
1884 | class MergeCheck(object): |
|
2049 | class MergeCheck(object): |
@@ -42,7 +42,7 b' from rhodecode.lib.exceptions import (' | |||||
42 | from rhodecode.lib.caching_query import FromCache |
|
42 | from rhodecode.lib.caching_query import FromCache | |
43 | from rhodecode.model import BaseModel |
|
43 | from rhodecode.model import BaseModel | |
44 | from rhodecode.model.db import ( |
|
44 | from rhodecode.model.db import ( | |
45 | _hash_key, true, false, or_, joinedload, User, UserToPerm, |
|
45 | _hash_key, func, true, false, or_, joinedload, User, UserToPerm, | |
46 | UserEmailMap, UserIpMap, UserLog) |
|
46 | UserEmailMap, UserIpMap, UserLog) | |
47 | from rhodecode.model.meta import Session |
|
47 | from rhodecode.model.meta import Session | |
48 | from rhodecode.model.auth_token import AuthTokenModel |
|
48 | from rhodecode.model.auth_token import AuthTokenModel | |
@@ -96,7 +96,11 b' class UserModel(BaseModel):' | |||||
96 | User.username.ilike(ilike_expression) |
|
96 | User.username.ilike(ilike_expression) | |
97 | ) |
|
97 | ) | |
98 | ) |
|
98 | ) | |
|
99 | # sort by len to have top most matches first | |||
|
100 | query = query.order_by(func.length(User.username))\ | |||
|
101 | .order_by(User.username) | |||
99 | query = query.limit(limit) |
|
102 | query = query.limit(limit) | |
|
103 | ||||
100 | users = query.all() |
|
104 | users = query.all() | |
101 |
|
105 | |||
102 | _users = [ |
|
106 | _users = [ |
@@ -21,12 +21,17 b'' | |||||
21 | import colander |
|
21 | import colander | |
22 | from rhodecode.model.validation_schema import validators, preparers, types |
|
22 | from rhodecode.model.validation_schema import validators, preparers, types | |
23 |
|
23 | |||
|
24 | DEFAULT_ROLE = 'reviewer' | |||
|
25 | VALID_ROLES = ['reviewer', 'observer'] | |||
|
26 | ||||
24 |
|
27 | |||
25 | class ReviewerSchema(colander.MappingSchema): |
|
28 | class ReviewerSchema(colander.MappingSchema): | |
26 | username = colander.SchemaNode(types.StrOrIntType()) |
|
29 | username = colander.SchemaNode(types.StrOrIntType()) | |
27 | reasons = colander.SchemaNode(colander.List(), missing=['no reason specified']) |
|
30 | reasons = colander.SchemaNode(colander.List(), missing=['no reason specified']) | |
28 | mandatory = colander.SchemaNode(colander.Boolean(), missing=False) |
|
31 | mandatory = colander.SchemaNode(colander.Boolean(), missing=False) | |
29 | rules = colander.SchemaNode(colander.List(), missing=[]) |
|
32 | rules = colander.SchemaNode(colander.List(), missing=[]) | |
|
33 | role = colander.SchemaNode(colander.String(), missing=DEFAULT_ROLE, | |||
|
34 | validator=colander.OneOf(VALID_ROLES)) | |||
30 |
|
35 | |||
31 |
|
36 | |||
32 | class ReviewerListSchema(colander.SequenceSchema): |
|
37 | class ReviewerListSchema(colander.SequenceSchema): |
@@ -97,6 +97,7 b'' | |||||
97 | <li>The server is being restarted.</li> |
|
97 | <li>The server is being restarted.</li> | |
98 | <li>The server is overloaded.</li> |
|
98 | <li>The server is overloaded.</li> | |
99 | <li>The link may be incorrect.</li> |
|
99 | <li>The link may be incorrect.</li> | |
|
100 | <li><a onclick="window.location.reload()">Reload page</a></li> | |||
100 | </ul> |
|
101 | </ul> | |
101 | </div> |
|
102 | </div> | |
102 | <div class="inner-column"> |
|
103 | <div class="inner-column"> |
@@ -374,9 +374,6 b' ul.auth_plugins {' | |||||
374 | background-color: @grey6; |
|
374 | background-color: @grey6; | |
375 | } |
|
375 | } | |
376 |
|
376 | |||
377 | .td-status { |
|
|||
378 | padding-left: .5em; |
|
|||
379 | } |
|
|||
380 | .log-container .truncate { |
|
377 | .log-container .truncate { | |
381 | height: 2.75em; |
|
378 | height: 2.75em; | |
382 | white-space: pre-line; |
|
379 | white-space: pre-line; | |
@@ -384,6 +381,10 b' ul.auth_plugins {' | |||||
384 | table.rctable .user { |
|
381 | table.rctable .user { | |
385 | padding-left: 0; |
|
382 | padding-left: 0; | |
386 | } |
|
383 | } | |
|
384 | .td-status { | |||
|
385 | padding: 0 0px 0px 10px; | |||
|
386 | width: 15px; | |||
|
387 | } | |||
387 | table.rctable { |
|
388 | table.rctable { | |
388 | td.td-description, |
|
389 | td.td-description, | |
389 | .rc-user { |
|
390 | .rc-user { | |
@@ -494,7 +495,8 b' ul.auth_plugins {' | |||||
494 | padding-top: 10px; |
|
495 | padding-top: 10px; | |
495 | } |
|
496 | } | |
496 |
|
497 | |||
497 |
#add_reviewer_input |
|
498 | #add_reviewer_input, | |
|
499 | #add_observer_input { | |||
498 | padding-top: 10px |
|
500 | padding-top: 10px | |
499 | } |
|
501 | } | |
500 |
|
502 | |||
@@ -1700,8 +1702,33 b' table.group_members {' | |||||
1700 | } |
|
1702 | } | |
1701 |
|
1703 | |||
1702 | .reviewer_ac .ac-input { |
|
1704 | .reviewer_ac .ac-input { | |
|
1705 | width: 98%; | |||
|
1706 | margin-bottom: 1em; | |||
|
1707 | } | |||
|
1708 | ||||
|
1709 | .observer_ac .ac-input { | |||
|
1710 | width: 98%; | |||
|
1711 | margin-bottom: 1em; | |||
|
1712 | } | |||
|
1713 | ||||
|
1714 | .rule-table { | |||
1703 | width: 100%; |
|
1715 | width: 100%; | |
1704 | margin-bottom: 1em; |
|
1716 | } | |
|
1717 | ||||
|
1718 | .rule-table td { | |||
|
1719 | ||||
|
1720 | } | |||
|
1721 | ||||
|
1722 | .rule-table .td-role { | |||
|
1723 | width: 100px | |||
|
1724 | } | |||
|
1725 | ||||
|
1726 | .rule-table .td-mandatory { | |||
|
1727 | width: 100px | |||
|
1728 | } | |||
|
1729 | ||||
|
1730 | .rule-table .td-group-votes { | |||
|
1731 | width: 150px | |||
1705 | } |
|
1732 | } | |
1706 |
|
1733 | |||
1707 | .compare_view_commits tr{ |
|
1734 | .compare_view_commits tr{ | |
@@ -2635,6 +2662,7 b' h3.files_location{' | |||||
2635 | li { |
|
2662 | li { | |
2636 | list-style-type: none |
|
2663 | list-style-type: none | |
2637 | } |
|
2664 | } | |
|
2665 | ||||
2638 | } |
|
2666 | } | |
2639 |
|
2667 | |||
2640 | .grid-filter-box-icon { |
|
2668 | .grid-filter-box-icon { |
@@ -477,23 +477,3 b'' | |||||
477 | } |
|
477 | } | |
478 |
|
478 | |||
479 | } |
|
479 | } | |
480 |
|
||||
481 | .rctable.repo_summary { |
|
|||
482 | border: 1px solid #eaeaea; |
|
|||
483 | border-radius: 2px; |
|
|||
484 | border-collapse: inherit; |
|
|||
485 | border-bottom: 0; |
|
|||
486 |
|
||||
487 | th { |
|
|||
488 | background: @grey7; |
|
|||
489 | border-bottom: 0; |
|
|||
490 | } |
|
|||
491 |
|
||||
492 | td { |
|
|||
493 | border-color: #eaeaea; |
|
|||
494 | } |
|
|||
495 |
|
||||
496 | td.td-status { |
|
|||
497 | padding: 0 0 0 10px; |
|
|||
498 | } |
|
|||
499 | } |
|
@@ -4,6 +4,25 b'' | |||||
4 | // see style guide documentation for guidelines. |
|
4 | // see style guide documentation for guidelines. | |
5 |
|
5 | |||
6 | // TABLES |
|
6 | // TABLES | |
|
7 | table.rctable.table-bordered { | |||
|
8 | border: 1px solid #eaeaea; | |||
|
9 | border-radius: 2px; | |||
|
10 | border-collapse: inherit; | |||
|
11 | border-bottom: 0; | |||
|
12 | ||||
|
13 | th { | |||
|
14 | background: @grey7; | |||
|
15 | border-bottom: 0; | |||
|
16 | } | |||
|
17 | ||||
|
18 | td { | |||
|
19 | border-color: #eaeaea; | |||
|
20 | } | |||
|
21 | ||||
|
22 | td.td-status { | |||
|
23 | padding: 0 0 0 10px; | |||
|
24 | } | |||
|
25 | } | |||
7 |
|
26 | |||
8 | .rctable, |
|
27 | .rctable, | |
9 | table.rctable, |
|
28 | table.rctable, | |
@@ -306,12 +325,14 b' table.dataTable {' | |||||
306 | } |
|
325 | } | |
307 | } |
|
326 | } | |
308 | } |
|
327 | } | |
|
328 | ||||
309 | .rctable.audit-log { |
|
329 | .rctable.audit-log { | |
310 | td { |
|
330 | td { | |
311 | vertical-align: top; |
|
331 | vertical-align: top; | |
312 | } |
|
332 | } | |
313 | } |
|
333 | } | |
314 |
|
334 | |||
|
335 | ||||
315 | // TRUNCATING |
|
336 | // TRUNCATING | |
316 | // TODO: lisaq: should this possibly be moved out of tables.less? |
|
337 | // TODO: lisaq: should this possibly be moved out of tables.less? | |
317 | // for truncated text |
|
338 | // for truncated text | |
@@ -426,15 +447,6 b' table.keyboard-mappings {' | |||||
426 | } |
|
447 | } | |
427 | } |
|
448 | } | |
428 |
|
449 | |||
429 | // Pull Request List Table |
|
|||
430 | #pull_request_list_table.dataTable { |
|
|||
431 |
|
||||
432 | //TODO: lisa: This needs to be removed once the description is adjusted |
|
|||
433 | // for using an expand_commit button (see issue 765) |
|
|||
434 | td { |
|
|||
435 | vertical-align: middle; |
|
|||
436 | } |
|
|||
437 | } |
|
|||
438 |
|
450 | |||
439 | // Settings (no border) |
|
451 | // Settings (no border) | |
440 | table.rctable.dl-settings { |
|
452 | table.rctable.dl-settings { | |
@@ -484,9 +496,6 b' table.trending_language_tbl {' | |||||
484 |
|
496 | |||
485 | // Changesets |
|
497 | // Changesets | |
486 | #changesets.rctable { |
|
498 | #changesets.rctable { | |
487 | th { |
|
|||
488 | padding: 0 1em 0.65em 0; |
|
|||
489 | } |
|
|||
490 |
|
499 | |||
491 | // td must be fixed height for graph |
|
500 | // td must be fixed height for graph | |
492 | td { |
|
501 | td { |
@@ -344,6 +344,10 b' mark,' | |||||
344 | width: 200px; |
|
344 | width: 200px; | |
345 | } |
|
345 | } | |
346 |
|
346 | |||
|
347 | #obj_count { | |||
|
348 | line-height: 34px; | |||
|
349 | } | |||
|
350 | ||||
347 | } |
|
351 | } | |
348 |
|
352 | |||
349 | #readme .title { |
|
353 | #readme .title { |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Delete', |
|
35 | 'Delete': 'Delete', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Stop following this repository', |
|
106 | 'Stop following this repository': 'Stop following this repository', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Submitting...', |
|
108 | 'Submitting...': 'Submitting...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Löschen', |
|
35 | 'Delete': 'Löschen', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Stop following this repository', |
|
106 | 'Stop following this repository': 'Stop following this repository', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Submitting...', |
|
108 | 'Submitting...': 'Submitting...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Delete', |
|
35 | 'Delete': 'Delete', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Stop following this repository', |
|
106 | 'Stop following this repository': 'Stop following this repository', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Submitting...', |
|
108 | 'Submitting...': 'Submitting...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Delete', |
|
35 | 'Delete': 'Delete', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Stop following this repository', |
|
106 | 'Stop following this repository': 'Stop following this repository', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Submitting...', |
|
108 | 'Submitting...': 'Submitting...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Supprimer', |
|
35 | 'Delete': 'Supprimer', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Arrêter de suivre ce dépôt', |
|
106 | 'Stop following this repository': 'Arrêter de suivre ce dépôt', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Envoi…', |
|
108 | 'Submitting...': 'Envoi…', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Aggiungi un altro commento', |
|
13 | 'Add another comment': 'Aggiungi un altro commento', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Elimina', |
|
35 | 'Delete': 'Elimina', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'Nessun risultato', |
|
70 | 'No results': 'Nessun risultato', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Smetti di seguire il repository', |
|
106 | 'Stop following this repository': 'Smetti di seguire il repository', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Inoltro...', |
|
108 | 'Submitting...': 'Inoltro...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'Al momento non ci sono richieste di PULL che richiedono il tuo intervento', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'Al momento non ci sono richieste di PULL che richiedono il tuo intervento', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': '別のコメントを追加', |
|
13 | 'Add another comment': '別のコメントを追加', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': '選択したステータス ({0}) を元にコメントが自動的に設定されます...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': '選択したステータス ({0}) を元にコメントが自動的に設定されます...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': '削除', |
|
35 | 'Delete': '削除', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'まだリポジトリグループがありません。', |
|
68 | 'No repository groups available yet.': 'まだリポジトリグループがありません。', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': '結果がありません', |
|
70 | 'No results': '結果がありません', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'まだタグがありません。', |
|
73 | 'No tags available yet.': 'まだタグがありません。', | |
69 | 'No user groups available yet.': 'まだユーザーグループがありません。', |
|
74 | 'No user groups available yet.': 'まだユーザーグループがありません。', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'このリポジトリのフォローをやめる', |
|
106 | 'Stop following this repository': 'このリポジトリのフォローをやめる', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': '送信中...', |
|
108 | 'Submitting...': '送信中...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -1,5 +1,7 b'' | |||||
1 | // AUTO GENERATED FILE FOR Babel JS-GETTEXT EXTRACTORS, DO NOT CHANGE |
|
1 | // AUTO GENERATED FILE FOR Babel JS-GETTEXT EXTRACTORS, DO NOT CHANGE | |
2 | _gettext('(from usergroup {0})'); |
|
2 | _gettext('(from usergroup {0})'); | |
|
3 | _gettext('<strong>, and {0} file</strong> changed.'); | |||
|
4 | _gettext('<strong>, and {0} files</strong> changed.'); | |||
3 | _gettext('<strong>{0} file</strong> changed, '); |
|
5 | _gettext('<strong>{0} file</strong> changed, '); | |
4 | _gettext('<strong>{0} files</strong> changed, '); |
|
6 | _gettext('<strong>{0} files</strong> changed, '); | |
5 | _gettext('Add another comment'); |
|
7 | _gettext('Add another comment'); | |
@@ -21,6 +23,8 b'' | |||||
21 | _gettext('Comment body was not changed.'); |
|
23 | _gettext('Comment body was not changed.'); | |
22 | _gettext('Comment text will be set automatically based on currently selected status ({0}) ...'); |
|
24 | _gettext('Comment text will be set automatically based on currently selected status ({0}) ...'); | |
23 | _gettext('Commit Authors are not allowed to be a reviewer.'); |
|
25 | _gettext('Commit Authors are not allowed to be a reviewer.'); | |
|
26 | _gettext('Compare summary: <strong>{0} commit</strong>'); | |||
|
27 | _gettext('Compare summary: <strong>{0} commits</strong>'); | |||
24 | _gettext('Context file: '); |
|
28 | _gettext('Context file: '); | |
25 | _gettext('Delete'); |
|
29 | _gettext('Delete'); | |
26 | _gettext('Delete this comment?'); |
|
30 | _gettext('Delete this comment?'); | |
@@ -58,6 +62,7 b'' | |||||
58 | _gettext('No repository groups available yet.'); |
|
62 | _gettext('No repository groups available yet.'); | |
59 | _gettext('No repository groups present.'); |
|
63 | _gettext('No repository groups present.'); | |
60 | _gettext('No results'); |
|
64 | _gettext('No results'); | |
|
65 | _gettext('No review rules set.'); | |||
61 | _gettext('No ssh keys available yet.'); |
|
66 | _gettext('No ssh keys available yet.'); | |
62 | _gettext('No tags available yet.'); |
|
67 | _gettext('No tags available yet.'); | |
63 | _gettext('No user groups available yet.'); |
|
68 | _gettext('No user groups available yet.'); | |
@@ -95,11 +100,13 b'' | |||||
95 | _gettext('Stop following this repository'); |
|
100 | _gettext('Stop following this repository'); | |
96 | _gettext('Stopped watching this repository'); |
|
101 | _gettext('Stopped watching this repository'); | |
97 | _gettext('Submitting...'); |
|
102 | _gettext('Submitting...'); | |
|
103 | _gettext('Switch target repository with the source.'); | |||
98 | _gettext('Switch to chat'); |
|
104 | _gettext('Switch to chat'); | |
99 | _gettext('Switch to comment'); |
|
105 | _gettext('Switch to comment'); | |
100 | _gettext('TODO comment'); |
|
106 | _gettext('TODO comment'); | |
101 | _gettext('TODO from comment {0} was fixed.'); |
|
107 | _gettext('TODO from comment {0} was fixed.'); | |
102 | _gettext('There are currently no open pull requests requiring your participation.'); |
|
108 | _gettext('There are currently no open pull requests requiring your participation.'); | |
|
109 | _gettext('There are no commits to merge.'); | |||
103 | _gettext('There is a later version of file tree available. Click {0} to create a file at the latest tree.'); |
|
110 | _gettext('There is a later version of file tree available. Click {0} to create a file at the latest tree.'); | |
104 | _gettext('There is an existing path `{0}` at this commit.'); |
|
111 | _gettext('There is an existing path `{0}` at this commit.'); | |
105 | _gettext('This pull requests will consist of <strong>{0} commit</strong>.'); |
|
112 | _gettext('This pull requests will consist of <strong>{0} commit</strong>.'); |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Dodaj kolejny komentarz', |
|
13 | 'Add another comment': 'Dodaj kolejny komentarz', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Usuń', |
|
35 | 'Delete': 'Usuń', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Zakończyć obserwację tego repozytorium', |
|
106 | 'Stop following this repository': 'Zakończyć obserwację tego repozytorium', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Przesyłanie...', |
|
108 | 'Submitting...': 'Przesyłanie...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Adicionar outro comentário', |
|
13 | 'Add another comment': 'Adicionar outro comentário', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Excluir', |
|
35 | 'Delete': 'Excluir', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Parar de seguir este repositório', |
|
106 | 'Stop following this repository': 'Parar de seguir este repositório', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Enviando...', |
|
108 | 'Submitting...': 'Enviando...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Добавить другой комментарий', |
|
13 | 'Add another comment': 'Добавить другой комментарий', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': 'Удалить', |
|
35 | 'Delete': 'Удалить', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': 'Отменить наблюдение за репозиторием', |
|
106 | 'Stop following this repository': 'Отменить наблюдение за репозиторием', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': 'Применение...', |
|
108 | 'Submitting...': 'Применение...', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -6,6 +6,8 b'' | |||||
6 | //JS translations map |
|
6 | //JS translations map | |
7 | var _TM = { |
|
7 | var _TM = { | |
8 | '(from usergroup {0})': '(from usergroup {0})', |
|
8 | '(from usergroup {0})': '(from usergroup {0})', | |
|
9 | '<strong>, and {0} file</strong> changed.': '<strong>, and {0} file</strong> changed.', | |||
|
10 | '<strong>, and {0} files</strong> changed.': '<strong>, and {0} files</strong> changed.', | |||
9 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', |
|
11 | '<strong>{0} file</strong> changed, ': '<strong>{0} file</strong> changed, ', | |
10 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', |
|
12 | '<strong>{0} files</strong> changed, ': '<strong>{0} files</strong> changed, ', | |
11 | 'Add another comment': 'Add another comment', |
|
13 | 'Add another comment': 'Add another comment', | |
@@ -27,6 +29,8 b' var _TM = {' | |||||
27 | 'Comment body was not changed.': 'Comment body was not changed.', |
|
29 | 'Comment body was not changed.': 'Comment body was not changed.', | |
28 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', |
|
30 | 'Comment text will be set automatically based on currently selected status ({0}) ...': 'Comment text will be set automatically based on currently selected status ({0}) ...', | |
29 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', |
|
31 | 'Commit Authors are not allowed to be a reviewer.': 'Commit Authors are not allowed to be a reviewer.', | |
|
32 | 'Compare summary: <strong>{0} commit</strong>': 'Compare summary: <strong>{0} commit</strong>', | |||
|
33 | 'Compare summary: <strong>{0} commits</strong>': 'Compare summary: <strong>{0} commits</strong>', | |||
30 | 'Context file: ': 'Context file: ', |
|
34 | 'Context file: ': 'Context file: ', | |
31 | 'Delete': '删除', |
|
35 | 'Delete': '删除', | |
32 | 'Delete this comment?': 'Delete this comment?', |
|
36 | 'Delete this comment?': 'Delete this comment?', | |
@@ -64,6 +68,7 b' var _TM = {' | |||||
64 | 'No repository groups available yet.': 'No repository groups available yet.', |
|
68 | 'No repository groups available yet.': 'No repository groups available yet.', | |
65 | 'No repository groups present.': 'No repository groups present.', |
|
69 | 'No repository groups present.': 'No repository groups present.', | |
66 | 'No results': 'No results', |
|
70 | 'No results': 'No results', | |
|
71 | 'No review rules set.': 'No review rules set.', | |||
67 | 'No ssh keys available yet.': 'No ssh keys available yet.', |
|
72 | 'No ssh keys available yet.': 'No ssh keys available yet.', | |
68 | 'No tags available yet.': 'No tags available yet.', |
|
73 | 'No tags available yet.': 'No tags available yet.', | |
69 | 'No user groups available yet.': 'No user groups available yet.', |
|
74 | 'No user groups available yet.': 'No user groups available yet.', | |
@@ -101,11 +106,13 b' var _TM = {' | |||||
101 | 'Stop following this repository': '停止关注该版本库', |
|
106 | 'Stop following this repository': '停止关注该版本库', | |
102 | 'Stopped watching this repository': 'Stopped watching this repository', |
|
107 | 'Stopped watching this repository': 'Stopped watching this repository', | |
103 | 'Submitting...': '提交中……', |
|
108 | 'Submitting...': '提交中……', | |
|
109 | 'Switch target repository with the source.': 'Switch target repository with the source.', | |||
104 | 'Switch to chat': 'Switch to chat', |
|
110 | 'Switch to chat': 'Switch to chat', | |
105 | 'Switch to comment': 'Switch to comment', |
|
111 | 'Switch to comment': 'Switch to comment', | |
106 | 'TODO comment': 'TODO comment', |
|
112 | 'TODO comment': 'TODO comment', | |
107 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', |
|
113 | 'TODO from comment {0} was fixed.': 'TODO from comment {0} was fixed.', | |
108 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', |
|
114 | 'There are currently no open pull requests requiring your participation.': 'There are currently no open pull requests requiring your participation.', | |
|
115 | 'There are no commits to merge.': 'There are no commits to merge.', | |||
109 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', |
|
116 | 'There is a later version of file tree available. Click {0} to create a file at the latest tree.': 'There is a later version of file tree available. Click {0} to create a file at the latest tree.', | |
110 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', |
|
117 | 'There is an existing path `{0}` at this commit.': 'There is an existing path `{0}` at this commit.', | |
111 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
|
118 | 'This pull requests will consist of <strong>{0} commit</strong>.': 'This pull requests will consist of <strong>{0} commit</strong>.', |
@@ -75,8 +75,8 b' var CommitsController = function () {' | |||||
75 | height: height, |
|
75 | height: height, | |
76 | x_step: x_step, |
|
76 | x_step: x_step, | |
77 | y_step: 42, |
|
77 | y_step: 42, | |
78 |
dotRadius: 3. |
|
78 | dotRadius: 3.8, | |
79 |
lineWidth: 2. |
|
79 | lineWidth: 2.8 | |
80 | }; |
|
80 | }; | |
81 |
|
81 | |||
82 | var prevCommitsData = this.$graphCanvas.data('commits') || []; |
|
82 | var prevCommitsData = this.$graphCanvas.data('commits') || []; | |
@@ -98,11 +98,12 b' var CommitsController = function () {' | |||||
98 |
|
98 | |||
99 | this.setLabelText(edgeData); |
|
99 | this.setLabelText(edgeData); | |
100 |
|
100 | |||
101 | var padding = 90; |
|
101 | // main padding from top, aligns the first dot graph | |
|
102 | var padding = 100; | |||
102 | if (prev_link) { |
|
103 | if (prev_link) { | |
103 | padding += 34; |
|
104 | padding += 34; | |
|
105 | } | |||
104 |
|
106 | |||
105 | } |
|
|||
106 | $('#graph_nodes').css({'padding-top': padding}); |
|
107 | $('#graph_nodes').css({'padding-top': padding}); | |
107 |
|
108 | |||
108 | $.each($('.message.truncate'), function(idx, value) { |
|
109 | $.each($('.message.truncate'), function(idx, value) { |
@@ -94,21 +94,26 b' var getTitleAndDescription = function(so' | |||||
94 | }; |
|
94 | }; | |
95 |
|
95 | |||
96 |
|
96 | |||
97 | ReviewersController = function () { |
|
97 | window.ReviewersController = function () { | |
98 | var self = this; |
|
98 | var self = this; | |
|
99 | this.$loadingIndicator = $('.calculate-reviewers'); | |||
99 | this.$reviewRulesContainer = $('#review_rules'); |
|
100 | this.$reviewRulesContainer = $('#review_rules'); | |
100 | this.$rulesList = this.$reviewRulesContainer.find('.pr-reviewer-rules'); |
|
101 | this.$rulesList = this.$reviewRulesContainer.find('.pr-reviewer-rules'); | |
101 | this.$userRule = $('.pr-user-rule-container'); |
|
102 | this.$userRule = $('.pr-user-rule-container'); | |
102 | this.forbidReviewUsers = undefined; |
|
|||
103 | this.$reviewMembers = $('#review_members'); |
|
103 | this.$reviewMembers = $('#review_members'); | |
|
104 | this.$observerMembers = $('#observer_members'); | |||
|
105 | ||||
104 | this.currentRequest = null; |
|
106 | this.currentRequest = null; | |
105 | this.diffData = null; |
|
107 | this.diffData = null; | |
106 | this.enabledRules = []; |
|
108 | this.enabledRules = []; | |
|
109 | // sync with db.py entries | |||
|
110 | this.ROLE_REVIEWER = 'reviewer'; | |||
|
111 | this.ROLE_OBSERVER = 'observer' | |||
107 |
|
112 | |||
108 | //dummy handler, we might register our own later |
|
113 | //dummy handler, we might register our own later | |
109 | this.diffDataHandler = function(data){}; |
|
114 | this.diffDataHandler = function (data) {}; | |
110 |
|
115 | |||
111 |
this.defaultForbid |
|
116 | this.defaultForbidUsers = function () { | |
112 | return [ |
|
117 | return [ | |
113 | { |
|
118 | { | |
114 | 'username': 'default', |
|
119 | 'username': 'default', | |
@@ -117,6 +122,9 b' ReviewersController = function () {' | |||||
117 | ]; |
|
122 | ]; | |
118 | }; |
|
123 | }; | |
119 |
|
124 | |||
|
125 | // init default forbidden users | |||
|
126 | this.forbidUsers = this.defaultForbidUsers(); | |||
|
127 | ||||
120 | this.hideReviewRules = function () { |
|
128 | this.hideReviewRules = function () { | |
121 | self.$reviewRulesContainer.hide(); |
|
129 | self.$reviewRulesContainer.hide(); | |
122 | $(self.$userRule.selector).hide(); |
|
130 | $(self.$userRule.selector).hide(); | |
@@ -133,11 +141,40 b' ReviewersController = function () {' | |||||
133 | return '<div>- {0}</div>'.format(ruleText) |
|
141 | return '<div>- {0}</div>'.format(ruleText) | |
134 | }; |
|
142 | }; | |
135 |
|
143 | |||
|
144 | this.increaseCounter = function(role) { | |||
|
145 | if (role === self.ROLE_REVIEWER) { | |||
|
146 | var $elem = $('#reviewers-cnt') | |||
|
147 | var cnt = parseInt($elem.data('count') || 0) | |||
|
148 | cnt +=1 | |||
|
149 | $elem.html(cnt); | |||
|
150 | $elem.data('count', cnt); | |||
|
151 | } | |||
|
152 | else if (role === self.ROLE_OBSERVER) { | |||
|
153 | var $elem = $('#observers-cnt'); | |||
|
154 | var cnt = parseInt($elem.data('count') || 0) | |||
|
155 | cnt +=1 | |||
|
156 | $elem.html(cnt); | |||
|
157 | $elem.data('count', cnt); | |||
|
158 | } | |||
|
159 | } | |||
|
160 | ||||
|
161 | this.resetCounter = function () { | |||
|
162 | var $elem = $('#reviewers-cnt'); | |||
|
163 | ||||
|
164 | $elem.data('count', 0); | |||
|
165 | $elem.html(0); | |||
|
166 | ||||
|
167 | var $elem = $('#observers-cnt'); | |||
|
168 | ||||
|
169 | $elem.data('count', 0); | |||
|
170 | $elem.html(0); | |||
|
171 | } | |||
|
172 | ||||
136 | this.loadReviewRules = function (data) { |
|
173 | this.loadReviewRules = function (data) { | |
137 | self.diffData = data; |
|
174 | self.diffData = data; | |
138 |
|
175 | |||
139 | // reset forbidden Users |
|
176 | // reset forbidden Users | |
140 |
this.forbid |
|
177 | this.forbidUsers = self.defaultForbidUsers(); | |
141 |
|
178 | |||
142 | // reset state of review rules |
|
179 | // reset state of review rules | |
143 | self.$rulesList.html(''); |
|
180 | self.$rulesList.html(''); | |
@@ -148,7 +185,7 b' ReviewersController = function () {' | |||||
148 | self.addRule( |
|
185 | self.addRule( | |
149 | _gettext('All reviewers must vote.')) |
|
186 | _gettext('All reviewers must vote.')) | |
150 | ); |
|
187 | ); | |
151 |
return self.forbid |
|
188 | return self.forbidUsers | |
152 | } |
|
189 | } | |
153 |
|
190 | |||
154 | if (data.rules.voting !== undefined) { |
|
191 | if (data.rules.voting !== undefined) { | |
@@ -195,7 +232,7 b' ReviewersController = function () {' | |||||
195 | } |
|
232 | } | |
196 |
|
233 | |||
197 | if (data.rules.forbid_author_to_review) { |
|
234 | if (data.rules.forbid_author_to_review) { | |
198 |
self.forbid |
|
235 | self.forbidUsers.push(data.rules_data.pr_author); | |
199 | self.$rulesList.append( |
|
236 | self.$rulesList.append( | |
200 | self.addRule( |
|
237 | self.addRule( | |
201 | _gettext('Author is not allowed to be a reviewer.')) |
|
238 | _gettext('Author is not allowed to be a reviewer.')) | |
@@ -206,9 +243,8 b' ReviewersController = function () {' | |||||
206 |
|
243 | |||
207 | if (data.rules_data.forbidden_users) { |
|
244 | if (data.rules_data.forbidden_users) { | |
208 | $.each(data.rules_data.forbidden_users, function (index, member_data) { |
|
245 | $.each(data.rules_data.forbidden_users, function (index, member_data) { | |
209 |
self.forbid |
|
246 | self.forbidUsers.push(member_data) | |
210 | }); |
|
247 | }); | |
211 |
|
||||
212 | } |
|
248 | } | |
213 |
|
249 | |||
214 | self.$rulesList.append( |
|
250 | self.$rulesList.append( | |
@@ -223,9 +259,31 b' ReviewersController = function () {' | |||||
223 | _gettext('No review rules set.')) |
|
259 | _gettext('No review rules set.')) | |
224 | } |
|
260 | } | |
225 |
|
261 | |||
226 |
return self.forbid |
|
262 | return self.forbidUsers | |
227 | }; |
|
263 | }; | |
228 |
|
264 | |||
|
265 | this.emptyTables = function () { | |||
|
266 | self.emptyReviewersTable(); | |||
|
267 | self.emptyObserversTable(); | |||
|
268 | ||||
|
269 | // Also reset counters. | |||
|
270 | self.resetCounter(); | |||
|
271 | } | |||
|
272 | ||||
|
273 | this.emptyReviewersTable = function (withText) { | |||
|
274 | self.$reviewMembers.empty(); | |||
|
275 | if (withText !== undefined) { | |||
|
276 | self.$reviewMembers.html(withText) | |||
|
277 | } | |||
|
278 | }; | |||
|
279 | ||||
|
280 | this.emptyObserversTable = function (withText) { | |||
|
281 | self.$observerMembers.empty(); | |||
|
282 | if (withText !== undefined) { | |||
|
283 | self.$observerMembers.html(withText) | |||
|
284 | } | |||
|
285 | } | |||
|
286 | ||||
229 | this.loadDefaultReviewers = function (sourceRepo, sourceRef, targetRepo, targetRef) { |
|
287 | this.loadDefaultReviewers = function (sourceRepo, sourceRef, targetRepo, targetRef) { | |
230 |
|
288 | |||
231 | if (self.currentRequest) { |
|
289 | if (self.currentRequest) { | |
@@ -233,19 +291,21 b' ReviewersController = function () {' | |||||
233 | self.currentRequest.abort(); |
|
291 | self.currentRequest.abort(); | |
234 | } |
|
292 | } | |
235 |
|
293 | |||
236 | $('.calculate-reviewers').show(); |
|
294 | self.$loadingIndicator.show(); | |
237 | // reset reviewer members |
|
295 | ||
238 | self.$reviewMembers.empty(); |
|
296 | // reset reviewer/observe members | |
|
297 | self.emptyTables(); | |||
239 |
|
298 | |||
240 | prButtonLock(true, null, 'reviewers'); |
|
299 | prButtonLock(true, null, 'reviewers'); | |
241 | $('#user').hide(); // hide user autocomplete before load |
|
300 | $('#user').hide(); // hide user autocomplete before load | |
|
301 | $('#observer').hide(); //hide observer autocomplete before load | |||
242 |
|
302 | |||
243 | // lock PR button, so we cannot send PR before it's calculated |
|
303 | // lock PR button, so we cannot send PR before it's calculated | |
244 | prButtonLock(true, _gettext('Loading diff ...'), 'compare'); |
|
304 | prButtonLock(true, _gettext('Loading diff ...'), 'compare'); | |
245 |
|
305 | |||
246 | if (sourceRef.length !== 3 || targetRef.length !== 3) { |
|
306 | if (sourceRef.length !== 3 || targetRef.length !== 3) { | |
247 | // don't load defaults in case we're missing some refs... |
|
307 | // don't load defaults in case we're missing some refs... | |
248 | $('.calculate-reviewers').hide(); |
|
308 | self.$loadingIndicator.hide(); | |
249 | return |
|
309 | return | |
250 | } |
|
310 | } | |
251 |
|
311 | |||
@@ -253,9 +313,13 b' ReviewersController = function () {' | |||||
253 | { |
|
313 | { | |
254 | 'repo_name': templateContext.repo_name, |
|
314 | 'repo_name': templateContext.repo_name, | |
255 | 'source_repo': sourceRepo, |
|
315 | 'source_repo': sourceRepo, | |
|
316 | 'source_ref_type': sourceRef[0], | |||
|
317 | 'source_ref_name': sourceRef[1], | |||
256 | 'source_ref': sourceRef[2], |
|
318 | 'source_ref': sourceRef[2], | |
257 | 'target_repo': targetRepo, |
|
319 | 'target_repo': targetRepo, | |
258 | 'target_ref': targetRef[2] |
|
320 | 'target_ref': targetRef[2], | |
|
321 | 'target_ref_type': sourceRef[0], | |||
|
322 | 'target_ref_name': sourceRef[1] | |||
259 | }); |
|
323 | }); | |
260 |
|
324 | |||
261 | self.currentRequest = $.ajax({ |
|
325 | self.currentRequest = $.ajax({ | |
@@ -268,15 +332,23 b' ReviewersController = function () {' | |||||
268 |
|
332 | |||
269 | // review rules |
|
333 | // review rules | |
270 | self.loadReviewRules(data); |
|
334 | self.loadReviewRules(data); | |
271 | self.handleDiffData(data["diff_info"]); |
|
335 | var diffHandled = self.handleDiffData(data["diff_info"]); | |
|
336 | if (diffHandled === false) { | |||
|
337 | return | |||
|
338 | } | |||
272 |
|
339 | |||
273 | for (var i = 0; i < data.reviewers.length; i++) { |
|
340 | for (var i = 0; i < data.reviewers.length; i++) { | |
274 | var reviewer = data.reviewers[i]; |
|
341 | var reviewer = data.reviewers[i]; | |
275 | self.addReviewMember(reviewer, reviewer.reasons, reviewer.mandatory); |
|
342 | // load reviewer rules from the repo data | |
|
343 | self.addMember(reviewer, reviewer.reasons, reviewer.mandatory, reviewer.role); | |||
276 | } |
|
344 | } | |
277 | $('.calculate-reviewers').hide(); |
|
345 | ||
|
346 | ||||
|
347 | self.$loadingIndicator.hide(); | |||
278 | prButtonLock(false, null, 'reviewers'); |
|
348 | prButtonLock(false, null, 'reviewers'); | |
279 | $('#user').show(); // show user autocomplete after load |
|
349 | ||
|
350 | $('#user').show(); // show user autocomplete before load | |||
|
351 | $('#observer').show(); // show observer autocomplete before load | |||
280 |
|
352 | |||
281 | var commitElements = data["diff_info"]['commits']; |
|
353 | var commitElements = data["diff_info"]['commits']; | |
282 |
|
354 | |||
@@ -292,7 +364,7 b' ReviewersController = function () {' | |||||
292 |
|
364 | |||
293 | }, |
|
365 | }, | |
294 | error: function (jqXHR, textStatus, errorThrown) { |
|
366 | error: function (jqXHR, textStatus, errorThrown) { | |
295 | var prefix = "Loading diff and reviewers failed\n" |
|
367 | var prefix = "Loading diff and reviewers/observers failed\n" | |
296 | var message = formatErrorMessage(jqXHR, textStatus, errorThrown, prefix); |
|
368 | var message = formatErrorMessage(jqXHR, textStatus, errorThrown, prefix); | |
297 | ajaxErrorSwal(message); |
|
369 | ajaxErrorSwal(message); | |
298 | } |
|
370 | } | |
@@ -301,7 +373,7 b' ReviewersController = function () {' | |||||
301 | }; |
|
373 | }; | |
302 |
|
374 | |||
303 | // check those, refactor |
|
375 | // check those, refactor | |
304 |
this.remove |
|
376 | this.removeMember = function (reviewer_id, mark_delete) { | |
305 | var reviewer = $('#reviewer_{0}'.format(reviewer_id)); |
|
377 | var reviewer = $('#reviewer_{0}'.format(reviewer_id)); | |
306 |
|
378 | |||
307 | if (typeof (mark_delete) === undefined) { |
|
379 | if (typeof (mark_delete) === undefined) { | |
@@ -312,6 +384,7 b' ReviewersController = function () {' | |||||
312 | if (reviewer) { |
|
384 | if (reviewer) { | |
313 | // now delete the input |
|
385 | // now delete the input | |
314 | $('#reviewer_{0} input'.format(reviewer_id)).remove(); |
|
386 | $('#reviewer_{0} input'.format(reviewer_id)).remove(); | |
|
387 | $('#reviewer_{0}_rules input'.format(reviewer_id)).remove(); | |||
315 | // mark as to-delete |
|
388 | // mark as to-delete | |
316 | var obj = $('#reviewer_{0}_name'.format(reviewer_id)); |
|
389 | var obj = $('#reviewer_{0}_name'.format(reviewer_id)); | |
317 | obj.addClass('to-delete'); |
|
390 | obj.addClass('to-delete'); | |
@@ -322,27 +395,26 b' ReviewersController = function () {' | |||||
322 | } |
|
395 | } | |
323 | }; |
|
396 | }; | |
324 |
|
397 | |||
325 | this.reviewMemberEntry = function () { |
|
398 | this.addMember = function (reviewer_obj, reasons, mandatory, role) { | |
326 |
|
399 | |||
327 | }; |
|
|||
328 |
|
||||
329 | this.addReviewMember = function (reviewer_obj, reasons, mandatory) { |
|
|||
330 | var id = reviewer_obj.user_id; |
|
400 | var id = reviewer_obj.user_id; | |
331 | var username = reviewer_obj.username; |
|
401 | var username = reviewer_obj.username; | |
332 |
|
402 | |||
333 |
|
|
403 | reasons = reasons || []; | |
334 |
|
|
404 | mandatory = mandatory || false; | |
|
405 | role = role || self.ROLE_REVIEWER | |||
335 |
|
406 | |||
336 | // register IDS to check if we don't have this ID already in |
|
407 | // register current set IDS to check if we don't have this ID already in | |
|
408 | // and prevent duplicates | |||
337 | var currentIds = []; |
|
409 | var currentIds = []; | |
338 |
|
410 | |||
339 |
$.each( |
|
411 | $.each($('.reviewer_entry'), function (index, value) { | |
340 | currentIds.push($(value).data('reviewerUserId')) |
|
412 | currentIds.push($(value).data('reviewerUserId')) | |
341 | }) |
|
413 | }) | |
342 |
|
414 | |||
343 | var userAllowedReview = function (userId) { |
|
415 | var userAllowedReview = function (userId) { | |
344 | var allowed = true; |
|
416 | var allowed = true; | |
345 |
$.each(self.forbid |
|
417 | $.each(self.forbidUsers, function (index, member_data) { | |
346 | if (parseInt(userId) === member_data['user_id']) { |
|
418 | if (parseInt(userId) === member_data['user_id']) { | |
347 | allowed = false; |
|
419 | allowed = false; | |
348 | return false // breaks the loop |
|
420 | return false // breaks the loop | |
@@ -352,6 +424,7 b' ReviewersController = function () {' | |||||
352 | }; |
|
424 | }; | |
353 |
|
425 | |||
354 | var userAllowed = userAllowedReview(id); |
|
426 | var userAllowed = userAllowedReview(id); | |
|
427 | ||||
355 | if (!userAllowed) { |
|
428 | if (!userAllowed) { | |
356 | alert(_gettext('User `{0}` not allowed to be a reviewer').format(username)); |
|
429 | alert(_gettext('User `{0}` not allowed to be a reviewer').format(username)); | |
357 | } else { |
|
430 | } else { | |
@@ -359,11 +432,13 b' ReviewersController = function () {' | |||||
359 | var alreadyReviewer = currentIds.indexOf(id) != -1; |
|
432 | var alreadyReviewer = currentIds.indexOf(id) != -1; | |
360 |
|
433 | |||
361 | if (alreadyReviewer) { |
|
434 | if (alreadyReviewer) { | |
362 | alert(_gettext('User `{0}` already in reviewers').format(username)); |
|
435 | alert(_gettext('User `{0}` already in reviewers/observers').format(username)); | |
363 | } else { |
|
436 | } else { | |
|
437 | ||||
364 | var reviewerEntry = renderTemplate('reviewMemberEntry', { |
|
438 | var reviewerEntry = renderTemplate('reviewMemberEntry', { | |
365 | 'member': reviewer_obj, |
|
439 | 'member': reviewer_obj, | |
366 | 'mandatory': mandatory, |
|
440 | 'mandatory': mandatory, | |
|
441 | 'role': role, | |||
367 | 'reasons': reasons, |
|
442 | 'reasons': reasons, | |
368 | 'allowed_to_update': true, |
|
443 | 'allowed_to_update': true, | |
369 | 'review_status': 'not_reviewed', |
|
444 | 'review_status': 'not_reviewed', | |
@@ -372,20 +447,36 b' ReviewersController = function () {' | |||||
372 | 'create': true, |
|
447 | 'create': true, | |
373 | 'rule_show': true, |
|
448 | 'rule_show': true, | |
374 | }) |
|
449 | }) | |
|
450 | ||||
|
451 | if (role === self.ROLE_REVIEWER) { | |||
375 | $(self.$reviewMembers.selector).append(reviewerEntry); |
|
452 | $(self.$reviewMembers.selector).append(reviewerEntry); | |
|
453 | self.increaseCounter(self.ROLE_REVIEWER); | |||
|
454 | $('#reviewer-empty-msg').remove() | |||
|
455 | } | |||
|
456 | else if (role === self.ROLE_OBSERVER) { | |||
|
457 | $(self.$observerMembers.selector).append(reviewerEntry); | |||
|
458 | self.increaseCounter(self.ROLE_OBSERVER); | |||
|
459 | $('#observer-empty-msg').remove(); | |||
|
460 | } | |||
|
461 | ||||
376 | tooltipActivate(); |
|
462 | tooltipActivate(); | |
377 | } |
|
463 | } | |
378 | } |
|
464 | } | |
379 |
|
465 | |||
380 | }; |
|
466 | }; | |
381 |
|
467 | |||
382 | this.updateReviewers = function (repo_name, pull_request_id) { |
|
468 | this.updateReviewers = function (repo_name, pull_request_id, role) { | |
|
469 | if (role === 'reviewer') { | |||
383 | var postData = $('#reviewers input').serialize(); |
|
470 | var postData = $('#reviewers input').serialize(); | |
384 | _updatePullRequest(repo_name, pull_request_id, postData); |
|
471 | _updatePullRequest(repo_name, pull_request_id, postData); | |
|
472 | } else if (role === 'observer') { | |||
|
473 | var postData = $('#observers input').serialize(); | |||
|
474 | _updatePullRequest(repo_name, pull_request_id, postData); | |||
|
475 | } | |||
385 | }; |
|
476 | }; | |
386 |
|
477 | |||
387 | this.handleDiffData = function (data) { |
|
478 | this.handleDiffData = function (data) { | |
388 | self.diffDataHandler(data) |
|
479 | return self.diffDataHandler(data) | |
389 | } |
|
480 | } | |
390 | }; |
|
481 | }; | |
391 |
|
482 | |||
@@ -449,23 +540,14 b' var editPullRequest = function(repo_name' | |||||
449 |
|
540 | |||
450 |
|
541 | |||
451 | /** |
|
542 | /** | |
452 | * Reviewer autocomplete |
|
543 | * autocomplete handler for reviewers/observers | |
453 | */ |
|
544 | */ | |
454 |
var |
|
545 | var autoCompleteHandler = function (inputId, controller, role) { | |
455 | $(inputId).autocomplete({ |
|
546 | ||
456 | serviceUrl: pyroutes.url('user_autocomplete_data'), |
|
547 | return function (element, data) { | |
457 | minChars:2, |
|
|||
458 | maxHeight:400, |
|
|||
459 | deferRequestBy: 300, //miliseconds |
|
|||
460 | showNoSuggestionNotice: true, |
|
|||
461 | tabDisabled: true, |
|
|||
462 | autoSelectFirst: true, |
|
|||
463 | params: { user_id: templateContext.rhodecode_user.user_id, user_groups:true, user_groups_expand:true, skip_default_user:true }, |
|
|||
464 | formatResult: autocompleteFormatResult, |
|
|||
465 | lookupFilter: autocompleteFilterResult, |
|
|||
466 | onSelect: function(element, data) { |
|
|||
467 | var mandatory = false; |
|
548 | var mandatory = false; | |
468 |
var reasons = [_gettext('added manually by "{0}"').format( |
|
549 | var reasons = [_gettext('added manually by "{0}"').format( | |
|
550 | templateContext.rhodecode_user.username)]; | |||
469 |
|
551 | |||
470 | // add whole user groups |
|
552 | // add whole user groups | |
471 | if (data.value_type == 'user_group') { |
|
553 | if (data.value_type == 'user_group') { | |
@@ -477,7 +559,7 b' var ReviewerAutoComplete = function(inpu' | |||||
477 | reviewer['gravatar_link'] = member_data['icon_link']; |
|
559 | reviewer['gravatar_link'] = member_data['icon_link']; | |
478 | reviewer['user_link'] = member_data['profile_link']; |
|
560 | reviewer['user_link'] = member_data['profile_link']; | |
479 | reviewer['rules'] = []; |
|
561 | reviewer['rules'] = []; | |
480 |
|
|
562 | controller.addMember(reviewer, reasons, mandatory, role); | |
481 | }) |
|
563 | }) | |
482 | } |
|
564 | } | |
483 | // add single user |
|
565 | // add single user | |
@@ -487,14 +569,71 b' var ReviewerAutoComplete = function(inpu' | |||||
487 | reviewer['gravatar_link'] = data['icon_link']; |
|
569 | reviewer['gravatar_link'] = data['icon_link']; | |
488 | reviewer['user_link'] = data['profile_link']; |
|
570 | reviewer['user_link'] = data['profile_link']; | |
489 | reviewer['rules'] = []; |
|
571 | reviewer['rules'] = []; | |
490 |
|
|
572 | controller.addMember(reviewer, reasons, mandatory, role); | |
491 | } |
|
573 | } | |
492 |
|
574 | |||
493 | $(inputId).val(''); |
|
575 | $(inputId).val(''); | |
494 | } |
|
576 | } | |
|
577 | } | |||
|
578 | ||||
|
579 | /** | |||
|
580 | * Reviewer autocomplete | |||
|
581 | */ | |||
|
582 | var ReviewerAutoComplete = function (inputId, controller) { | |||
|
583 | var self = this; | |||
|
584 | self.controller = controller; | |||
|
585 | self.inputId = inputId; | |||
|
586 | var handler = autoCompleteHandler(inputId, controller, controller.ROLE_REVIEWER); | |||
|
587 | ||||
|
588 | $(inputId).autocomplete({ | |||
|
589 | serviceUrl: pyroutes.url('user_autocomplete_data'), | |||
|
590 | minChars: 2, | |||
|
591 | maxHeight: 400, | |||
|
592 | deferRequestBy: 300, //miliseconds | |||
|
593 | showNoSuggestionNotice: true, | |||
|
594 | tabDisabled: true, | |||
|
595 | autoSelectFirst: true, | |||
|
596 | params: { | |||
|
597 | user_id: templateContext.rhodecode_user.user_id, | |||
|
598 | user_groups: true, | |||
|
599 | user_groups_expand: true, | |||
|
600 | skip_default_user: true | |||
|
601 | }, | |||
|
602 | formatResult: autocompleteFormatResult, | |||
|
603 | lookupFilter: autocompleteFilterResult, | |||
|
604 | onSelect: handler | |||
495 | }); |
|
605 | }); | |
496 | }; |
|
606 | }; | |
497 |
|
607 | |||
|
608 | /** | |||
|
609 | * Observers autocomplete | |||
|
610 | */ | |||
|
611 | var ObserverAutoComplete = function(inputId, controller) { | |||
|
612 | var self = this; | |||
|
613 | self.controller = controller; | |||
|
614 | self.inputId = inputId; | |||
|
615 | var handler = autoCompleteHandler(inputId, controller, controller.ROLE_OBSERVER); | |||
|
616 | ||||
|
617 | $(inputId).autocomplete({ | |||
|
618 | serviceUrl: pyroutes.url('user_autocomplete_data'), | |||
|
619 | minChars: 2, | |||
|
620 | maxHeight: 400, | |||
|
621 | deferRequestBy: 300, //miliseconds | |||
|
622 | showNoSuggestionNotice: true, | |||
|
623 | tabDisabled: true, | |||
|
624 | autoSelectFirst: true, | |||
|
625 | params: { | |||
|
626 | user_id: templateContext.rhodecode_user.user_id, | |||
|
627 | user_groups: true, | |||
|
628 | user_groups_expand: true, | |||
|
629 | skip_default_user: true | |||
|
630 | }, | |||
|
631 | formatResult: autocompleteFormatResult, | |||
|
632 | lookupFilter: autocompleteFilterResult, | |||
|
633 | onSelect: handler | |||
|
634 | }); | |||
|
635 | } | |||
|
636 | ||||
498 |
|
637 | |||
499 | window.VersionController = function () { |
|
638 | window.VersionController = function () { | |
500 | var self = this; |
|
639 | var self = this; | |
@@ -504,7 +643,7 b' window.VersionController = function () {' | |||||
504 |
|
643 | |||
505 | this.adjustRadioSelectors = function (curNode) { |
|
644 | this.adjustRadioSelectors = function (curNode) { | |
506 | var getVal = function (item) { |
|
645 | var getVal = function (item) { | |
507 | if (item == 'latest') { |
|
646 | if (item === 'latest') { | |
508 | return Number.MAX_SAFE_INTEGER |
|
647 | return Number.MAX_SAFE_INTEGER | |
509 | } |
|
648 | } | |
510 | else { |
|
649 | else { | |
@@ -663,6 +802,7 b' window.UpdatePrController = function () ' | |||||
663 | }; |
|
802 | }; | |
664 | }; |
|
803 | }; | |
665 |
|
804 | |||
|
805 | ||||
666 | /** |
|
806 | /** | |
667 | * Reviewer display panel |
|
807 | * Reviewer display panel | |
668 | */ |
|
808 | */ | |
@@ -673,6 +813,7 b' window.ReviewersPanel = {' | |||||
673 | removeButtons: null, |
|
813 | removeButtons: null, | |
674 | reviewRules: null, |
|
814 | reviewRules: null, | |
675 | setReviewers: null, |
|
815 | setReviewers: null, | |
|
816 | controller: null, | |||
676 |
|
817 | |||
677 | setSelectors: function () { |
|
818 | setSelectors: function () { | |
678 | var self = this; |
|
819 | var self = this; | |
@@ -682,17 +823,18 b' window.ReviewersPanel = {' | |||||
682 | self.removeButtons = $('.reviewer_member_remove,.reviewer_member_mandatory_remove'); |
|
823 | self.removeButtons = $('.reviewer_member_remove,.reviewer_member_mandatory_remove'); | |
683 | }, |
|
824 | }, | |
684 |
|
825 | |||
685 | init: function (reviewRules, setReviewers) { |
|
826 | init: function (controller, reviewRules, setReviewers) { | |
686 | var self = this; |
|
827 | var self = this; | |
687 | self.setSelectors(); |
|
828 | self.setSelectors(); | |
688 |
|
829 | |||
689 | this.reviewRules = reviewRules; |
|
830 | self.controller = controller; | |
690 |
|
|
831 | self.reviewRules = reviewRules; | |
|
832 | self.setReviewers = setReviewers; | |||
691 |
|
833 | |||
692 |
|
|
834 | self.editButton.on('click', function (e) { | |
693 | self.edit(); |
|
835 | self.edit(); | |
694 | }); |
|
836 | }); | |
695 |
|
|
837 | self.closeButton.on('click', function (e) { | |
696 | self.close(); |
|
838 | self.close(); | |
697 | self.renderReviewers(); |
|
839 | self.renderReviewers(); | |
698 | }); |
|
840 | }); | |
@@ -702,14 +844,26 b' window.ReviewersPanel = {' | |||||
702 | }, |
|
844 | }, | |
703 |
|
845 | |||
704 | renderReviewers: function () { |
|
846 | renderReviewers: function () { | |
|
847 | var self = this; | |||
705 |
|
848 | |||
706 | $('#review_members').html('') |
|
849 | if (self.setReviewers.reviewers === undefined) { | |
707 | $.each(this.setReviewers.reviewers, function (key, val) { |
|
850 | return | |
|
851 | } | |||
|
852 | if (self.setReviewers.reviewers.length === 0) { | |||
|
853 | self.controller.emptyReviewersTable('<tr id="reviewer-empty-msg"><td colspan="6">No reviewers</td></tr>'); | |||
|
854 | return | |||
|
855 | } | |||
|
856 | ||||
|
857 | self.controller.emptyReviewersTable(); | |||
|
858 | ||||
|
859 | $.each(self.setReviewers.reviewers, function (key, val) { | |||
|
860 | ||||
708 | var member = val; |
|
861 | var member = val; | |
709 |
|
862 | if (member.role === self.controller.ROLE_REVIEWER) { | ||
710 | var entry = renderTemplate('reviewMemberEntry', { |
|
863 | var entry = renderTemplate('reviewMemberEntry', { | |
711 | 'member': member, |
|
864 | 'member': member, | |
712 | 'mandatory': member.mandatory, |
|
865 | 'mandatory': member.mandatory, | |
|
866 | 'role': member.role, | |||
713 | 'reasons': member.reasons, |
|
867 | 'reasons': member.reasons, | |
714 | 'allowed_to_update': member.allowed_to_update, |
|
868 | 'allowed_to_update': member.allowed_to_update, | |
715 | 'review_status': member.review_status, |
|
869 | 'review_status': member.review_status, | |
@@ -718,10 +872,106 b' window.ReviewersPanel = {' | |||||
718 | 'create': false |
|
872 | 'create': false | |
719 | }); |
|
873 | }); | |
720 |
|
874 | |||
721 |
$( |
|
875 | $(self.controller.$reviewMembers.selector).append(entry) | |
|
876 | } | |||
722 | }); |
|
877 | }); | |
|
878 | ||||
723 | tooltipActivate(); |
|
879 | tooltipActivate(); | |
|
880 | }, | |||
724 |
|
881 | |||
|
882 | edit: function (event) { | |||
|
883 | var self = this; | |||
|
884 | self.editButton.hide(); | |||
|
885 | self.closeButton.show(); | |||
|
886 | self.addButton.show(); | |||
|
887 | $(self.removeButtons.selector).css('visibility', 'visible'); | |||
|
888 | // review rules | |||
|
889 | self.controller.loadReviewRules(this.reviewRules); | |||
|
890 | }, | |||
|
891 | ||||
|
892 | close: function (event) { | |||
|
893 | var self = this; | |||
|
894 | this.editButton.show(); | |||
|
895 | this.closeButton.hide(); | |||
|
896 | this.addButton.hide(); | |||
|
897 | $(this.removeButtons.selector).css('visibility', 'hidden'); | |||
|
898 | // hide review rules | |||
|
899 | self.controller.hideReviewRules(); | |||
|
900 | } | |||
|
901 | }; | |||
|
902 | ||||
|
903 | /** | |||
|
904 | * Reviewer display panel | |||
|
905 | */ | |||
|
906 | window.ObserversPanel = { | |||
|
907 | editButton: null, | |||
|
908 | closeButton: null, | |||
|
909 | addButton: null, | |||
|
910 | removeButtons: null, | |||
|
911 | reviewRules: null, | |||
|
912 | setReviewers: null, | |||
|
913 | controller: null, | |||
|
914 | ||||
|
915 | setSelectors: function () { | |||
|
916 | var self = this; | |||
|
917 | self.editButton = $('#open_edit_observers'); | |||
|
918 | self.closeButton =$('#close_edit_observers'); | |||
|
919 | self.addButton = $('#add_observer'); | |||
|
920 | self.removeButtons = $('.observer_member_remove,.observer_member_mandatory_remove'); | |||
|
921 | }, | |||
|
922 | ||||
|
923 | init: function (controller, reviewRules, setReviewers) { | |||
|
924 | var self = this; | |||
|
925 | self.setSelectors(); | |||
|
926 | ||||
|
927 | self.controller = controller; | |||
|
928 | self.reviewRules = reviewRules; | |||
|
929 | self.setReviewers = setReviewers; | |||
|
930 | ||||
|
931 | self.editButton.on('click', function (e) { | |||
|
932 | self.edit(); | |||
|
933 | }); | |||
|
934 | self.closeButton.on('click', function (e) { | |||
|
935 | self.close(); | |||
|
936 | self.renderObservers(); | |||
|
937 | }); | |||
|
938 | ||||
|
939 | self.renderObservers(); | |||
|
940 | ||||
|
941 | }, | |||
|
942 | ||||
|
943 | renderObservers: function () { | |||
|
944 | var self = this; | |||
|
945 | if (self.setReviewers.observers === undefined) { | |||
|
946 | return | |||
|
947 | } | |||
|
948 | if (self.setReviewers.observers.length === 0) { | |||
|
949 | self.controller.emptyObserversTable('<tr id="observer-empty-msg"><td colspan="6">No observers</td></tr>'); | |||
|
950 | return | |||
|
951 | } | |||
|
952 | ||||
|
953 | self.controller.emptyObserversTable(); | |||
|
954 | ||||
|
955 | $.each(self.setReviewers.observers, function (key, val) { | |||
|
956 | var member = val; | |||
|
957 | if (member.role === self.controller.ROLE_OBSERVER) { | |||
|
958 | var entry = renderTemplate('reviewMemberEntry', { | |||
|
959 | 'member': member, | |||
|
960 | 'mandatory': member.mandatory, | |||
|
961 | 'role': member.role, | |||
|
962 | 'reasons': member.reasons, | |||
|
963 | 'allowed_to_update': member.allowed_to_update, | |||
|
964 | 'review_status': member.review_status, | |||
|
965 | 'review_status_label': member.review_status_label, | |||
|
966 | 'user_group': member.user_group, | |||
|
967 | 'create': false | |||
|
968 | }); | |||
|
969 | ||||
|
970 | $(self.controller.$observerMembers.selector).append(entry) | |||
|
971 | } | |||
|
972 | }); | |||
|
973 | ||||
|
974 | tooltipActivate(); | |||
725 | }, |
|
975 | }, | |
726 |
|
976 | |||
727 | edit: function (event) { |
|
977 | edit: function (event) { | |
@@ -729,8 +979,6 b' window.ReviewersPanel = {' | |||||
729 | this.closeButton.show(); |
|
979 | this.closeButton.show(); | |
730 | this.addButton.show(); |
|
980 | this.addButton.show(); | |
731 | $(this.removeButtons.selector).css('visibility', 'visible'); |
|
981 | $(this.removeButtons.selector).css('visibility', 'visible'); | |
732 | // review rules |
|
|||
733 | reviewersController.loadReviewRules(this.reviewRules); |
|
|||
734 | }, |
|
982 | }, | |
735 |
|
983 | |||
736 | close: function (event) { |
|
984 | close: function (event) { | |
@@ -738,12 +986,56 b' window.ReviewersPanel = {' | |||||
738 | this.closeButton.hide(); |
|
986 | this.closeButton.hide(); | |
739 | this.addButton.hide(); |
|
987 | this.addButton.hide(); | |
740 | $(this.removeButtons.selector).css('visibility', 'hidden'); |
|
988 | $(this.removeButtons.selector).css('visibility', 'hidden'); | |
741 | // hide review rules |
|
989 | } | |
742 | reviewersController.hideReviewRules() |
|
990 | ||
|
991 | }; | |||
|
992 | ||||
|
993 | window.PRDetails = { | |||
|
994 | editButton: null, | |||
|
995 | closeButton: null, | |||
|
996 | deleteButton: null, | |||
|
997 | viewFields: null, | |||
|
998 | editFields: null, | |||
|
999 | ||||
|
1000 | setSelectors: function () { | |||
|
1001 | var self = this; | |||
|
1002 | self.editButton = $('#open_edit_pullrequest') | |||
|
1003 | self.closeButton = $('#close_edit_pullrequest') | |||
|
1004 | self.deleteButton = $('#delete_pullrequest') | |||
|
1005 | self.viewFields = $('#pr-desc, #pr-title') | |||
|
1006 | self.editFields = $('#pr-desc-edit, #pr-title-edit, .pr-save') | |||
|
1007 | }, | |||
|
1008 | ||||
|
1009 | init: function () { | |||
|
1010 | var self = this; | |||
|
1011 | self.setSelectors(); | |||
|
1012 | self.editButton.on('click', function (e) { | |||
|
1013 | self.edit(); | |||
|
1014 | }); | |||
|
1015 | self.closeButton.on('click', function (e) { | |||
|
1016 | self.view(); | |||
|
1017 | }); | |||
|
1018 | }, | |||
|
1019 | ||||
|
1020 | edit: function (event) { | |||
|
1021 | var cmInstance = $('#pr-description-input').get(0).MarkupForm.cm; | |||
|
1022 | this.viewFields.hide(); | |||
|
1023 | this.editButton.hide(); | |||
|
1024 | this.deleteButton.hide(); | |||
|
1025 | this.closeButton.show(); | |||
|
1026 | this.editFields.show(); | |||
|
1027 | cmInstance.refresh(); | |||
|
1028 | }, | |||
|
1029 | ||||
|
1030 | view: function (event) { | |||
|
1031 | this.editButton.show(); | |||
|
1032 | this.deleteButton.show(); | |||
|
1033 | this.editFields.hide(); | |||
|
1034 | this.closeButton.hide(); | |||
|
1035 | this.viewFields.show(); | |||
743 | } |
|
1036 | } | |
744 | }; |
|
1037 | }; | |
745 |
|
1038 | |||
746 |
|
||||
747 | /** |
|
1039 | /** | |
748 | * OnLine presence using channelstream |
|
1040 | * OnLine presence using channelstream | |
749 | */ |
|
1041 | */ | |
@@ -813,17 +1105,14 b' window.refreshComments = function (versi' | |||||
813 | $.each($('.comment'), function (idx, element) { |
|
1105 | $.each($('.comment'), function (idx, element) { | |
814 | currentIDs.push($(element).data('commentId')); |
|
1106 | currentIDs.push($(element).data('commentId')); | |
815 | }); |
|
1107 | }); | |
816 |
var data = {"comments |
|
1108 | var data = {"comments": currentIDs}; | |
817 |
|
1109 | |||
818 | var $targetElem = $('.comments-content-table'); |
|
1110 | var $targetElem = $('.comments-content-table'); | |
819 | $targetElem.css('opacity', 0.3); |
|
1111 | $targetElem.css('opacity', 0.3); | |
820 | $targetElem.load( |
|
1112 | ||
821 | loadUrl, data, function (responseText, textStatus, jqXHR) { |
|
1113 | var success = function (data) { | |
822 | if (jqXHR.status !== 200) { |
|
|||
823 | return false; |
|
|||
824 | } |
|
|||
825 |
|
|
1114 | var $counterElem = $('#comments-count'); | |
826 |
|
|
1115 | var newCount = $(data).data('counter'); | |
827 |
|
|
1116 | if (newCount !== undefined) { | |
828 |
|
|
1117 | var callback = function () { | |
829 |
|
|
1118 | $counterElem.animate({'opacity': 1.00}, 200) | |
@@ -833,9 +1122,12 b' window.refreshComments = function (versi' | |||||
833 |
|
|
1122 | } | |
834 |
|
1123 | |||
835 |
|
|
1124 | $targetElem.css('opacity', 1); | |
|
1125 | $targetElem.html(data); | |||
836 |
|
|
1126 | tooltipActivate(); | |
837 |
|
|
1127 | } | |
838 | ); |
|
1128 | ||
|
1129 | ajaxPOST(loadUrl, data, success, null, {}) | |||
|
1130 | ||||
839 | } |
|
1131 | } | |
840 |
|
1132 | |||
841 | window.refreshTODOs = function (version) { |
|
1133 | window.refreshTODOs = function (version) { | |
@@ -858,16 +1150,13 b' window.refreshTODOs = function (version)' | |||||
858 | currentIDs.push($(element).data('commentId')); |
|
1150 | currentIDs.push($(element).data('commentId')); | |
859 | }); |
|
1151 | }); | |
860 |
|
1152 | |||
861 |
var data = {"comments |
|
1153 | var data = {"comments": currentIDs}; | |
862 | var $targetElem = $('.todos-content-table'); |
|
1154 | var $targetElem = $('.todos-content-table'); | |
863 | $targetElem.css('opacity', 0.3); |
|
1155 | $targetElem.css('opacity', 0.3); | |
864 | $targetElem.load( |
|
1156 | ||
865 | loadUrl, data, function (responseText, textStatus, jqXHR) { |
|
1157 | var success = function (data) { | |
866 | if (jqXHR.status !== 200) { |
|
|||
867 | return false; |
|
|||
868 | } |
|
|||
869 |
|
|
1158 | var $counterElem = $('#todos-count') | |
870 |
|
|
1159 | var newCount = $(data).data('counter'); | |
871 |
|
|
1160 | if (newCount !== undefined) { | |
872 |
|
|
1161 | var callback = function () { | |
873 |
|
|
1162 | $counterElem.animate({'opacity': 1.00}, 200) | |
@@ -877,9 +1166,12 b' window.refreshTODOs = function (version)' | |||||
877 |
|
|
1166 | } | |
878 |
|
1167 | |||
879 |
|
|
1168 | $targetElem.css('opacity', 1); | |
|
1169 | $targetElem.html(data); | |||
880 |
|
|
1170 | tooltipActivate(); | |
881 |
|
|
1171 | } | |
882 | ); |
|
1172 | ||
|
1173 | ajaxPOST(loadUrl, data, success, null, {}) | |||
|
1174 | ||||
883 | } |
|
1175 | } | |
884 |
|
1176 | |||
885 | window.refreshAllComments = function (version) { |
|
1177 | window.refreshAllComments = function (version) { | |
@@ -888,3 +1180,12 b' window.refreshAllComments = function (ve' | |||||
888 | refreshComments(version); |
|
1180 | refreshComments(version); | |
889 | refreshTODOs(version); |
|
1181 | refreshTODOs(version); | |
890 | }; |
|
1182 | }; | |
|
1183 | ||||
|
1184 | window.sidebarComment = function (commentId) { | |||
|
1185 | var jsonData = $('#commentHovercard{0}'.format(commentId)).data('commentJsonB64'); | |||
|
1186 | if (!jsonData) { | |||
|
1187 | return 'Failed to load comment {0}'.format(commentId) | |||
|
1188 | } | |||
|
1189 | var funcData = JSON.parse(atob(jsonData)); | |||
|
1190 | return renderTemplate('sideBarCommentHovercard', funcData) | |||
|
1191 | }; |
@@ -57,15 +57,18 b' var ajaxGET = function (url, success, fa' | |||||
57 | return request; |
|
57 | return request; | |
58 | }; |
|
58 | }; | |
59 |
|
59 | |||
60 | var ajaxPOST = function (url, postData, success, failure) { |
|
60 | var ajaxPOST = function (url, postData, success, failure, options) { | |
61 | var sUrl = url; |
|
61 | ||
62 | var postData = toQueryString(postData); |
|
62 | var ajaxSettings = $.extend({ | |
63 | var request = $.ajax({ |
|
|||
64 | type: 'POST', |
|
63 | type: 'POST', | |
65 |
url: |
|
64 | url: url, | |
66 | data: postData, |
|
65 | data: toQueryString(postData), | |
67 | headers: {'X-PARTIAL-XHR': true} |
|
66 | headers: {'X-PARTIAL-XHR': true} | |
68 | }) |
|
67 | }, options); | |
|
68 | ||||
|
69 | var request = $.ajax( | |||
|
70 | ajaxSettings | |||
|
71 | ) | |||
69 | .done(function (data) { |
|
72 | .done(function (data) { | |
70 | success(data); |
|
73 | success(data); | |
71 | }) |
|
74 | }) | |
@@ -126,7 +129,8 b' function formatErrorMessage(jqXHR, textS' | |||||
126 | } else if (errorThrown === 'abort') { |
|
129 | } else if (errorThrown === 'abort') { | |
127 | return (prefix + 'Ajax request aborted.'); |
|
130 | return (prefix + 'Ajax request aborted.'); | |
128 | } else { |
|
131 | } else { | |
129 |
r |
|
132 | var errInfo = 'Uncaught Error. code: {0}\n'.format(jqXHR.status) | |
|
133 | return (prefix + errInfo + jqXHR.responseText); | |||
130 | } |
|
134 | } | |
131 | } |
|
135 | } | |
132 |
|
136 |
@@ -33,7 +33,7 b'' | |||||
33 | <h3 class="panel-title">${_('Pull Requests You Participate In')}</h3> |
|
33 | <h3 class="panel-title">${_('Pull Requests You Participate In')}</h3> | |
34 | </div> |
|
34 | </div> | |
35 | <div class="panel-body panel-body-min-height"> |
|
35 | <div class="panel-body panel-body-min-height"> | |
36 |
<table id="pull_request_list_table" class=" |
|
36 | <table id="pull_request_list_table" class="rctable table-bordered"></table> | |
37 | </div> |
|
37 | </div> | |
38 | </div> |
|
38 | </div> | |
39 |
|
39 | |||
@@ -58,16 +58,10 b'' | |||||
58 |
|
58 | |||
59 | dom: 'rtp', |
|
59 | dom: 'rtp', | |
60 | pageLength: ${c.visual.dashboard_items}, |
|
60 | pageLength: ${c.visual.dashboard_items}, | |
61 |
order: [[ |
|
61 | order: [[1, "desc"]], | |
62 | columns: [ |
|
62 | columns: [ | |
63 | { |
|
63 | { | |
64 | data: { |
|
64 | data: { | |
65 | "_": "target_repo", |
|
|||
66 | "sort": "target_repo" |
|
|||
67 | }, title: "${_('Target Repo')}", className: "td-targetrepo", orderable: false |
|
|||
68 | }, |
|
|||
69 | { |
|
|||
70 | data: { |
|
|||
71 | "_": "status", |
|
65 | "_": "status", | |
72 | "sort": "status" |
|
66 | "sort": "status" | |
73 | }, title: "", className: "td-status", orderable: false |
|
67 | }, title: "", className: "td-status", orderable: false | |
@@ -101,7 +95,13 b'' | |||||
101 | "_": "updated_on", |
|
95 | "_": "updated_on", | |
102 | "sort": "updated_on_raw" |
|
96 | "sort": "updated_on_raw" | |
103 | }, title: "${_('Last Update')}", className: "td-time" |
|
97 | }, title: "${_('Last Update')}", className: "td-time" | |
104 | } |
|
98 | }, | |
|
99 | { | |||
|
100 | data: { | |||
|
101 | "_": "target_repo", | |||
|
102 | "sort": "target_repo" | |||
|
103 | }, title: "${_('Target Repo')}", className: "td-targetrepo", orderable: false | |||
|
104 | }, | |||
105 | ], |
|
105 | ], | |
106 | language: { |
|
106 | language: { | |
107 | paginate: DEFAULT_GRID_PAGINATION, |
|
107 | paginate: DEFAULT_GRID_PAGINATION, |
@@ -785,15 +785,15 b'' | |||||
785 |
|
785 | |||
786 | - Prefix query to allow special search: |
|
786 | - Prefix query to allow special search: | |
787 |
|
787 | |||
788 | user:admin, to search for usernames, always global |
|
788 | <strong>user:</strong>admin, to search for usernames, always global | |
789 |
|
789 | |||
790 | user_group:devops, to search for user groups, always global |
|
790 | <strong>user_group:</strong>devops, to search for user groups, always global | |
791 |
|
791 | |||
792 | pr:303, to search for pull request number, title, or description, always global |
|
792 | <strong>pr:</strong>303, to search for pull request number, title, or description, always global | |
793 |
|
793 | |||
794 | commit:efced4, to search for commits, scoped to repositories or groups |
|
794 | <strong>commit:</strong>efced4, to search for commits, scoped to repositories or groups | |
795 |
|
795 | |||
796 | file:models.py, to search for file paths, scoped to repositories or groups |
|
796 | <strong>file:</strong>models.py, to search for file paths, scoped to repositories or groups | |
797 |
|
797 | |||
798 | % if c.template_context['search_context']['repo_id']: |
|
798 | % if c.template_context['search_context']['repo_id']: | |
799 | For advanced full text search visit: <a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">repository search</a> |
|
799 | For advanced full text search visit: <a href="${h.route_path('search_repo',repo_name=c.template_context['search_context']['repo_name'])}">repository search</a> |
@@ -16,8 +16,8 b' examples = [' | |||||
16 | ), |
|
16 | ), | |
17 |
|
17 | |||
18 | ( |
|
18 | ( | |
19 | 'Redmine', |
|
19 | 'Tickets with #123 (Redmine etc)', | |
20 |
'( |
|
20 | '(?<![a-zA-Z0-9_/]{1,10}-?)(#)(?P<issue_id>\d+)', | |
21 | 'https://myissueserver.com/${repo}/issue/${issue_id}', |
|
21 | 'https://myissueserver.com/${repo}/issue/${issue_id}', | |
22 | '' |
|
22 | '' | |
23 | ), |
|
23 | ), | |
@@ -38,14 +38,15 b' examples = [' | |||||
38 |
|
38 | |||
39 | ( |
|
39 | ( | |
40 | 'JIRA - All tickets', |
|
40 | 'JIRA - All tickets', | |
41 | '(^|\s\w+-\d+)', |
|
41 | # official JIRA ticket pattern | |
42 | 'https://myjira.com/browse/${id}', |
|
42 | '(?<![a-zA-Z0-9_/#]-?)(?P<issue_id>[A-Z]{1,6}-(?:[1-9][0-9]{0,7}))', | |
|
43 | 'https://myjira.com/browse/${issue_id}', | |||
43 | '' |
|
44 | '' | |
44 | ), |
|
45 | ), | |
45 |
|
46 | |||
46 | ( |
|
47 | ( | |
47 |
'JIRA - |
|
48 | 'JIRA - Single project (JRA-XXXXXXXX)', | |
48 | '(?:(^|\s)(?P<issue_id>(?:JRA-|JRA-)(?:\d+)))', |
|
49 | '(?<![a-zA-Z0-9_/#]-?)(?P<issue_id>JRA-(?:[1-9][0-9]{0,7}))', | |
49 | 'https://myjira.com/${issue_id}', |
|
50 | 'https://myjira.com/${issue_id}', | |
50 | '' |
|
51 | '' | |
51 | ), |
|
52 | ), | |
@@ -275,12 +276,18 b' examples = [' | |||||
275 | <div class='textarea-full'> |
|
276 | <div class='textarea-full'> | |
276 | <textarea id="test_pattern_data" rows="12"> |
|
277 | <textarea id="test_pattern_data" rows="12"> | |
277 | This is an example text for testing issue tracker patterns. |
|
278 | This is an example text for testing issue tracker patterns. | |
278 | This commit fixes ticket #451 and ticket #910. |
|
279 | This commit fixes ticket #451 and ticket #910, reference for JRA-401. | |
279 |
|
|
280 | The following tickets will get mentioned: | |
280 | #123 |
|
281 | #123 | |
281 | #456 |
|
282 | #456 and PROJ-101 | |
282 | JRA-123 |
|
283 | JRA-123 and #123 | |
283 |
J |
|
284 | PROJ-456 | |
|
285 | ||||
|
286 | [my artifact](http://something.com/JRA-1234-build.zip) | |||
|
287 | ||||
|
288 | - #1001 | |||
|
289 | - JRA-998 | |||
|
290 | ||||
284 |
Open a pull request !101 to contribute |
|
291 | Open a pull request !101 to contribute! | |
285 | Added tag v1.3.0 for commit 0f3b629be725 |
|
292 | Added tag v1.3.0 for commit 0f3b629be725 | |
286 |
|
293 |
@@ -89,36 +89,41 b'' | |||||
89 | if is_pr: |
|
89 | if is_pr: | |
90 | version_info = (' made in older version (v{})'.format(comment_ver_index) if is_from_old_ver == 'true' else ' made in this version') |
|
90 | version_info = (' made in older version (v{})'.format(comment_ver_index) if is_from_old_ver == 'true' else ' made in this version') | |
91 | %> |
|
91 | %> | |
92 |
|
92 | ## new comments, since refresh | ||
93 | <script type="text/javascript"> |
|
93 | % if existing_ids and comment_obj.comment_id not in existing_ids: | |
94 | // closure function helper |
|
94 | <div class="tooltip" style="position: absolute; left: 8px; color: #682668" title="New comment"> | |
95 | var sidebarComment${comment_obj.comment_id} = function() { |
|
95 | ! | |
96 | return renderTemplate('sideBarCommentHovercard', { |
|
96 | </div> | |
97 | version_info: "${version_info}", |
|
|||
98 | file_name: "${comment_obj.f_path}", |
|
|||
99 | line_no: "${comment_obj.line_no}", |
|
|||
100 | outdated: ${h.json.dumps(comment_obj.outdated)}, |
|
|||
101 | inline: ${h.json.dumps(comment_obj.is_inline)}, |
|
|||
102 | is_todo: ${h.json.dumps(comment_obj.is_todo)}, |
|
|||
103 | created_on: "${h.format_date(comment_obj.created_on)}", |
|
|||
104 | datetime: "${comment_obj.created_on}${h.get_timezone(comment_obj.created_on, time_is_local=True)}", |
|
|||
105 | review_status: "${(comment_obj.review_status or '')}" |
|
|||
106 | }) |
|
|||
107 | } |
|
|||
108 | </script> |
|
|||
109 |
|
||||
110 | % if comment_obj.outdated: |
|
|||
111 | <i class="icon-comment-toggle tooltip-hovercard" data-hovercard-url="javascript:sidebarComment${comment_obj.comment_id}()"></i> |
|
|||
112 | % elif comment_obj.is_inline: |
|
|||
113 | <i class="icon-code tooltip-hovercard" data-hovercard-url="javascript:sidebarComment${comment_obj.comment_id}()"></i> |
|
|||
114 | % else: |
|
|||
115 | <i class="icon-comment tooltip-hovercard" data-hovercard-url="javascript:sidebarComment${comment_obj.comment_id}()"></i> |
|
|||
116 | % endif |
|
97 | % endif | |
117 |
|
|
98 | ||
118 |
|
|
99 | <% | |
119 | % if existing_ids and comment_obj.comment_id not in existing_ids: |
|
100 | data = h.json.dumps({ | |
120 | <span class="tag">NEW</span> |
|
101 | 'comment_id': comment_obj.comment_id, | |
121 | % endif |
|
102 | 'version_info': version_info, | |
|
103 | 'file_name': comment_obj.f_path, | |||
|
104 | 'line_no': comment_obj.line_no, | |||
|
105 | 'outdated': comment_obj.outdated, | |||
|
106 | 'inline': comment_obj.is_inline, | |||
|
107 | 'is_todo': comment_obj.is_todo, | |||
|
108 | 'created_on': h.format_date(comment_obj.created_on), | |||
|
109 | 'datetime': '{}{}'.format(comment_obj.created_on, h.get_timezone(comment_obj.created_on, time_is_local=True)), | |||
|
110 | 'review_status': (comment_obj.review_status or '') | |||
|
111 | }) | |||
|
112 | ||||
|
113 | if comment_obj.outdated: | |||
|
114 | icon = 'icon-comment-toggle' | |||
|
115 | elif comment_obj.is_inline: | |||
|
116 | icon = 'icon-code' | |||
|
117 | else: | |||
|
118 | icon = 'icon-comment' | |||
|
119 | %> | |||
|
120 | ||||
|
121 | <i id="commentHovercard${comment_obj.comment_id}" | |||
|
122 | class="${icon} tooltip-hovercard" | |||
|
123 | data-hovercard-url="javascript:sidebarComment(${comment_obj.comment_id})" | |||
|
124 | data-comment-json-b64='${h.b64(data)}'> | |||
|
125 | </i> | |||
|
126 | ||||
122 | </td> |
|
127 | </td> | |
123 |
|
128 | |||
124 | <td class="td-todo-gravatar"> |
|
129 | <td class="td-todo-gravatar"> |
@@ -30,11 +30,21 b'' | |||||
30 | </ul> |
|
30 | </ul> | |
31 | %endif |
|
31 | %endif | |
32 | %if c.has_references: |
|
32 | %if c.has_references: | |
|
33 | <div class="grid-quick-filter"> | |||
|
34 | <ul class="grid-filter-box"> | |||
|
35 | <li class="grid-filter-box-icon"> | |||
|
36 | <i class="icon-search"></i> | |||
|
37 | </li> | |||
|
38 | <li class="grid-filter-box-input"> | |||
33 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> |
|
39 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> | |
34 | <span id="obj_count">0</span> ${_('bookmarks')} |
|
40 | </li> | |
|
41 | </ul> | |||
|
42 | </div> | |||
|
43 | <div id="obj_count">0</div> | |||
35 | %endif |
|
44 | %endif | |
36 | </div> |
|
45 | </div> | |
37 | <table id="obj_list_table" class="display"></table> |
|
46 | ||
|
47 | <table id="obj_list_table" class="rctable table-bordered"></table> | |||
38 | </div> |
|
48 | </div> | |
39 |
|
49 | |||
40 |
|
50 | |||
@@ -43,7 +53,9 b'' | |||||
43 |
|
53 | |||
44 | var get_datatable_count = function(){ |
|
54 | var get_datatable_count = function(){ | |
45 | var api = $('#obj_list_table').dataTable().api(); |
|
55 | var api = $('#obj_list_table').dataTable().api(); | |
46 |
|
|
56 | var total = api.page.info().recordsDisplay | |
|
57 | var _text = _ngettext('{0} bookmark', '{0} bookmarks', total).format(total); | |||
|
58 | $('#obj_count').text(_text); | |||
47 | }; |
|
59 | }; | |
48 |
|
60 | |||
49 | // object list |
|
61 | // object list |
@@ -30,11 +30,20 b'' | |||||
30 | </ul> |
|
30 | </ul> | |
31 | %endif |
|
31 | %endif | |
32 | %if c.has_references: |
|
32 | %if c.has_references: | |
|
33 | <div class="grid-quick-filter"> | |||
|
34 | <ul class="grid-filter-box"> | |||
|
35 | <li class="grid-filter-box-icon"> | |||
|
36 | <i class="icon-search"></i> | |||
|
37 | </li> | |||
|
38 | <li class="grid-filter-box-input"> | |||
33 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> |
|
39 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> | |
34 | <span id="obj_count">0</span> ${_('branches')} |
|
40 | </li> | |
|
41 | </ul> | |||
|
42 | </div> | |||
|
43 | <div id="obj_count">0</div> | |||
35 | %endif |
|
44 | %endif | |
36 | </div> |
|
45 | </div> | |
37 |
<table id="obj_list_table" class=" |
|
46 | <table id="obj_list_table" class="rctable table-bordered"></table> | |
38 | </div> |
|
47 | </div> | |
39 |
|
48 | |||
40 | <script type="text/javascript"> |
|
49 | <script type="text/javascript"> | |
@@ -42,7 +51,10 b'' | |||||
42 |
|
51 | |||
43 | var get_datatable_count = function(){ |
|
52 | var get_datatable_count = function(){ | |
44 | var api = $('#obj_list_table').dataTable().api(); |
|
53 | var api = $('#obj_list_table').dataTable().api(); | |
45 |
|
|
54 | var total = api.page.info().recordsDisplay | |
|
55 | var _text = _ngettext('{0} branch', '{0} branches', total).format(total); | |||
|
56 | ||||
|
57 | $('#obj_count').text(_text); | |||
46 | }; |
|
58 | }; | |
47 |
|
59 | |||
48 | // object list |
|
60 | // object list |
@@ -187,12 +187,12 b'' | |||||
187 | <div class="sidebar-element clear-both"> |
|
187 | <div class="sidebar-element clear-both"> | |
188 | <% vote_title = _ungettext( |
|
188 | <% vote_title = _ungettext( | |
189 | 'Status calculated based on votes from {} reviewer', |
|
189 | 'Status calculated based on votes from {} reviewer', | |
190 |
'Status calculated based on votes from {} reviewers', |
|
190 | 'Status calculated based on votes from {} reviewers', c.reviewers_count).format(c.reviewers_count) | |
191 | %> |
|
191 | %> | |
192 |
|
192 | |||
193 | <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${vote_title}"> |
|
193 | <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${vote_title}"> | |
194 | <i class="icon-circle review-status-${c.commit_review_status}"></i> |
|
194 | <i class="icon-circle review-status-${c.commit_review_status}"></i> | |
195 |
${ |
|
195 | ${c.reviewers_count} | |
196 | </div> |
|
196 | </div> | |
197 | </div> |
|
197 | </div> | |
198 |
|
198 | |||
@@ -420,7 +420,8 b'' | |||||
420 | e.preventDefault(); |
|
420 | e.preventDefault(); | |
421 | }); |
|
421 | }); | |
422 |
|
422 | |||
423 | ReviewersPanel.init(null, setReviewersData); |
|
423 | reviewersController = new ReviewersController(); | |
|
424 | ReviewersPanel.init(reviewersController, null, setReviewersData); | |||
424 |
|
425 | |||
425 | var channel = '${c.commit_broadcast_channel}'; |
|
426 | var channel = '${c.commit_broadcast_channel}'; | |
426 | new ReviewerPresenceController(channel) |
|
427 | new ReviewerPresenceController(channel) |
@@ -99,7 +99,7 b'' | |||||
99 | <div id="graph_content" class="graph_full_width"> |
|
99 | <div id="graph_content" class="graph_full_width"> | |
100 |
|
100 | |||
101 | <div class="table"> |
|
101 | <div class="table"> | |
102 | <table id="changesets" class="rctable"> |
|
102 | <table id="changesets" class="rctable table-bordered"> | |
103 | <tr> |
|
103 | <tr> | |
104 | ## checkbox |
|
104 | ## checkbox | |
105 | <th colspan="4"> |
|
105 | <th colspan="4"> |
@@ -379,14 +379,15 b'' | |||||
379 | </%def> |
|
379 | </%def> | |
380 |
|
380 | |||
381 | <%def name="pullrequest_name(pull_request_id, state, is_wip, target_repo_name, short=False)"> |
|
381 | <%def name="pullrequest_name(pull_request_id, state, is_wip, target_repo_name, short=False)"> | |
|
382 | <code> | |||
382 | <a href="${h.route_path('pullrequest_show',repo_name=target_repo_name,pull_request_id=pull_request_id)}"> |
|
383 | <a href="${h.route_path('pullrequest_show',repo_name=target_repo_name,pull_request_id=pull_request_id)}"> | |
383 |
|
||||
384 | % if short: |
|
384 | % if short: | |
385 | !${pull_request_id} |
|
385 | !${pull_request_id} | |
386 | % else: |
|
386 | % else: | |
387 | ${_('Pull request !{}').format(pull_request_id)} |
|
387 | ${_('Pull request !{}').format(pull_request_id)} | |
388 | % endif |
|
388 | % endif | |
389 |
|
389 | </a> | ||
|
390 | </code> | |||
390 |
|
|
391 | % if state not in ['created']: | |
391 |
|
|
392 | <span class="tag tag-merge-state-${state} tooltip" title="Pull request state is changing">${state}</span> | |
392 |
|
|
393 | % endif | |
@@ -394,7 +395,6 b'' | |||||
394 |
|
|
395 | % if is_wip: | |
395 |
|
|
396 | <span class="tag tooltip" title="${_('Work in progress')}">wip</span> | |
396 |
|
|
397 | % endif | |
397 | </a> |
|
|||
398 | </%def> |
|
398 | </%def> | |
399 |
|
399 | |||
400 | <%def name="pullrequest_updated_on(updated_on)"> |
|
400 | <%def name="pullrequest_updated_on(updated_on)"> |
@@ -149,7 +149,7 b'' | |||||
149 | <span class="user"> <a href="/_profiles/jenkins-tests">jenkins-tests</a> (reviewer)</span> |
|
149 | <span class="user"> <a href="/_profiles/jenkins-tests">jenkins-tests</a> (reviewer)</span> | |
150 | </div> |
|
150 | </div> | |
151 | <input id="reviewer_70_input" type="hidden" value="70" name="review_members"> |
|
151 | <input id="reviewer_70_input" type="hidden" value="70" name="review_members"> | |
152 |
<div class="reviewer_member_remove action_button" onclick="remove |
|
152 | <div class="reviewer_member_remove action_button" onclick="removeMember(70, true)" style="visibility: hidden;"> | |
153 | <i class="icon-remove"></i> |
|
153 | <i class="icon-remove"></i> | |
154 | </div> |
|
154 | </div> | |
155 | </li> |
|
155 | </li> |
@@ -66,9 +66,18 b" var data_hovercard_url = pyroutes.url('h" | |||||
66 | <tr id="reviewer_<%= member.user_id %>" class="reviewer_entry" tooltip="Review Group" data-reviewer-user-id="<%= member.user_id %>"> |
|
66 | <tr id="reviewer_<%= member.user_id %>" class="reviewer_entry" tooltip="Review Group" data-reviewer-user-id="<%= member.user_id %>"> | |
67 |
|
67 | |||
68 | <td style="width: 20px"> |
|
68 | <td style="width: 20px"> | |
|
69 | <div class="tooltip presence-state" style="display: none; position: absolute; left: 2px" title="This users is currently at this page"> | |||
|
70 | <i class="icon-eye" style="color: #0ac878"></i> | |||
|
71 | </div> | |||
|
72 | <% if (role === 'reviewer') { %> | |||
69 | <div class="reviewer_status tooltip" title="<%= review_status_label %>"> |
|
73 | <div class="reviewer_status tooltip" title="<%= review_status_label %>"> | |
70 | <i class="icon-circle review-status-<%= review_status %>"></i> |
|
74 | <i class="icon-circle review-status-<%= review_status %>"></i> | |
71 | </div> |
|
75 | </div> | |
|
76 | <% } else if (role === 'observer') { %> | |||
|
77 | <div class="tooltip" title="Observer without voting right."> | |||
|
78 | <i class="icon-circle-thin"></i> | |||
|
79 | </div> | |||
|
80 | <% } %> | |||
72 |
|
|
81 | </td> | |
73 |
|
82 | |||
74 | <td> |
|
83 | <td> | |
@@ -84,9 +93,6 b" var data_hovercard_url = pyroutes.url('h" | |||||
84 | 'gravatar_url': member.gravatar_link |
|
93 | 'gravatar_url': member.gravatar_link | |
85 | }) |
|
94 | }) | |
86 | %> |
|
95 | %> | |
87 | <span class="tooltip presence-state" style="display: none" title="This users is currently at this page"> |
|
|||
88 | <i class="icon-eye" style="color: #0ac878"></i> |
|
|||
89 | </span> |
|
|||
90 |
|
|
96 | </div> | |
91 | </td> |
|
97 | </td> | |
92 |
|
98 | |||
@@ -108,7 +114,7 b" var data_hovercard_url = pyroutes.url('h" | |||||
108 | <% } else { %> |
|
114 | <% } else { %> | |
109 | <td style="text-align: right;width: 10px;"> |
|
115 | <td style="text-align: right;width: 10px;"> | |
110 | <% if (allowed_to_update) { %> |
|
116 | <% if (allowed_to_update) { %> | |
111 |
<div class=" |
|
117 | <div class="<%=role %>_member_remove" onclick="reviewersController.removeMember(<%= member.user_id %>, true)" style="visibility: <%= edit_visibility %>;"> | |
112 | <i class="icon-remove"></i> |
|
118 | <i class="icon-remove"></i> | |
113 | </div> |
|
119 | </div> | |
114 | <% } %> |
|
120 | <% } %> | |
@@ -117,7 +123,7 b" var data_hovercard_url = pyroutes.url('h" | |||||
117 |
|
123 | |||
118 | </tr> |
|
124 | </tr> | |
119 |
|
125 | |||
120 | <tr> |
|
126 | <tr id="reviewer_<%= member.user_id %>_rules"> | |
121 | <td colspan="4" style="display: <%= rule_visibility %>" class="pr-user-rule-container"> |
|
127 | <td colspan="4" style="display: <%= rule_visibility %>" class="pr-user-rule-container"> | |
122 | <input type="hidden" name="__start__" value="reviewer:mapping"> |
|
128 | <input type="hidden" name="__start__" value="reviewer:mapping"> | |
123 |
|
129 | |||
@@ -149,6 +155,7 b" var data_hovercard_url = pyroutes.url('h" | |||||
149 |
|
155 | |||
150 | <input id="reviewer_<%= member.user_id %>_input" type="hidden" value="<%= member.user_id %>" name="user_id" /> |
|
156 | <input id="reviewer_<%= member.user_id %>_input" type="hidden" value="<%= member.user_id %>" name="user_id" /> | |
151 | <input type="hidden" name="mandatory" value="<%= mandatory %>"/> |
|
157 | <input type="hidden" name="mandatory" value="<%= mandatory %>"/> | |
|
158 | <input type="hidden" name="role" value="<%= role %>"/> | |||
152 |
|
159 | |||
153 | <input type="hidden" name="__end__" value="reviewer:mapping"> |
|
160 | <input type="hidden" name="__end__" value="reviewer:mapping"> | |
154 | </td> |
|
161 | </td> |
@@ -11,6 +11,9 b' data = {' | |||||
11 | 'pr_title': pull_request.title, |
|
11 | 'pr_title': pull_request.title, | |
12 | } |
|
12 | } | |
13 |
|
13 | |||
|
14 | if user_role == 'observer': | |||
|
15 | subject_template = email_pr_review_subject_template or _('{user} added you as observer to pull request. !{pr_id}: "{pr_title}"') | |||
|
16 | else: | |||
14 | subject_template = email_pr_review_subject_template or _('{user} requested a pull request review. !{pr_id}: "{pr_title}"') |
|
17 | subject_template = email_pr_review_subject_template or _('{user} requested a pull request review. !{pr_id}: "{pr_title}"') | |
15 | %> |
|
18 | %> | |
16 |
|
19 | |||
@@ -34,6 +37,7 b' data = {' | |||||
34 | 'source_repo_url': pull_request_source_repo_url, |
|
37 | 'source_repo_url': pull_request_source_repo_url, | |
35 | 'target_repo_url': pull_request_target_repo_url, |
|
38 | 'target_repo_url': pull_request_target_repo_url, | |
36 | } |
|
39 | } | |
|
40 | ||||
37 | %> |
|
41 | %> | |
38 |
|
42 | |||
39 | * ${_('Pull Request link')}: ${pull_request_url} |
|
43 | * ${_('Pull Request link')}: ${pull_request_url} | |
@@ -51,7 +55,7 b' data = {' | |||||
51 |
|
55 | |||
52 | % for commit_id, message in pull_request_commits: |
|
56 | % for commit_id, message in pull_request_commits: | |
53 | - ${h.short_id(commit_id)} |
|
57 | - ${h.short_id(commit_id)} | |
54 |
|
|
58 | ${h.chop_at_smart(message.lstrip(), '\n', suffix_if_chopped='...')} | |
55 |
|
59 | |||
56 | % endfor |
|
60 | % endfor | |
57 |
|
61 | |||
@@ -78,19 +82,23 b' data = {' | |||||
78 | <table style="text-align:left;vertical-align:middle;width: 100%"> |
|
82 | <table style="text-align:left;vertical-align:middle;width: 100%"> | |
79 | <tr> |
|
83 | <tr> | |
80 | <td style="width:100%;border-bottom:1px solid #dbd9da;"> |
|
84 | <td style="width:100%;border-bottom:1px solid #dbd9da;"> | |
81 |
|
||||
82 | <div style="margin: 0; font-weight: bold"> |
|
85 | <div style="margin: 0; font-weight: bold"> | |
|
86 | % if user_role == 'observer': | |||
|
87 | <div class="clear-both" class="clear-both" style="margin-bottom: 4px"> | |||
|
88 | <span style="color:#7E7F7F">@${h.person(user.username)}</span> | |||
|
89 | ${_('added you as observer to')} | |||
|
90 | <a href="${pull_request_url}" style="${base.link_css()}">pull request</a>. | |||
|
91 | </div> | |||
|
92 | % else: | |||
83 | <div class="clear-both" class="clear-both" style="margin-bottom: 4px"> |
|
93 | <div class="clear-both" class="clear-both" style="margin-bottom: 4px"> | |
84 | <span style="color:#7E7F7F">@${h.person(user.username)}</span> |
|
94 | <span style="color:#7E7F7F">@${h.person(user.username)}</span> | |
85 | ${_('requested a')} |
|
95 | ${_('requested a')} | |
86 | <a href="${pull_request_url}" style="${base.link_css()}"> |
|
96 | <a href="${pull_request_url}" style="${base.link_css()}">pull request</a> review. | |
87 | ${_('pull request review.').format(**data) } |
|
|||
88 | </a> |
|
|||
89 | </div> |
|
97 | </div> | |
|
98 | % endif | |||
90 | <div style="margin-top: 10px"></div> |
|
99 | <div style="margin-top: 10px"></div> | |
91 | ${_('Pull request')} <code>!${data['pr_id']}: ${data['pr_title']}</code> |
|
100 | ${_('Pull request')} <code>!${data['pr_id']}: ${data['pr_title']}</code> | |
92 | </div> |
|
101 | </div> | |
93 |
|
||||
94 | </td> |
|
102 | </td> | |
95 | </tr> |
|
103 | </tr> | |
96 |
|
104 |
@@ -10,7 +10,7 b'' | |||||
10 | default_landing_ref = c.commit.raw_id |
|
10 | default_landing_ref = c.commit.raw_id | |
11 | %> |
|
11 | %> | |
12 | <div id="file-tree-wrapper" class="browser-body ${('full-load' if c.full_load else '')}"> |
|
12 | <div id="file-tree-wrapper" class="browser-body ${('full-load' if c.full_load else '')}"> | |
13 |
<table class="code-browser rctable |
|
13 | <table class="code-browser rctable table-bordered"> | |
14 | <thead> |
|
14 | <thead> | |
15 | <tr> |
|
15 | <tr> | |
16 | <th>${_('Name')}</th> |
|
16 | <th>${_('Name')}</th> |
@@ -112,7 +112,7 b'' | |||||
112 | ## REVIEWERS |
|
112 | ## REVIEWERS | |
113 | <div class="field"> |
|
113 | <div class="field"> | |
114 | <div class="label label-textarea"> |
|
114 | <div class="label label-textarea"> | |
115 | <label for="pullrequest_reviewers">${_('Reviewers')}:</label> |
|
115 | <label for="pullrequest_reviewers">${_('Reviewers / Observers')}:</label> | |
116 | </div> |
|
116 | </div> | |
117 | <div class="content"> |
|
117 | <div class="content"> | |
118 | ## REVIEW RULES |
|
118 | ## REVIEW RULES | |
@@ -125,18 +125,40 b'' | |||||
125 | </div> |
|
125 | </div> | |
126 | </div> |
|
126 | </div> | |
127 |
|
127 | |||
128 | ## REVIEWERS |
|
128 | ## REVIEWERS / OBSERVERS | |
129 | <div class="reviewers-title"> |
|
129 | <div class="reviewers-title"> | |
130 | <div class="pr-details-title"> |
|
130 | ||
131 |
|
|
131 | <ul class="nav-links clearfix"> | |
132 | <span class="calculate-reviewers"> - ${_('loading...')}</span> |
|
132 | ||
133 |
|
|
133 | ## TAB1 MANDATORY REVIEWERS | |
134 |
< |
|
134 | <li class="active"> | |
|
135 | <a id="reviewers-btn" href="#showReviewers" tabindex="-1"> | |||
|
136 | Reviewers | |||
|
137 | <span id="reviewers-cnt" data-count="0" class="menulink-counter">0</span> | |||
|
138 | </a> | |||
|
139 | </li> | |||
|
140 | ||||
|
141 | ## TAB2 OBSERVERS | |||
|
142 | <li class=""> | |||
|
143 | <a id="observers-btn" href="#showObservers" tabindex="-1"> | |||
|
144 | Observers | |||
|
145 | <span id="observers-cnt" data-count="0" class="menulink-counter">0</span> | |||
|
146 | </a> | |||
|
147 | </li> | |||
|
148 | ||||
|
149 | </ul> | |||
|
150 | ||||
|
151 | ## TAB1 MANDATORY REVIEWERS | |||
|
152 | <div id="reviewers-container"> | |||
|
153 | <span class="calculate-reviewers"> | |||
|
154 | <h4>${_('loading...')}</h4> | |||
|
155 | </span> | |||
|
156 | ||||
135 | <div id="reviewers" class="pr-details-content reviewers"> |
|
157 | <div id="reviewers" class="pr-details-content reviewers"> | |
136 | ## members goes here, filled via JS based on initial selection ! |
|
158 | ## members goes here, filled via JS based on initial selection ! | |
137 | <input type="hidden" name="__start__" value="review_members:sequence"> |
|
159 | <input type="hidden" name="__start__" value="review_members:sequence"> | |
138 | <table id="review_members" class="group_members"> |
|
160 | <table id="review_members" class="group_members"> | |
139 | ## This content is loaded via JS and ReviewersPanel |
|
161 | ## This content is loaded via JS and ReviewersPanel, an sets reviewer_entry class on each element | |
140 | </table> |
|
162 | </table> | |
141 | <input type="hidden" name="__end__" value="review_members:sequence"> |
|
163 | <input type="hidden" name="__end__" value="review_members:sequence"> | |
142 |
|
164 | |||
@@ -149,6 +171,39 b'' | |||||
149 |
|
171 | |||
150 | </div> |
|
172 | </div> | |
151 | </div> |
|
173 | </div> | |
|
174 | ||||
|
175 | ## TAB2 OBSERVERS | |||
|
176 | <div id="observers-container" style="display: none"> | |||
|
177 | <span class="calculate-reviewers"> | |||
|
178 | <h4>${_('loading...')}</h4> | |||
|
179 | </span> | |||
|
180 | % if c.rhodecode_edition_id == 'EE': | |||
|
181 | <div id="observers" class="pr-details-content observers"> | |||
|
182 | ## members goes here, filled via JS based on initial selection ! | |||
|
183 | <input type="hidden" name="__start__" value="observer_members:sequence"> | |||
|
184 | <table id="observer_members" class="group_members"> | |||
|
185 | ## This content is loaded via JS and ReviewersPanel, an sets reviewer_entry class on each element | |||
|
186 | </table> | |||
|
187 | <input type="hidden" name="__end__" value="observer_members:sequence"> | |||
|
188 | ||||
|
189 | <div id="add_observer_input" class='ac'> | |||
|
190 | <div class="observer_ac"> | |||
|
191 | ${h.text('observer', class_='ac-input', placeholder=_('Add observer or observer group'))} | |||
|
192 | <div id="observers_container"></div> | |||
|
193 | </div> | |||
|
194 | </div> | |||
|
195 | </div> | |||
|
196 | % else: | |||
|
197 | <h4>${_('This feature is available in RhodeCode EE edition only. Contact {sales_email} to obtain a trial license.').format(sales_email='<a href="mailto:sales@rhodecode.com">sales@rhodecode.com</a>')|n}</h4> | |||
|
198 | <p> | |||
|
199 | Pull request observers allows adding users who don't need to leave mandatory votes, but need to be aware about certain changes. | |||
|
200 | </p> | |||
|
201 | % endif | |||
|
202 | </div> | |||
|
203 | ||||
|
204 | </div> | |||
|
205 | ||||
|
206 | </div> | |||
152 | </div> |
|
207 | </div> | |
153 |
|
208 | |||
154 | ## SUBMIT |
|
209 | ## SUBMIT | |
@@ -248,12 +303,19 b'' | |||||
248 |
|
303 | |||
249 | var originalOption = data.element; |
|
304 | var originalOption = data.element; | |
250 | return prefix + escapeMarkup(data.text); |
|
305 | return prefix + escapeMarkup(data.text); | |
251 | };formatSelection: |
|
306 | }; | |
252 |
|
307 | |||
253 | // custom code mirror |
|
308 | // custom code mirror | |
254 | var codeMirrorInstance = $('#pullrequest_desc').get(0).MarkupForm.cm; |
|
309 | var codeMirrorInstance = $('#pullrequest_desc').get(0).MarkupForm.cm; | |
255 |
|
310 | |||
256 | var diffDataHandler = function(data) { |
|
311 | var diffDataHandler = function(data) { | |
|
312 | if (data['error'] !== undefined) { | |||
|
313 | var noCommitsMsg = '<span class="alert-text-error">{0}</span>'.format(data['error']); | |||
|
314 | prButtonLock(true, noCommitsMsg, 'compare'); | |||
|
315 | //make both panels equal | |||
|
316 | $('.target-panel').height($('.source-panel').height()) | |||
|
317 | return false | |||
|
318 | } | |||
257 |
|
319 | |||
258 | var commitElements = data['commits']; |
|
320 | var commitElements = data['commits']; | |
259 | var files = data['files']; |
|
321 | var files = data['files']; | |
@@ -307,8 +369,10 b'' | |||||
307 | var msg = '<input id="common_ancestor" type="hidden" name="common_ancestor" value="{0}">'.format(commonAncestorId); |
|
369 | var msg = '<input id="common_ancestor" type="hidden" name="common_ancestor" value="{0}">'.format(commonAncestorId); | |
308 | msg += '<input type="hidden" name="__start__" value="revisions:sequence">' |
|
370 | msg += '<input type="hidden" name="__start__" value="revisions:sequence">' | |
309 |
|
371 | |||
|
372 | ||||
310 | $.each(commitElements, function(idx, value) { |
|
373 | $.each(commitElements, function(idx, value) { | |
311 | msg += '<input type="hidden" name="revisions" value="{0}">'.format(value["raw_id"]); |
|
374 | var commit_id = value["commit_id"] | |
|
375 | msg += '<input type="hidden" name="revisions" value="{0}">'.format(commit_id); | |||
312 | }); |
|
376 | }); | |
313 |
|
377 | |||
314 | msg += '<input type="hidden" name="__end__" value="revisions:sequence">' |
|
378 | msg += '<input type="hidden" name="__end__" value="revisions:sequence">' | |
@@ -338,8 +402,8 b'' | |||||
338 | } |
|
402 | } | |
339 |
|
403 | |||
340 | //make both panels equal |
|
404 | //make both panels equal | |
341 | $('.target-panel').height($('.source-panel').height()) |
|
405 | $('.target-panel').height($('.source-panel').height()); | |
342 |
|
406 | return true | ||
343 | }; |
|
407 | }; | |
344 |
|
408 | |||
345 | reviewersController = new ReviewersController(); |
|
409 | reviewersController = new ReviewersController(); | |
@@ -465,8 +529,7 b'' | |||||
465 | queryTargetRefs(initialData, query) |
|
529 | queryTargetRefs(initialData, query) | |
466 | }, |
|
530 | }, | |
467 | initSelection: initRefSelection() |
|
531 | initSelection: initRefSelection() | |
468 |
|
|
532 | }); | |
469 | ); |
|
|||
470 |
|
533 | |||
471 | var sourceRepoSelect2 = Select2Box($sourceRepo, { |
|
534 | var sourceRepoSelect2 = Select2Box($sourceRepo, { | |
472 | query: function(query) {} |
|
535 | query: function(query) {} | |
@@ -543,12 +606,44 b'' | |||||
543 | $sourceRef.select2('val', '${c.default_source_ref}'); |
|
606 | $sourceRef.select2('val', '${c.default_source_ref}'); | |
544 |
|
607 | |||
545 |
|
608 | |||
546 | // default reviewers |
|
609 | // default reviewers / observers | |
547 | reviewersController.loadDefaultReviewers( |
|
610 | reviewersController.loadDefaultReviewers( | |
548 | sourceRepo(), sourceRef(), targetRepo(), targetRef()); |
|
611 | sourceRepo(), sourceRef(), targetRepo(), targetRef()); | |
549 | % endif |
|
612 | % endif | |
550 |
|
613 | |||
551 | ReviewerAutoComplete('#user'); |
|
614 | ReviewerAutoComplete('#user', reviewersController); | |
|
615 | ObserverAutoComplete('#observer', reviewersController); | |||
|
616 | ||||
|
617 | // TODO, move this to another handler | |||
|
618 | ||||
|
619 | var $reviewersBtn = $('#reviewers-btn'); | |||
|
620 | var $reviewersContainer = $('#reviewers-container'); | |||
|
621 | ||||
|
622 | var $observersBtn = $('#observers-btn') | |||
|
623 | var $observersContainer = $('#observers-container'); | |||
|
624 | ||||
|
625 | $reviewersBtn.on('click', function (e) { | |||
|
626 | ||||
|
627 | $observersContainer.hide(); | |||
|
628 | $reviewersContainer.show(); | |||
|
629 | ||||
|
630 | $observersBtn.parent().removeClass('active'); | |||
|
631 | $reviewersBtn.parent().addClass('active'); | |||
|
632 | e.preventDefault(); | |||
|
633 | ||||
|
634 | }) | |||
|
635 | ||||
|
636 | $observersBtn.on('click', function (e) { | |||
|
637 | ||||
|
638 | $reviewersContainer.hide(); | |||
|
639 | $observersContainer.show(); | |||
|
640 | ||||
|
641 | $reviewersBtn.parent().removeClass('active'); | |||
|
642 | $observersBtn.parent().addClass('active'); | |||
|
643 | e.preventDefault(); | |||
|
644 | ||||
|
645 | }) | |||
|
646 | ||||
552 | }); |
|
647 | }); | |
553 | </script> |
|
648 | </script> | |
554 |
|
649 |
@@ -556,12 +556,12 b'' | |||||
556 | <div class="sidebar-element clear-both"> |
|
556 | <div class="sidebar-element clear-both"> | |
557 | <% vote_title = _ungettext( |
|
557 | <% vote_title = _ungettext( | |
558 | 'Status calculated based on votes from {} reviewer', |
|
558 | 'Status calculated based on votes from {} reviewer', | |
559 |
'Status calculated based on votes from {} reviewers', |
|
559 | 'Status calculated based on votes from {} reviewers', c.reviewers_count).format(c.reviewers_count) | |
560 | %> |
|
560 | %> | |
561 |
|
561 | |||
562 | <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${vote_title}"> |
|
562 | <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${vote_title}"> | |
563 | <i class="icon-circle review-status-${c.pull_request_review_status}"></i> |
|
563 | <i class="icon-circle review-status-${c.pull_request_review_status}"></i> | |
564 |
${ |
|
564 | ${c.reviewers_count} | |
565 | </div> |
|
565 | </div> | |
566 |
|
566 | |||
567 | ## REVIEW RULES |
|
567 | ## REVIEW RULES | |
@@ -609,13 +609,13 b'' | |||||
609 | <div id="add_reviewer" class="ac" style="display: none;"> |
|
609 | <div id="add_reviewer" class="ac" style="display: none;"> | |
610 | %if c.allowed_to_update: |
|
610 | %if c.allowed_to_update: | |
611 | % if not c.forbid_adding_reviewers: |
|
611 | % if not c.forbid_adding_reviewers: | |
612 | <div id="add_reviewer_input" class="reviewer_ac"> |
|
612 | <div id="add_reviewer_input" class="reviewer_ac" style="width: 240px"> | |
613 |
|
|
613 | <input class="ac-input" id="user" name="user" placeholder="${_('Add reviewer or reviewer group')}" type="text" autocomplete="off"> | |
614 | <div id="reviewers_container"></div> |
|
614 | <div id="reviewers_container"></div> | |
615 | </div> |
|
615 | </div> | |
616 | % endif |
|
616 | % endif | |
617 | <div class="pull-right"> |
|
617 | <div class="pull-right" style="margin-bottom: 15px"> | |
618 |
<button id="update_ |
|
618 | <button data-role="reviewer" id="update_reviewers" class="btn btn-small no-margin">${_('Save Changes')}</button> | |
619 | </div> |
|
619 | </div> | |
620 | %endif |
|
620 | %endif | |
621 | </div> |
|
621 | </div> | |
@@ -623,23 +623,59 b'' | |||||
623 | </div> |
|
623 | </div> | |
624 | </div> |
|
624 | </div> | |
625 |
|
625 | |||
626 |
|
|
626 | ## OBSERVERS | |
627 | ## <div class="sidebar-element clear-both"> |
|
627 | % if c.rhodecode_edition_id == 'EE': | |
628 | ## <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${_('Observers')}"> |
|
628 | <div class="sidebar-element clear-both"> | |
629 | ## <i class="icon-eye"></i> |
|
629 | <% vote_title = _ungettext( | |
630 | ## 0 |
|
630 | '{} observer without voting right.', | |
631 | ## </div> |
|
631 | '{} observers without voting right.', c.observers_count).format(c.observers_count) | |
632 | ## |
|
632 | %> | |
633 | ## <div class="right-sidebar-expanded-state pr-details-title"> |
|
633 | ||
634 | ## <span class="sidebar-heading"> |
|
634 | <div class="tooltip right-sidebar-collapsed-state" style="display: none" onclick="toggleSidebar(); return false" title="${vote_title}"> | |
635 |
|
|
635 | <i class="icon-circle-thin"></i> | |
636 |
|
|
636 | ${c.observers_count} | |
637 |
|
|
637 | </div> | |
638 | ## </div> |
|
638 | ||
639 |
|
|
639 | <div class="right-sidebar-expanded-state pr-details-title"> | |
640 | ## No observers |
|
640 | <span class="tooltip sidebar-heading" title="${vote_title}"> | |
641 | ## </div> |
|
641 | <i class="icon-circle-thin"></i> | |
642 | ## </div> |
|
642 | ${_('Observers')} | |
|
643 | </span> | |||
|
644 | %if c.allowed_to_update: | |||
|
645 | <span id="open_edit_observers" class="block-right action_button last-item">${_('Edit')}</span> | |||
|
646 | <span id="close_edit_observers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span> | |||
|
647 | %endif | |||
|
648 | </div> | |||
|
649 | ||||
|
650 | <div id="observers" class="right-sidebar-expanded-state pr-details-content reviewers"> | |||
|
651 | ## members redering block | |||
|
652 | <input type="hidden" name="__start__" value="observer_members:sequence"> | |||
|
653 | ||||
|
654 | <table id="observer_members" class="group_members"> | |||
|
655 | ## This content is loaded via JS and ReviewersPanel | |||
|
656 | </table> | |||
|
657 | ||||
|
658 | <input type="hidden" name="__end__" value="observer_members:sequence"> | |||
|
659 | ## end members redering block | |||
|
660 | ||||
|
661 | %if not c.pull_request.is_closed(): | |||
|
662 | <div id="add_observer" class="ac" style="display: none;"> | |||
|
663 | %if c.allowed_to_update: | |||
|
664 | % if not c.forbid_adding_reviewers or 1: | |||
|
665 | <div id="add_reviewer_input" class="reviewer_ac" style="width: 240px" > | |||
|
666 | <input class="ac-input" id="observer" name="observer" placeholder="${_('Add observer or observer group')}" type="text" autocomplete="off"> | |||
|
667 | <div id="observers_container"></div> | |||
|
668 | </div> | |||
|
669 | % endif | |||
|
670 | <div class="pull-right" style="margin-bottom: 15px"> | |||
|
671 | <button data-role="observer" id="update_observers" class="btn btn-small no-margin">${_('Save Changes')}</button> | |||
|
672 | </div> | |||
|
673 | %endif | |||
|
674 | </div> | |||
|
675 | %endif | |||
|
676 | </div> | |||
|
677 | </div> | |||
|
678 | % endif | |||
643 |
|
679 | |||
644 | ## TODOs |
|
680 | ## TODOs | |
645 | <div class="sidebar-element clear-both"> |
|
681 | <div class="sidebar-element clear-both"> | |
@@ -757,7 +793,7 b'' | |||||
757 |
|
793 | |||
758 | <tr><td><code>${_('In pull request description')}:</code></td></tr> |
|
794 | <tr><td><code>${_('In pull request description')}:</code></td></tr> | |
759 | % if c.referenced_desc_issues: |
|
795 | % if c.referenced_desc_issues: | |
760 | % for ticket_dict in c.referenced_desc_issues: |
|
796 | % for ticket_dict in sorted(c.referenced_desc_issues): | |
761 | <tr> |
|
797 | <tr> | |
762 | <td> |
|
798 | <td> | |
763 | <a href="${ticket_dict.get('url')}"> |
|
799 | <a href="${ticket_dict.get('url')}"> | |
@@ -776,7 +812,7 b'' | |||||
776 |
|
812 | |||
777 | <tr><td style="padding-top: 10px"><code>${_('In commit messages')}:</code></td></tr> |
|
813 | <tr><td style="padding-top: 10px"><code>${_('In commit messages')}:</code></td></tr> | |
778 | % if c.referenced_commit_issues: |
|
814 | % if c.referenced_commit_issues: | |
779 | % for ticket_dict in c.referenced_commit_issues: |
|
815 | % for ticket_dict in sorted(c.referenced_commit_issues): | |
780 | <tr> |
|
816 | <tr> | |
781 | <td> |
|
817 | <td> | |
782 | <a href="${ticket_dict.get('url')}"> |
|
818 | <a href="${ticket_dict.get('url')}"> | |
@@ -815,6 +851,7 b' updateController = new UpdatePrControlle' | |||||
815 |
|
851 | |||
816 | window.reviewerRulesData = ${c.pull_request_default_reviewers_data_json | n}; |
|
852 | window.reviewerRulesData = ${c.pull_request_default_reviewers_data_json | n}; | |
817 | window.setReviewersData = ${c.pull_request_set_reviewers_data_json | n}; |
|
853 | window.setReviewersData = ${c.pull_request_set_reviewers_data_json | n}; | |
|
854 | window.setObserversData = ${c.pull_request_set_observers_data_json | n}; | |||
818 |
|
855 | |||
819 | (function () { |
|
856 | (function () { | |
820 | "use strict"; |
|
857 | "use strict"; | |
@@ -822,44 +859,9 b' window.setReviewersData = ${c.pull_reque' | |||||
822 | // custom code mirror |
|
859 | // custom code mirror | |
823 | var codeMirrorInstance = $('#pr-description-input').get(0).MarkupForm.cm; |
|
860 | var codeMirrorInstance = $('#pr-description-input').get(0).MarkupForm.cm; | |
824 |
|
861 | |||
825 | var PRDetails = { |
|
|||
826 | editButton: $('#open_edit_pullrequest'), |
|
|||
827 | closeButton: $('#close_edit_pullrequest'), |
|
|||
828 | deleteButton: $('#delete_pullrequest'), |
|
|||
829 | viewFields: $('#pr-desc, #pr-title'), |
|
|||
830 | editFields: $('#pr-desc-edit, #pr-title-edit, .pr-save'), |
|
|||
831 |
|
||||
832 | init: function () { |
|
|||
833 | var that = this; |
|
|||
834 | this.editButton.on('click', function (e) { |
|
|||
835 | that.edit(); |
|
|||
836 | }); |
|
|||
837 | this.closeButton.on('click', function (e) { |
|
|||
838 | that.view(); |
|
|||
839 | }); |
|
|||
840 | }, |
|
|||
841 |
|
||||
842 | edit: function (event) { |
|
|||
843 | var cmInstance = $('#pr-description-input').get(0).MarkupForm.cm; |
|
|||
844 | this.viewFields.hide(); |
|
|||
845 | this.editButton.hide(); |
|
|||
846 | this.deleteButton.hide(); |
|
|||
847 | this.closeButton.show(); |
|
|||
848 | this.editFields.show(); |
|
|||
849 | cmInstance.refresh(); |
|
|||
850 | }, |
|
|||
851 |
|
||||
852 | view: function (event) { |
|
|||
853 | this.editButton.show(); |
|
|||
854 | this.deleteButton.show(); |
|
|||
855 | this.editFields.hide(); |
|
|||
856 | this.closeButton.hide(); |
|
|||
857 | this.viewFields.show(); |
|
|||
858 | } |
|
|||
859 | }; |
|
|||
860 |
|
||||
861 | PRDetails.init(); |
|
862 | PRDetails.init(); | |
862 | ReviewersPanel.init(reviewerRulesData, setReviewersData); |
|
863 | ReviewersPanel.init(reviewersController, reviewerRulesData, setReviewersData); | |
|
864 | ObserversPanel.init(reviewersController, reviewerRulesData, setObserversData); | |||
863 |
|
865 | |||
864 | window.showOutdated = function (self) { |
|
866 | window.showOutdated = function (self) { | |
865 | $('.comment-inline.comment-outdated').show(); |
|
867 | $('.comment-inline.comment-outdated').show(); | |
@@ -929,12 +931,17 b' window.setReviewersData = ${c.pull_reque' | |||||
929 | title, description, renderer); |
|
931 | title, description, renderer); | |
930 | }); |
|
932 | }); | |
931 |
|
933 | |||
932 | $('#update_pull_request').on('click', function (e) { |
|
934 | var $updateButtons = $('#update_reviewers,#update_observers'); | |
933 | $(this).attr('disabled', 'disabled'); |
|
935 | $updateButtons.on('click', function (e) { | |
934 |
$(this). |
|
936 | var role = $(this).data('role'); | |
935 | $(this).html(_gettext('Saving...')); |
|
937 | $updateButtons.attr('disabled', 'disabled'); | |
|
938 | $updateButtons.addClass('disabled'); | |||
|
939 | $updateButtons.html(_gettext('Saving...')); | |||
936 | reviewersController.updateReviewers( |
|
940 | reviewersController.updateReviewers( | |
937 | "${c.repo_name}", "${c.pull_request.pull_request_id}"); |
|
941 | templateContext.repo_name, | |
|
942 | templateContext.pull_request_data.pull_request_id, | |||
|
943 | role | |||
|
944 | ); | |||
938 | }); |
|
945 | }); | |
939 |
|
946 | |||
940 | // fixing issue with caches on firefox |
|
947 | // fixing issue with caches on firefox | |
@@ -978,7 +985,8 b' window.setReviewersData = ${c.pull_reque' | |||||
978 | refreshMergeChecks(); |
|
985 | refreshMergeChecks(); | |
979 | }; |
|
986 | }; | |
980 |
|
987 | |||
981 | ReviewerAutoComplete('#user'); |
|
988 | ReviewerAutoComplete('#user', reviewersController); | |
|
989 | ObserverAutoComplete('#observer', reviewersController); | |||
982 |
|
990 | |||
983 | })(); |
|
991 | })(); | |
984 |
|
992 |
@@ -61,7 +61,7 b'' | |||||
61 | </div> |
|
61 | </div> | |
62 |
|
62 | |||
63 | <div class="main-content-full-width"> |
|
63 | <div class="main-content-full-width"> | |
64 |
<table id="pull_request_list_table" class=" |
|
64 | <table id="pull_request_list_table" class="rctable table-bordered"></table> | |
65 | </div> |
|
65 | </div> | |
66 |
|
66 | |||
67 | </div> |
|
67 | </div> |
@@ -1,11 +1,11 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 | <%namespace name="base" file="/base/base.mako"/> |
|
2 | <%namespace name="base" file="/base/base.mako"/> | |
3 | %if c.repo_commits: |
|
3 | %if c.repo_commits: | |
4 |
<table class="rctable |
|
4 | <table class="rctable table-bordered"> | |
5 | <tr> |
|
5 | <tr> | |
6 |
|
6 | |||
7 | <th class="status"></th> |
|
7 | <th class="status"></th> | |
8 |
<th> |
|
8 | <th></th> | |
9 | <th>${_('Commit message')}</th> |
|
9 | <th>${_('Commit message')}</th> | |
10 | <th>${_('Age')}</th> |
|
10 | <th>${_('Age')}</th> | |
11 | <th>${_('Author')}</th> |
|
11 | <th>${_('Author')}</th> |
@@ -30,11 +30,20 b'' | |||||
30 | </ul> |
|
30 | </ul> | |
31 | %endif |
|
31 | %endif | |
32 | %if c.has_references: |
|
32 | %if c.has_references: | |
|
33 | <div class="grid-quick-filter"> | |||
|
34 | <ul class="grid-filter-box"> | |||
|
35 | <li class="grid-filter-box-icon"> | |||
|
36 | <i class="icon-search"></i> | |||
|
37 | </li> | |||
|
38 | <li class="grid-filter-box-input"> | |||
33 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> |
|
39 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" placeholder="${_('quick filter...')}" value=""/> | |
34 | <span id="obj_count">0</span> ${_('tags')} |
|
40 | </li> | |
|
41 | </ul> | |||
|
42 | </div> | |||
|
43 | <div id="obj_count">0</div> | |||
35 | %endif |
|
44 | %endif | |
36 | </div> |
|
45 | </div> | |
37 |
<table id="obj_list_table" class=" |
|
46 | <table id="obj_list_table" class="rctable table-bordered"></table> | |
38 | </div> |
|
47 | </div> | |
39 |
|
48 | |||
40 |
|
49 | |||
@@ -43,7 +52,10 b'' | |||||
43 |
|
52 | |||
44 | var get_datatable_count = function(){ |
|
53 | var get_datatable_count = function(){ | |
45 | var api = $('#obj_list_table').dataTable().api(); |
|
54 | var api = $('#obj_list_table').dataTable().api(); | |
46 |
|
|
55 | var total = api.page.info().recordsDisplay | |
|
56 | var _text = _ngettext('{0} tag', '{0} tags', total).format(total); | |||
|
57 | ||||
|
58 | $('#obj_count').text(_text); | |||
47 | }; |
|
59 | }; | |
48 |
|
60 | |||
49 | // object list |
|
61 | // object list |
@@ -121,7 +121,7 b' def test_extract_issues(backend, text_st' | |||||
121 |
|
121 | |||
122 | with mock.patch.object(IssueTrackerSettingsModel, |
|
122 | with mock.patch.object(IssueTrackerSettingsModel, | |
123 | 'get_settings', get_settings_mock): |
|
123 | 'get_settings', get_settings_mock): | |
124 | text, issues = helpers.process_patterns(text_string, repo.repo_name) |
|
124 | text, issues, errors = helpers.process_patterns(text_string, repo.repo_name) | |
125 |
|
125 | |||
126 | expected = copy.deepcopy(expected) |
|
126 | expected = copy.deepcopy(expected) | |
127 | for item in expected: |
|
127 | for item in expected: | |
@@ -159,7 +159,7 b' def test_process_patterns_repo(backend, ' | |||||
159 |
|
159 | |||
160 | with mock.patch.object(IssueTrackerSettingsModel, |
|
160 | with mock.patch.object(IssueTrackerSettingsModel, | |
161 | 'get_settings', get_settings_mock): |
|
161 | 'get_settings', get_settings_mock): | |
162 | processed_text, issues = helpers.process_patterns( |
|
162 | processed_text, issues, error = helpers.process_patterns( | |
163 | text_string, repo.repo_name, link_format) |
|
163 | text_string, repo.repo_name, link_format) | |
164 |
|
164 | |||
165 | assert processed_text == expected_text.format(repo=repo.repo_name) |
|
165 | assert processed_text == expected_text.format(repo=repo.repo_name) | |
@@ -186,7 +186,7 b' def test_process_patterns_no_repo(text_s' | |||||
186 |
|
186 | |||
187 | with mock.patch.object(IssueTrackerSettingsModel, |
|
187 | with mock.patch.object(IssueTrackerSettingsModel, | |
188 | 'get_global_settings', get_settings_mock): |
|
188 | 'get_global_settings', get_settings_mock): | |
189 | processed_text, issues = helpers.process_patterns( |
|
189 | processed_text, issues, errors = helpers.process_patterns( | |
190 | text_string, '') |
|
190 | text_string, '') | |
191 |
|
191 | |||
192 | assert processed_text == expected_text |
|
192 | assert processed_text == expected_text | |
@@ -211,7 +211,7 b' def test_process_patterns_non_existent_r' | |||||
211 |
|
211 | |||
212 | with mock.patch.object(IssueTrackerSettingsModel, |
|
212 | with mock.patch.object(IssueTrackerSettingsModel, | |
213 | 'get_global_settings', get_settings_mock): |
|
213 | 'get_global_settings', get_settings_mock): | |
214 | processed_text, issues = helpers.process_patterns( |
|
214 | processed_text, issues, errors = helpers.process_patterns( | |
215 | text_string, 'do-not-exist') |
|
215 | text_string, 'do-not-exist') | |
216 |
|
216 | |||
217 | assert processed_text == expected_text |
|
217 | assert processed_text == expected_text |
@@ -23,7 +23,7 b' import collections' | |||||
23 |
|
23 | |||
24 | from rhodecode.lib.partial_renderer import PyramidPartialRenderer |
|
24 | from rhodecode.lib.partial_renderer import PyramidPartialRenderer | |
25 | from rhodecode.lib.utils2 import AttributeDict |
|
25 | from rhodecode.lib.utils2 import AttributeDict | |
26 | from rhodecode.model.db import User |
|
26 | from rhodecode.model.db import User, PullRequestReviewers | |
27 | from rhodecode.model.notification import EmailNotificationModel |
|
27 | from rhodecode.model.notification import EmailNotificationModel | |
28 |
|
28 | |||
29 |
|
29 | |||
@@ -52,7 +52,8 b' def test_render_email(app, http_host_onl' | |||||
52 | assert 'Email Body' in body |
|
52 | assert 'Email Body' in body | |
53 |
|
53 | |||
54 |
|
54 | |||
55 | def test_render_pr_email(app, user_admin): |
|
55 | @pytest.mark.parametrize('role', PullRequestReviewers.ROLES) | |
|
56 | def test_render_pr_email(app, user_admin, role): | |||
56 | ref = collections.namedtuple( |
|
57 | ref = collections.namedtuple( | |
57 | 'Ref', 'name, type')('fxies123', 'book') |
|
58 | 'Ref', 'name, type')('fxies123', 'book') | |
58 |
|
59 | |||
@@ -75,13 +76,17 b' def test_render_pr_email(app, user_admin' | |||||
75 | 'pull_request_source_repo_url': 'x', |
|
76 | 'pull_request_source_repo_url': 'x', | |
76 |
|
77 | |||
77 | 'pull_request_url': 'http://localhost/pr1', |
|
78 | 'pull_request_url': 'http://localhost/pr1', | |
|
79 | 'user_role': role, | |||
78 | } |
|
80 | } | |
79 |
|
81 | |||
80 | subject, body, body_plaintext = EmailNotificationModel().render_email( |
|
82 | subject, body, body_plaintext = EmailNotificationModel().render_email( | |
81 | EmailNotificationModel.TYPE_PULL_REQUEST, **kwargs) |
|
83 | EmailNotificationModel.TYPE_PULL_REQUEST, **kwargs) | |
82 |
|
84 | |||
83 | # subject |
|
85 | # subject | |
|
86 | if role == PullRequestReviewers.ROLE_REVIEWER: | |||
84 | assert subject == '@test_admin (RhodeCode Admin) requested a pull request review. !200: "Example Pull Request"' |
|
87 | assert subject == '@test_admin (RhodeCode Admin) requested a pull request review. !200: "Example Pull Request"' | |
|
88 | elif role == PullRequestReviewers.ROLE_OBSERVER: | |||
|
89 | assert subject == '@test_admin (RhodeCode Admin) added you as observer to pull request. !200: "Example Pull Request"' | |||
85 |
|
90 | |||
86 |
|
91 | |||
87 | def test_render_pr_update_email(app, user_admin): |
|
92 | def test_render_pr_update_email(app, user_admin): |
@@ -122,7 +122,7 b' class TestPullRequestModel(object):' | |||||
122 |
|
122 | |||
123 | def test_get_awaiting_my_review(self, pull_request): |
|
123 | def test_get_awaiting_my_review(self, pull_request): | |
124 | PullRequestModel().update_reviewers( |
|
124 | PullRequestModel().update_reviewers( | |
125 | pull_request, [(pull_request.author, ['author'], False, [])], |
|
125 | pull_request, [(pull_request.author, ['author'], False, 'reviewer', [])], | |
126 | pull_request.author) |
|
126 | pull_request.author) | |
127 | Session().commit() |
|
127 | Session().commit() | |
128 |
|
128 | |||
@@ -133,7 +133,7 b' class TestPullRequestModel(object):' | |||||
133 |
|
133 | |||
134 | def test_count_awaiting_my_review(self, pull_request): |
|
134 | def test_count_awaiting_my_review(self, pull_request): | |
135 | PullRequestModel().update_reviewers( |
|
135 | PullRequestModel().update_reviewers( | |
136 | pull_request, [(pull_request.author, ['author'], False, [])], |
|
136 | pull_request, [(pull_request.author, ['author'], False, 'reviewer', [])], | |
137 | pull_request.author) |
|
137 | pull_request.author) | |
138 | Session().commit() |
|
138 | Session().commit() | |
139 |
|
139 |
@@ -43,8 +43,8 b' from rhodecode.lib.utils2 import Attribu' | |||||
43 | from rhodecode.model.changeset_status import ChangesetStatusModel |
|
43 | from rhodecode.model.changeset_status import ChangesetStatusModel | |
44 | from rhodecode.model.comment import CommentsModel |
|
44 | from rhodecode.model.comment import CommentsModel | |
45 | from rhodecode.model.db import ( |
|
45 | from rhodecode.model.db import ( | |
46 |
PullRequest, Repository, RhodeCodeSetting, ChangesetStatus, |
|
46 | PullRequest, PullRequestReviewers, Repository, RhodeCodeSetting, ChangesetStatus, | |
47 | UserGroup, RepoRhodeCodeUi, RepoRhodeCodeSetting, RhodeCodeUi) |
|
47 | RepoGroup, UserGroup, RepoRhodeCodeUi, RepoRhodeCodeSetting, RhodeCodeUi) | |
48 | from rhodecode.model.meta import Session |
|
48 | from rhodecode.model.meta import Session | |
49 | from rhodecode.model.pull_request import PullRequestModel |
|
49 | from rhodecode.model.pull_request import PullRequestModel | |
50 | from rhodecode.model.repo import RepoModel |
|
50 | from rhodecode.model.repo import RepoModel | |
@@ -968,7 +968,7 b' class PRTestUtility(object):' | |||||
968 | def create_pull_request( |
|
968 | def create_pull_request( | |
969 | self, commits=None, target_head=None, source_head=None, |
|
969 | self, commits=None, target_head=None, source_head=None, | |
970 | revisions=None, approved=False, author=None, mergeable=False, |
|
970 | revisions=None, approved=False, author=None, mergeable=False, | |
971 | enable_notifications=True, name_suffix=u'', reviewers=None, |
|
971 | enable_notifications=True, name_suffix=u'', reviewers=None, observers=None, | |
972 | title=u"Test", description=u"Description"): |
|
972 | title=u"Test", description=u"Description"): | |
973 | self.set_mergeable(mergeable) |
|
973 | self.set_mergeable(mergeable) | |
974 | if not enable_notifications: |
|
974 | if not enable_notifications: | |
@@ -1005,6 +1005,7 b' class PRTestUtility(object):' | |||||
1005 | 'target_ref': self._default_branch_reference(target_head), |
|
1005 | 'target_ref': self._default_branch_reference(target_head), | |
1006 | 'revisions': [self.commit_ids[r] for r in revisions], |
|
1006 | 'revisions': [self.commit_ids[r] for r in revisions], | |
1007 | 'reviewers': reviewers or self._get_reviewers(), |
|
1007 | 'reviewers': reviewers or self._get_reviewers(), | |
|
1008 | 'observers': observers or self._get_observers(), | |||
1008 | 'title': title, |
|
1009 | 'title': title, | |
1009 | 'description': description, |
|
1010 | 'description': description, | |
1010 | } |
|
1011 | } | |
@@ -1037,9 +1038,15 b' class PRTestUtility(object):' | |||||
1037 | return reference |
|
1038 | return reference | |
1038 |
|
1039 | |||
1039 | def _get_reviewers(self): |
|
1040 | def _get_reviewers(self): | |
|
1041 | role = PullRequestReviewers.ROLE_REVIEWER | |||
1040 | return [ |
|
1042 | return [ | |
1041 | (TEST_USER_REGULAR_LOGIN, ['default1'], False, []), |
|
1043 | (TEST_USER_REGULAR_LOGIN, ['default1'], False, role, []), | |
1042 | (TEST_USER_REGULAR2_LOGIN, ['default2'], False, []), |
|
1044 | (TEST_USER_REGULAR2_LOGIN, ['default2'], False, role, []), | |
|
1045 | ] | |||
|
1046 | ||||
|
1047 | def _get_observers(self): | |||
|
1048 | return [ | |||
|
1049 | ||||
1043 | ] |
|
1050 | ] | |
1044 |
|
1051 | |||
1045 | def update_source_repository(self, head=None): |
|
1052 | def update_source_repository(self, head=None): |
General Comments 0
You need to be logged in to leave comments.
Login now