Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2026
September
August
July
June
May
April
March
February
January
2025
December
November
October
September
August
July
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
List overview
Download
copr-devel
November 2012
----- 2026 -----
September 2026
August 2026
July 2026
June 2026
May 2026
April 2026
March 2026
February 2026
January 2026
----- 2025 -----
December 2025
November 2025
October 2025
September 2025
August 2025
July 2025
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
copr-devel@lists.fedorahosted.org
4 participants
105 discussions
Start a n
N
ew thread
[copr] bkabrda-workspace: More fixes (7b39efd)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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
1
0
0
0
[copr] bkabrda-workspace: Make the enum fail fast instead of returning None (bdea269)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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):
1
0
0
0
[copr] bkabrda-workspace: Couple of fixes and adapted tests (d470a3a)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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):
1
0
0
0
[copr] bkabrda-workspace: Typo... (0af4a30)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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
1
0
0
0
[copr] bkabrda-workspace: Refresh test fixtures, fix one logics function (2e0ada3)
by bkabrda@fedorahosted.org
26 Nov '12
26 Nov '12
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()
1
0
0
0
[copr] bkabrda-workspace: Huge load of changes that make the new permissions work (10ef19c)
by bkabrda@fedorahosted.org
26 Nov '12
26 Nov '12
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))
1
0
0
0
[copr] bkabrda-workspace: Transfer permissions to enums (1776cca)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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)
1
0
0
0
[copr] bkabrda-workspace: Fix tests after previous changes (f6a2268)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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):
1
0
0
0
[copr] bkabrda-workspace: approved -> copr_builder (8a2bb64)
by bkabrda@fedoraproject.org
26 Nov '12
26 Nov '12
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))
1
0
0
0
[copr] bkabrda-workspace: Yet some more information in models (e6c9a1e)
by bkabrda@fedorahosted.org
26 Nov '12
26 Nov '12
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)
1
0
0
0
← Newer
1
2
3
4
5
6
7
...
11
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
Results per page:
10
25
50
100
200