#41 Time for each agenda item finished
This commit is contained in:
parent
bc9dcffff4
commit
65ebcbc991
@ -27,7 +27,12 @@ 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)
|
||||
duration = forms.TimeField(
|
||||
widget=forms.TimeInput(format='%H:%M') ,
|
||||
input_formats=('%H:%M', '%H %M'),
|
||||
required=False,
|
||||
label=_("Duration (hh:mm)")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Item
|
||||
@ -55,3 +60,11 @@ class ItemOrderForm(forms.Form, CssClassMixin):
|
||||
parent = forms.IntegerField(
|
||||
widget=forms.HiddenInput(attrs={'class': 'menu-plid'}),
|
||||
)
|
||||
|
||||
class ConfigForm(forms.Form, CssClassMixin):
|
||||
agenda_start_event_time = forms.TimeField(
|
||||
widget=forms.TimeInput(format='%H:%M') ,
|
||||
input_formats=('%H:%M', '%H:%M:%S'),
|
||||
required=False,
|
||||
label=_("Begin of event (hh:mm)"),
|
||||
)
|
||||
|
@ -46,7 +46,7 @@ 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'));
|
||||
duration = models.TimeField(blank=True, null=True, verbose_name=_("Duration (hh:mm)"));
|
||||
|
||||
related_sid = models.CharField(null=True, blank=True, max_length=63)
|
||||
|
||||
|
@ -22,3 +22,9 @@
|
||||
table#menu-overview {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table#agendatime {
|
||||
float: right;
|
||||
width: 15%;
|
||||
margin-bottom: 1em;
|
||||
}
|
@ -50,7 +50,16 @@
|
||||
{% endif %}
|
||||
|
||||
<h1>{% trans "Agenda" %}</h1>
|
||||
|
||||
<table id="agendatime">
|
||||
<tr>
|
||||
<td>{% trans "Start of event" %}</td>
|
||||
<td>{{ start|time:"H:i" }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{% trans "Estimated end" %}</td>
|
||||
<td>{{ end|time:"H:i" }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
{% trans "Filter" %}:
|
||||
<input type="checkbox" id="hide_closed_items"> {% trans "Hide closed items" %}
|
||||
|
@ -18,10 +18,12 @@ from django.db.models import Model
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
|
||||
from openslides.config.models import config
|
||||
from openslides.agenda.forms import ConfigForm
|
||||
from openslides.utils.pdf import stylesheet
|
||||
from openslides.utils.views import (
|
||||
TemplateView, RedirectView, UpdateView, CreateView, DeleteView, PDFView,
|
||||
DetailView)
|
||||
DetailView, FormView)
|
||||
from openslides.utils.template import Tab
|
||||
from openslides.utils.utils import html_strong
|
||||
from openslides.projector.api import get_active_slide
|
||||
@ -53,10 +55,20 @@ class Overview(TemplateView):
|
||||
if agenda_item.duration is not None:
|
||||
duration += timedelta(hours=agenda_item.duration.hour, minutes=agenda_item.duration.minute)
|
||||
|
||||
start = config['agenda_start_event_time']
|
||||
if start is None:
|
||||
start = u'0:00:00'
|
||||
|
||||
start = datetime.strptime(start, '%H:%M:%S')
|
||||
end = start + duration
|
||||
duration = datetime.strptime(str(duration), '%H:%M:%S')
|
||||
|
||||
context.update({
|
||||
'items': items,
|
||||
'active_sid': get_active_slide(only_sid=True),
|
||||
'duration': datetime.strptime(str(duration), '%H:%M:%S'),
|
||||
'duration': duration,
|
||||
'start': start,
|
||||
'end': end,
|
||||
})
|
||||
return context
|
||||
|
||||
@ -218,6 +230,23 @@ class AgendaPDF(PDFView):
|
||||
else:
|
||||
story.append(Paragraph(item.get_title(), stylesheet['Item']))
|
||||
|
||||
class Config(FormView):
|
||||
"""
|
||||
Config page for the agenda app.
|
||||
"""
|
||||
permission_required = 'config.can_manage_config'
|
||||
form_class = ConfigForm
|
||||
template_name = 'agenda/config.html'
|
||||
|
||||
def get_initial(self):
|
||||
return {
|
||||
'agenda_start_event_time': config['agenda_start_event_time'],
|
||||
}
|
||||
|
||||
def form_valid(self, form):
|
||||
config['agenda_start_event_time'] = form.cleaned_data['agenda_start_event_time']
|
||||
messages.success(self.request, _('Agenda settings successfully saved.'))
|
||||
return super(Config, self).form_valid(form)
|
||||
|
||||
def register_tab(request):
|
||||
"""
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenSlides 1.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-28 23:58+0100\n"
|
||||
"POT-Creation-Date: 2013-01-30 17:20+0100\n"
|
||||
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
||||
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
|
||||
"Language-Team: support@openslides.de\n"
|
||||
@ -33,6 +33,10 @@ msgstr "Französisch"
|
||||
msgid "Parent item"
|
||||
msgstr "Elternelement"
|
||||
|
||||
#: agenda/forms.py:64
|
||||
msgid "Begin of event (hh:mm)"
|
||||
msgstr "Beginn der Veranstaltung (ss:mm)"
|
||||
|
||||
#: agenda/models.py:35
|
||||
msgid "Agenda item"
|
||||
msgstr "Tagesordnungseintrag"
|
||||
@ -52,7 +56,7 @@ msgstr "Titel"
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
#: agenda/models.py:41 agenda/templates/agenda/overview.html:65
|
||||
#: agenda/models.py:41 agenda/templates/agenda/overview.html:74
|
||||
#: agenda/templates/agenda/view.html:13 participant/models.py:60
|
||||
#: participant/templates/participant/overview.html:72
|
||||
#: participant/templates/participant/user_detail.html:45
|
||||
@ -63,7 +67,7 @@ msgstr "Kommentar"
|
||||
msgid "Closed"
|
||||
msgstr "Abgeschlossen"
|
||||
|
||||
#: agenda/models.py:43 agenda/templates/agenda/overview.html:74
|
||||
#: agenda/models.py:43 agenda/templates/agenda/overview.html:83
|
||||
#: projector/models.py:31
|
||||
msgid "Weight"
|
||||
msgstr "Gewichtung"
|
||||
@ -75,9 +79,9 @@ msgstr "Gewichtung"
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#: agenda/models.py:49 agenda/templates/agenda/overview.html:68
|
||||
msgid "Duration"
|
||||
msgstr "Dauer"
|
||||
#: agenda/models.py:49
|
||||
msgid "Duration (hh:mm)"
|
||||
msgstr "Dauer (ss:mm)"
|
||||
|
||||
#: agenda/models.py:182
|
||||
msgid "Can see agenda"
|
||||
@ -91,49 +95,53 @@ msgstr "Darf die Tagesordung verwalten"
|
||||
msgid "Can see orga items"
|
||||
msgstr "Darf Organisationspunkte sehen"
|
||||
|
||||
#: 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/models.py:194 agenda/slides.py:20 agenda/views.py:219
|
||||
#: agenda/views.py:220 agenda/views.py:257 agenda/views.py:271
|
||||
#: agenda/templates/agenda/base_agenda.html:10
|
||||
#: agenda/templates/agenda/overview.html:8
|
||||
#: agenda/templates/agenda/overview.html:52
|
||||
#: agenda/templates/agenda/overview.html:80
|
||||
#: agenda/templates/agenda/overview.html:89
|
||||
#: agenda/templates/projector/AgendaSummary.html:6
|
||||
#: agenda/templates/projector/AgendaSummary.html:10
|
||||
msgid "Agenda"
|
||||
msgstr "Tagesordnung"
|
||||
|
||||
#: agenda/views.py:69
|
||||
#: agenda/views.py:81
|
||||
msgid "You are not authorized to manage the agenda."
|
||||
msgstr "Sie sind nicht berechtigt die Tagesordnung zu ändern."
|
||||
|
||||
#: agenda/views.py:85
|
||||
#: agenda/views.py:97
|
||||
msgid "Errors when reordering of the agenda"
|
||||
msgstr "Fehler beim Neusortieren der Tagesordnung"
|
||||
|
||||
#: agenda/views.py:147
|
||||
#: agenda/views.py:159
|
||||
#, python-format
|
||||
msgid "Item %s was successfully modified."
|
||||
msgstr "Eintrag %s wurde erfolgreich bearbeitet."
|
||||
|
||||
#: agenda/views.py:168
|
||||
#: agenda/views.py:180
|
||||
#, python-format
|
||||
msgid "Item %s was successfully created."
|
||||
msgstr "Eintrag %s wurde erfolgreich angelegt."
|
||||
|
||||
#: agenda/views.py:185
|
||||
#: agenda/views.py:197
|
||||
msgid "Yes, with all child items."
|
||||
msgstr "Ja, mit allen Kindelementen."
|
||||
|
||||
#: agenda/views.py:193
|
||||
#: agenda/views.py:205
|
||||
#, python-format
|
||||
msgid "Item %s and his children were successfully deleted."
|
||||
msgstr "Eintrag %s und seine Kindelemente wurde erfolgreich gelöscht."
|
||||
|
||||
#: agenda/views.py:198
|
||||
#: agenda/views.py:210
|
||||
#, python-format
|
||||
msgid "Item %s was successfully deleted."
|
||||
msgstr "Eintrag %s wurde erfolgreich gelöscht."
|
||||
|
||||
#: agenda/views.py:248
|
||||
msgid "Agenda settings successfully saved."
|
||||
msgstr "Tagesordnung Einstellungen erfolgreich gespeichert."
|
||||
|
||||
#: agenda/templates/agenda/base_agenda.html:12
|
||||
msgid "All items"
|
||||
msgstr "Alle Einträge"
|
||||
@ -236,7 +244,7 @@ msgid "Item closed"
|
||||
msgstr "Eintrag erledigt"
|
||||
|
||||
#: agenda/templates/agenda/item_row.html:39
|
||||
#: agenda/templates/agenda/overview.html:90
|
||||
#: agenda/templates/agenda/overview.html:99
|
||||
msgid "Activate item"
|
||||
msgstr "Eintrag projizieren"
|
||||
|
||||
@ -272,31 +280,43 @@ msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:55
|
||||
msgid "Start of event"
|
||||
msgstr "Beginn der Veranstaltung"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:59
|
||||
msgid "Estimated end"
|
||||
msgstr "Voraussichtliches Ende"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:64
|
||||
#: assignment/templates/assignment/overview.html:12
|
||||
#: motion/templates/motion/overview.html:12
|
||||
#: participant/templates/participant/overview.html:22
|
||||
msgid "Filter"
|
||||
msgstr "Filter"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:56
|
||||
#: agenda/templates/agenda/overview.html:65
|
||||
msgid "Hide closed items"
|
||||
msgstr "Verstecke abgeschlossene Einträge"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:59
|
||||
#: agenda/templates/agenda/overview.html:68
|
||||
msgid "item"
|
||||
msgid_plural "items"
|
||||
msgstr[0] "Eintrag"
|
||||
msgstr[1] "Einträge"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:62
|
||||
#: agenda/templates/agenda/overview.html:71
|
||||
msgid "Done"
|
||||
msgstr "Erledigt"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:63
|
||||
#: agenda/templates/agenda/overview.html:72
|
||||
msgid "Item"
|
||||
msgstr "Eintrag"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:71
|
||||
#: agenda/templates/agenda/overview.html:77
|
||||
msgid "Duration"
|
||||
msgstr "Dauer"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:80
|
||||
#: assignment/templates/assignment/overview.html:28
|
||||
#: motion/templates/motion/overview.html:43
|
||||
#: participant/templates/participant/group_overview.html:14
|
||||
@ -304,7 +324,7 @@ msgstr "Eintrag"
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:106
|
||||
#: agenda/templates/agenda/overview.html:115
|
||||
#: agenda/templates/agenda/widget.html:46
|
||||
#: projector/templates/projector/custom_slide_widget.html:36
|
||||
msgid "No items available."
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenSlides 1.3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-01-28 23:58+0100\n"
|
||||
"POT-Creation-Date: 2013-01-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
||||
"Last-Translator: Oskar Hahn <mail@oshahn.de>\n"
|
||||
"Language: de\n"
|
||||
|
Loading…
Reference in New Issue
Block a user