diff --git a/openslides/motion/__init__.py b/openslides/motion/__init__.py index e69de29bb..f7f3759f3 100644 --- a/openslides/motion/__init__.py +++ b/openslides/motion/__init__.py @@ -0,0 +1 @@ +import openslides.motion.signals diff --git a/openslides/motion/models.py b/openslides/motion/models.py index 65c73d326..600a5c59a 100644 --- a/openslides/motion/models.py +++ b/openslides/motion/models.py @@ -17,7 +17,7 @@ from django.db import models from django.db.models import Max from django.dispatch import receiver from django.utils.translation import pgettext -from django.utils.translation import ugettext_lazy as _, ugettext_noop, ugettext +from django.utils.translation import ugettext_lazy, ugettext_noop, ugettext as _ from openslides.utils.utils import _propper_unicode from openslides.utils.person import PersonField @@ -242,13 +242,13 @@ class Motion(SlideMixin, models.Model): class MotionVersion(models.Model): - title = models.CharField(max_length=255, verbose_name=_("Title")) + title = models.CharField(max_length=255, verbose_name=ugettext_lazy("Title")) text = models.TextField(verbose_name=_("Text")) - reason = models.TextField(null=True, blank=True, verbose_name=_("Reason")) + reason = models.TextField(null=True, blank=True, verbose_name=ugettext_lazy("Reason")) rejected = models.BooleanField(default=False) creation_time = models.DateTimeField(auto_now=True) motion = models.ForeignKey(Motion, related_name='versions') - identifier = models.CharField(max_length=255, verbose_name=_("Version identifier")) + identifier = models.CharField(max_length=255, verbose_name=ugettext_lazy("Version identifier")) note = models.TextField(null=True, blank=True) def __unicode__(self): @@ -268,8 +268,8 @@ class MotionVersion(models.Model): class Category(models.Model): - name = models.CharField(max_length=255, verbose_name=_("Category name")) - prefix = models.CharField(max_length=32, verbose_name=_("Category prefix")) + name = models.CharField(max_length=255, verbose_name=ugettext_lazy("Category name")) + prefix = models.CharField(max_length=32, verbose_name=ugettext_lazy("Category prefix")) def __unicode__(self): return self.name diff --git a/openslides/motion/signals.py b/openslides/motion/signals.py new file mode 100644 index 000000000..b73637485 --- /dev/null +++ b/openslides/motion/signals.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" + openslides.motion.signales + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Signals for the motion app. + + :copyright: 2011, 2012 by OpenSlides team, see AUTHORS. + :license: GNU GPL, see LICENSE for more details. +""" + +from django.dispatch import receiver +from django.utils.translation import ugettext as _ + +from openslides.config.signals import default_config_value + +@receiver(default_config_value, dispatch_uid="motion_default_config") +def default_config(sender, key, **kwargs): + return { + 'motion_min_supporters': 0, + 'motion_preamble': _('The assembly may decide,'), + 'motion_pdf_ballot_papers_selection': 'CUSTOM_NUMBER', + 'motion_pdf_ballot_papers_number': '8', + 'motion_pdf_title': _('Motions'), + 'motion_pdf_preamble': '', + 'motion_allow_trivial_change': False, + }.get(key) diff --git a/openslides/motion/templates/motion/config.html b/openslides/motion/templates/motion/config.html new file mode 100644 index 000000000..42e064444 --- /dev/null +++ b/openslides/motion/templates/motion/config.html @@ -0,0 +1,22 @@ +{% extends "config/base_config.html" %} + +{% load i18n %} + +{% block title %}{{ block.super }} – {% trans "Motion settings" %}{% endblock %} + +{% block content %} +

{% trans "Motion settings" %}

+
{% csrf_token %} + {{ form.as_p }} +

+ + + + +

+
+{% endblock %} diff --git a/openslides/motion/views.py b/openslides/motion/views.py index 631290e2a..b26752892 100644 --- a/openslides/motion/views.py +++ b/openslides/motion/views.py @@ -22,7 +22,7 @@ from django.http import Http404 from openslides.utils.pdf import stylesheet from openslides.utils.views import ( TemplateView, RedirectView, UpdateView, CreateView, DeleteView, PDFView, - DetailView, ListView) + DetailView, ListView, FormView) from openslides.utils.template import Tab from openslides.utils.utils import html_strong from openslides.projector.api import get_active_slide @@ -30,7 +30,7 @@ from openslides.projector.projector import Widget, SLIDE from openslides.config.models import config from .models import Motion, MotionSubmitter from .forms import (BaseMotionForm, MotionSubmitterMixin, MotionSupporterMixin, - MotionTrivialChangesMixin) + MotionTrivialChangesMixin, ConfigForm) class MotionListView(ListView): """ @@ -111,6 +111,35 @@ class MotionUpdateView(MotionMixin, UpdateView): motion_edit = MotionUpdateView.as_view() +class Config(FormView): + permission_required = 'config.can_manage_config' + form_class = ConfigForm + template_name = 'motion/config.html' + success_url_name = 'config_motion' + + def get_initial(self): + return { + 'motion_min_supporters': config['motion_min_supporters'], + 'motion_preamble': config['motion_preamble'], + 'motion_pdf_ballot_papers_selection': config['motion_pdf_ballot_papers_selection'], + 'motion_pdf_ballot_papers_number': config['motion_pdf_ballot_papers_number'], + 'motion_pdf_title': config['motion_pdf_title'], + 'motion_pdf_preamble': config['motion_pdf_preamble'], + 'motion_allow_trivial_change': config['motion_allow_trivial_change'], + } + + def form_valid(self, form): + config['motion_min_supporters'] = form.cleaned_data['motion_min_supporters'] + config['motion_preamble'] = form.cleaned_data['motion_preamble'] + config['motion_pdf_ballot_papers_selection'] = form.cleaned_data['motion_pdf_ballot_papers_selection'] + config['motion_pdf_ballot_papers_number'] = form.cleaned_data['motion_pdf_ballot_papers_number'] + config['motion_pdf_title'] = form.cleaned_data['motion_pdf_title'] + config['motion_pdf_preamble'] = form.cleaned_data['motion_pdf_preamble'] + config['motion_allow_trivial_change'] = form.cleaned_data['motion_allow_trivial_change'] + messages.success(self.request, _('Motion settings successfully saved.')) + return super(Config, self).form_valid(form) + + def register_tab(request): """ Register the projector tab. diff --git a/openslides/utils/views.py b/openslides/utils/views.py index 106c9d9f2..0958421d0 100644 --- a/openslides/utils/views.py +++ b/openslides/utils/views.py @@ -127,11 +127,11 @@ class UrlMixin(object): "No URL to redirect to. Provide an apply_url_name.") def get_success_url(self): - messages.success(self.request, self.get_success_message()) if 'apply' in self.request.POST: return self.get_apply_url() + if self.success_url_name: - return reverse(self.success_url) + return reverse(self.success_url_name) elif self.success_url: return self.success_url else: