From 4ddde36fded5a5acb8b0a85137ab22d4be214215 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Mon, 12 Feb 2018 12:43:32 +0100
Subject: [PATCH] Add Flask-CacheBust to force reload of js files

The browser caches the static files (js, css...).
Flask-CacheBust adds a hash to the URL of each static file to force
clients to redownload the files when changed.
---
 app/extensions.py | 2 ++
 app/factory.py    | 4 +++-
 environment.yml   | 1 +
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/app/extensions.py b/app/extensions.py
index 707534c..24aff09 100644
--- a/app/extensions.py
+++ b/app/extensions.py
@@ -22,6 +22,7 @@ from flask_debugtoolbar import DebugToolbarExtension
 from flask_redis import FlaskRedis
 from flask_session import Session
 from flask_caching import Cache
+from flask_cache_bust import CacheBust
 
 
 convention = {
@@ -45,3 +46,4 @@ toolbar = DebugToolbarExtension()
 redis_store = FlaskRedis()
 fsession = Session()
 cache = Cache()
+cache_bust = CacheBust()
diff --git a/app/factory.py b/app/factory.py
index 47c27d2..2bd6ba7 100644
--- a/app/factory.py
+++ b/app/factory.py
@@ -14,7 +14,8 @@ from flask import Flask
 from whitenoise import WhiteNoise
 from . import settings, models
 from .extensions import (db, migrate, login_manager, ldap_manager, bootstrap,
-                         admin, mail, jwt, toolbar, redis_store, fsession, cache)
+                         admin, mail, jwt, toolbar, redis_store, fsession, cache,
+                         cache_bust)
 from .admin.views import (AdminModelView, ItemAdmin, UserAdmin, TokenAdmin,
                           NetworkAdmin)
 from .main.views import bp as main
@@ -90,6 +91,7 @@ def create_app(config=None):
     app.config['SESSION_REDIS'] = redis_store
     fsession.init_app(app)
     cache.init_app(app)
+    cache_bust.init_app(app)
 
     admin.init_app(app)
     admin.add_view(UserAdmin(models.User, db.session, endpoint='users'))
diff --git a/environment.yml b/environment.yml
index ca03f0b..c0c4c89 100644
--- a/environment.yml
+++ b/environment.yml
@@ -80,6 +80,7 @@ dependencies:
   - dominate==2.3.1
   - email-validator==1.0.2
   - git+https://github.com/beenje/flask-bootstrap@4.0.0.0.dev1
+  - git+https://github.com/beenje/flask-cachebust@2.0.0
   - flask-caching==1.3.3
   - flask-jwt-extended==3.4.0
   - flask-ldap3-login==0.9.13
-- 
GitLab