diff --git a/pylons_app/model/repo_model.py b/pylons_app/model/repo_model.py --- a/pylons_app/model/repo_model.py +++ b/pylons_app/model/repo_model.py @@ -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 @@ class RepoModel(object): 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 @@ class RepoModel(object): 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 @@ class RepoModel(object): 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 @@ class RepoModel(object): .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 @@ class RepoModel(object): 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())