Mercurial > public > src > rhodecode
diff pylons_app/model/repo_model.py @ 309:29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 25 Jun 2010 02:09:33 +0200 |
parents | 0e5455fda8fd |
children | 15e96b5a2685 |
line wrap: on
line diff
--- a/pylons_app/model/repo_model.py Fri Jun 25 02:06:45 2010 +0200 +++ b/pylons_app/model/repo_model.py Fri Jun 25 02:09:33 2010 +0200 @@ -23,12 +23,13 @@ @author: marcink """ from pylons_app.model.meta import Session -from pylons_app.model.db import Repository +from pylons_app.model.db import Repository, Repo2Perm, User, Permission import shutil import os from datetime import datetime from pylons_app.lib.utils import check_repo from pylons import app_globals as g +import traceback import logging log = logging.getLogger(__name__) @@ -41,36 +42,73 @@ return self.sa.query(Repository).get(id) - def update(self, id, form_data): + def update(self, repo_id, form_data): try: - if id != form_data['repo_name']: - self.__rename_repo(id, form_data['repo_name']) - cur_repo = self.sa.query(Repository).get(id) + if repo_id != form_data['repo_name']: + 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() + r2p.permission_id = self.sa.query(Permission).filter( + Permission.permission_name == + perm).one().permission_id + self.sa.add(r2p) + + for username, perm in form_data['perms_new']: + r2p = Repo2Perm() + r2p.repository = repo_id + 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 + self.sa.add(r2p) + self.sa.add(cur_repo) self.sa.commit() - except Exception as e: - log.error(e) + except: + log.error(traceback.format_exc()) self.sa.rollback() raise - def create(self, form_data, cur_user): + def create(self, form_data, cur_user, just_db=False): try: + repo_name = form_data['repo_name'] new_repo = Repository() for k, v in form_data.items(): setattr(new_repo, k, v) new_repo.user_id = cur_user.user_id self.sa.add(new_repo) + + #create default permission + repo2perm = Repo2Perm() + repo2perm.permission_id = self.sa.query(Permission)\ + .filter(Permission.permission_name == 'repository.read')\ + .one().permission_id + + repo2perm.repository = repo_name + repo2perm.user_id = self.sa.query(User)\ + .filter(User.username == 'default').one().user_id + + self.sa.add(repo2perm) self.sa.commit() - self.__create_repo(form_data['repo_name']) - except Exception as e: - log.error(e) + if not just_db: + self.__create_repo(repo_name) + except: + log.error(traceback.format_exc()) self.sa.rollback() raise @@ -79,8 +117,8 @@ self.sa.delete(repo) self.sa.commit() self.__delete_repo(repo.repo_name) - except Exception as e: - log.error(e) + except: + log.error(traceback.format_exc()) self.sa.rollback() raise @@ -103,4 +141,5 @@ #disable hg shutil.move(os.path.join(rm_path, '.hg'), os.path.join(rm_path, 'rm__.hg')) #disable repo - shutil.move(rm_path, os.path.join(g.base_path, 'rm__%s-%s' % (datetime.today(), id))) + shutil.move(rm_path, os.path.join(g.base_path, 'rm__%s__%s' \ + % (datetime.today(), name)))