[copr] master: Process the checkbox values, sqlite chews them, but postgres must get numbers (b52d3e8)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit b52d3e875300f405380fd3634bf1fac506169393
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 12:22:40 2013 +0100
Process the checkbox values, sqlite chews them, but postgres must get numbers
>---------------------------------------------------------------
coprs_frontend/coprs/forms.py | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/coprs_frontend/coprs/forms.py b/coprs_frontend/coprs/forms.py
index d652844..bb8b7a8 100644
--- a/coprs_frontend/coprs/forms.py
+++ b/coprs_frontend/coprs/forms.py
@@ -71,6 +71,11 @@ class StringListFilter(object):
regex = re.compile(r'\s+')
return regex.sub(lambda x: '\n', result)
+class ValueToPermissionNumberFilter(object):
+ def __call__(self, value):
+ if value:
+ return helpers.PermissionEnum.num('request')
+ return helpers.PermissionEnum.num('nothing')
class CoprForm(wtf.Form):
# also use id here, to be able to find out whether user is updating a copr
@@ -125,8 +130,8 @@ class PermissionsApplierFormFactory(object):
if permission.copr_admin != helpers.PermissionEnum.num('nothing'):
admin_default = True
- setattr(F, 'copr_builder', wtf.BooleanField(default = builder_default))
- setattr(F, 'copr_admin', wtf.BooleanField(default = admin_default))
+ setattr(F, 'copr_builder', wtf.BooleanField(default = builder_default, filters = [ValueToPermissionNumberFilter()]))
+ setattr(F, 'copr_admin', wtf.BooleanField(default = admin_default, filters = [ValueToPermissionNumberFilter()]))
return F
11 years, 3 months
[copr] master: Preserve admin values properly after permission applier submits the permission form (121f218)
by bkabrda@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 121f218e344b9ecb53150bfc3551d6de3a7d3d94
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 12:08:27 2013 +0100
Preserve admin values properly after permission applier submits the permission form
>---------------------------------------------------------------
coprs_frontend/coprs/logic/coprs_logic.py | 7 +++++--
.../tests/test_views/test_coprs_ns/test_general.py | 18 ++++++++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 90fe800..cc47c1e 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -92,8 +92,11 @@ class CoprsPermissionLogic(object):
@classmethod
def update_permissions_by_applier(cls, user, copr, copr_permission, new_builder, new_admin):
if copr_permission:
- copr_permission.copr_builder = new_builder
- copr_permission.copr_admin = new_admin
+ # preserve approved permissions if set
+ if not new_builder or copr_permission.copr_builder != helpers.PermissionEnum.num('approved'):
+ copr_permission.copr_builder = new_builder
+ if not new_admin or copr_permission.copr_admin != helpers.PermissionEnum.num('approved'):
+ copr_permission.copr_admin = new_admin
else:
perm = models.CoprPermission(user = user, copr = copr, copr_builder = new_builder, copr_admin = new_admin)
cls.new(user, perm)
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 6e75ba2..e15b105 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
@@ -252,6 +252,24 @@ class TestCoprApplyForPermissions(CoprsTestCase):
assert new_perm.copr_builder == 1
assert new_perm.copr_admin == 0
+ def test_apply_doesnt_lower_other_values_from_admin_to_request(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.u1, self.u2, self.cp1, self.c2])
+ r = c.post('/coprs/detail/{0}/{1}/permissions_applier_change/'.format(self.u2.name, self.c2.name),
+ data = {'copr_builder': 1, 'copr_admin': '1'},
+ follow_redirects = True)
+ assert 'Successfuly updated' in r.data
+
+ self.db.session.add_all([self.u1, self.c2])
+ new_perm = self.models.CoprPermission.query.filter(self.models.CoprPermission.user_id == self.u1.id).\
+ filter(self.models.CoprPermission.copr_id == self.c2.id).\
+ first()
+ assert new_perm.copr_builder == 2
+ assert new_perm.copr_admin == 1
+
class TestCoprUpdatePermissions(CoprsTestCase):
def test_cancel_permission(self, f_users, f_coprs, f_copr_permissions):
with self.tc as c:
11 years, 3 months
[copr] master: Use the proper function for rendering the detail properly (a2b66fd)
by bkabrda@fedorahosted.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit a2b66fdd82a59c7dbe2bd2e936513bf3389c017b
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 11:52:31 2013 +0100
Use the proper function for rendering the detail properly
>---------------------------------------------------------------
.../coprs/views/coprs_ns/coprs_builds.py | 5 +++--
.../coprs/views/coprs_ns/coprs_general.py | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
index 10268fb..7addf6e 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_builds.py
@@ -13,6 +13,7 @@ from coprs.logic import coprs_logic
from coprs.views.misc import login_required
from coprs.views.coprs_ns import coprs_ns
+from coprs.views.coprs_ns import coprs_general
@coprs_ns.route('/detail/<username>/<coprname>/builds/', defaults = {'page': 1})
@coprs_ns.route('/detail/<username>/<coprname>/builds/<int:page>/')
@@ -53,8 +54,8 @@ def copr_add_build(username, coprname):
flask.flash("Build was added")
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = username, coprname = copr.name))
else:
- return flask.render_template('coprs/detail.html', copr = copr, form = form)
-
+ # TODO: figure out a more elegant way to get the function
+ return coprs_general.copr_detail(username = username, coprname = coprname, build_form = form)
@coprs_ns.route('/detail/<username>/<coprname>/cancel_build/<int:build_id>/', methods = ['POST'])
@login_required
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 1293763..2cd455c 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -85,8 +85,9 @@ def copr_new():
@coprs_ns.route('/detail/<username>/<coprname>/')
-def copr_detail(username, coprname):
- build_form = forms.BuildForm()
+def copr_detail(username, coprname, build_form = None):
+ if not build_form:
+ 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...
11 years, 3 months
[copr] master: Merge branch 'master' of ssh://git.fedorahosted.org/git/copr (3a6028b)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 3a6028bc8eaae2e5952af141028a45f3e0f901c1
Merge: c6ae28b 48f2824
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 11:20:19 2013 +0100
Merge branch 'master' of ssh://git.fedorahosted.org/git/copr
>---------------------------------------------------------------
backend/dispatcher.py | 6 ++++++
backend/mockremote.py | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/backend/dispatcher.py b/backend/dispatcher.py
index 9b0399d..a0115fc 100644
--- a/backend/dispatcher.py
+++ b/backend/dispatcher.py
@@ -288,9 +288,15 @@ class Worker(multiprocessing.Process):
# record and break
self.callback.log('%s - %s' % (ip, e))
status = 0 # failure
+ else:
+ # we can't really trace back if we just fail normally
+ # check if any pkgs didn't build
+ if mr.failed:
+ status = 0
self.callback.log('Finished build: builder=%r timeout=%r destdir=%r chroot=%r repos=%r' % (ip, job.timeout, job.destdir, chroot, str(job.repos)))
job.ended_on = time.time()
+
job.status = status
self.return_results(job)
self.callback.log('worker finished build: %s' % ip)
diff --git a/backend/mockremote.py b/backend/mockremote.py
index 2c641c8..7017a51 100755
--- a/backend/mockremote.py
+++ b/backend/mockremote.py
@@ -57,9 +57,9 @@ class SortedOptParser(optparse.OptionParser):
def createrepo(path):
if os.path.exists(path + '/repodata/repomd.xml'):
- comm = ['/usr/bin/createrepo', '--update', path]
+ comm = ['/usr/bin/createrepo', '--database', '--update', path]
else:
- comm = ['/usr/bin/createrepo', path]
+ comm = ['/usr/bin/createrepo', '--database', path]
cmd = subprocess.Popen(comm,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = cmd.communicate()
11 years, 3 months
[copr] master: Fix all the tests that were failing because of the change (c6ae28b)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit c6ae28ba9b6f53b73dba09a0b21cdf0d6e8e12cb
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 11:17:48 2013 +0100
Fix all the tests that were failing because of the change
>---------------------------------------------------------------
.../tests/test_views/test_coprs_ns/test_general.py | 54 +++++++++++---------
1 files changed, 29 insertions(+), 25 deletions(-)
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 cf42e2c..6e75ba2 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
@@ -135,8 +135,8 @@ class TestCoprDetail(CoprsTestCase):
def test_copr_detail_contains_permissions_table(self, f_users, f_coprs, f_copr_permissions):
r = self.tc.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c3.name))
assert '<table class=permissions' in r.data
- assert '<tr><td>{0}'.format(self.u3.name) in r.data
- assert '<tr><td>{0}'.format(self.u1.name) in r.data
+ assert '<td>{0}'.format(self.u3.name) in r.data
+ assert '<td>{0}'.format(self.u1.name) in r.data
def test_copr_detail_doesnt_contain_forms_for_anonymous_user(self, f_users, f_coprs):
r = self.tc.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c3.name))
@@ -150,7 +150,7 @@ class TestCoprDetail(CoprsTestCase):
self.db.session.add_all([self.u2, self.c2])
r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
# u1 is approved builder, check for that
- assert '<option selected value="2">Approved</option>' in r.data
+ assert '/permissions_applier_change/' in r.data
def test_copr_detail_doesnt_allow_owner_to_ask_for_permissions(self, f_users, f_coprs):
with self.tc as c:
@@ -161,6 +161,18 @@ class TestCoprDetail(CoprsTestCase):
r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
assert '/permissions_applier_change/' not in r.data
+ def test_detail_has_correct_permissions_form(self, f_users, f_coprs, f_copr_permissions):
+ 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.c3])
+ r = c.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c3.name))
+
+ assert r.data.count('nothing') == 2
+ assert '<select id="copr_builder_1" name="copr_builder_1">' in r.data
+ assert '<select id="copr_admin_1" name="copr_admin_1">' in r.data
+
def test_copr_detail_doesnt_show_cancel_build_for_anonymous(self, f_users, f_coprs, f_builds):
r = self.tc.get('/coprs/detail/{0}/{1}/'.format(self.u2.name, self.c2.name))
assert '/cancel_build/' not in r.data
@@ -196,16 +208,6 @@ class TestCoprEdit(CoprsTestCase):
# to the precise format of the tag
assert '<input hidden id="id" name="id" type="hidden" value="{0}">'.format(self.c1.id) in r.data
- def test_edit_has_correct_permissions_form(self, f_users, f_coprs, f_copr_permissions):
- 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.c3])
- r = c.get('/coprs/detail/{0}/{1}/edit/'.format(self.u2.name, self.c3.name))
- 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):
def test_update_no_changes(self, f_users, f_coprs):
@@ -239,7 +241,7 @@ class TestCoprApplyForPermissions(CoprsTestCase):
self.db.session.add_all([self.u1, self.u2, self.c1])
r = c.post('/coprs/detail/{0}/{1}/permissions_applier_change/'.format(self.u1.name, self.c1.name),
- data = {'copr_builder': 1, 'copr_admin': 0},
+ data = {'copr_builder': '1'},
follow_redirects = True)
assert 'Successfuly updated' in r.data
@@ -257,12 +259,14 @@ class TestCoprUpdatePermissions(CoprsTestCase):
s['openid'] = self.u2.openid_name
self.db.session.add_all([self.u2, self.c2])
- # Although it shouldn't be needed, preset some data: https://github.com/ajford/flask-wtf/issues/55
r = c.post('/coprs/detail/{0}/{1}/update_permissions/'.format(self.u2.name, self.c2.name),
- data = {'csrf_token': u'20121123111948##1653cb2ef73cb9f7b4670472df7354416e61cf2d'},
+ data = {'copr_builder_1': '0'},
follow_redirects = True)
- self.db.session.add_all([self.u1])
- assert '<tr><td>{0}</td><td>{1}</td></tr>'.format(self.u1.name, 'True') not in r.data
+
+ # very volatile, but will fail fast if something changes
+ check_string = '<select id="copr_builder_1" name="copr_builder_1"><option value="0">nothing</option><option value="1">'
+ check_string += 'request</option><option selected value="2">approved</option></select>'
+ assert check_string not in r.data
def test_update_more_permissions(self, f_users, f_coprs, f_copr_permissions):
with self.tc as c:
@@ -271,20 +275,20 @@ class TestCoprUpdatePermissions(CoprsTestCase):
self.db.session.add_all([self.u2, self.c3])
r = c.post('/coprs/detail/{0}/{1}/update_permissions/'.format(self.u2.name, self.c3.name),
- data = {'copr_builder_1': 'y', 'copr_admin_3': 'y'},
+ data = {'copr_builder_1': '2', 'copr_admin_1': '1', 'copr_admin_3': '2'},
follow_redirects = True)
self.db.session.add_all([self.c3, self.u1, self.u3])
u1_c3_perms = self.models.CoprPermission.query.filter(self.models.CoprPermission.copr_id == self.c3.id).\
filter(self.models.CoprPermission.user_id == self.u1.id).\
first()
- assert u1_c3_perms.copr_builder == self.helpers.PermissionEnum.num('Approved')
- assert u1_c3_perms.copr_admin == self.helpers.PermissionEnum.num('No Action')
+ assert u1_c3_perms.copr_builder == self.helpers.PermissionEnum.num('approved')
+ assert u1_c3_perms.copr_admin == self.helpers.PermissionEnum.num('request')
u3_c3_perms = self.models.CoprPermission.query.filter(self.models.CoprPermission.copr_id == self.c3.id).\
filter(self.models.CoprPermission.user_id == self.u3.id).\
first()
- assert u3_c3_perms.copr_builder == self.helpers.PermissionEnum.num('No Action')
- assert u3_c3_perms.copr_admin == self.helpers.PermissionEnum.num('Approved')
+ assert u3_c3_perms.copr_builder == self.helpers.PermissionEnum.num('nothing')
+ assert u3_c3_perms.copr_admin == self.helpers.PermissionEnum.num('approved')
def test_copr_admin_can_update_permissions(self, f_users, f_coprs, f_copr_permissions):
with self.tc as c:
@@ -293,7 +297,7 @@ class TestCoprUpdatePermissions(CoprsTestCase):
self.db.session.add_all([self.u2, self.c3])
r = c.post('/coprs/detail/{0}/{1}/update_permissions/'.format(self.u2.name, self.c3.name),
- data = {'copr_builder_1': 'y', 'copr_admin_3': 'y'},
+ data = {'copr_builder_1': '2', 'copr_admin_3': '2'},
follow_redirects = True)
-
+ print r.data
assert 'Copr permissions were updated' in r.data
11 years, 3 months
[copr] master: Fix the test fixtures (c65090b)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit c65090bb2a13a79af67f68fca656373227211fbb
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 11:17:16 2013 +0100
Fix the test fixtures
>---------------------------------------------------------------
coprs_frontend/tests/coprs_test_case.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/coprs_frontend/tests/coprs_test_case.py b/coprs_frontend/tests/coprs_test_case.py
index 9907051..c60cd6f 100644
--- a/coprs_frontend/tests/coprs_test_case.py
+++ b/coprs_frontend/tests/coprs_test_case.py
@@ -64,9 +64,9 @@ class CoprsTestCase(object):
@pytest.fixture
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('Request'), copr_admin = helpers.PermissionEnum.num('Approved'))
+ self.cp1 = models.CoprPermission(copr = self.c2, user = self.u1, copr_builder = helpers.PermissionEnum.num('approved'), copr_admin = helpers.PermissionEnum.num('nothing'))
+ self.cp2 = models.CoprPermission(copr = self.c3, user = self.u3, copr_builder = helpers.PermissionEnum.num('nothing'), copr_admin = helpers.PermissionEnum.num('nothing'))
+ 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()
11 years, 3 months
[copr] master: The permission can no longer be raised, the function is safe because form can only return 0 or 1 from checkbox (327b1f2)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 327b1f27cf3ced08cac82e5c2d33ceb0d91ccb31
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 11:16:47 2013 +0100
The permission can no longer be raised, the function is safe because form can only return 0 or 1 from checkbox
>---------------------------------------------------------------
.../coprs/views/coprs_ns/coprs_general.py | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 54896fe..1293763 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -172,13 +172,9 @@ def copr_permissions_applier_change(username, coprname):
# we rely on these to be 0 or 1 from form. TODO: abstract from that
new_builder = applier_permissions_form.copr_builder.data
new_admin = applier_permissions_form.copr_admin.data
- 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:
- flask.flash('Successfuly updated permissions do Copr "{0}".'.format(copr.name))
+ coprs_logic.CoprsPermissionLogic.update_permissions_by_applier(flask.g.user, copr, permission, new_builder, new_admin)
db.session.commit()
+ flask.flash('Successfuly updated permissions do Copr "{0}".'.format(copr.name))
return flask.redirect(flask.url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name))
11 years, 3 months
[copr] master: Only display permissions table when needed (f9e7f0b)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit f9e7f0badc86dc7fd229b9749e4e82e7db57b909
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 10:56:41 2013 +0100
Only display permissions table when needed
>---------------------------------------------------------------
coprs_frontend/coprs/templates/coprs/detail.html | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/coprs_frontend/coprs/templates/coprs/detail.html b/coprs_frontend/coprs/templates/coprs/detail.html
index 7670e6f..72db33c 100644
--- a/coprs_frontend/coprs/templates/coprs/detail.html
+++ b/coprs_frontend/coprs/templates/coprs/detail.html
@@ -22,7 +22,10 @@
</ul>
{% endif %}
<h3>Permissions</h3>
- {{ permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_form) }}
+ {% if (g.user and g.user != copr.owner) or permissions %}
+ {# the table is displayed only if there are some permissions or a non-owner is viewing the page (then display at least his applier form #}
+ {{ permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_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) }}
11 years, 3 months
[copr] master: Fix the enum keyword. (d7b287b)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit d7b287bb1f7e8af64de3961a74bed51a1b6b304f
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Fri Jan 11 10:56:16 2013 +0100
Fix the enum keyword.
>---------------------------------------------------------------
coprs_frontend/coprs/logic/coprs_logic.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/coprs_frontend/coprs/logic/coprs_logic.py b/coprs_frontend/coprs/logic/coprs_logic.py
index 1b691a2..90fe800 100644
--- a/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/coprs_frontend/coprs/logic/coprs_logic.py
@@ -35,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 == helpers.PermissionEnum.num('Approved')).\
+ 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
11 years, 3 months
[copr] master: And finally adapt the views to new permission system (6868465)
by bkabrda@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 68684652e277afec942f78b2ee486be838ddea3c
Author: Bohuslav Kabrda <bkabrda(a)redhat.com>
Date: Thu Jan 10 14:27:22 2013 +0100
And finally adapt the views to new permission system
>---------------------------------------------------------------
.../coprs/templates/coprs/_permissions_table.html | 85 +++++++++++++++++---
coprs_frontend/coprs/templates/coprs/detail.html | 6 +-
2 files changed, 74 insertions(+), 17 deletions(-)
diff --git a/coprs_frontend/coprs/templates/coprs/_permissions_table.html b/coprs_frontend/coprs/templates/coprs/_permissions_table.html
index fc1ad64..a8675ec 100644
--- a/coprs_frontend/coprs/templates/coprs/_permissions_table.html
+++ b/coprs_frontend/coprs/templates/coprs/_permissions_table.html
@@ -1,25 +1,23 @@
-{% macro permissions_table(permissions, copr, permissions_applier_form) %}
- {% if permissions or permissions_applier_form %}
+{% macro permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_form) %}
+ {% if permissions or g.user != copr.owner %} {# display the whole table if there are permissions or user can ask for them #}
{% 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 %}
+ {% if permissions_form and g.user %}
+ <form action="{{ url_for('coprs_ns.copr_update_permissions', username = copr.owner.name, coprname = copr.name)}}" method=post>
+ {{ permissions_form.csrf_token }}
+ {% endif %}
<table class=permissions-table>
<tr><th>Username</th><th>Is Builder</th><th>Is Admin</th></tr>
{% for perm in permissions %}
- {% 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>
+ {% if perm.user_id != g.user.id %} {# if user is logged in, only display his form below, not a row #}
+ {{ permissions_table_row_other_user(perm, permissions_applier_form, permissions_form) }}
{% endif %}
{% endfor %}
- {% if permissions_applier_form and g.user %}
- <tr>
- <td>{{ g.user.name }}</td>
- <td>{{ permissions_applier_form.copr_builder|safe }}</td>
- <td>{{ permissions_applier_form.copr_admin|safe }}</td>
- </tr>
- {% endif %}
+ {{ permissions_table_row_current_user(current_user_permissions, permissions_applier_form, permissions_form) }}
</table>
- {% if permissions_applier_form and g.user %}
+ {% if g.user and (permissions_applier_form or permissions_form) %} {# TODO: when to display? #}
<input type=submit value=Submit>
</form>
{% endif %}
@@ -27,3 +25,66 @@
No permissions for other users for this Copr.
{% endif %}
{% endmacro %}
+
+{% macro permissions_table_row_other_user(perm, permissions_applier_form, permissions_form) %}
+ <tr>
+ <td>{{ perm.user.name }}</td>
+ <td>
+ {% if permissions_form %}
+ {% if perm.copr_builder != 0 %}
+ {{ permissions_form['copr_builder_{0}'.format(perm.user.id)] }}
+ {% endif %}
+ {% else %}
+ {{ perm.copr_builder|perm_type_from_num }}
+ {% endif %}
+ </td>
+ <td>
+ {% if permissions_form %}
+ {% if perm.copr_admin != 0 %}
+ {{ permissions_form['copr_admin_{0}'.format(perm.user.id)] }}
+ {% endif %}
+ {% else %}
+ {{ perm.copr_admin|perm_type_from_num }}
+ {% endif %}
+ </td>
+ </tr>
+{% endmacro %}
+
+{% macro permissions_table_row_current_user(current_user_permissions, permissions_applier_form, permissions_form) %}
+ {# if user is logged in and permissions_applier_form is defined, display it #}
+ {% if g.user and permissions_applier_form %}
+ <tr>
+ <td>{{ g.user.name }}</td>
+ <td>
+ {% if current_user_permissions %}
+ {{ current_user_permissions.copr_builder|perm_type_from_num }}
+ {% else %}
+ Not requested
+ {% endif %}
+ <br>
+ {{ permissions_applier_form.copr_builder|safe }}
+ </td>
+ <td>
+ {% if current_user_permissions %}
+ {{ current_user_permissions.copr_admin|perm_type_from_num }}
+ {% else %}
+ Not requested
+ {% endif %}
+ <br>
+ {{ permissions_applier_form.copr_admin|safe }}
+ </tr>
+ {% endif %}
+
+ {# if user is admin (means current_user_permissions is set), display his own permissions for changing #}
+ {% if g.user and permissions_form and current_user_permissions %}
+ <tr>
+ <td>{{ g.user.name }}</td>
+ <td>
+ {{ permissions_form['copr_builder_{0}'.format(g.user.id)] }}
+ </td>
+ <td>
+ {{ permissions_form['copr_admin_{0}'.format(g.user.id)] }}
+ </td>
+ </tr>
+ {% endif %}
+{% endmacro %}
diff --git a/coprs_frontend/coprs/templates/coprs/detail.html b/coprs_frontend/coprs/templates/coprs/detail.html
index 9f54040..7670e6f 100644
--- a/coprs_frontend/coprs/templates/coprs/detail.html
+++ b/coprs_frontend/coprs/templates/coprs/detail.html
@@ -22,11 +22,7 @@
</ul>
{% endif %}
<h3>Permissions</h3>
- {% if g.user.id == copr.owner_id or not g.user %}
- {{ permissions_table(permissions, copr, None) }}
- {% else %}
- {{ permissions_table(permissions, copr, permission_applier_form) }}
- {% endif %}
+ {{ permissions_table(permissions, current_user_permissions, copr, permissions_applier_form, permissions_form) }}
{% 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) }}
11 years, 3 months