[copr] bkabrda-workspace: Don't use with_permissions for getting a copr (using .first() on it results in just one permission) (4637aa1)

bkabrda at fedorahosted.org bkabrda at fedorahosted.org
Fri Nov 23 09:21:45 UTC 2012


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

On branch  : bkabrda-workspace

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

commit 4637aa1d3debc35586220cfd68aab4f81410367b
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Fri Nov 23 10:21:30 2012 +0100

    Don't use with_permissions for getting a copr (using .first() on it results in just one permission)


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

 wsgi/coprs/logic/coprs_logic.py            |   11 ++++++-----
 wsgi/coprs/views/coprs_ns/coprs_general.py |   10 ++++++----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/wsgi/coprs/logic/coprs_logic.py b/wsgi/coprs/logic/coprs_logic.py
index c2b967d..f378de8 100644
--- a/wsgi/coprs/logic/coprs_logic.py
+++ b/wsgi/coprs/logic/coprs_logic.py
@@ -7,7 +7,6 @@ class CoprsLogic(object):
     @classmethod
     def get(cls, user, username, coprname, **kwargs):
         with_builds = kwargs.get('with_builds', False)
-        with_permissions = kwargs.get('with_permissions', False)
 
         query = db.session.query(models.Copr).\
                            join(models.Copr.owner).\
@@ -20,10 +19,6 @@ class CoprsLogic(object):
                           options(db.contains_eager(models.Copr.builds)).\
                           order_by(models.Build.submitted_on.desc())
 
-        if with_permissions:
-            query = query.outerjoin(models.Copr.copr_permissions).\
-                          options(db.contains_eager(models.Copr.copr_permissions))
-
         return query
 
     @classmethod
@@ -77,6 +72,12 @@ class CoprsPermissionLogic(object):
         return query
 
     @classmethod
+    def get_for_copr(cls, user, copr):
+        query = models.CoprPermission.query.filter(models.CoprPermission.copr == copr)
+
+        return query
+
+    @classmethod
     def new(cls, user, copr_permission):
         db.session.add(copr_permission)
 
diff --git a/wsgi/coprs/views/coprs_ns/coprs_general.py b/wsgi/coprs/views/coprs_ns/coprs_general.py
index a281019..c22fc6f 100644
--- a/wsgi/coprs/views/coprs_ns/coprs_general.py
+++ b/wsgi/coprs/views/coprs_ns/coprs_general.py
@@ -72,24 +72,26 @@ def copr_new():
 def copr_detail(username, coprname):
     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, with_permissions = True)
+        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...
     except IndexError:
         return page_not_found('Copr with name {0} does not exist.'.format(coprname))
 
-    return flask.render_template('coprs/detail.html', copr = copr, form = form, permissions = copr.copr_permissions)
+    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)
 
 
 @coprs_ns.route('/detail/<username>/<coprname>/edit/')
 @login_required
 def copr_edit(username, coprname):
-    query = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname, with_permissions = True)
+    query = coprs_logic.CoprsLogic.get(flask.g.user, username, coprname)
     copr = query.first()
+
     if not copr:
         return page_not_found('Copr with name {0} does not exist.'.format(coprname))
     form = forms.CoprForm(obj = copr)
 
-    permissions = copr.copr_permissions
+    permissions = coprs_logic.CoprsPermissionLogic.get_for_copr(flask.g.user, copr).all()
     permissions_form = forms.DynamicPermissionsFormFactory.create_form_cls(permissions)()
 
     return flask.render_template('coprs/edit.html',



More information about the copr-devel mailing list