Skip to content

Commit

Permalink
Try to fix deferred_js random issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
sfermigier committed Aug 1, 2018
1 parent 1952c99 commit 3eccde7
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions abilian/core/jinjaext.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,12 @@
from __future__ import absolute_import, division, print_function, \
unicode_literals

from functools import partial

import lxml.html
from flask import current_app
from flask.globals import _lookup_req_object, _request_ctx_stack
from flask.globals import g
from flask.signals import got_request_exception, request_started
from jinja2 import nodes
from jinja2.ext import Extension as JinjaExtension
from werkzeug.local import LocalProxy

deferred_js = LocalProxy(partial(_lookup_req_object, "deferred_js"))


class DeferredJS(object):
Expand All @@ -36,8 +31,9 @@ def init_app(self, app):
def reset_request(self, sender, **extra):
self.reset_deferred()

def reset_deferred(self):
_request_ctx_stack.top.deferred_js = []
@staticmethod
def reset_deferred():
g.deferred_js = []


class DeferredJSExtension(JinjaExtension):
Expand Down Expand Up @@ -83,10 +79,11 @@ def defer_nodes(self, caller):
body.append(child.tail)
body = "".join(body)

deferred_js.append(body)
g.deferred_js.append(body)
return ""

def collect_deferred(self, caller):
result = "\n".join("(function(){{\n{}\n}})();".format(js) for js in deferred_js)
current_app.extensions[DeferredJS.name].reset_deferred()
result = "\n".join("(function(){{\n{}\n}})();".format(js) for js in g.deferred_js)
flask_ext = current_app.extensions[DeferredJS.name]
flask_ext.reset_deferred()
return result

0 comments on commit 3eccde7

Please sign in to comment.