momo: add dialog to set a few global options (#8110)

This commit is contained in:
Frédéric Péters 2015-08-26 16:54:38 +02:00
parent 75dfc039ad
commit 1bb03aee98
6 changed files with 91 additions and 6 deletions

View File

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('momo', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='MomoOptions',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('title', models.CharField(max_length=100, null=True, verbose_name='Application Title')),
('contact_email', models.EmailField(max_length=75, null=True, verbose_name='Contact Email')),
('update_freq', models.PositiveIntegerField(default=86400, null=True, verbose_name='Update Frequency (in seconds)')),
('icons_on_homepage', models.BooleanField(default=False, verbose_name='Use icons on the homepage')),
],
options={
},
bases=(models.Model,),
),
]

View File

@ -24,6 +24,24 @@ from combo.data.models import CellBase
from combo.data.library import register_cell_class
class MomoOptions(models.Model):
title = models.CharField(_('Application Title'), max_length=100, null=True)
contact_email = models.EmailField(_('Contact Email'), null=True)
update_freq = models.PositiveIntegerField(_('Update Frequency (in seconds)'),
default=86400, null=True)
icons_on_homepage = models.BooleanField(
_('Use icons on the homepage'), default=False)
def save(self, *args, **kwargs):
self.id = 1
return super(MomoOptions, self).save(*args, **kwargs)
@classmethod
def get_object(cls, *args, **kwargs):
obj, created = cls.objects.get_or_create(pk=1)
return obj
@register_cell_class
class MomoIconCell(CellBase):
icon = models.CharField(_('Icon'), max_length=50,

View File

@ -7,6 +7,12 @@
{% block content %}
<p>
<a rel="popup" href="{% url 'momo-manager-options' %}">{% trans 'Options' %}</a>
</p>
<p>
<a href="{% url 'momo-manager-generate' %}">{% trans 'Generate Content Update' %}</a>
</p>
{% endblock %}

View File

@ -0,0 +1,19 @@
{% extends "momo/manager_base.html" %}
{% load i18n %}
{% block appbar %}
<h2>{% trans "Options" %}</h2>
{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<div class="buttons">
<button>{% trans "Save" %}</button>
<a class="cancel" href="{% url 'momo-manager-homepage' %}">{% trans 'Cancel' %}</a>
</div>
</form>
{% endblock %}

View File

@ -18,10 +18,11 @@ from django.conf.urls import patterns, url, include
from combo.urls_utils import decorated_includes, manager_required
from .views import MomoManagerView, generate
from .views import MomoManagerView, OptionsUpdateView, generate
momo_manager_urls = patterns('momo.manager_views',
url('^$', MomoManagerView.as_view(), name='momo-manager-homepage'),
url('^options/$', OptionsUpdateView.as_view(), name='momo-manager-options'),
url('^generate/$', generate, name='momo-manager-generate'),
)

View File

@ -26,12 +26,12 @@ from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.views.generic import TemplateView
from django.views.generic import TemplateView, UpdateView
import ckeditor
from combo.data.models import CellBase, LinkCell, Page
from .models import MomoIconCell
from .models import MomoIconCell, MomoOptions
class MomoManagerView(TemplateView):
@ -127,15 +127,19 @@ def generate(request, **kwargs):
'id': menu_id,
})
options = MomoOptions.get_object()
manifest['meta'] = {
'title': homepage.title,
'title': options.title or homepage.title,
'icon': 'icon.png',
'contact': 'info@entrouvert.com',
'updateFreq': 14400,
'contact': options.contact_email or 'info@entrouvert.com',
'updateFreq': options.update_freq or 86400,
'manifestUrl': request.build_absolute_uri(default_storage.url('index.json')),
'assetsUrl': request.build_absolute_uri(default_storage.url('assets.zip')),
}
if options.icons_on_homepage:
manifest['display'] = 'icons'
current_manifest = None
if default_storage.exists('index.json'):
with default_storage.open('index.json', mode='r') as fp:
@ -178,3 +182,13 @@ def generate(request, **kwargs):
messages.info(request, _('A new update has been generated.'))
return HttpResponseRedirect(reverse('momo-manager-homepage'))
class OptionsUpdateView(UpdateView):
model = MomoOptions
def get_object(self, *args, **kwargs):
return MomoOptions.get_object()
def get_success_url(self):
return reverse('momo-manager-homepage')