Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
---------------------------------------------------------------
commit f2a4319461104bb959988a7c88498de760f88f95
Author: Bohuslav Kabrda <bkabrda(a)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).\