Projet

Général

Profil

0001-pwa-use-combo-version-settings-timestamp-as-service-.patch

Frédéric Péters, 28 décembre 2018 11:00

Télécharger (3,86 ko)

Voir les différences:

Subject: [PATCH] pwa: use combo version + settings timestamp as service worker
 version (#29368)

 .gitignore                                       |  1 +
 combo/__init__.py                                |  5 +++++
 combo/apps/pwa/templates/combo/service-worker.js |  2 +-
 combo/apps/pwa/views.py                          | 12 ++++++++++--
 setup.py                                         |  7 ++++---
 5 files changed, 21 insertions(+), 6 deletions(-)
.gitignore
1 1
*.pyc
2 2
combo/local_settings.py
3
combo/version.py
3 4
build/
4 5
coverage.xml
5 6
test_results.xml
combo/__init__.py
13 13
#
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16

  
17
try:
18
    from .version import VERSION
19
except ImportError:
20
    VERSION = '0'
combo/apps/pwa/templates/combo/service-worker.js
23 23

  
24 24

  
25 25
var config = {
26
  version: 'v{% start_timestamp %}',
26
  version: 'v{{ version }}',
27 27
  staticCacheItems: [
28 28
    '/__pwa__/offline/',
29 29
    '{% static "" %}{{ css_variant }}/{{ icon_prefix }}{{icon_sizes|last}}px.png'
combo/apps/pwa/views.py
24 24
from django.views.generic import TemplateView
25 25

  
26 26
from .models import PushSubscription, PwaSettings
27
from combo import VERSION
27 28

  
28 29

  
29 30
def manifest_json(request, *args, **kwargs):
......
34 35
    return HttpResponse(template.render({}, request), content_type='application/json')
35 36

  
36 37

  
37
def js_response(request, template_name):
38
def js_response(request, template_name, **kwargs):
38 39
    template = get_template(template_name)
39 40
    context = {
40 41
        'pwa_vapid_publik_key': settings.PWA_VAPID_PUBLIK_KEY,
41 42
        'pwa_notification_badge_url': settings.PWA_NOTIFICATION_BADGE_URL,
42 43
        'pwa_notification_icon_url': settings.PWA_NOTIFICATION_ICON_URL,
43 44
    }
45
    context.update(kwargs)
44 46
    return HttpResponse(template.render(context, request),
45 47
            content_type='application/javascript; charset=utf-8')
46 48

  
47 49

  
48 50
def service_worker_js(request, *args, **kwargs):
49
    return js_response(request, 'combo/service-worker.js')
51
    pwa_settings = PwaSettings.singleton()
52
    if pwa_settings.id:
53
        version = '%s-%s' % (VERSION, pwa_settings.last_update_timestamp)
54
    else:
55
        version = VERSION
56
    return js_response(request, 'combo/service-worker.js',
57
            version=version)
50 58

  
51 59

  
52 60
def service_worker_registration_js(request, *args, **kwargs):
setup.py
20 20
        if os.path.exists('VERSION'):
21 21
            os.remove('VERSION')
22 22
        version = get_version()
23
        version_file = open('VERSION', 'w')
24
        version_file.write(version)
25
        version_file.close()
23
        with open('VERSION', 'w') as fd:
24
            fd.write(version)
25
        with open('combo/version.py', 'w') as fd:
26
            fd.write('VERSION = %r' % version)
26 27
        sdist.run(self)
27 28
        if os.path.exists('VERSION'):
28 29
            os.remove('VERSION')
29
-