Started work on task management for submitting changes
authordurandn
Thu, 09 Apr 2015 17:39:27 +0200
changeset 72 75170fe4d56b
parent 71 a89f85dee001
child 73 b3c1c89fcf97
Started work on task management for submitting changes
src/catedit/__init__.py
src/catedit/resources.py
src/catedit/tasks.py
src/catedit/views/home.py
virtualenv/requirements.txt
--- a/src/catedit/__init__.py	Thu Apr 09 14:46:13 2015 +0200
+++ b/src/catedit/__init__.py	Thu Apr 09 17:39:27 2015 +0200
@@ -14,6 +14,7 @@
 from flask.ext.github import GitHub
 from flask.ext.cache import Cache
 from flask.ext.restful import Api
+from celery import Celery
 
 from catedit.settings import AppSettings
 
@@ -51,6 +52,11 @@
 )
 github = GitHub(app)
 
+app.config['CELERY_BROKER_URL'] = 'sqla+sqlite:///celerydb.sqlite'
+
+celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
+celery.conf.update(app.config)
+
 @github.access_token_getter
 def token_getter():
     """
--- a/src/catedit/resources.py	Thu Apr 09 14:46:13 2015 +0200
+++ b/src/catedit/resources.py	Thu Apr 09 17:39:27 2015 +0200
@@ -9,6 +9,7 @@
 from catedit import app, cache, github
 from catedit.models import Category, CategoryManager
 import catedit.persistence
+from catedit.tasks import submit_changes
 from io import StringIO
 
 from flask import session
@@ -97,30 +98,19 @@
         args = cat_parser.parse_args()
         if cat_id is None:
             if cat_manager_instance.persistence.session_compliant is True:
-                logger.debug(
-                    "Submitting - deleted categories are:"
-                    + str(
-                        session.get(
+                session["tasks"][repository].append(
+                    submit_changes.delay(
+                        deleted_cat_dict=session.get(
                             "deleted_categories", {}
-                        ).get(repository, {})
-                    ) + " and modified categories are:"
-                    + str(
-                        session.get(
+                        ).get(repository, {}),
+                        modified_cat_dict=session.get(
                             "modified_categories", {}
-                        ).get(repository, {})
+                        ).get(repository, {}),
+                        message=args["commit_message"]
                     )
                 )
-                cat_manager_instance.save_changes(
-                    deleted_cat_dict=session.get(
-                        "deleted_categories", {}
-                    ).get(repository, {}),
-                    modified_cat_dict=session.get(
-                        "modified_categories", {}
-                    ).get(repository, {}),
-                    message=args["commit_message"]
-                )
-                session["deleted_categories"]["local"] = {}
-                session["modified_categories"]["local"] = {}
+                session["deleted_categories"][repository] = {}
+                session["modified_categories"][repository] = {}
                 cache.clear()
                 return 204
         else:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/catedit/tasks.py	Thu Apr 09 17:39:27 2015 +0200
@@ -0,0 +1,27 @@
+from catedit import app, celery
+
+@celery.task
+def submit_changes(self, modified_categories, deleted_categories, message):
+    with app.app_context():
+        cat_manager_instance = CategoryManager(
+            getattr(
+                catedit.persistence,
+                app.config["PERSISTENCE_CONFIG"]["METHOD"]
+            )(repository=repository),
+        )
+         
+        if cat_manager_instance.persistence.session_compliant is True:
+            logger.debug(
+                "Submitting - deleted categories are:"
+                + str(
+                    modified_categories
+                ) + " and modified categories are:"
+                + str(
+                    deleted_categories
+                )
+            )
+            cat_manager_instance.save_changes(
+                deleted_cat_dict=deleted_categories,
+                modified_cat_dict=modified_categories,
+                message=message
+            )
\ No newline at end of file
--- a/src/catedit/views/home.py	Thu Apr 09 14:46:13 2015 +0200
+++ b/src/catedit/views/home.py	Thu Apr 09 17:39:27 2015 +0200
@@ -63,6 +63,10 @@
         repo: {} for repo
         in app.config["PERSISTENCE_CONFIG"]["REPOSITORY_LIST"]
     }
+    session["tasks"] = {
+        repo: [] for repo
+        in app.config["PERSISTENCE_CONFIG"]["REPOSITORY_LIST"]
+    }
     
     try:
         session["user_login"] = github.get(
--- a/virtualenv/requirements.txt	Thu Apr 09 14:46:13 2015 +0200
+++ b/virtualenv/requirements.txt	Thu Apr 09 17:39:27 2015 +0200
@@ -1,21 +1,29 @@
+amqp==1.4.6
+aniso8601==0.90
+anyjson==0.3.3
+astroid==1.3.6
+billiard==3.3.0.19
+celery==3.1.17
 Flask==0.10.1
 Flask-Cache==0.13.1
 Flask-RESTful==0.3.1
 Flask-WTF==0.10.3
 GitHub-Flask==2.0.0
-Jinja2==2.7.3
-MarkupSafe==0.23
-Unidecode==0.04.16
-WTForms==2.0.1
-Werkzeug==0.9.6
-aniso8601==0.90
 isodate==0.5.1
 itsdangerous==0.24
+Jinja2==2.7.3
+kombu==3.0.24
+logilab-common==0.63.2
+MarkupSafe==0.23
 pep8==1.5.7
-pylint
+pylint==1.4.3
 pyparsing==2.0.3
 python-slugify==0.1.0
-pytz==2014.10
+pytz==2015.2
 rdflib==4.1.2
 requests==2.5.0
 six==1.8.0
+SQLAlchemy==0.9.9
+Unidecode==0.4.16
+Werkzeug==0.9.6
+WTForms==2.0.1