[copr] bkabrda-workspace: Extract logic from waiting builds (1fcb1a3)

bkabrda at fedorahosted.org bkabrda at fedorahosted.org
Mon Nov 19 10:44:14 UTC 2012


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

On branch  : bkabrda-workspace

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

commit 1fcb1a3a18e5ad471cbe285430531f158d8ed9fa
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Mon Nov 19 11:44:06 2012 +0100

    Extract logic from waiting builds


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

 wsgi/coprs/logic/builds_logic.py               |   13 +++++++++++++
 wsgi/coprs/views/backend_ns/backend_general.py |   11 ++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/wsgi/coprs/logic/builds_logic.py b/wsgi/coprs/logic/builds_logic.py
index 07831c2..35c2c9d 100644
--- a/wsgi/coprs/logic/builds_logic.py
+++ b/wsgi/coprs/logic/builds_logic.py
@@ -34,6 +34,19 @@ class BuildsLogic(object):
         return query
 
     @classmethod
+    def get_waiting_builds(cls, user):
+        # this has very different goal then get_multiple, so implement it alone
+        query = models.Build.query.join(models.Build.copr).\
+                                   join(models.User).\
+                                   options(db.contains_eager(models.Build.copr)).\
+                                   options(db.contains_eager('copr.owner')).\
+                                   filter(models.Build.started_on == None).\
+                                   filter(models.Build.canceled != True).\
+                                   order_by(models.Build.submitted_on.asc())
+        return query
+
+
+    @classmethod
     def new(cls, user, build, copr, check_authorized = True):
         if check_authorized:
             if not user.can_build_in(copr):
diff --git a/wsgi/coprs/views/backend_ns/backend_general.py b/wsgi/coprs/views/backend_ns/backend_general.py
index 01e4829..7b92e56 100644
--- a/wsgi/coprs/views/backend_ns/backend_general.py
+++ b/wsgi/coprs/views/backend_ns/backend_general.py
@@ -3,18 +3,15 @@ import flask
 from coprs import db
 from coprs import models
 
+from coprs.logic import builds_logic
+
 from coprs.views.backend_ns import backend_ns
 
 @backend_ns.route('/waiting_builds/')
 def waiting_builds():
-    query = db.session.query(models.Build, models.Copr, models.User).\
-                        join(models.Build.copr).\
-                        join(models.Copr.owner).\
-                        filter(models.Build.started_on == None).\
-                        filter(models.Build.canceled != True).\
-                        order_by(models.Build.submitted_on.asc())[0:10]
+    query = builds_logic.BuildsLogic.get_waiting_builds(None)
 
-    builds = map(lambda x: x[0], query)
+    builds = query[0:10]
     return flask.jsonify({'builds': [build.to_dict(options = {'copr': {'owner': {'__columns_except__': ['openid_name', 'proven'] },
                                                                        '__columns_except__': ['chroots', 'repos'],
                                                                        '__included_ids__': False},



More information about the copr-devel mailing list