diff --git a/openslides/agenda/forms.py b/openslides/agenda/forms.py index 66a4ee7a7..f0768f656 100644 --- a/openslides/agenda/forms.py +++ b/openslides/agenda/forms.py @@ -27,6 +27,8 @@ class ItemForm(forms.ModelForm, CssClassMixin): parent = TreeNodeChoiceField( queryset=Item.objects.all(), label=_("Parent item"), required=False) + duration = forms.TimeField(widget=forms.TimeInput(format='%H:%M') , input_formats=('%H:%M', '%H %M', '%M'), required=False) + class Meta: model = Item exclude = ('closed', 'weight', 'related_sid') diff --git a/openslides/agenda/models.py b/openslides/agenda/models.py index 45a8ae1bb..a4c46671d 100644 --- a/openslides/agenda/models.py +++ b/openslides/agenda/models.py @@ -46,6 +46,8 @@ class Item(MPTTModel, SlideMixin): type = models.CharField(max_length=3, choices=ITEM_TYPE, default='agd', verbose_name=_("Type")) + duration = models.TimeField(blank=True, null=True, verbose_name=_('Duration')); + related_sid = models.CharField(null=True, blank=True, max_length=63) def get_related_slide(self): @@ -174,6 +176,7 @@ class Item(MPTTModel, SlideMixin): def __unicode__(self): return self.get_title() + class Meta: permissions = ( ('can_see_agenda', ugettext_noop("Can see agenda")), @@ -185,5 +188,7 @@ class Item(MPTTModel, SlideMixin): order_insertion_by = ['weight'] + + register_slidemodel(Item, control_template='agenda/control_item.html') register_slidefunc('agenda', agenda_show, weight=-1, name=_('Agenda')) diff --git a/openslides/agenda/templates/agenda/item_row.html b/openslides/agenda/templates/agenda/item_row.html index b5e3c084c..89c41aa92 100644 --- a/openslides/agenda/templates/agenda/item_row.html +++ b/openslides/agenda/templates/agenda/item_row.html @@ -27,6 +27,10 @@ {{ item.comment|first_line }} + + {{ item.duration|time:"H:i" }} + + {% endif %} {% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %} diff --git a/openslides/agenda/templates/agenda/overview.html b/openslides/agenda/templates/agenda/overview.html index 24ffaca65..8db571b3f 100644 --- a/openslides/agenda/templates/agenda/overview.html +++ b/openslides/agenda/templates/agenda/overview.html @@ -64,6 +64,9 @@ {% if perms.agenda.can_manage_agenda %} {% trans "Comment" %} {% endif %} + {% if perms.agenda.can_manage_agenda %} + {% trans "Duration" %} + {% endif %} {% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %} {% trans "Actions" %} {% endif %} @@ -78,6 +81,7 @@ {% if perms.agenda.can_manage_agenda %} + {{ duration|time:"H:i" }} {% endif %} {% if perms.agenda.can_manage_agenda or perms.projector.can_manage_projector %} @@ -99,7 +103,7 @@ {% endfor %} {% else %} - {% trans "No items available." %} + {% trans "No items available." %} {% endif %} diff --git a/openslides/agenda/views.py b/openslides/agenda/views.py index c66eaf18d..d968527d7 100644 --- a/openslides/agenda/views.py +++ b/openslides/agenda/views.py @@ -28,6 +28,7 @@ from openslides.projector.api import get_active_slide from openslides.projector.projector import Widget, SLIDE from .models import Item from .forms import ItemOrderForm, ItemForm +from datetime import datetime, timedelta class Overview(TemplateView): @@ -37,6 +38,8 @@ class Overview(TemplateView): permission_required = 'agenda.can_see_agenda' template_name = 'agenda/overview.html' + + def get_context_data(self, **kwargs): context = super(Overview, self).get_context_data(**kwargs) @@ -45,9 +48,15 @@ class Overview(TemplateView): else: items = Item.objects.filter(type__exact = 'agd') + duration = timedelta() + for agenda_item in Item.objects.filter(closed=False): + if agenda_item.duration is not None: + duration += timedelta(hours=agenda_item.duration.hour, minutes=agenda_item.duration.minute) + context.update({ 'items': items, 'active_sid': get_active_slide(only_sid=True), + 'duration': datetime.strptime(str(duration), '%H:%M:%S'), }) return context @@ -100,6 +109,7 @@ class SetClosed(RedirectView, SingleObjectMixin): url = 'item_overview' model = Item + def get_ajax_context(self, **kwargs): context = super(SetClosed, self).get_ajax_context(**kwargs) closed = kwargs['closed'] diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index d5f954adb..f9ea13c14 100644 Binary files a/openslides/locale/de/LC_MESSAGES/django.mo and b/openslides/locale/de/LC_MESSAGES/django.mo differ diff --git a/openslides/locale/de/LC_MESSAGES/django.po b/openslides/locale/de/LC_MESSAGES/django.po index 412c61bf9..389f332e1 100644 --- a/openslides/locale/de/LC_MESSAGES/django.po +++ b/openslides/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenSlides 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-05 22:30+0100\n" +"POT-Creation-Date: 2013-01-28 23:58+0100\n" "PO-Revision-Date: 2012-07-28 11:07+0200\n" "Last-Translator: Emanuel Schuetze \n" "Language-Team: support@openslides.de\n" @@ -63,7 +63,7 @@ msgstr "Kommentar" msgid "Closed" msgstr "Abgeschlossen" -#: agenda/models.py:43 agenda/templates/agenda/overview.html:71 +#: agenda/models.py:43 agenda/templates/agenda/overview.html:74 #: projector/models.py:31 msgid "Weight" msgstr "Gewichtung" @@ -75,57 +75,61 @@ msgstr "Gewichtung" msgid "Type" msgstr "Typ" -#: agenda/models.py:179 +#: agenda/models.py:49 agenda/templates/agenda/overview.html:68 +msgid "Duration" +msgstr "Dauer" + +#: agenda/models.py:182 msgid "Can see agenda" msgstr "Darf die Tagesordnung sehen" -#: agenda/models.py:180 +#: agenda/models.py:183 msgid "Can manage agenda" msgstr "Darf die Tagesordung verwalten" -#: agenda/models.py:181 +#: agenda/models.py:184 msgid "Can see orga items" msgstr "Darf Organisationspunkte sehen" -#: agenda/models.py:189 agenda/slides.py:20 agenda/views.py:191 -#: agenda/views.py:192 agenda/views.py:212 agenda/views.py:226 +#: agenda/models.py:194 agenda/slides.py:20 agenda/views.py:207 +#: agenda/views.py:208 agenda/views.py:228 agenda/views.py:242 #: agenda/templates/agenda/base_agenda.html:10 #: agenda/templates/agenda/overview.html:8 #: agenda/templates/agenda/overview.html:52 -#: agenda/templates/agenda/overview.html:77 +#: agenda/templates/agenda/overview.html:80 #: agenda/templates/projector/AgendaSummary.html:6 #: agenda/templates/projector/AgendaSummary.html:10 msgid "Agenda" msgstr "Tagesordnung" -#: agenda/views.py:54 +#: agenda/views.py:69 msgid "You are not authorized to manage the agenda." msgstr "Sie sind nicht berechtigt die Tagesordnung zu ändern." -#: agenda/views.py:70 +#: agenda/views.py:85 msgid "Errors when reordering of the agenda" msgstr "Fehler beim Neusortieren der Tagesordnung" -#: agenda/views.py:131 +#: agenda/views.py:147 #, python-format msgid "Item %s was successfully modified." msgstr "Eintrag %s wurde erfolgreich bearbeitet." -#: agenda/views.py:152 +#: agenda/views.py:168 #, python-format msgid "Item %s was successfully created." msgstr "Eintrag %s wurde erfolgreich angelegt." -#: agenda/views.py:169 +#: agenda/views.py:185 msgid "Yes, with all child items." msgstr "Ja, mit allen Kindelementen." -#: agenda/views.py:177 +#: agenda/views.py:193 #, python-format msgid "Item %s and his children were successfully deleted." msgstr "Eintrag %s und seine Kindelemente wurde erfolgreich gelöscht." -#: agenda/views.py:182 +#: agenda/views.py:198 #, python-format msgid "Item %s was successfully deleted." msgstr "Eintrag %s wurde erfolgreich gelöscht." @@ -149,12 +153,12 @@ msgstr "Eintrag anzeigen" #: agenda/templates/agenda/base_agenda.html:31 #: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:16 -#: agenda/templates/agenda/item_row.html:40 +#: agenda/templates/agenda/item_row.html:44 msgid "Edit item" msgstr "Eintrag bearbeiten" #: agenda/templates/agenda/base_agenda.html:33 -#: agenda/templates/agenda/item_row.html:41 +#: agenda/templates/agenda/item_row.html:45 msgid "Delete item" msgstr "Eintrag löschen" @@ -231,12 +235,12 @@ msgstr "Eintrag als erledigt markieren" msgid "Item closed" msgstr "Eintrag erledigt" -#: agenda/templates/agenda/item_row.html:35 -#: agenda/templates/agenda/overview.html:86 +#: agenda/templates/agenda/item_row.html:39 +#: agenda/templates/agenda/overview.html:90 msgid "Activate item" msgstr "Eintrag projizieren" -#: agenda/templates/agenda/item_row.html:44 +#: agenda/templates/agenda/item_row.html:48 #: agenda/templates/agenda/widget.html:35 msgid "Activate summary for this item" msgstr "Zusammenfassung für diesen Eintrag projizieren" @@ -292,7 +296,7 @@ msgstr "Erledigt" msgid "Item" msgstr "Eintrag" -#: agenda/templates/agenda/overview.html:68 +#: agenda/templates/agenda/overview.html:71 #: assignment/templates/assignment/overview.html:28 #: motion/templates/motion/overview.html:43 #: participant/templates/participant/group_overview.html:14 @@ -300,7 +304,7 @@ msgstr "Eintrag" msgid "Actions" msgstr "Aktionen" -#: agenda/templates/agenda/overview.html:102 +#: agenda/templates/agenda/overview.html:106 #: agenda/templates/agenda/widget.html:46 #: projector/templates/projector/custom_slide_widget.html:36 msgid "No items available." diff --git a/openslides/locale/de/LC_MESSAGES/djangojs.mo b/openslides/locale/de/LC_MESSAGES/djangojs.mo index 895d2e518..7c267c9ba 100644 Binary files a/openslides/locale/de/LC_MESSAGES/djangojs.mo and b/openslides/locale/de/LC_MESSAGES/djangojs.mo differ diff --git a/openslides/locale/de/LC_MESSAGES/djangojs.po b/openslides/locale/de/LC_MESSAGES/djangojs.po index e4f5ec9e0..f528ae5fb 100644 --- a/openslides/locale/de/LC_MESSAGES/djangojs.po +++ b/openslides/locale/de/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenSlides 1.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-05 22:30+0100\n" +"POT-Creation-Date: 2013-01-28 23:58+0100\n" "PO-Revision-Date: 2012-07-28 11:07+0200\n" "Last-Translator: Oskar Hahn \n" "Language: de\n"