Mercurial > kallithea
annotate rhodecode/model/repo.py @ 3021:b2b93614a7cd beta
Implemented #658 Changing username in LDAP-Mode should not be allowed.
Those username are autocreated, changing them will end up with new account creation after user logs
in again
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 23 Nov 2012 21:57:40 +0100 |
parents | d37b79ad0ae8 |
children | 6104dfd35b16 |
rev | line source |
---|---|
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
1 # -*- coding: utf-8 -*- |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
2 """ |
811 | 3 rhodecode.model.repo |
4 ~~~~~~~~~~~~~~~~~~~~ | |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
5 |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
6 Repository model for rhodecode |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
7 |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
8 :created_on: Jun 5, 2010 |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
9 :author: marcink |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
12 """ |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
13 # This program is free software: you can redistribute it and/or modify |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
14 # it under the terms of the GNU General Public License as published by |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
15 # the Free Software Foundation, either version 3 of the License, or |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
16 # (at your option) any later version. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
17 # |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
21 # GNU General Public License for more details. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
22 # |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
2404
a3efdd61a21f
Git Hooks are automatically installed in new repos
Marcin Kuzminski <marcin@python-works.com>
parents:
2327
diff
changeset
|
25 from __future__ import with_statement |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
26 import os |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
27 import shutil |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
28 import logging |
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
29 import traceback |
367
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
30 from datetime import datetime |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
31 |
2007
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
2003
diff
changeset
|
32 from rhodecode.lib.vcs.backends import get_backend |
2142
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
33 from rhodecode.lib.compat import json |
2109 | 34 from rhodecode.lib.utils2 import LazyProperty, safe_str, safe_unicode |
1669
f522f4d3bf93
moved caching query to libs
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
35 from rhodecode.lib.caching_query import FromCache |
2904
1b275d04ac07
#595 add rcextension hook for repository delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2820
diff
changeset
|
36 from rhodecode.lib.hooks import log_create_repository, log_delete_repository |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1393
diff
changeset
|
37 |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
38 from rhodecode.model import BaseModel |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
39 from rhodecode.model.db import Repository, UserRepoToPerm, User, Permission, \ |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
40 Statistics, UsersGroup, UsersGroupRepoToPerm, RhodeCodeUi, RepoGroup |
2142
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
41 from rhodecode.lib import helpers as h |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
42 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
43 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
44 log = logging.getLogger(__name__) |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
45 |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
46 |
752
89b9037d68b7
fixed Example celery config to ampq,
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
47 class RepoModel(BaseModel): |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
48 |
2522
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2432
diff
changeset
|
49 cls = Repository |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
50 URL_SEPARATOR = Repository.url_sep() |
2522
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2432
diff
changeset
|
51 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
52 def __get_users_group(self, users_group): |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
53 return self._get_instance(UsersGroup, users_group, |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
54 callback=UsersGroup.get_by_group_name) |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
55 |
2631
f597cfb492f9
Added quick links for editing permissions for users from permission overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2621
diff
changeset
|
56 def _get_repos_group(self, repos_group): |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
57 return self._get_instance(RepoGroup, repos_group, |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
58 callback=RepoGroup.get_by_group_name) |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
59 |
1036
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
60 @LazyProperty |
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
61 def repos_path(self): |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
62 """ |
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
63 Get's the repositories root path from database |
1036
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
64 """ |
1017
ade3414a8b61
Fixed problems with repository creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1015
diff
changeset
|
65 |
1036
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
66 q = self.sa.query(RhodeCodeUi).filter(RhodeCodeUi.ui_key == '/').one() |
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
67 return q.ui_value |
1013
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
68 |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
69 def get(self, repo_id, cache=False): |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
70 repo = self.sa.query(Repository)\ |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
71 .filter(Repository.repo_id == repo_id) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
72 |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
73 if cache: |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
74 repo = repo.options(FromCache("sql_cache_short", |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
75 "get_repo_%s" % repo_id)) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
76 return repo.scalar() |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
77 |
2010
14dffcfebb02
API get_user and get_repo methods can fetch by id or names
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
78 def get_repo(self, repository): |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
79 return self._get_repo(repository) |
2010
14dffcfebb02
API get_user and get_repo methods can fetch by id or names
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
80 |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
81 def get_by_repo_name(self, repo_name, cache=False): |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
82 repo = self.sa.query(Repository)\ |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
83 .filter(Repository.repo_name == repo_name) |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
84 |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
85 if cache: |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
86 repo = repo.options(FromCache("sql_cache_short", |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
87 "get_repo_%s" % repo_name)) |
752
89b9037d68b7
fixed Example celery config to ampq,
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
88 return repo.scalar() |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
708
diff
changeset
|
89 |
298
15e96b5a2685
autocomplete for repository managment of users
Marcin Kuzminski <marcin@python-works.com>
parents:
296
diff
changeset
|
90 def get_users_js(self): |
328
cec5cbc956c0
Repository managment permissions, fixed found bugs updated js, added extra checks for doubled users and non active ones
Marcin Kuzminski <marcin@python-works.com>
parents:
299
diff
changeset
|
91 users = self.sa.query(User).filter(User.active == True).all() |
2142
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
92 return json.dumps([ |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
93 { |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
94 'id': u.user_id, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
95 'fname': u.name, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
96 'lname': u.lastname, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
97 'nname': u.username, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
98 'gravatar_lnk': h.gravatar_url(u.email, 14) |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
99 } for u in users] |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
100 ) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
101 |
1013
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
102 def get_users_groups_js(self): |
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
103 users_groups = self.sa.query(UsersGroup)\ |
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
104 .filter(UsersGroup.users_group_active == True).all() |
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
105 |
2142
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
106 return json.dumps([ |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
107 { |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
108 'id': gr.users_group_id, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
109 'grname': gr.users_group_name, |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
110 'grmembers': len(gr.members), |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
111 } for gr in users_groups] |
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
112 ) |
1013
d2a840b29858
#56 hacking on forms, and model for users groups
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
113 |
1594 | 114 def _get_defaults(self, repo_name): |
115 """ | |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
116 Get's information about repository, and returns a dict for |
1594 | 117 usage in forms |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
118 |
1594 | 119 :param repo_name: |
120 """ | |
121 | |
122 repo_info = Repository.get_by_repo_name(repo_name) | |
123 | |
124 if repo_info is None: | |
125 return None | |
126 | |
127 defaults = repo_info.get_dict() | |
128 group, repo_name = repo_info.groups_and_repo | |
129 defaults['repo_name'] = repo_name | |
130 defaults['repo_group'] = getattr(group[-1] if group else None, | |
131 'group_id', None) | |
132 | |
133 # fill owner | |
134 if repo_info.user: | |
135 defaults.update({'user': repo_info.user.username}) | |
136 else: | |
137 replacement_user = User.query().filter(User.admin == | |
138 True).first().username | |
139 defaults.update({'user': replacement_user}) | |
140 | |
141 # fill repository users | |
142 for p in repo_info.repo_to_perm: | |
143 defaults.update({'u_perm_%s' % p.user.username: | |
144 p.permission.permission_name}) | |
145 | |
146 # fill repository groups | |
147 for p in repo_info.users_group_to_perm: | |
148 defaults.update({'g_perm_%s' % p.users_group.users_group_name: | |
149 p.permission.permission_name}) | |
150 | |
151 return defaults | |
152 | |
367
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
153 def update(self, repo_name, form_data): |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
154 try: |
822
d5a71348ee4d
small code fixes to repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
811
diff
changeset
|
155 cur_repo = self.get_by_repo_name(repo_name, cache=False) |
367
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
156 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
157 # update permissions |
1014
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
158 for member, perm, member_type in form_data['perms_updates']: |
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
159 if member_type == 'user': |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
160 # this updates existing one |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
161 RepoModel().grant_user_permission( |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
162 repo=cur_repo, user=member, perm=perm |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
163 ) |
1014
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
164 else: |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
165 RepoModel().grant_users_group_permission( |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
166 repo=cur_repo, group_name=member, perm=perm |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
167 ) |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
168 # set new permissions |
1014
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
169 for member, perm, member_type in form_data['perms_new']: |
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
170 if member_type == 'user': |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
171 RepoModel().grant_user_permission( |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
172 repo=cur_repo, user=member, perm=perm |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
173 ) |
1014
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1013
diff
changeset
|
174 else: |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
175 RepoModel().grant_users_group_permission( |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
176 repo=cur_repo, group_name=member, perm=perm |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
177 ) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
178 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
179 # update current repo |
367
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
180 for k, v in form_data.items(): |
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
181 if k == 'user': |
1530
04027bdb876c
Refactoring of model get functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1517
diff
changeset
|
182 cur_repo.user = User.get_by_username(v) |
1323
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1271
diff
changeset
|
183 elif k == 'repo_name': |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
184 pass |
1379
7ca0b584c912
fixes #205 db value was not set to none after moving out of group
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
185 elif k == 'repo_group': |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
186 cur_repo.group = RepoGroup.get(v) |
1323
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1271
diff
changeset
|
187 |
367
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
188 else: |
a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Marcin Kuzminski <marcin@python-works.com>
parents:
356
diff
changeset
|
189 setattr(cur_repo, k, v) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
190 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
191 new_name = cur_repo.get_new_name(form_data['repo_name']) |
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
192 cur_repo.repo_name = new_name |
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
193 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
194 self.sa.add(cur_repo) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
195 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
196 if repo_name != new_name: |
1323
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1271
diff
changeset
|
197 # rename repository |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
198 self.__rename_repo(old=repo_name, new=new_name) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
199 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
200 return cur_repo |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
201 except: |
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
202 log.error(traceback.format_exc()) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
203 raise |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
204 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
205 def create_repo(self, repo_name, repo_type, description, owner, |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
206 private=False, clone_uri=None, repos_group=None, |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
207 landing_rev='tip', just_db=False, fork_of=None, |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
208 copy_fork_permissions=False): |
2652
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
209 """ |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
210 Create repository |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
211 |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
212 """ |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
213 from rhodecode.model.scm import ScmModel |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1361
diff
changeset
|
214 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
215 owner = self._get_user(owner) |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
216 fork_of = self._get_repo(fork_of) |
2631
f597cfb492f9
Added quick links for editing permissions for users from permission overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2621
diff
changeset
|
217 repos_group = self._get_repos_group(repos_group) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
218 try: |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
219 |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
220 # repo name is just a name of repository |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
221 # while repo_name_full is a full qualified name that is combined |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
222 # with name and path of group |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
223 repo_name_full = repo_name |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
224 repo_name = repo_name.split(self.URL_SEPARATOR)[-1] |
1361
87ca17540603
fixed #47 adding a new repo that have a group chosen had wrong paths.
Marcin Kuzminski <marcin@python-works.com>
parents:
1351
diff
changeset
|
225 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
226 new_repo = Repository() |
1075
f726a939d2d4
Enable statistics are disabled by default now
Marcin Kuzminski <marcin@python-works.com>
parents:
1045
diff
changeset
|
227 new_repo.enable_statistics = False |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
228 new_repo.repo_name = repo_name_full |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
229 new_repo.repo_type = repo_type |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
230 new_repo.user = owner |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
231 new_repo.group = repos_group |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
232 new_repo.description = description or repo_name |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
233 new_repo.private = private |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
234 new_repo.clone_uri = clone_uri |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
235 new_repo.landing_rev = landing_rev |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
236 |
2755
839ee7a774ab
inherit locking from parent
Marcin Kuzminski <marcin@python-works.com>
parents:
2652
diff
changeset
|
237 if repos_group: |
839ee7a774ab
inherit locking from parent
Marcin Kuzminski <marcin@python-works.com>
parents:
2652
diff
changeset
|
238 new_repo.enable_locking = repos_group.enable_locking |
839ee7a774ab
inherit locking from parent
Marcin Kuzminski <marcin@python-works.com>
parents:
2652
diff
changeset
|
239 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
240 if fork_of: |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
241 parent_repo = fork_of |
530
a08f610e545e
Implemented server side forks
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
242 new_repo.fork = parent_repo |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
243 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
244 self.sa.add(new_repo) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
245 |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
246 def _create_default_perms(): |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
247 # create default permission |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
248 repo_to_perm = UserRepoToPerm() |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
249 default = 'repository.read' |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
250 for p in User.get_by_username('default').user_perms: |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
251 if p.permission.permission_name.startswith('repository.'): |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
252 default = p.permission.permission_name |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
253 break |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
254 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
255 default_perm = 'repository.none' if private else default |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
256 |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
257 repo_to_perm.permission_id = self.sa.query(Permission)\ |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
258 .filter(Permission.permission_name == default_perm)\ |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
259 .one().permission_id |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
260 |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
261 repo_to_perm.repository = new_repo |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
262 repo_to_perm.user_id = User.get_by_username('default').user_id |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
263 |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
264 self.sa.add(repo_to_perm) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
265 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
266 if fork_of: |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
267 if copy_fork_permissions: |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
268 repo = fork_of |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
269 user_perms = UserRepoToPerm.query()\ |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
270 .filter(UserRepoToPerm.repository == repo).all() |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
271 group_perms = UsersGroupRepoToPerm.query()\ |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
272 .filter(UsersGroupRepoToPerm.repository == repo).all() |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
273 |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
274 for perm in user_perms: |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
275 UserRepoToPerm.create(perm.user, new_repo, |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
276 perm.permission) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
277 |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
278 for perm in group_perms: |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
279 UsersGroupRepoToPerm.create(perm.users_group, new_repo, |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
280 perm.permission) |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
281 else: |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
282 _create_default_perms() |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
283 else: |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
284 _create_default_perms() |
1028
f42ee60e673b
fixed issue with db transaction when filesystem creation of repository failed
Marcin Kuzminski <marcin@python-works.com>
parents:
1020
diff
changeset
|
285 |
f42ee60e673b
fixed issue with db transaction when filesystem creation of repository failed
Marcin Kuzminski <marcin@python-works.com>
parents:
1020
diff
changeset
|
286 if not just_db: |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
287 self.__create_repo(repo_name, repo_type, |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
288 repos_group, |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
289 clone_uri) |
2185
eac0d6194783
fixed repo_create hooks for forks
Marcin Kuzminski <marcin@python-works.com>
parents:
2142
diff
changeset
|
290 log_create_repository(new_repo.get_dict(), |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
291 created_by=owner.username) |
2621
4f3ecd7357a2
Removed stupid code that assumed we have vcs instance after just creating it in database.
Marcin Kuzminski <marcin@python-works.com>
parents:
2618
diff
changeset
|
292 |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
293 # now automatically start following this repository as owner |
786
2889a4446960
when new repo is created make user follow it automatically,
Marcin Kuzminski <marcin@python-works.com>
parents:
752
diff
changeset
|
294 ScmModel(self.sa).toggle_following_repo(new_repo.repo_id, |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
295 owner.user_id) |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
296 return new_repo |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
297 except: |
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
298 log.error(traceback.format_exc()) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
299 raise |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
300 |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
301 def create(self, form_data, cur_user, just_db=False, fork=None): |
2652
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
302 """ |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
303 Backward compatibility function, just a wrapper on top of create_repo |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
304 |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
305 :param form_data: |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
306 :param cur_user: |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
307 :param just_db: |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
308 :param fork: |
532ee86cf9b1
Refactored create fork function to use new RepoModel functions instead of old
Marcin Kuzminski <marcin@python-works.com>
parents:
2631
diff
changeset
|
309 """ |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
310 |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
311 repo_name = form_data['repo_name_full'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
312 repo_type = form_data['repo_type'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
313 description = form_data['description'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
314 owner = cur_user |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
315 private = form_data['private'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
316 clone_uri = form_data.get('clone_uri') |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
317 repos_group = form_data['repo_group'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
318 landing_rev = form_data['landing_rev'] |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
319 copy_fork_permissions = form_data.get('copy_permissions') |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
320 fork_of = form_data.get('fork_parent_id') |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
321 return self.create_repo( |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
322 repo_name, repo_type, description, owner, private, clone_uri, |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
323 repos_group, landing_rev, just_db, fork_of, copy_fork_permissions |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
324 ) |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
325 |
530
a08f610e545e
Implemented server side forks
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
326 def create_fork(self, form_data, cur_user): |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
327 """ |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
328 Simple wrapper into executing celery task for fork creation |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
329 |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
330 :param form_data: |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
331 :param cur_user: |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
332 """ |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
333 from rhodecode.lib.celerylib import tasks, run_task |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
334 run_task(tasks.create_repo_fork, form_data, cur_user) |
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
335 |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
336 def delete(self, repo): |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
337 repo = self._get_repo(repo) |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
338 if repo: |
2904
1b275d04ac07
#595 add rcextension hook for repository delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2820
diff
changeset
|
339 old_repo_dict = repo.get_dict() |
1b275d04ac07
#595 add rcextension hook for repository delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2820
diff
changeset
|
340 owner = repo.user |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
341 try: |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
342 self.sa.delete(repo) |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
343 self.__delete_repo(repo) |
2904
1b275d04ac07
#595 add rcextension hook for repository delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2820
diff
changeset
|
344 log_delete_repository(old_repo_dict, |
1b275d04ac07
#595 add rcextension hook for repository delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2820
diff
changeset
|
345 deleted_by=owner.username) |
2524
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
346 except: |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
347 log.error(traceback.format_exc()) |
9d4b80743a2a
New repo model create function
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
348 raise |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
349 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
350 def grant_user_permission(self, repo, user, perm): |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
351 """ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
352 Grant permission for user on given repository, or update existing one |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
353 if found |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
354 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
355 :param repo: Instance of Repository, repository_id, or repository name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
356 :param user: Instance of User, user_id or username |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
357 :param perm: Instance of Permission, or permission_name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
358 """ |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
359 user = self._get_user(user) |
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
360 repo = self._get_repo(repo) |
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
361 permission = self._get_perm(perm) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
362 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
363 # check if we have that permission already |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
364 obj = self.sa.query(UserRepoToPerm)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
365 .filter(UserRepoToPerm.user == user)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
366 .filter(UserRepoToPerm.repository == repo)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
367 .scalar() |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
368 if obj is None: |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
369 # create new ! |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
370 obj = UserRepoToPerm() |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
371 obj.repository = repo |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
372 obj.user = user |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
373 obj.permission = permission |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
374 self.sa.add(obj) |
2820
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
375 log.debug('Granted perm %s to %s on %s' % (perm, user, repo)) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
376 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
377 def revoke_user_permission(self, repo, user): |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
378 """ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
379 Revoke permission for user on given repository |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
380 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
381 :param repo: Instance of Repository, repository_id, or repository name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
382 :param user: Instance of User, user_id or username |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
383 """ |
2142
a21eab6ff42f
Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
384 |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
385 user = self._get_user(user) |
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
386 repo = self._get_repo(repo) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
387 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
388 obj = self.sa.query(UserRepoToPerm)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
389 .filter(UserRepoToPerm.repository == repo)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
390 .filter(UserRepoToPerm.user == user)\ |
2820
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
391 .scalar() |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
392 if obj: |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
393 self.sa.delete(obj) |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
394 log.debug('Revoked perm on %s on %s' % (repo, user)) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
395 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
396 def grant_users_group_permission(self, repo, group_name, perm): |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
397 """ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
398 Grant permission for users group on given repository, or update |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
399 existing one if found |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
400 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
401 :param repo: Instance of Repository, repository_id, or repository name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
402 :param group_name: Instance of UserGroup, users_group_id, |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
403 or users group name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
404 :param perm: Instance of Permission, or permission_name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
405 """ |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
406 repo = self._get_repo(repo) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
407 group_name = self.__get_users_group(group_name) |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
408 permission = self._get_perm(perm) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
409 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
410 # check if we have that permission already |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
411 obj = self.sa.query(UsersGroupRepoToPerm)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
412 .filter(UsersGroupRepoToPerm.users_group == group_name)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
413 .filter(UsersGroupRepoToPerm.repository == repo)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
414 .scalar() |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
415 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
416 if obj is None: |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
417 # create new |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
418 obj = UsersGroupRepoToPerm() |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
419 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
420 obj.repository = repo |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
421 obj.users_group = group_name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
422 obj.permission = permission |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
423 self.sa.add(obj) |
2820
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
424 log.debug('Granted perm %s to %s on %s' % (perm, group_name, repo)) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
425 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
426 def revoke_users_group_permission(self, repo, group_name): |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
427 """ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
428 Revoke permission for users group on given repository |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
429 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
430 :param repo: Instance of Repository, repository_id, or repository name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
431 :param group_name: Instance of UserGroup, users_group_id, |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
432 or users group name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
433 """ |
2432
d3ac7491a5c8
Share common getter functions in base model, and remove duplicated functions from other models
Marcin Kuzminski <marcin@python-works.com>
parents:
2411
diff
changeset
|
434 repo = self._get_repo(repo) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
435 group_name = self.__get_users_group(group_name) |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
436 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
437 obj = self.sa.query(UsersGroupRepoToPerm)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
438 .filter(UsersGroupRepoToPerm.repository == repo)\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
439 .filter(UsersGroupRepoToPerm.users_group == group_name)\ |
2820
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
440 .scalar() |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
441 if obj: |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
442 self.sa.delete(obj) |
c0cc8f8a71b0
Permissions on group can be set in recursive mode setting defined permission to all children
Marcin Kuzminski <marcin@python-works.com>
parents:
2755
diff
changeset
|
443 log.debug('Revoked perm to %s on %s' % (repo, group_name)) |
1015
65129c332d37
#56 added ajax removal of users groups,
Marcin Kuzminski <marcin@python-works.com>
parents:
1014
diff
changeset
|
444 |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
445 def delete_stats(self, repo_name): |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
446 """ |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
447 removes stats for given repo |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
448 |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
449 :param repo_name: |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
450 """ |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
451 try: |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
452 obj = self.sa.query(Statistics)\ |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
453 .filter(Statistics.repository == |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
454 self.get_by_repo_name(repo_name))\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
455 .one() |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
456 self.sa.delete(obj) |
708
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
457 except: |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
458 log.error(traceback.format_exc()) |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
459 raise |
b9bbc0d6e9f3
added cache reset, stats reset, and delete into repository settings in admin.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
460 |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
461 def __create_repo(self, repo_name, alias, parent, clone_uri=False): |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
462 """ |
1361
87ca17540603
fixed #47 adding a new repo that have a group chosen had wrong paths.
Marcin Kuzminski <marcin@python-works.com>
parents:
1351
diff
changeset
|
463 makes repository on filesystem. It's group aware means it'll create |
87ca17540603
fixed #47 adding a new repo that have a group chosen had wrong paths.
Marcin Kuzminski <marcin@python-works.com>
parents:
1351
diff
changeset
|
464 a repository within a group, and alter the paths accordingly of |
87ca17540603
fixed #47 adding a new repo that have a group chosen had wrong paths.
Marcin Kuzminski <marcin@python-works.com>
parents:
1351
diff
changeset
|
465 group location |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
466 |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
467 :param repo_name: |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
468 :param alias: |
1350
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
469 :param parent_id: |
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
470 :param clone_uri: |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
471 """ |
1594 | 472 from rhodecode.lib.utils import is_valid_repo, is_valid_repos_group |
2618
e1370dcb9908
Created install_git_hook more verbose version of previos code.
Marcin Kuzminski <marcin@python-works.com>
parents:
2592
diff
changeset
|
473 from rhodecode.model.scm import ScmModel |
1517
142a05597cba
assure that we don't have an empty description when creating a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
474 |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
475 if parent: |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2524
diff
changeset
|
476 new_parent_path = os.sep.join(parent.full_path_splitted) |
1350
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
477 else: |
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
478 new_parent_path = '' |
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
479 |
1973
0a46e8f1b7aa
fixed issue with logger crashing on mixed str and unicode
Marcin Kuzminski <marcin@python-works.com>
parents:
1972
diff
changeset
|
480 # we need to make it str for mercurial |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
481 repo_path = os.path.join(*map(lambda x: safe_str(x), |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1393
diff
changeset
|
482 [self.repos_path, new_parent_path, repo_name])) |
1350
eb489bf9d7c7
#47 fixed group aware on adding new repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1323
diff
changeset
|
483 |
1550
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
484 # check if this path is not a repository |
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
485 if is_valid_repo(repo_path, self.repos_path): |
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
486 raise Exception('This path %s is a valid repository' % repo_path) |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1393
diff
changeset
|
487 |
1550
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
488 # check if this path is a group |
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
489 if is_valid_repos_group(repo_path, self.repos_path): |
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
490 raise Exception('This path %s is a valid group' % repo_path) |
1594 | 491 |
1973
0a46e8f1b7aa
fixed issue with logger crashing on mixed str and unicode
Marcin Kuzminski <marcin@python-works.com>
parents:
1972
diff
changeset
|
492 log.info('creating repo %s in %s @ %s' % ( |
0a46e8f1b7aa
fixed issue with logger crashing on mixed str and unicode
Marcin Kuzminski <marcin@python-works.com>
parents:
1972
diff
changeset
|
493 repo_name, safe_unicode(repo_path), clone_uri |
0a46e8f1b7aa
fixed issue with logger crashing on mixed str and unicode
Marcin Kuzminski <marcin@python-works.com>
parents:
1972
diff
changeset
|
494 ) |
0a46e8f1b7aa
fixed issue with logger crashing on mixed str and unicode
Marcin Kuzminski <marcin@python-works.com>
parents:
1972
diff
changeset
|
495 ) |
1550
6f468ba37650
fixes #266 Rhodecode allows to create repo with the same name and in the same parent as group
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
496 backend = get_backend(alias) |
2321
75280665ad1e
init bare repos for git now by default. This is recommended setup for remotes repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2185
diff
changeset
|
497 if alias == 'hg': |
75280665ad1e
init bare repos for git now by default. This is recommended setup for remotes repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2185
diff
changeset
|
498 backend(repo_path, create=True, src_url=clone_uri) |
75280665ad1e
init bare repos for git now by default. This is recommended setup for remotes repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2185
diff
changeset
|
499 elif alias == 'git': |
2404
a3efdd61a21f
Git Hooks are automatically installed in new repos
Marcin Kuzminski <marcin@python-works.com>
parents:
2327
diff
changeset
|
500 r = backend(repo_path, create=True, src_url=clone_uri, bare=True) |
a3efdd61a21f
Git Hooks are automatically installed in new repos
Marcin Kuzminski <marcin@python-works.com>
parents:
2327
diff
changeset
|
501 # add rhodecode hook into this repo |
2618
e1370dcb9908
Created install_git_hook more verbose version of previos code.
Marcin Kuzminski <marcin@python-works.com>
parents:
2592
diff
changeset
|
502 ScmModel().install_git_hook(repo=r) |
2321
75280665ad1e
init bare repos for git now by default. This is recommended setup for remotes repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2185
diff
changeset
|
503 else: |
75280665ad1e
init bare repos for git now by default. This is recommended setup for remotes repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2185
diff
changeset
|
504 raise Exception('Undefined alias %s' % alias) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
505 |
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
506 def __rename_repo(self, old, new): |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
507 """ |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
508 renames repository on filesystem |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
509 |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
510 :param old: old name |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
511 :param new: new name |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
512 """ |
1976 | 513 log.info('renaming repo from %s to %s' % (old, new)) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
514 |
1036
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
515 old_path = os.path.join(self.repos_path, old) |
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
516 new_path = os.path.join(self.repos_path, new) |
356
b0715a788432
Added new style error display,
Marcin Kuzminski <marcin@python-works.com>
parents:
328
diff
changeset
|
517 if os.path.isdir(new_path): |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
518 raise Exception( |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
519 'Was trying to rename to already existing dir %s' % new_path |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
520 ) |
265
0e5455fda8fd
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
521 shutil.move(old_path, new_path) |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
522 |
668
dff6d5cb8bba
fixed deletion of repository on filesystem, works based on scm type for git and hg.
Marcin Kuzminski <marcin@python-works.com>
parents:
659
diff
changeset
|
523 def __delete_repo(self, repo): |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
524 """ |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
525 removes repo from filesystem, the removal is acctually made by |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
526 added rm__ prefix into dir, and rename internat .hg/.git dirs so this |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
527 repository is no longer valid for rhodecode, can be undeleted later on |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
528 by reverting the renames on this repository |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1119
diff
changeset
|
529 |
787
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
530 :param repo: repo object |
4502ceec31be
docs update for repo model
Marcin Kuzminski <marcin@python-works.com>
parents:
786
diff
changeset
|
531 """ |
1036
405b80e4ccd5
Major refactoring, removed when possible calls to app globals.
Marcin Kuzminski <marcin@python-works.com>
parents:
1028
diff
changeset
|
532 rm_path = os.path.join(self.repos_path, repo.repo_name) |
1976 | 533 log.info("Removing %s" % (rm_path)) |
2327
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
534 # disable hg/git internal that it doesn't get detected as repo |
668
dff6d5cb8bba
fixed deletion of repository on filesystem, works based on scm type for git and hg.
Marcin Kuzminski <marcin@python-works.com>
parents:
659
diff
changeset
|
535 alias = repo.repo_type |
2327
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
536 |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
537 bare = getattr(repo.scm_instance, 'bare', False) |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
538 |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
539 if not bare: |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
540 # skip this for bare git repos |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
541 shutil.move(os.path.join(rm_path, '.%s' % alias), |
69b836e383df
don't disable .git directory for bare repos on deleting, ref #413
Marcin Kuzminski <marcin@python-works.com>
parents:
2321
diff
changeset
|
542 os.path.join(rm_path, 'rm__.%s' % alias)) |
1749
8ecc6b8229a5
commit less models
Marcin Kuzminski <marcin@python-works.com>
parents:
1729
diff
changeset
|
543 # disable repo |
2553
069e13b4dddc
removed %f from datetime formatting doesn't work on py25 :/
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
544 _now = datetime.now() |
2592
f6800c5e5b2d
fill miliseconds with 0 since it can return <6 digit number
Marcin Kuzminski <marcin@python-works.com>
parents:
2553
diff
changeset
|
545 _ms = str(_now.microsecond).rjust(6, '0') |
2553
069e13b4dddc
removed %f from datetime formatting doesn't work on py25 :/
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
546 _d = 'rm__%s__%s' % (_now.strftime('%Y%m%d_%H%M%S_' + _ms), |
2949
d37b79ad0ae8
Fixed issue with rm__ system that put removed repos in root location, it can lead to making a heavy copy, and remove operation.
Marcin Kuzminski <marcin@python-works.com>
parents:
2904
diff
changeset
|
547 repo.just_name) |
d37b79ad0ae8
Fixed issue with rm__ system that put removed repos in root location, it can lead to making a heavy copy, and remove operation.
Marcin Kuzminski <marcin@python-works.com>
parents:
2904
diff
changeset
|
548 if repo.group: |
d37b79ad0ae8
Fixed issue with rm__ system that put removed repos in root location, it can lead to making a heavy copy, and remove operation.
Marcin Kuzminski <marcin@python-works.com>
parents:
2904
diff
changeset
|
549 args = repo.group.full_path_splitted + [_d] |
d37b79ad0ae8
Fixed issue with rm__ system that put removed repos in root location, it can lead to making a heavy copy, and remove operation.
Marcin Kuzminski <marcin@python-works.com>
parents:
2904
diff
changeset
|
550 _d = os.path.join(*args) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
551 shutil.move(rm_path, os.path.join(self.repos_path, _d)) |