# HG changeset patch # User durandn # Date 1428605997 -7200 # Node ID b3c1c89fcf97fee74b955b5ba18e5c8e2dcdd40c # Parent 75170fe4d56b7fc167111d21c9d3cf50357541e2 Working server side task managing for submitting categories, fixed cache issue diff -r 75170fe4d56b -r b3c1c89fcf97 src/catedit/__init__.py --- 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): """ diff -r 75170fe4d56b -r b3c1c89fcf97 src/catedit/resources.py --- 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() diff -r 75170fe4d56b -r b3c1c89fcf97 src/catedit/tasks.py --- 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