From 894f16ec53ee6d7a41e0a8dbe38bb7301b80455c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Norman=20J=C3=A4ckel?= Date: Wed, 22 May 2013 23:53:01 +0200 Subject: [PATCH] Several template and bug fixes, some minor view behavior changes --- .../account/personal_info_widget.html | 4 ++-- openslides/agenda/templates/agenda/view.html | 14 ++++++------ openslides/motion/forms.py | 2 +- openslides/motion/models.py | 6 +++++ .../templates/motion/motion_detail.html | 22 +++++++++---------- .../motion/motion_form_csv_import.html | 3 ++- .../motion/templates/motion/motion_list.html | 2 +- .../motion/templates/motion/widget.html | 2 +- .../motion/templates/projector/Motion.html | 2 +- openslides/motion/views.py | 15 +++++++++++-- 10 files changed, 45 insertions(+), 27 deletions(-) diff --git a/openslides/account/templates/account/personal_info_widget.html b/openslides/account/templates/account/personal_info_widget.html index 33907f019..482a265ac 100644 --- a/openslides/account/templates/account/personal_info_widget.html +++ b/openslides/account/templates/account/personal_info_widget.html @@ -17,7 +17,7 @@
  • {% if motion.identifier %} - [#{{ motion.identifier }}] + [# {{ motion.identifier }}] {% else %} [---] {% endif %} @@ -37,7 +37,7 @@
  • {% if motion.identifier %} - [#{{ motion.identifier }}] + [# {{ motion.identifier }}] {% else %} [---] {% endif %} diff --git a/openslides/agenda/templates/agenda/view.html b/openslides/agenda/templates/agenda/view.html index 34488eb84..753744e37 100644 --- a/openslides/agenda/templates/agenda/view.html +++ b/openslides/agenda/templates/agenda/view.html @@ -22,6 +22,13 @@
    {% trans "Back to overview" %} + {% if perms.projector.can_manage_projector %} + + + + {% endif %} {% if perms.agenda.can_manage_agenda %} - {% if perms.projector.can_manage_projector %} - - - - {% endif %}
    diff --git a/openslides/motion/forms.py b/openslides/motion/forms.py index f81303ade..061d2ba43 100644 --- a/openslides/motion/forms.py +++ b/openslides/motion/forms.py @@ -157,7 +157,7 @@ class MotionImportForm(CssClassMixin, forms.Form): csvfile = forms.FileField( widget=forms.FileInput(attrs={'size': '50'}), label=ugettext_lazy('CSV File'), - help_text=ugettext_lazy('The file should be encoded in UTF-8.')) + help_text=ugettext_lazy('The file has to be encoded in UTF-8.')) """ CSV filt with import data. """ diff --git a/openslides/motion/models.py b/openslides/motion/models.py index dab91f143..55b5b5b08 100644 --- a/openslides/motion/models.py +++ b/openslides/motion/models.py @@ -349,6 +349,12 @@ class Motion(SlideMixin, models.Model): except IndexError: return self.new_version + def get_last_not_rejected_version(self): + """ + Returns the newest version of the motion, which is not rejected. + """ + return self.versions.filter(rejected=False).order_by('-version_number')[0] + @property def submitters(self): return sorted([object.person for object in self.submitter.all()], diff --git a/openslides/motion/templates/motion/motion_detail.html b/openslides/motion/templates/motion/motion_detail.html index 1b2c9810a..3e98d6ce5 100644 --- a/openslides/motion/templates/motion/motion_detail.html +++ b/openslides/motion/templates/motion/motion_detail.html @@ -16,7 +16,7 @@ {% else %} [{% trans "no number" %}], {% endif %} - {# TODO: show only for complex workflow #} + {# TODO: show only for workflow with versioning #} {% trans "Version" %} {{ motion.version.version_number }} @@ -57,19 +57,19 @@
    {# TODO: show only for workflow with versioning #} - {% if motion.version.version_number < motion.last_version.version_number %} + {% if motion.version.version_number != motion.get_last_not_rejected_version.version_number %} - {% trans "This is not the newest version." %} + {% trans "This is not the last not rejected version." %} - {% trans "Go to last version" %} - (#{{ motion.last_version.version_number }}) + {% trans "Go to last not rejected version" %} + (# {{ motion.get_last_not_rejected_version.version_number }}) {% endif %} - {% if motion.version.version_number > motion.active_version.version_number %} + {% if motion.version.version_number != motion.active_version.version_number %} - {% trans "This version is not yet authorized." %} + {% trans "This version is not authorized." %} {% trans "Go to last authorized version" %} - (#{{ motion.active_version.version_number }}) + (# {{ motion.active_version.version_number }}) {% endif %} @@ -198,7 +198,7 @@ {% if perms.motion.can_manage_motion or poll.has_votes %}
  • {% trans "Vote" %} {% if perms.motion.can_manage_motion %} - + {% endif %}
    @@ -220,7 +220,7 @@
  • {% endif %} {% empty %} - - + {% endfor %} {% if allowed_actions.create_poll %} @@ -235,7 +235,7 @@ {% if motion.category %} {{ motion.category }} {% else %} - - + – {% endif %} diff --git a/openslides/motion/templates/motion/motion_form_csv_import.html b/openslides/motion/templates/motion/motion_form_csv_import.html index 9d52c84f6..8fa4677a7 100644 --- a/openslides/motion/templates/motion/motion_form_csv_import.html +++ b/openslides/motion/templates/motion/motion_form_csv_import.html @@ -23,8 +23,9 @@
  • {% trans 'Identifier, reason, submitter and category are optional and may be empty' %}.
  • +
  • {% trans 'The first line (header) is ignored' %}.
  • - {% trans 'Required CSV file encoding: UTF-8.' %} + {% trans 'Required CSV file encoding is UTF-8' %}.
  • {% trans 'Use the CSV example file from OpenSlides Wiki.' %} diff --git a/openslides/motion/templates/motion/motion_list.html b/openslides/motion/templates/motion/motion_list.html index 36d8d57b1..ca1036149 100644 --- a/openslides/motion/templates/motion/motion_list.html +++ b/openslides/motion/templates/motion/motion_list.html @@ -51,7 +51,7 @@ {{ motion.identifier|default:'' }} {{ motion.title }} - {% if motion.category %}{{ motion.category }}{% else %}-{% endif %} + {% if motion.category %}{{ motion.category }}{% else %}–{% endif %} {% trans motion.state.name %} {% for submitter in motion.submitter.all %} diff --git a/openslides/motion/templates/motion/widget.html b/openslides/motion/templates/motion/widget.html index 6e3b525b7..2a9e47bdb 100644 --- a/openslides/motion/templates/motion/widget.html +++ b/openslides/motion/templates/motion/widget.html @@ -15,7 +15,7 @@ {% if motion.identifier %} - [#{{ motion.identifier }}] + [# {{ motion.identifier }}] {% else %} [---] {% endif %} diff --git a/openslides/motion/templates/projector/Motion.html b/openslides/motion/templates/projector/Motion.html index e2e4974a6..848fd610b 100644 --- a/openslides/motion/templates/projector/Motion.html +++ b/openslides/motion/templates/projector/Motion.html @@ -14,7 +14,7 @@

    - {% with motion.polls as polls %} + {% with motion.polls.all as polls %} {% if polls.exists and polls.0.has_votes %}

    {% trans "Poll result" %}: {% for poll in polls %} diff --git a/openslides/motion/views.py b/openslides/motion/views.py index 1d16c97e3..213f1db9e 100644 --- a/openslides/motion/views.py +++ b/openslides/motion/views.py @@ -64,6 +64,8 @@ class GetVersionMixin(object): object.version = int(version_number) except MotionVersion.DoesNotExist: raise Http404('Version %s not found' % version_number) + else: + object.version = object.get_last_not_rejected_version() return object @@ -227,6 +229,9 @@ class MotionDeleteView(DeleteView): """Check if the request.user has the permission to delete the motion.""" return self.get_object().get_allowed_actions(request.user)['delete'] + def get_success_message(self): + return _('%s was successfully deleted.') % _('Motion') + motion_delete = MotionDeleteView.as_view() @@ -279,7 +284,7 @@ class VersionRejectView(GetVersionMixin, SingleObjectMixin, QuestionMixin, Redir model = Motion question_url_name = 'motion_version_detail' - success_url_name = 'motion_version_detail' + success_url_name = 'motion_detail' def get(self, *args, **kwargs): """ @@ -307,6 +312,12 @@ class VersionRejectView(GetVersionMixin, SingleObjectMixin, QuestionMixin, Redir message_list=[ugettext_noop('Version %d rejected') % self.object.version.version_number], person=self.request.user) + def get_success_url_name_args(self): + """ + Returns the motion pk as argument for the success url name. + """ + return [self.object.pk] + version_reject = VersionRejectView.as_view() @@ -505,7 +516,7 @@ class PollDeleteView(PollMixin, DeleteView): Write a log message, if the form is valid. """ super(PollDeleteView, self).case_yes() - self.object.write_log([ugettext_noop('Poll deleted')], self.request.user) + self.object.motion.write_log([ugettext_noop('Poll deleted')], self.request.user) def get_redirect_url(self, **kwargs): """