Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
commit f2a4319461104bb959988a7c88498de760f88f95 Author: Bohuslav Kabrda bkabrda@redhat.com Date: Tue Nov 27 13:51:12 2012 +0100
Pull applying for permissions into logic
coprs_frontend/coprs/logic/coprs_logic.py | 21 +++++++++++++++ .../coprs/views/coprs_ns/coprs_general.py | 27 +++++-------------- .../tests/test_views/test_coprs_ns/test_general.py | 2 +- 3 files changed, 29 insertions(+), 21 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py index 98371e0..2ec3184 100644 --- a/coprs_frontend/coprs/logic/coprs_logic.py +++ b/coprs_frontend/coprs/logic/coprs_logic.py @@ -83,5 +83,26 @@ class CoprsPermissionLogic(object): db.session.add(copr_permission)
@classmethod + def update_permissions_by_applier(cls, user, copr, copr_permission, new_builder, new_admin): + approved_num = helpers.PermissionEnum.num('Approved') + if copr_permission: + prev_builder = permission.copr_builder + prev_admin = permission.copr_admin + # if we had Approved before, we can have it now, otherwise not + if new_builder == approved_num and prev_builder != new_builder or \ + new_admin == approved_num and prev_admin != new_admin: + raise exceptions.InsufficientRightsException('User can't approve himself.') + else: + copr_permission.copr_builder = new_builder + copr_permission.copr_admin = new_admin + else: + if new_builder == approved_num or new_admin == approved_num: + raise exceptions.InsufficientRightsException('User can't approve himself.') + else: + perm = models.CoprPermission(user = user, copr = copr, copr_builder = new_builder, copr_admin = new_admin) + cls.new(user, perm) + + + @classmethod def delete(cls, user, copr_permission): db.session.delete(copr_permission) diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py index 8c4c2c0..68c26c1 100644 --- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py +++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py @@ -3,6 +3,7 @@ import time import flask
from coprs import db, page_not_found +from coprs import exceptions from coprs import forms from coprs import helpers from coprs import models @@ -152,27 +153,13 @@ def copr_permissions_applier_change(username, coprname): else: # TODO: pull this into logic new_builder = int(applier_permissions_form.copr_builder.data) new_admin = int(applier_permissions_form.copr_admin.data) - approved_num = helpers.PermissionEnum.num('Approved') - if permission: - prev_builder = permission.copr_builder - prev_admin = permission.copr_admin - # if we had Approved before, we can have it now, otherwise not - if new_builder == approved_num and prev_builder != new_builder or \ - new_admin == approved_num and prev_admin != new_admin: - flask.flash('User can't approve himself.') - else: - permission.copr_builder = new_builder - permission.copr_admin = new_admin - db.session.commit() - flask.flash('Successfuly updated permissions in Copr "{0}".'.format(copr.name)) + try: + coprs_logic.CoprsPermissionLogic.update_permissions_by_applier(flask.g.user, copr, permission, new_builder, new_admin) + except exceptions.InsufficientRightsException as ex: + flask.flash(ex.message) else: - if new_builder == approved_num or new_admin == approved_num: - flask.flash('User can't approve himself.') - else: - perm = models.CoprPermission(user = flask.g.user, copr = copr, copr_builder = new_builder, copr_admin = new_admin) - coprs_logic.CoprsPermissionLogic.new(flask.g.user, perm) - db.session.commit() - flask.flash('Successfuly applied for permissions in Copr "{0}".'.format(copr.name)) + flask.flash('Successfuly updated permissions do Copr "{0}".'.format(copr.name)) + db.session.commit()
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
diff --git a/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py b/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py index d02c473..9793245 100644 --- a/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py +++ b/coprs_frontend/tests/test_views/test_coprs_ns/test_general.py @@ -184,7 +184,7 @@ class TestCoprApplyForPermissions(CoprsTestCase): r = c.post('/coprs/detail/{0}/{1}/permissions_applier_change/'.format(self.u1.name, self.c1.name), data = {'copr_builder': 1, 'copr_admin': 0}, follow_redirects = True) - assert 'Successfuly applied' in r.data + assert 'Successfuly updated' in r.data
self.db.session.add_all([self.u1, self.u2, self.c1]) new_perm = self.models.CoprPermission.query.filter(self.models.CoprPermission.user_id == self.u2.id).\
copr-devel@lists.fedorahosted.org