[copr] bkabrda-workspace: More fixes (7b39efd)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 7b39efdb2a66b1609506e919b0436286a9f8d72c
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 13:06:21 2012 +0100
More fixes
>---------------------------------------------------------------
wsgi/coprs/views/coprs_ns/coprs_general.py | 4 ++--
wsgi/tests/coprs_test_case.py | 2 +-
.../tests/test_views/test_coprs_ns/test_general.py | 1 -
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/wsgi/coprs/views/coprs_ns/coprs_general.py b/wsgi/coprs/views/coprs_ns/coprs_general.py
index 0a3cccf..d370bbf 100644
--- a/wsgi/coprs/views/coprs_ns/coprs_general.py
+++ b/wsgi/coprs/views/coprs_ns/coprs_general.py
@@ -189,8 +189,8 @@ def copr_update_permissions(username, coprname):
if permissions_form.validate_on_submit():
# we don't change owner (yet)
for perm in permissions:
- copr_builder = helpers.PermissionEnum.num('Asked')
- copr_admin = helpers.PermissionEnum.num('Asked')
+ copr_builder = helpers.PermissionEnum.num('Request')
+ copr_admin = helpers.PermissionEnum.num('Request')
if permissions_form['copr_builder_{0}'.format(perm.user_id)].data:
copr_builder = helpers.PermissionEnum.num('Approved')
if permissions_form['copr_admin_{0}'.format(perm.user_id)].data:
diff --git a/wsgi/tests/coprs_test_case.py b/wsgi/tests/coprs_test_case.py
index 1ddd094..3aa7496 100644
--- a/wsgi/tests/coprs_test_case.py
+++ b/wsgi/tests/coprs_test_case.py
@@ -59,7 +59,7 @@ class CoprsTestCase(object):
def f_copr_permissions(self):
self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, copr_builder = helpers.PermissionEnum.num('Approved'), copr_admin = helpers.PermissionEnum.num('No Action'))
self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, copr_builder = helpers.PermissionEnum.num('No Action'), copr_admin = helpers.PermissionEnum.num('No Action'))
- self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, copr_builder = helpers.PermissionEnum.num('Requested'), copr_admin = helpers.PermissionEnum.num('Approved'))
+ self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, copr_builder = helpers.PermissionEnum.num('Request'), copr_admin = helpers.PermissionEnum.num('Approved'))
self.db.session.add_all([self.cp1, self.cp2, self.cp3])
self.db.session.commit()
diff --git a/wsgi/tests/test_views/test_coprs_ns/test_general.py b/wsgi/tests/test_views/test_coprs_ns/test_general.py
index 5cd3457..d5088cf 100644
--- a/wsgi/tests/test_views/test_coprs_ns/test_general.py
+++ b/wsgi/tests/test_views/test_coprs_ns/test_general.py
@@ -157,7 +157,6 @@ class TestCoprEdit(CoprsTestCase):
self.db.session.add_all([self.u2, self.c3])
r = c.get('/coprs/detail/{0}/{1}/edit/'.format(self.u2.name, self.c3.name))
- print r.data
assert r.data.count('No Action') == 2
assert '<input id="copr_builder_1" name="copr_builder_1" type="checkbox" value="y">' in r.data
assert '<input checked id="copr_admin_1" name="copr_admin_1" type="checkbox" value="y">' in r.data
11 years, 4 months
[copr] bkabrda-workspace: Make the enum fail fast instead of returning None (bdea269)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit bdea269979e248f0cd3b7a1bb9128740e7a2688b
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 13:05:50 2012 +0100
Make the enum fail fast instead of returning None
>---------------------------------------------------------------
wsgi/coprs/helpers.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/wsgi/coprs/helpers.py b/wsgi/coprs/helpers.py
index 6eae1e2..c2bf632 100644
--- a/wsgi/coprs/helpers.py
+++ b/wsgi/coprs/helpers.py
@@ -13,14 +13,14 @@ class PermissionEnum(object):
@classmethod
def num(cls, key):
- return cls.vals.get(key, None)
+ return cls.vals[key]
@classmethod
def key(cls, num):
for k, n in cls.vals.items():
if n == num:
return k
- return None
+ raise KeyError('num {0} is not mapped'.format(num))
@classmethod
def choices_list(cls, without = 2):
11 years, 4 months
[copr] bkabrda-workspace: Couple of fixes and adapted tests (d470a3a)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit d470a3a2ce2326e1fc27de4785c88e2683f463ed
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 13:01:29 2012 +0100
Couple of fixes and adapted tests
>---------------------------------------------------------------
wsgi/coprs/templates/coprs/_permissions_table.html | 6 ++--
wsgi/coprs/views/coprs_ns/coprs_general.py | 11 ++++++--
.../tests/test_views/test_coprs_ns/test_general.py | 24 +++++++------------
3 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/wsgi/coprs/templates/coprs/_permissions_table.html b/wsgi/coprs/templates/coprs/_permissions_table.html
index 8434f4b..78ff2ff 100644
--- a/wsgi/coprs/templates/coprs/_permissions_table.html
+++ b/wsgi/coprs/templates/coprs/_permissions_table.html
@@ -1,6 +1,6 @@
{% macro permissions_table(permissions, copr, permissions_applier_form) %}
{% if permissions or permissions_applier_form %}
- {% if permissions_applier_form %}
+ {% if permissions_applier_form and g.user %}
<form action="{{ url_for('coprs_ns.copr_permissions_applier_change', username = copr.owner.name, coprname = copr.name)}}" method=post>
{{ permissions_applier_form.csrf_token }}
{% endif %}
@@ -11,7 +11,7 @@
<tr><td>{{ perm.user.name }}</td><td>{{ perm.copr_builder|perm_type_from_num }}</td><td>{{ perm.copr_admin|perm_type_from_num }}</tr>
{% endif %}
{% endfor %}
- {% if permissions_applier_form %}
+ {% if permissions_applier_form and g.user %}
<tr>
<td>{{ g.user.name }}</td>
<td>{{ permissions_applier_form.copr_builder|safe }}</td>
@@ -19,7 +19,7 @@
</tr>
{% endif %}
</table>
- {% if permissions_applier_form %}
+ {% if permissions_applier_form and g.user %}
<input type=submit value=Submit>
</form>
{% endif %}
diff --git a/wsgi/coprs/views/coprs_ns/coprs_general.py b/wsgi/coprs/views/coprs_ns/coprs_general.py
index 2adc495..0a3cccf 100644
--- a/wsgi/coprs/views/coprs_ns/coprs_general.py
+++ b/wsgi/coprs/views/coprs_ns/coprs_general.py
@@ -78,7 +78,12 @@ def copr_detail(username, coprname):
return page_not_found('Copr with name {0} does not exist.'.format(coprname))
permissions = coprs_logic.CoprsPermissionLogic.get_for_copr(flask.g.user, copr).all()
- permission_applier_form = forms.PermissionsApplierFormFactory.create_form_cls(flask.g.user.permissions_for_copr(copr))()
+ if flask.g.user:
+ user_perm = flask.g.user.permissions_for_copr(copr)
+ else:
+ user_perm = None
+
+ permission_applier_form = forms.PermissionsApplierFormFactory.create_form_cls(user_perm)()
return flask.render_template('coprs/detail.html',
copr = copr,
build_form = build_form,
@@ -144,8 +149,8 @@ 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:
- approved_num = helpers.PermissionEnum.num('Approved')
prev_builder = permission.copr_builder
prev_admin = permission.copr_admin
# if we had Approved before, we can have it now, otherwise not
@@ -158,7 +163,7 @@ def copr_permissions_applier_change(username, coprname):
db.session.commit()
flask.flash('Successfuly updated your permissions in Copr "{0}".'.format(copr.name))
else:
- if new_builder == approved_num or new_admin == aproved_num:
+ 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)
diff --git a/wsgi/tests/test_views/test_coprs_ns/test_general.py b/wsgi/tests/test_views/test_coprs_ns/test_general.py
index af8ebe1..5cd3457 100644
--- a/wsgi/tests/test_views/test_coprs_ns/test_general.py
+++ b/wsgi/tests/test_views/test_coprs_ns/test_general.py
@@ -119,32 +119,24 @@ class TestCoprDetail(CoprsTestCase):
r = self.tc.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c3.name))
assert '<form' not in r.data
- def test_copr_detail_allows_asking_for_building(self, f_users, f_coprs):
+ def test_copr_detail_allows_asking_for_permissions(self, f_users, f_coprs, f_copr_permissions):
with self.tc as c:
with c.session_transaction() as s:
s['openid'] = self.u1.openid_name
self.db.session.add_all([self.u2, self.c2])
r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
- assert '<input type=submit value="Apply for building">' in r.data
+ # u1 is approved builder, check for that
+ assert '<option selected value="2">Approved</option>' in r.data
- def test_copr_detail_doesnt_allow_owner_to_ask_for_building(self, f_users, f_coprs):
+ def test_copr_detail_doesnt_allow_owner_to_ask_for_permissions(self, f_users, f_coprs):
with self.tc as c:
with c.session_transaction() as s:
s['openid'] = self.u2.openid_name
self.db.session.add_all([self.u2, self.c2])
r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
- assert '<input type=submit value="Apply for building">' not in r.data
-
- def test_copr_detail_allows_giving_up_building(self, f_users, f_coprs, f_copr_permissions):
- with self.tc as c:
- with c.session_transaction() as s:
- s['openid'] = self.u1.openid_name
-
- self.db.session.add_all([self.u2, self.c2])
- r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
- assert '<input type=submit value="Give up building">' in r.data
+ assert '/permissions_applier_change/' not in r.data
class TestCoprEdit(CoprsTestCase):
def test_edit_prefills_id(self, f_users, f_coprs):
@@ -165,8 +157,10 @@ class TestCoprEdit(CoprsTestCase):
self.db.session.add_all([self.u2, self.c3])
r = c.get('/coprs/detail/{0}/{1}/edit/'.format(self.u2.name, self.c3.name))
- assert '<input id="user_3" name="user_3" type="checkbox" value="y">' in r.data
- assert '<input id="user_1" name="user_1" type="checkbox" value="y">' in r.data
+ print r.data
+ assert r.data.count('No Action') == 2
+ assert '<input id="copr_builder_1" name="copr_builder_1" type="checkbox" value="y">' in r.data
+ assert '<input checked id="copr_admin_1" name="copr_admin_1" type="checkbox" value="y">' in r.data
class TestCoprUpdate(CoprsTestCase):
11 years, 4 months
[copr] bkabrda-workspace: Typo... (0af4a30)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 0af4a3021119481b571760178aa9518e6c699be6
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 12:35:01 2012 +0100
Typo...
>---------------------------------------------------------------
wsgi/tests/test_views/test_coprs_ns/test_builds.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/wsgi/tests/test_views/test_coprs_ns/test_builds.py b/wsgi/tests/test_views/test_coprs_ns/test_builds.py
index 0408ccf..375c998 100644
--- a/wsgi/tests/test_views/test_coprs_ns/test_builds.py
+++ b/wsgi/tests/test_views/test_coprs_ns/test_builds.py
@@ -66,7 +66,7 @@ class TestCoprCancelBuild(CoprsTestCase):
self.db.session.add(self.b1)
assert self.b1.canceled == True
- def test_copr_build_non_submitter_can_cancel_build(self, f_users, f_coprs, f_builds):
+ def test_copr_build_non_submitter_cannot_cancel_build(self, f_users, f_coprs, f_builds):
with self.tc as c:
with c.session_transaction() as s:
s['openid'] = self.u2.openid_name
11 years, 4 months
[copr] bkabrda-workspace: Refresh test fixtures, fix one logics function (2e0ada3)
by bkabrda@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 2e0ada3e4b7efb072487c4db4a4d4718ddd65318
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 12:34:13 2012 +0100
Refresh test fixtures, fix one logics function
>---------------------------------------------------------------
wsgi/coprs/logic/coprs_logic.py | 3 ++-
wsgi/tests/coprs_test_case.py | 7 ++++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/wsgi/coprs/logic/coprs_logic.py b/wsgi/coprs/logic/coprs_logic.py
index 1d57372..98371e0 100644
--- a/wsgi/coprs/logic/coprs_logic.py
+++ b/wsgi/coprs/logic/coprs_logic.py
@@ -1,5 +1,6 @@
from coprs import db
from coprs import exceptions
+from coprs import helpers
from coprs import models
class CoprsLogic(object):
@@ -34,7 +35,7 @@ class CoprsLogic(object):
elif user_relation == 'allowed':
aliased_user = db.aliased(models.User)
query = query.join(models.CoprPermission, models.Copr.copr_permissions).\
- filter(models.CoprPermission.copr_builder == True).\
+ filter(models.CoprPermission.copr_builder == helpers.PermissionEnum.num('Approved')).\
join(aliased_user, models.CoprPermission.user).\
filter(aliased_user.openid_name == models.User.openidize_name(username))
return query
diff --git a/wsgi/tests/coprs_test_case.py b/wsgi/tests/coprs_test_case.py
index 8aad8d8..1ddd094 100644
--- a/wsgi/tests/coprs_test_case.py
+++ b/wsgi/tests/coprs_test_case.py
@@ -5,6 +5,7 @@ import pytest
import coprs
+from coprs import helpers
from coprs import models
class CoprsTestCase(object):
@@ -56,9 +57,9 @@ class CoprsTestCase(object):
@pytest.fixture
def f_copr_permissions(self):
- self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, copr_builder = True, copr_admin = False)
- self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, copr_builder = False, copr_admin = False)
- self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, copr_builder = False, copr_admin = True)
+ self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, copr_builder = helpers.PermissionEnum.num('Approved'), copr_admin = helpers.PermissionEnum.num('No Action'))
+ self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, copr_builder = helpers.PermissionEnum.num('No Action'), copr_admin = helpers.PermissionEnum.num('No Action'))
+ self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, copr_builder = helpers.PermissionEnum.num('Requested'), copr_admin = helpers.PermissionEnum.num('Approved'))
self.db.session.add_all([self.cp1, self.cp2, self.cp3])
self.db.session.commit()
11 years, 4 months
[copr] bkabrda-workspace: Huge load of changes that make the new permissions work (10ef19c)
by bkabrda@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 10ef19cb5a0ea54d7a02b933257e2558b7c37315
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 12:23:35 2012 +0100
Huge load of changes that make the new permissions work
>---------------------------------------------------------------
wsgi/coprs/filters.py | 5 ++
wsgi/coprs/forms.py | 39 ++++++++++-
wsgi/coprs/helpers.py | 10 ++-
wsgi/coprs/models.py | 5 +-
wsgi/coprs/templates/coprs/_coprs_forms.html | 30 ++++----
wsgi/coprs/templates/coprs/_permissions_table.html | 25 ++++++-
wsgi/coprs/templates/coprs/detail.html | 27 +++-----
wsgi/coprs/views/coprs_ns/coprs_general.py | 76 +++++++++++--------
8 files changed, 144 insertions(+), 73 deletions(-)
diff --git a/wsgi/coprs/filters.py b/wsgi/coprs/filters.py
index 7173b8a..b166bde 100644
--- a/wsgi/coprs/filters.py
+++ b/wsgi/coprs/filters.py
@@ -1,7 +1,12 @@
import time
from coprs import app
+from coprs import helpers
@app.template_filter('date_from_secs')
def date_from_secs(secs):
return time.strftime('%m-%d-%y %H:%M:%S', time.gmtime(secs)) if secs else None
+
+(a)app.template_filter('perm_type_from_num')
+def perm_type_from_num(num):
+ return helpers.PermissionEnum.key(num)
diff --git a/wsgi/coprs/forms.py b/wsgi/coprs/forms.py
index 4d061b9..8755a13 100644
--- a/wsgi/coprs/forms.py
+++ b/wsgi/coprs/forms.py
@@ -102,6 +102,34 @@ class BuildForm(wtf.Form):
validators = [wtf.NumberRange(min = constants.MIN_BUILD_TIMEOUT, max = constants.MAX_BUILD_TIMEOUT)],
default = constants.DEFAULT_BUILD_TIMEOUT)
+class PermissionsApplierFormFactory(object):
+ @staticmethod
+ def create_form_cls(permission = None):
+ class F(wtf.Form):
+ pass
+
+ approved_num = helpers.PermissionEnum.num('Approved')
+ build_without = approved_num
+ admin_without = approved_num
+
+ if permission:
+ if permission.copr_builder == approved_num:
+ build_without = None
+
+ if permission.copr_admin == approved_num:
+ admin_without = None
+
+ builder_choices = helpers.PermissionEnum.choices_list(build_without)
+ admin_choices = helpers.PermissionEnum.choices_list(admin_without)
+
+ builder_default = permission.copr_builder if permission else helpers.PermissionEnum.num('No Action')
+ admin_default = permission.copr_admin if permission else helpers.PermissionEnum.num('No Action')
+
+ setattr(F, 'copr_builder', wtf.SelectField('Copr Builder', choices = builder_choices, default = builder_default))
+ setattr(F, 'copr_admin', wtf.SelectField('Copr Admin', choices = admin_choices, default = admin_default))
+
+ return F
+
class DynamicPermissionsFormFactory(object):
"""Creates a dynamic form for given set of copr permissions"""
@staticmethod
@@ -110,6 +138,15 @@ class DynamicPermissionsFormFactory(object):
pass
for perm in permissions:
- setattr(F, 'user_{0}'.format(perm.user.id), wtf.BooleanField(default = perm.copr_builder))
+ copr_builder_default = False
+ if perm.copr_builder == helpers.PermissionEnum.num('Approved'):
+ copr_builder_default = True
+
+ copr_admin_default = False
+ if perm.copr_admin == helpers.PermissionEnum.num('Approved'):
+ copr_admin_default = True
+
+ setattr(F, 'copr_builder_{0}'.format(perm.user.id), wtf.BooleanField(default = copr_builder_default))
+ setattr(F, 'copr_admin_{0}'.format(perm.user.id), wtf.BooleanField(default = copr_admin_default))
return F
diff --git a/wsgi/coprs/helpers.py b/wsgi/coprs/helpers.py
index c1fbe7a..6eae1e2 100644
--- a/wsgi/coprs/helpers.py
+++ b/wsgi/coprs/helpers.py
@@ -9,19 +9,23 @@ def chroots():
for arch in arches]
class PermissionEnum(object):
- vals = {'No Permission': 0, 'Asked': 1, 'Approved': 2}
+ vals = {'No Action': 0, 'Request': 1, 'Approved': 2}
@classmethod
def num(cls, key):
- return vals.get(key, None)
+ return cls.vals.get(key, None)
@classmethod
def key(cls, num):
- for k, n in cls.vals:
+ for k, n in cls.vals.items():
if n == num:
return k
return None
+ @classmethod
+ def choices_list(cls, without = 2):
+ return [(n, k) for k, n in cls.vals.items() if n != without]
+
class Paginator(object):
def __init__(self, query, total_count, page = 1, per_page_override = None, urls_count_override = None):
self.query = query
diff --git a/wsgi/coprs/models.py b/wsgi/coprs/models.py
index 8e12799..63f5259 100644
--- a/wsgi/coprs/models.py
+++ b/wsgi/coprs/models.py
@@ -1,5 +1,6 @@
from coprs import constants
from coprs import db
+from coprs import helpers
class Serializer(object):
def to_dict(self, options = {}):
@@ -70,7 +71,7 @@ class User(db.Model, Serializer):
can_build = False
if copr.owner == self:
can_build = True
- if self.permissions_for_copr(copr) and self.permissions_for_copr(copr).copr_builder == True:
+ if self.permissions_for_copr(copr) and self.permissions_for_copr(copr).copr_builder == helpers.PermissionEnum.num('Approved'):
can_build = True
return can_build
@@ -79,7 +80,7 @@ class User(db.Model, Serializer):
can_edit = False
if copr.owner == self:
can_edit = True
- if self.permissions_for_copr(copr) and self.permissions_for_copr.copr_admin == True:
+ if self.permissions_for_copr(copr) and self.permissions_for_copr.copr_admin == helpers.PermissionEnum.num('Approved'):
can_edit = True
return can_edit
diff --git a/wsgi/coprs/templates/coprs/_coprs_forms.html b/wsgi/coprs/templates/coprs/_coprs_forms.html
index 0031919..02c632e 100644
--- a/wsgi/coprs/templates/coprs/_coprs_forms.html
+++ b/wsgi/coprs/templates/coprs/_coprs_forms.html
@@ -20,9 +20,23 @@
<form action="{{ url_for('coprs_ns.copr_update_permissions', username = copr.owner.name, coprname = copr.name) }}" method=post>
{{ form.csrf_token }}
<table class=permissions-table>
- <tr><th>Username</th><th>Allowed to build</th></tr>
+ <tr><th>Username</th><th>Is Builder</th><th>Is Admin</th></tr>
{% for perm in permissions %}
- <tr><td>{{ perm.user.name }}</td><td>{{ form['user_{0}'.format(perm.user.id)] }}</td></tr>
+ <tr>
+ <td>{{ perm.user.name }}</td>
+ <td>
+ {{ perm.copr_builder|perm_type_from_num }}
+ {% if perm.copr_builder != 0 %}
+ {{ form['copr_builder_{0}'.format(perm.user.id)] }}
+ {% endif %}
+ </td>
+ <td>
+ {{ perm.copr_admin|perm_type_from_num }}
+ {% if perm.copr_admin != 0 %}
+ {{ form['copr_admin_{0}'.format(perm.user.id)] }}
+ {% endif %}
+ </td>
+ </tr>
{% endfor %}
</table>
<dd><input type=submit value=Save></dd>
@@ -54,15 +68,3 @@
</form>
{% endif %}
{% endmacro %}
-
-{% macro copr_apply_for_building(copr) %}
- <form action="{{ url_for('coprs_ns.copr_apply_for_building', username = copr.owner.name, coprname = copr.name) }}" method=post>
- <input type=submit value="Apply for building">
- </form>
-{% endmacro %}
-
-{% macro copr_give_up_building(copr) %}
- <form action="{{ url_for('coprs_ns.copr_give_up_building', username = copr.owner.name, coprname = copr.name) }}" method=post>
- <input type=submit value="Give up building">
- </form>
-{% endmacro %}
diff --git a/wsgi/coprs/templates/coprs/_permissions_table.html b/wsgi/coprs/templates/coprs/_permissions_table.html
index dd93e86..8434f4b 100644
--- a/wsgi/coprs/templates/coprs/_permissions_table.html
+++ b/wsgi/coprs/templates/coprs/_permissions_table.html
@@ -1,10 +1,27 @@
-{% macro permissions_table(permissions) %}
- {% if permissions %}
+{% macro permissions_table(permissions, copr, permissions_applier_form) %}
+ {% if permissions or permissions_applier_form %}
+ {% if permissions_applier_form %}
+ <form action="{{ url_for('coprs_ns.copr_permissions_applier_change', username = copr.owner.name, coprname = copr.name)}}" method=post>
+ {{ permissions_applier_form.csrf_token }}
+ {% endif %}
<table class=permissions-table>
- <tr><th>Username</th><th>Allowed to build</th></tr>
+ <tr><th>Username</th><th>Is Builder</th><th>Is Admin</th></tr>
{% for perm in permissions %}
- <tr><td>{{ perm.user.name }}</td><td>{{ perm.copr_builder }}</td></tr>
+ {% if perm.user_id != g.user.id %} {# if user is logged in, only display his form, not a row #}
+ <tr><td>{{ perm.user.name }}</td><td>{{ perm.copr_builder|perm_type_from_num }}</td><td>{{ perm.copr_admin|perm_type_from_num }}</tr>
+ {% endif %}
{% endfor %}
+ {% if permissions_applier_form %}
+ <tr>
+ <td>{{ g.user.name }}</td>
+ <td>{{ permissions_applier_form.copr_builder|safe }}</td>
+ <td>{{ permissions_applier_form.copr_admin|safe }}</td>
+ </tr>
+ {% endif %}
</table>
+ {% if permissions_applier_form %}
+ <input type=submit value=Submit>
+ </form>
+ {% endif %}
{% endif %}
{% endmacro %}
diff --git a/wsgi/coprs/templates/coprs/detail.html b/wsgi/coprs/templates/coprs/detail.html
index 271c8f6..2eb1989 100644
--- a/wsgi/coprs/templates/coprs/detail.html
+++ b/wsgi/coprs/templates/coprs/detail.html
@@ -2,11 +2,9 @@
{% block title %}{{ copr.owner.name }}/{{ copr.name }} Copr{% endblock %}
{% block header %}Information for Copr {{ copr.owner.name }}/{{ copr.name }}{% endblock %}
{% from "coprs/_builds_table.html" import builds_table %}
-{% from "coprs/_permissions_table.html" import permissions_table %}
+{% from "coprs/_permissions_table.html" import permissions_table with context%}
{% from "coprs/_coprs_forms.html" import copr_build_form,
- copr_build_cancel_form,
- copr_apply_for_building,
- copr_give_up_building with context %}
+ copr_build_cancel_form with context %}
{% block body %}
<h3>chroots</h3>
@@ -24,19 +22,14 @@
</ul>
{% endif %}
<h3>Permissions</h3>
- {{ permissions_table(permissions) }}
- {% if g.user %}
- {% if g.user != copr.owner %}
- {% if g.user.permissions_for_copr(copr) %}
- {{ copr_give_up_building(copr) }}
- {% else %}
- {{ copr_apply_for_building(copr) }}
- {% endif %}
- {% endif %}
- {% if g.user.can_build_in(copr) %}
- <h3>Build packages in this repo:</h3>
- {{ copr_build_form(form, 'coprs_ns.copr_add_build', copr) }}
- {% endif %}
+ {% if g.user.id == copr.owner_id %}
+ {{ permissions_table(permissions, copr, None) }}
+ {% else %}
+ {{ permissions_table(permissions, copr, permission_applier_form) }}
+ {% endif %}
+ {% if g.user and g.user.can_build_in(copr) %}
+ <h3>Build packages in this repo:</h3>
+ {{ copr_build_form(build_form, 'coprs_ns.copr_add_build', copr) }}
{% endif %}
{% if g.user and g.user.id == copr.owner_id %}
<a href="{{ url_for('coprs_ns.copr_edit', username = copr.owner.name, coprname = copr.name) }}">Edit this Copr</a>
diff --git a/wsgi/coprs/views/coprs_ns/coprs_general.py b/wsgi/coprs/views/coprs_ns/coprs_general.py
index 34207f7..2adc495 100644
--- a/wsgi/coprs/views/coprs_ns/coprs_general.py
+++ b/wsgi/coprs/views/coprs_ns/coprs_general.py
@@ -70,7 +70,7 @@ def copr_new():
@coprs_ns.route('/detail/<username>/<coprname>/')
def copr_detail(username, coprname):
- form = forms.BuildForm()
+ build_form = forms.BuildForm()
try: # query[0:10][0] will raise an index error, if Copr doesn't exist
query = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname, with_builds = True)
copr = query[0:10][0]# we retrieved all builds, but we got one copr in a list...
@@ -78,7 +78,12 @@ def copr_detail(username, coprname):
return page_not_found('Copr with name {0} does not exist.'.format(coprname))
permissions = coprs_logic.CoprsPermissionLogic.get_for_copr(flask.g.user, copr).all()
- return flask.render_template('coprs/detail.html', copr = copr, form = form, permissions = permissions)
+ permission_applier_form = forms.PermissionsApplierFormFactory.create_form_cls(flask.g.user.permissions_for_copr(copr))()
+ return flask.render_template('coprs/detail.html',
+ copr = copr,
+ build_form = build_form,
+ permission_applier_form = permission_applier_form,
+ permissions = permissions)
@coprs_ns.route('/detail/<username>/<coprname>/edit/')
@@ -125,46 +130,44 @@ def copr_update(username, coprname):
return flask.render_template('coprs/edit.html', copr = copr, form = form)
-(a)coprs_ns.route('/detail/<username>/<coprname>/apply_for_building/', methods = ['POST'])
+(a)coprs_ns.route('/detail/<username>/<coprname>/permissions_applier_change/', methods = ['POST'])
@login_required
-def copr_apply_for_building(username, coprname):
+def copr_permissions_applier_change(username, coprname):
copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first()
permission = coprs_logic.CoprsPermissionLogic.get(flask.g.user, copr, flask.g.user).first()
+ applier_permissions_form = forms.PermissionsApplierFormFactory.create_form_cls()()
if not copr:
return page_not_found('Copr with name {0} does not exist.'.format(name))
if copr.owner == flask.g.user:
flask.flash('Owner cannot request permissions for his own copr.')
- elif permission:
- flask.flash('You are already listed in permissions for Copr "{0}".'.format(copr.name))
- else:
- perm = models.CoprPermission(user = flask.g.user, copr = copr, copr_builder = False)
- coprs_logic.CoprsPermissionLogic.new(flask.g.user, perm)
- db.session.commit()
- flask.flash('You have successfuly applied for building in Copr "{0}".'.format(copr.name))
+ else: # TODO: pull this into logic
+ new_builder = int(applier_permissions_form.copr_builder.data)
+ new_admin = int(applier_permissions_form.copr_admin.data)
+ if permission:
+ approved_num = helpers.PermissionEnum.num('Approved')
+ 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 your permissions in Copr "{0}".'.format(copr.name))
+ else:
+ if new_builder == approved_num or new_admin == aproved_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))
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
-
-(a)coprs_ns.route('/detail/<username>/<coprname>/give_up_building/', methods = ['POST'])
-@login_required
-def copr_give_up_building(username, coprname):
- copr = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname).first()
- permission = coprs_logic.CoprsPermissionLogic.get(flask.g.user, copr, flask.g.user).first()
-
- if not copr:
- return page_not_found('Copr with name {0} does not exist.'.format(name))
-
- if not permission:
- flask.flash('You are already not in permissions for Copr "{0}".'.format(copr.name))
- else:
- coprs_logic.CoprsPermissionLogic.delete(flask.g.user, permission) # TODO: do we really want to delete this, or just inactivate?
- db.session.commit()
- flask.flash('You have successfuly given up building in Copr "{0}".'.format(copr.name))
-
- return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
-
-
@coprs_ns.route('/detail/<username>/<coprname>/update_permissions/', methods = ['POST'])
@login_required
def copr_update_permissions(username, coprname):
@@ -181,9 +184,18 @@ def copr_update_permissions(username, coprname):
if permissions_form.validate_on_submit():
# we don't change owner (yet)
for perm in permissions:
+ copr_builder = helpers.PermissionEnum.num('Asked')
+ copr_admin = helpers.PermissionEnum.num('Asked')
+ if permissions_form['copr_builder_{0}'.format(perm.user_id)].data:
+ copr_builder = helpers.PermissionEnum.num('Approved')
+ if permissions_form['copr_admin_{0}'.format(perm.user_id)].data:
+ copr_admin = helpers.PermissionEnum.num('Approved')
+
+
models.CoprPermission.query.filter(models.CoprPermission.copr_id == copr.id).\
filter(models.CoprPermission.user_id == perm.user_id).\
- update({'copr_builder': permissions_form['user_{0}'.format(perm.user_id)].data})
+ update({'copr_builder': copr_builder,
+ 'copr_admin': copr_admin})
db.session.commit()
flask.flash('Copr permissions were updated successfully.')
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
11 years, 4 months
[copr] bkabrda-workspace: Transfer permissions to enums (1776cca)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 1776ccac4cece215a9307aa478e76a8c210ec945
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 09:50:26 2012 +0100
Transfer permissions to enums
>---------------------------------------------------------------
...b_setup.py => 595a31c145fb_initial_db_setup.py} | 26 ++++++++++----------
wsgi/coprs/helpers.py | 13 ++++++++++
wsgi/coprs/models.py | 15 ++++++++++-
3 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py b/wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
similarity index 92%
rename from wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
rename to wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
index f8f8844..ee0ad30 100644
--- a/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
+++ b/wsgi/alembic/versions/595a31c145fb_initial_db_setup.py
@@ -1,13 +1,13 @@
"""Initial DB setup
-Revision ID: 2728f7ddff7d
+Revision ID: 595a31c145fb
Revises: None
-Create Date: 2012-11-26 08:14:58.017240
+Create Date: 2012-11-26 09:39:51.229910
"""
# revision identifiers, used by Alembic.
-revision = '2728f7ddff7d'
+revision = '595a31c145fb'
down_revision = None
from alembic import op
@@ -35,15 +35,6 @@ def upgrade():
sa.ForeignKeyConstraint(['owner_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
- op.create_table('copr_permission',
- sa.Column('copr_builder', sa.Boolean(), nullable=True),
- sa.Column('copr_admin', sa.Boolean(), nullable=True),
- sa.Column('user_id', sa.Integer(), nullable=False),
- sa.Column('copr_id', sa.Integer(), nullable=False),
- sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ),
- sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
- sa.PrimaryKeyConstraint('user_id', 'copr_id')
- )
op.create_table('build',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('pkgs', sa.Text(), nullable=True),
@@ -63,13 +54,22 @@ def upgrade():
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
+ op.create_table('copr_permission',
+ sa.Column('copr_builder', sa.SmallInteger(), nullable=True),
+ sa.Column('copr_admin', sa.SmallInteger(), nullable=True),
+ sa.Column('user_id', sa.Integer(), nullable=False),
+ sa.Column('copr_id', sa.Integer(), nullable=False),
+ sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
+ sa.PrimaryKeyConstraint('user_id', 'copr_id')
+ )
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
- op.drop_table('build')
op.drop_table('copr_permission')
+ op.drop_table('build')
op.drop_table('copr')
op.drop_table('user')
### end Alembic commands ###
diff --git a/wsgi/coprs/helpers.py b/wsgi/coprs/helpers.py
index c8498e9..c1fbe7a 100644
--- a/wsgi/coprs/helpers.py
+++ b/wsgi/coprs/helpers.py
@@ -8,6 +8,19 @@ def chroots():
return ['{0}-{1}'.format(rel, arch) for rel, arches in constants.CHROOTS.items()
for arch in arches]
+class PermissionEnum(object):
+ vals = {'No Permission': 0, 'Asked': 1, 'Approved': 2}
+
+ @classmethod
+ def num(cls, key):
+ return vals.get(key, None)
+
+ @classmethod
+ def key(cls, num):
+ for k, n in cls.vals:
+ if n == num:
+ return k
+ return None
class Paginator(object):
def __init__(self, query, total_count, page = 1, per_page_override = None, urls_count_override = None):
diff --git a/wsgi/coprs/models.py b/wsgi/coprs/models.py
index 8c094f9..8e12799 100644
--- a/wsgi/coprs/models.py
+++ b/wsgi/coprs/models.py
@@ -75,6 +75,15 @@ class User(db.Model, Serializer):
return can_build
+ def can_edit(self, copr):
+ can_edit = False
+ if copr.owner == self:
+ can_edit = True
+ if self.permissions_for_copr(copr) and self.permissions_for_copr.copr_admin == True:
+ can_edit = True
+
+ return can_edit
+
@classmethod
def openidize_name(cls, name):
return 'http://{0}.id.fedoraproject.org/'.format(name)
@@ -117,8 +126,10 @@ class Copr(db.Model, Serializer):
__mapper_args__ = {'order_by': id.desc()}
class CoprPermission(db.Model, Serializer):
- copr_builder = db.Column(db.Boolean, default = False)
- copr_admin = db.Column(db.Boolean, default = False)
+ # 0 = nothing, 1 = asked for, 2 = approved
+ # not using enum, as that translates to varchar on some DBs
+ copr_builder = db.Column(db.SmallInteger, default = 0)
+ copr_admin = db.Column(db.SmallInteger, default = 0)
# relations
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key = True)
11 years, 4 months
[copr] bkabrda-workspace: Fix tests after previous changes (f6a2268)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit f6a22684c02bd8e1546c0ba2b53449b929fa213e
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 08:28:25 2012 +0100
Fix tests after previous changes
>---------------------------------------------------------------
wsgi/tests/coprs_test_case.py | 12 ++++++------
.../tests/test_views/test_coprs_ns/test_general.py | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/wsgi/tests/coprs_test_case.py b/wsgi/tests/coprs_test_case.py
index 297b6c8..8aad8d8 100644
--- a/wsgi/tests/coprs_test_case.py
+++ b/wsgi/tests/coprs_test_case.py
@@ -28,9 +28,9 @@ class CoprsTestCase(object):
@pytest.fixture
def f_users(self):
- self.u1 = models.User(openid_name = 'http://user1.id.fedoraproject.org/', proven = False)
- self.u2 = models.User(openid_name = 'http://user2.id.fedoraproject.org/', proven = False)
- self.u3 = models.User(openid_name = 'http://user3.id.fedoraproject.org/', proven = False)
+ self.u1 = models.User(openid_name = 'http://user1.id.fedoraproject.org/', proven = False, mail = 'user1(a)foo.bar')
+ self.u2 = models.User(openid_name = 'http://user2.id.fedoraproject.org/', proven = False, mail = 'user2(a)spam.foo')
+ self.u3 = models.User(openid_name = 'http://user3.id.fedoraproject.org/', proven = False, mail = 'baz(a)bar.bar')
self.db.session.add_all([self.u1, self.u2, self.u3])
self.db.session.commit()
@@ -56,9 +56,9 @@ class CoprsTestCase(object):
@pytest.fixture
def f_copr_permissions(self):
- self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, approved = True)
- self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, approved = False)
- self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, approved = False)
+ self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, copr_builder = True, copr_admin = False)
+ self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, copr_builder = False, copr_admin = False)
+ self.cp3 = models.CoprPermission(copr = self.c3, user = self.u1, copr_builder = False, copr_admin = True)
self.db.session.add_all([self.cp1, self.cp2, self.cp3])
self.db.session.commit()
diff --git a/wsgi/tests/test_views/test_coprs_ns/test_general.py b/wsgi/tests/test_views/test_coprs_ns/test_general.py
index 4eb54c4..af8ebe1 100644
--- a/wsgi/tests/test_views/test_coprs_ns/test_general.py
+++ b/wsgi/tests/test_views/test_coprs_ns/test_general.py
@@ -196,7 +196,7 @@ class TestCoprApplyForBuilding(CoprsTestCase):
new_perm = self.models.CoprPermission.query.filter(self.models.CoprPermission.user_id == self.u2.id).\
filter(self.models.CoprPermission.copr_id == self.c1.id).\
first()
- assert not new_perm.approved
+ assert not new_perm.copr_builder
class TestCoprGiveUpBuilding(CoprsTestCase):
def test_give_up(self, f_users, f_coprs, f_copr_permissions):
11 years, 4 months
[copr] bkabrda-workspace: approved -> copr_builder (8a2bb64)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit 8a2bb645c5aef9eb66157f887b408a6b2ecbaf03
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 08:22:53 2012 +0100
approved -> copr_builder
>---------------------------------------------------------------
wsgi/coprs/forms.py | 2 +-
wsgi/coprs/logic/coprs_logic.py | 2 +-
wsgi/coprs/models.py | 2 +-
wsgi/coprs/templates/coprs/_permissions_table.html | 2 +-
wsgi/coprs/views/coprs_ns/coprs_general.py | 4 ++--
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/wsgi/coprs/forms.py b/wsgi/coprs/forms.py
index 3d71c72..4d061b9 100644
--- a/wsgi/coprs/forms.py
+++ b/wsgi/coprs/forms.py
@@ -110,6 +110,6 @@ class DynamicPermissionsFormFactory(object):
pass
for perm in permissions:
- setattr(F, 'user_{0}'.format(perm.user.id), wtf.BooleanField(default = perm.approved))
+ setattr(F, 'user_{0}'.format(perm.user.id), wtf.BooleanField(default = perm.copr_builder))
return F
diff --git a/wsgi/coprs/logic/coprs_logic.py b/wsgi/coprs/logic/coprs_logic.py
index f378de8..1d57372 100644
--- a/wsgi/coprs/logic/coprs_logic.py
+++ b/wsgi/coprs/logic/coprs_logic.py
@@ -34,7 +34,7 @@ class CoprsLogic(object):
elif user_relation == 'allowed':
aliased_user = db.aliased(models.User)
query = query.join(models.CoprPermission, models.Copr.copr_permissions).\
- filter(models.CoprPermission.approved == True).\
+ filter(models.CoprPermission.copr_builder == True).\
join(aliased_user, models.CoprPermission.user).\
filter(aliased_user.openid_name == models.User.openidize_name(username))
return query
diff --git a/wsgi/coprs/models.py b/wsgi/coprs/models.py
index e5b8937..8c094f9 100644
--- a/wsgi/coprs/models.py
+++ b/wsgi/coprs/models.py
@@ -70,7 +70,7 @@ class User(db.Model, Serializer):
can_build = False
if copr.owner == self:
can_build = True
- if self.permissions_for_copr(copr) and self.permissions_for_copr(copr).approved == True:
+ if self.permissions_for_copr(copr) and self.permissions_for_copr(copr).copr_builder == True:
can_build = True
return can_build
diff --git a/wsgi/coprs/templates/coprs/_permissions_table.html b/wsgi/coprs/templates/coprs/_permissions_table.html
index 0622f63..dd93e86 100644
--- a/wsgi/coprs/templates/coprs/_permissions_table.html
+++ b/wsgi/coprs/templates/coprs/_permissions_table.html
@@ -3,7 +3,7 @@
<table class=permissions-table>
<tr><th>Username</th><th>Allowed to build</th></tr>
{% for perm in permissions %}
- <tr><td>{{ perm.user.name }}</td><td>{{ perm.approved }}</td></tr>
+ <tr><td>{{ perm.user.name }}</td><td>{{ perm.copr_builder }}</td></tr>
{% endfor %}
</table>
{% endif %}
diff --git a/wsgi/coprs/views/coprs_ns/coprs_general.py b/wsgi/coprs/views/coprs_ns/coprs_general.py
index c22fc6f..34207f7 100644
--- a/wsgi/coprs/views/coprs_ns/coprs_general.py
+++ b/wsgi/coprs/views/coprs_ns/coprs_general.py
@@ -138,7 +138,7 @@ def copr_apply_for_building(username, coprname):
elif permission:
flask.flash('You are already listed in permissions for Copr "{0}".'.format(copr.name))
else:
- perm = models.CoprPermission(user = flask.g.user, copr = copr, approved = False)
+ perm = models.CoprPermission(user = flask.g.user, copr = copr, copr_builder = False)
coprs_logic.CoprsPermissionLogic.new(flask.g.user, perm)
db.session.commit()
flask.flash('You have successfuly applied for building in Copr "{0}".'.format(copr.name))
@@ -183,7 +183,7 @@ def copr_update_permissions(username, coprname):
for perm in permissions:
models.CoprPermission.query.filter(models.CoprPermission.copr_id == copr.id).\
filter(models.CoprPermission.user_id == perm.user_id).\
- update({'approved': permissions_form['user_{0}'.format(perm.user_id)].data})
+ update({'copr_builder': permissions_form['user_{0}'.format(perm.user_id)].data})
db.session.commit()
flask.flash('Copr permissions were updated successfully.')
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
11 years, 4 months
[copr] bkabrda-workspace: Yet some more information in models (e6c9a1e)
by bkabrda@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : bkabrda-workspace
>---------------------------------------------------------------
commit e6c9a1e6b3f24723046a0384dc79f88444edb308
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Mon Nov 26 08:16:02 2012 +0100
Yet some more information in models
>---------------------------------------------------------------
...b_setup.py => 2728f7ddff7d_initial_db_setup.py} | 9 +++++----
wsgi/coprs/models.py | 3 ++-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/wsgi/alembic/versions/2d24d28534b6_initial_db_setup.py b/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
similarity index 92%
rename from wsgi/alembic/versions/2d24d28534b6_initial_db_setup.py
rename to wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
index 8ca01d7..f8f8844 100644
--- a/wsgi/alembic/versions/2d24d28534b6_initial_db_setup.py
+++ b/wsgi/alembic/versions/2728f7ddff7d_initial_db_setup.py
@@ -1,13 +1,13 @@
"""Initial DB setup
-Revision ID: 2d24d28534b6
+Revision ID: 2728f7ddff7d
Revises: None
-Create Date: 2012-11-26 08:02:34.063991
+Create Date: 2012-11-26 08:14:58.017240
"""
# revision identifiers, used by Alembic.
-revision = '2d24d28534b6'
+revision = '2728f7ddff7d'
down_revision = None
from alembic import op
@@ -36,7 +36,8 @@ def upgrade():
sa.PrimaryKeyConstraint('id')
)
op.create_table('copr_permission',
- sa.Column('approved', sa.Boolean(), nullable=True),
+ sa.Column('copr_builder', sa.Boolean(), nullable=True),
+ sa.Column('copr_admin', sa.Boolean(), nullable=True),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('copr_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['copr_id'], ['copr.id'], ),
diff --git a/wsgi/coprs/models.py b/wsgi/coprs/models.py
index 3e4f3ae..e5b8937 100644
--- a/wsgi/coprs/models.py
+++ b/wsgi/coprs/models.py
@@ -117,7 +117,8 @@ class Copr(db.Model, Serializer):
__mapper_args__ = {'order_by': id.desc()}
class CoprPermission(db.Model, Serializer):
- approved = db.Column(db.Boolean, default = True)
+ copr_builder = db.Column(db.Boolean, default = False)
+ copr_admin = db.Column(db.Boolean, default = False)
# relations
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key = True)
11 years, 4 months