--- a/src/catedit/__init__.py Thu Apr 09 17:39:27 2015 +0200
+++ b/src/catedit/__init__.py Thu Apr 09 20:59:57 2015 +0200
@@ -9,7 +9,7 @@
from catedit.version import CURRENT_VERSION
from requests import request
-from flask import Flask, session, request, url_for
+from flask import has_request_context, Flask, session, request, url_for, g
from flask_wtf.csrf import CsrfProtect
from flask.ext.github import GitHub
from flask.ext.cache import Cache
@@ -52,8 +52,6 @@
)
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)
@@ -63,9 +61,11 @@
Utility function for github-flask module to get user token when
making authenticated requests
"""
- if session.get("user_logged", None):
+ if (has_request_context() and session.get("user_logged", None)):
# logger.debug("I made an authentified request")
return session["user_code"]
+ else:
+ return g.get("user_code")
def log_api_rate(r, *args, **kwargs):
"""
--- a/src/catedit/resources.py Thu Apr 09 17:39:27 2015 +0200
+++ b/src/catedit/resources.py Thu Apr 09 20:59:57 2015 +0200
@@ -98,17 +98,18 @@
args = cat_parser.parse_args()
if cat_id is None:
if cat_manager_instance.persistence.session_compliant is True:
- session["tasks"][repository].append(
- submit_changes.delay(
- deleted_cat_dict=session.get(
+ task=submit_changes.delay(
+ deleted_categories=session.get(
"deleted_categories", {}
).get(repository, {}),
- modified_cat_dict=session.get(
+ modified_categories=session.get(
"modified_categories", {}
).get(repository, {}),
- message=args["commit_message"]
+ message=args["commit_message"],
+ repository=repository,
+ token=session["user_code"]
)
- )
+ session["tasks"][repository].append(task.id)
session["deleted_categories"][repository] = {}
session["modified_categories"][repository] = {}
cache.clear()
--- a/src/catedit/tasks.py Thu Apr 09 17:39:27 2015 +0200
+++ b/src/catedit/tasks.py Thu Apr 09 20:59:57 2015 +0200
@@ -1,15 +1,23 @@
-from catedit import app, celery
+from catedit import app, celery, cache
+from catedit.models import CategoryManager
+import catedit.persistence
+import logging
+from flask import g, url_for
+import requests
+
+logger = logging.getLogger(__name__)
@celery.task
-def submit_changes(self, modified_categories, deleted_categories, message):
+def submit_changes(modified_categories, deleted_categories, message, repository, token):
with app.app_context():
+ g.user_code = token
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:"
@@ -24,4 +32,9 @@
deleted_cat_dict=deleted_categories,
modified_cat_dict=modified_categories,
message=message
- )
\ No newline at end of file
+ )
+ requests.get(url_for("cache_clear_endpoint"))
+
+@app.route('/cache-clear-after-task', methods=["GET"])
+def cache_clear_endpoint():
+ cache.clear()
\ No newline at end of file