From 0700bb971b93216e1fa1227c7dc4cbdb071f5ae8 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 26 Jul 2012 16:28:13 +0200 Subject: [PATCH] work in progress: meeting minutes: additional fields, improved layout --- locales/de/LC_MESSAGES/loops.mo | Bin 18346 -> 18541 bytes locales/de/LC_MESSAGES/loops.po | 20 +++- organize/browser/view_macros.pt | 2 +- organize/interfaces.py | 2 +- organize/work/README.txt | 2 +- organize/work/meeting.pt | 186 ++++++++++++++++++++------------ organize/work/report.py | 40 ++++++- 7 files changed, 174 insertions(+), 78 deletions(-) diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 982b6c5074e2abf916262832b87397931b5cafaf..4e48081b67f87851c8ec7d1574773185113692fc 100644 GIT binary patch delta 7204 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 F`~!_wqhA03 diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index 57c81ff..7548da0 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: $Id$\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n" -"PO-Revision-Date: 2012-07-17 12:00 CET\n" +"PO-Revision-Date: 2012-07-26 12:00 CET\n" "Last-Translator: Helmut Merz \n" "Language-Team: loops developers \n" "MIME-Version: 1.0\n" @@ -296,6 +296,9 @@ msgstr "Besprechungsprotokoll für dieses Objekt anzeigen." msgid "Download Meeting Minutes" msgstr "Besprechungsprotokoll generieren" +msgid "Copy Agenda Items" +msgstr "Tagesordnungspunkte kopieren" + msgid "Participants" msgstr "Teilnehmer" @@ -303,7 +306,7 @@ msgid "The names of the persons taking part in the event." msgstr "Die Namen der Personen, die an der Besprechung teilnehmen." msgid "label_responsible" -msgstr "Vortragender" +msgstr "Vortragende/r" msgid "desc_responsible" msgstr "Person, die diesen Tagesordnungpunkt vertritt." @@ -315,10 +318,19 @@ msgid "desc_discussion" msgstr "Diskussion" msgid "label_consequences" -msgstr "Schlussfolgerungen" +msgstr "Schlussfolgerung" msgid "desc_consequences" -msgstr "Schlussfolgerungen" +msgstr "Schlussfolgerung" + +msgid "header_workitems" +msgstr "Aufgaben" + +msgid "header_responsible" +msgstr "zuständig" + +msgid "header_deadline" +msgstr "Termin" msgid "Task/Action" msgstr "Aufgabe" diff --git a/organize/browser/view_macros.pt b/organize/browser/view_macros.pt index b3eb002..e99a3f8 100644 --- a/organize/browser/view_macros.pt +++ b/organize/browser/view_macros.pt @@ -64,7 +64,7 @@ -

Tasks

+
- - - - - -
-

Meeting Minutes

-

-

-
- - - - - -
-
-
-
- - -
- - - - - - - - - - - - - - - - - + +
- Task/ActionWho?When?
- - - - - -
+ +
-
+ + + + + + +
 

Meeting Minutes

Page
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + - + + +
Participants + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Copy Agenda Items
+ + +
+ +
header_workitemsheader_responsibleheader_deadline
+ + + + - -
+ diff --git a/organize/work/report.py b/organize/work/report.py index 2cd9628..57aae78 100644 --- a/organize/work/report.py +++ b/organize/work/report.py @@ -285,7 +285,7 @@ class MeetingMinutesWork(WorkReportInstance, SubReport): rowFactory = MeetingMinutesWorkRow - fields = Jeep((workTitle, party, day, state)) #description, + fields = Jeep((workTitle, party, day)) #, state)) #description, defaultOutputFields = fields defaultSortCriteria = (day,) states = ('planned', 'accepted', 'running', 'done', @@ -309,13 +309,20 @@ eventTitle = CalculatedField('eventTitle', u'Event Title', eventDescription = CalculatedField('eventDescription', u'Event Description', description=u'', executionSteps=(['header'])) +eventDate = DateField('eventDate', u'Event Date', + description=u'', + format=('date', 'short'), + executionSteps=(['header'])) eventStart = DateField('eventStart', u'Event Start', description=u'', - format=('dateTime', 'short'), + format=('time', 'short'), executionSteps=(['header'])) eventEnd = DateField('eventEnd', u'Event End', description=u'', - format=('dateTime', 'short'), + format=('time', 'short'), + executionSteps=(['header'])) +participants = CalculatedField('participants', u'Participants', + description=u'', executionSteps=(['header'])) taskTitle = UrlField('title', u'Task Title', description=u'The short description of the task.', @@ -325,6 +332,18 @@ taskDescription = TextField('description', u'Description', description=u'The long description of the task.', cssClass='header-2', executionSteps=['output']) +responsible = TextField('responsible', u'label_responsible', + description=u'Responsible.', + cssClass='header-2', + executionSteps=['output']) +discussion = TextField('discussion', u'label_discussion', + description=u'Discussion.', + cssClass='header-2', + executionSteps=['output']) +consequences = TextField('consequences', u'label_consequences', + description=u'Consequences.', + cssClass='header-2', + executionSteps=['output']) workItems = SubReportField('workItems', u'Work Items', description=u'A list of work items belonging to the task.', reportFactory=MeetingMinutesWork, @@ -345,6 +364,10 @@ class TaskRow(BaseRow): def eventDescription(self): return self.event.description + @Lazy + def eventDate(self): + return self.event.start + @Lazy def eventStart(self): return self.event.start @@ -353,8 +376,13 @@ class TaskRow(BaseRow): def eventEnd(self): return self.event.end + @Lazy + def participants(self): + return self.event.participants + useRowProperty = BaseRow.useRowProperty attributeHandlers = dict( + eventDate=useRowProperty, eventStart=useRowProperty, eventEnd=useRowProperty, ) @@ -367,8 +395,10 @@ class MeetingMinutes(WorkReportInstance): rowFactory = TaskRow - fields = Jeep((eventTitle, eventStart, eventEnd, eventDescription, - tasks, taskTitle, taskDescription, workItems)) + fields = Jeep((eventTitle, eventDate, eventStart, eventEnd, + eventDescription, participants, + tasks, taskTitle, responsible, taskDescription, + discussion, consequences, workItems)) defaultOutputFields = fields states = ('planned', 'accepted', 'done', 'done_x', 'finished') taskTypeNames = ('agendaitem',)