pwa: add application title parameter (#32371)
This commit is contained in:
parent
af9a647b57
commit
afe102d95d
|
@ -32,6 +32,16 @@ class ManagerHomeView(UpdateView):
|
|||
fields = '__all__'
|
||||
success_url = reverse_lazy('pwa-manager-homepage')
|
||||
|
||||
def get_initial(self):
|
||||
initial = super(ManagerHomeView, self).get_initial()
|
||||
initial['application_name'] = self.get_object().get_application_name()
|
||||
return initial
|
||||
|
||||
def form_valid(self, form):
|
||||
if form.instance.application_name == PwaSettings.get_default_application_name():
|
||||
form.instance.application_name = ''
|
||||
return super(ManagerHomeView, self).form_valid(form)
|
||||
|
||||
def get_object(self):
|
||||
return PwaSettings.singleton()
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.20 on 2019-04-16 14:08
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('pwa', '0004_pwasettings_application_icon'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='pwasettings',
|
||||
name='application_name',
|
||||
field=models.CharField(blank=True, max_length=64, verbose_name='Application Name'),
|
||||
),
|
||||
]
|
|
@ -36,6 +36,10 @@ from combo import utils
|
|||
|
||||
class PwaSettings(models.Model):
|
||||
APPLICATION_ICON_SIZES = ['%sx%s' % (x, x) for x in (48, 96, 192, 256, 512)]
|
||||
application_name = models.CharField(
|
||||
verbose_name=_('Application Name'),
|
||||
max_length=64,
|
||||
blank=True)
|
||||
application_icon = models.FileField(
|
||||
verbose_name=_('Application Icon'),
|
||||
help_text=_(u'Should be a square of at least 512×512 pixels.'),
|
||||
|
@ -71,6 +75,13 @@ class PwaSettings(models.Model):
|
|||
setattr(obj, attr, json_settings[attr])
|
||||
obj.save()
|
||||
|
||||
@classmethod
|
||||
def get_default_application_name(cls):
|
||||
return settings.TEMPLATE_VARS.get('global_title') or 'Compte Citoyen'
|
||||
|
||||
def get_application_name(self):
|
||||
return self.application_name or self.get_default_application_name()
|
||||
|
||||
|
||||
class PwaNavigationEntry(models.Model):
|
||||
label = models.CharField(verbose_name=_('Label'), max_length=150, blank=True)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% load static thumbnail %}{
|
||||
"name": "{% firstof global_title "Compte Citoyen" %}",
|
||||
"short_name": "{% firstof global_title "Compte Citoyen" %}",
|
||||
"name": "{{ pwa_settings.get_application_name }}",
|
||||
"short_name": "{{ pwa_settings.get_application_name }}",
|
||||
"start_url": "{% firstof pwa_start_url "/" %}",
|
||||
{% if theme_color %}
|
||||
"background_color": "{{ theme_color }}",
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
{% endthumbnail %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="applabel">{% firstof global_title "Compte Citoyen" %}</div>
|
||||
<div class="applabel">{{ pwa_settings.get_application_name }}</div>
|
||||
</div>
|
||||
<iframe scrolling="no"></iframe>
|
||||
</div>
|
||||
|
|
|
@ -147,6 +147,20 @@ def test_pwa_manager(app, admin_user):
|
|||
resp = resp.form.submit().follow()
|
||||
assert PwaSettings.singleton().application_icon.name == 'pwa/test.png'
|
||||
|
||||
# make sure another application name was not saved
|
||||
assert not PwaSettings.singleton().application_name
|
||||
resp = app.get('/manage/pwa/')
|
||||
assert resp.form['application_name'].value == 'Compte Citoyen'
|
||||
resp.form['application_name'] = 'Test'
|
||||
resp = resp.form.submit().follow()
|
||||
assert PwaSettings.singleton().application_name == 'Test'
|
||||
|
||||
# make sure using the default application name switches back to
|
||||
# global_title/compte citoyen.
|
||||
resp.form['application_name'] = 'Compte Citoyen'
|
||||
resp = resp.form.submit().follow()
|
||||
assert not PwaSettings.singleton().application_name
|
||||
|
||||
|
||||
def test_pwa_offline_page(app):
|
||||
PwaSettings.objects.all().delete()
|
||||
|
@ -203,3 +217,12 @@ def test_pwa_application_icon(app, admin_user):
|
|||
# make sure largest icon is referenced in service worker
|
||||
resp2 = app.get('/service-worker.js', status=200)
|
||||
assert resp.json['icons'][-1]['src'].split('/')[-1] in resp.text
|
||||
|
||||
|
||||
def test_pwa_application_name(app, admin_user):
|
||||
app = login(app)
|
||||
assert app.get('/manifest.json', status=200).json['name'] == 'Compte Citoyen'
|
||||
pwa_settings = PwaSettings.singleton()
|
||||
pwa_settings.application_name = 'My wonderful app'
|
||||
pwa_settings.save()
|
||||
assert app.get('/manifest.json', status=200).json['name'] == 'My wonderful app'
|
||||
|
|
Loading…
Reference in New Issue