--- 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