Mercurial > public > src > rhodecode
diff pylons_app/model/repo_model.py @ 393:a26f48ad7a8a
fixes issue #16 reimplementation of database repository, for using generic pk instead of repo naming as pk. Which caused to many problems.
Fixed issue when redirecting after repo name change to 404.
Removed update hook from basic app setup
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 27 Jul 2010 14:53:22 +0200 |
parents | b0715a788432 |
children | f5c1eec9f376 |
line wrap: on
line diff
--- a/pylons_app/model/repo_model.py Tue Jul 27 14:48:13 2010 +0200 +++ b/pylons_app/model/repo_model.py Tue Jul 27 14:53:22 2010 +0200 @@ -16,21 +16,20 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. - """ Created on Jun 5, 2010 model for handling repositories actions @author: marcink """ -from pylons_app.model.meta import Session +from datetime import datetime +from pylons import app_globals as g +from pylons_app.lib.utils import check_repo from pylons_app.model.db import Repository, Repo2Perm, User, Permission -import shutil +from pylons_app.model.meta import Session +import logging import os -from datetime import datetime -from pylons_app.lib.utils import check_repo -from pylons import app_globals as g +import shutil import traceback -import logging log = logging.getLogger(__name__) class RepoModel(object): @@ -39,7 +38,7 @@ self.sa = Session() def get(self, id): - return self.sa.query(Repository).get(id) + return self.sa.query(Repository).filter(Repository.repo_name == id).scalar() def get_users_js(self): @@ -51,42 +50,49 @@ return users_array - def update(self, repo_id, form_data): + def update(self, repo_name, form_data): try: - if repo_id != form_data['repo_name']: - #rename our data - self.__rename_repo(repo_id, form_data['repo_name']) - cur_repo = self.sa.query(Repository).get(repo_id) - for k, v in form_data.items(): - if k == 'user': - cur_repo.user_id = v - else: - setattr(cur_repo, k, v) - + #update permissions for username, perm in form_data['perms_updates']: r2p = self.sa.query(Repo2Perm)\ .filter(Repo2Perm.user == self.sa.query(User)\ .filter(User.username == username).one())\ - .filter(Repo2Perm.repository == repo_id).one() + .filter(Repo2Perm.repository == self.get(repo_name))\ + .one() r2p.permission_id = self.sa.query(Permission).filter( Permission.permission_name == perm).one().permission_id self.sa.add(r2p) + #set new permissions for username, perm in form_data['perms_new']: r2p = Repo2Perm() - r2p.repository = repo_id + r2p.repository = self.get(repo_name) r2p.user = self.sa.query(User)\ .filter(User.username == username).one() r2p.permission_id = self.sa.query(Permission).filter( - Permission.permission_name == - perm).one().permission_id + Permission.permission_name == perm)\ + .one().permission_id self.sa.add(r2p) - + + #update current repo + cur_repo = self.get(repo_name) + + for k, v in form_data.items(): + if k == 'user': + cur_repo.user_id = v + else: + setattr(cur_repo, k, v) + self.sa.add(cur_repo) + + if repo_name != form_data['repo_name']: + #rename our data + self.__rename_repo(repo_name, form_data['repo_name']) + self.sa.commit() except: log.error(traceback.format_exc()) @@ -102,7 +108,7 @@ new_repo.user_id = cur_user.user_id self.sa.add(new_repo) - + #create default permission repo2perm = Repo2Perm() default_perm = 'repository.none' if form_data['private'] \ @@ -111,7 +117,7 @@ .filter(Permission.permission_name == default_perm)\ .one().permission_id - repo2perm.repository = repo_name + repo2perm.repository_id = new_repo.repo_id repo2perm.user_id = self.sa.query(User)\ .filter(User.username == 'default').one().user_id @@ -133,10 +139,12 @@ log.error(traceback.format_exc()) self.sa.rollback() raise + def delete_perm_user(self, form_data, repo_name): try: - r2p = self.sa.query(Repo2Perm).filter(Repo2Perm.repository == repo_name)\ - .filter(Repo2Perm.user_id == form_data['user_id']).delete() + self.sa.query(Repo2Perm)\ + .filter(Repo2Perm.repository == self.get(repo_name))\ + .filter(Repo2Perm.user_id == form_data['user_id']).delete() self.sa.commit() except: log.error(traceback.format_exc())