[copr] bkabrda-workspace: Pull applying for permissions into logic (f2a4319)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Tue Nov 27 12:51:24 UTC 2012


Repository : http://git.fedorahosted.org/cgit/copr.git

On branch  : bkabrda-workspace

>---------------------------------------------------------------

commit f2a4319461104bb959988a7c88498de760f88f95
Author: Bohuslav Kabrda <bkabrda at 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).\



More information about the copr-devel mailing list