Mercurial > kallithea
diff rhodecode/controllers/admin/repos.py @ 1722:e7eef7a1db6a beta
#235 forking page repo group selection
- group is selected as parent repo
- refactoring of session behavior to get more atomic operations in models
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 26 Nov 2011 00:11:32 +0200 |
parents | 2c0d35e336b5 |
children | 8ecc6b8229a5 |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py Fri Nov 25 20:48:16 2011 +0200 +++ b/rhodecode/controllers/admin/repos.py Sat Nov 26 00:11:32 2011 +0200 @@ -29,9 +29,10 @@ from formencode import htmlfill from paste.httpexceptions import HTTPInternalServerError -from pylons import request, response, session, tmpl_context as c, url -from pylons.controllers.util import abort, redirect +from pylons import request, session, tmpl_context as c, url +from pylons.controllers.util import redirect from pylons.i18n.translation import _ +from sqlalchemy.exc import IntegrityError from rhodecode.lib import helpers as h from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ @@ -39,11 +40,11 @@ from rhodecode.lib.base import BaseController, render from rhodecode.lib.utils import invalidate_cache, action_logger, repo_name_slug from rhodecode.lib.helpers import get_token +from rhodecode.model.meta import Session from rhodecode.model.db import User, Repository, UserFollowing, RepoGroup from rhodecode.model.forms import RepoForm from rhodecode.model.scm import ScmModel from rhodecode.model.repo import RepoModel -from sqlalchemy.exc import IntegrityError log = logging.getLogger(__name__) @@ -65,7 +66,7 @@ def __load_defaults(self): c.repo_groups = RepoGroup.groups_choices() c.repo_groups_choices = map(lambda k: unicode(k[0]), c.repo_groups) - + repo_model = RepoModel() c.users_array = repo_model.get_users_js() c.users_groups_array = repo_model.get_users_groups_js() @@ -127,13 +128,13 @@ """ POST /repos: Create a new item""" # url('repos') - repo_model = RepoModel() + self.__load_defaults() form_result = {} try: form_result = RepoForm(repo_groups=c.repo_groups_choices)()\ .to_python(dict(request.POST)) - repo_model.create(form_result, self.rhodecode_user) + RepoModel().create(form_result, self.rhodecode_user) if form_result['clone_uri']: h.flash(_('created repository %s from %s') \ % (form_result['repo_name'], form_result['clone_uri']), @@ -143,13 +144,13 @@ category='success') if request.POST.get('user_created'): - #created by regular non admin user + # created by regular non admin user action_logger(self.rhodecode_user, 'user_created_repo', form_result['repo_name_full'], '', self.sa) else: action_logger(self.rhodecode_user, 'admin_created_repo', form_result['repo_name_full'], '', self.sa) - + Session().commit() except formencode.Invalid, errors: c.new_repo = errors.value['repo_name'] @@ -207,7 +208,7 @@ changed_name = repo.repo_name action_logger(self.rhodecode_user, 'admin_updated_repo', changed_name, '', self.sa) - + Session().commit() except formencode.Invalid, errors: defaults = self.__load_data(repo_name) defaults.update(errors.value) @@ -251,7 +252,7 @@ repo_model.delete(repo) invalidate_cache('get_repo_cached_%s' % repo_name) h.flash(_('deleted repository %s') % repo_name, category='success') - + Session().commit() except IntegrityError, e: if e.message.find('repositories_fork_id_fkey'): log.error(traceback.format_exc())