Add support for generating a simple Web App Manifest file, which helps mobile browsers display the site smartly

This commit is contained in:
Danielle McLean 2017-10-28 14:29:07 +11:00
parent 5987e54105
commit 55731c63ce
Signed by: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
7 changed files with 63 additions and 1 deletions

View file

@ -7,5 +7,6 @@ urlpatterns = [
url(r'^keybase.txt$', views.keybase, name='keybase'),
url(r'^host-meta$', views.host_meta_xml, name='host-meta'),
url(r'^host-meta.json$', views.host_meta_json, name='host-meta.json'),
url(r'^manifest.json$', views.manifest, name='manifest'),
url(r'^webfinger$', views.webfinger, name='webfinger'),
]

View file

@ -1,3 +1,4 @@
from .static import keybase
from .host_meta import host_meta_xml, host_meta_json
from .manifest import manifest
from .webfinger import webfinger

View file

@ -0,0 +1,28 @@
from django.conf import settings
from django.http import JsonResponse
from favicon.models import FaviconImg
from lemoncurry import utils
from lemoncurry.theme import theme
from urllib.parse import urljoin
def manifest(request):
origin = utils.origin(request)
app = {
'name': settings.LEMONCURRY_SITE_NAME,
'background_color': '#' + theme['base00'],
'theme_color': '#' + theme['base02'],
}
rels = ('shortcut icon', 'apple-touch-icon')
icons = FaviconImg.objects.filter(
faviconFK__isFavicon=True,
rel__in=rels,
).order_by('size')
app['icons'] = [{
'type': 'image/png',
'size': '{0}x{0}'.format(icon.size),
'src': urljoin(origin, icon.faviconImage.url),
} for icon in icons]
return JsonResponse(app, content_type='application/manifest+json')