Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : enter_the_matrix
---------------------------------------------------------------
commit 98e96ac003d2912c48c710072f85fe51c23e7c47
Author: Richard Marko <rmarko(a)fedoraproject.org>
Date: Wed Nov 13 16:07:53 2013 +0100
[frontend] add ActionsLogic
Signed-off-by: Richard Marko <rmarko(a)fedoraproject.org>
---------------------------------------------------------------
coprs_frontend/coprs/logic/actions_logic.py | 40 +++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/coprs_frontend/coprs/logic/actions_logic.py
b/coprs_frontend/coprs/logic/actions_logic.py
new file mode 100644
index 0000000..d53ef8b
--- /dev/null
+++ b/coprs_frontend/coprs/logic/actions_logic.py
@@ -0,0 +1,40 @@
+from coprs import db
+from coprs import models
+from coprs import helpers
+
+
+class ActionsLogic(object):
+ @classmethod
+ def get(cls, action_id):
+ """ Return single action identified by `action_id`
"""
+ query = models.Action.query.filter(models.Action.id == action_id)
+ return query
+
+ @classmethod
+ def get_waiting(cls):
+ """ Return actions that aren't finished """
+ query = (models.Action.query
+ .filter(models.Action.result ==
+ helpers.BackendResultEnum('waiting'))
+ .order_by(models.Action.created_on.asc()))
+
+ return query
+
+ @classmethod
+ def get_by_ids(cls, ids):
+ """ Return actions matching passed `ids` """
+ return models.Action.query.filter(models.Action.id.in_(ids))
+
+ @classmethod
+ def update_state_from_dict(cls, action, upd_dict):
+ """
+ Update `action` object with `upd_dict` data
+
+ Updates result, message and ended_on parameters.
+ """
+ for attr in ['result', 'message', 'ended_on']:
+ value = upd_dict.get(attr, None)
+ if value:
+ setattr(action, attr, value)
+
+ db.session.add(action)