momo: add dialog to set a few global options (#8110)
This commit is contained in:
parent
75dfc039ad
commit
1bb03aee98
|
@ -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,),
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
@ -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'),
|
||||
)
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue