Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 0aabda983c7d0d3fac17714d2ba308abe2db2355
Author: Adam Samalik <asamalik(a)redhat.com>
Date: Mon Jul 28 15:39:05 2014 +0200
[frontend] new waiting queue
---------------------------------------------------------------
.../coprs_frontend/coprs/logic/builds_logic.py | 20 ++++++++++++++++++++
.../coprs/views/status_ns/status_general.py | 4 +---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/logic/builds_logic.py
b/frontend/coprs_frontend/coprs/logic/builds_logic.py
index 9fb04e1..fbed18f 100644
--- a/frontend/coprs_frontend/coprs/logic/builds_logic.py
+++ b/frontend/coprs_frontend/coprs/logic/builds_logic.py
@@ -1,4 +1,6 @@
import time
+from sqlalchemy import or_
+from sqlalchemy import and_
from coprs import db
from coprs import exceptions
@@ -24,6 +26,24 @@ class BuildsLogic(object):
return query
@classmethod
+ def get_build_task_queue(cls):
+ """
+ Returns BuildChroots which are - waiting to be built or
+ - older than 2 hours and unfinished
+ """
+ query = models.BuildChroot.query.join(models.Build).filter(or_(
+ models.BuildChroot.status ==
helpers.StatusEnum("pending"),
+ models.BuildChroot.status ==
helpers.StatusEnum("starting"),
+ and_(
+ models.BuildChroot.status ==
helpers.StatusEnum("running"),
+ models.Build.started_on < int(time.time() - 7200),
+ models.Build.ended_on == None
+ )
+ ))
+ query.order_by(models.BuildChroot.build_id.desc())
+ return query
+
+ @classmethod
def get_multiple(cls, user, **kwargs):
copr = kwargs.get("copr", None)
username = kwargs.get("username", None)
diff --git a/frontend/coprs_frontend/coprs/views/status_ns/status_general.py
b/frontend/coprs_frontend/coprs/views/status_ns/status_general.py
index 2608420..eb0e103 100644
--- a/frontend/coprs_frontend/coprs/views/status_ns/status_general.py
+++ b/frontend/coprs_frontend/coprs/views/status_ns/status_general.py
@@ -8,9 +8,7 @@ from coprs import helpers
@status_ns.route("/")
@status_ns.route("/waiting/")
def waiting():
- tasks = []
- for build in builds_logic.BuildsLogic.get_waiting():
- tasks += build.build_chroots
+ tasks = builds_logic.BuildsLogic.get_build_task_queue()
return flask.render_template("status/waiting.html",
number=len(list(tasks)),
tasks=tasks)