From e20feb5851ac14a452ec500d8597db513f3df60f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 7 Jul 2014 14:20:03 +0200 Subject: [PATCH] allow end date different from start date for appropriate work item types --- organize/work/browser.py | 19 ++++++++++++++++++- organize/work/work_macros.pt | 15 ++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/organize/work/browser.py b/organize/work/browser.py index b3b2a71..6577913 100644 --- a/organize/work/browser.py +++ b/organize/work/browser.py @@ -106,6 +106,11 @@ class WorkItemDetails(TrackDetails): def startDay(self): return self.formatTimeStamp(self.track.timeStamp, 'date') + @Lazy + def endDay(self): + endDay = self.formatTimeStamp(self.track.end, 'date') + return endDay != self.startDay and endDay or '' + @Lazy def created(self): return self.formatTimeStamp(self.track.created, 'dateTime') @@ -435,6 +440,13 @@ class CreateWorkItemForm(ObjectForm, BaseTrackView): return time.strftime('%Y-%m-%d', time.localtime(ts)) return '' + @Lazy + def endDate(self): + ts = self.track.end or self.defaultTimeStamp + if ts: + return time.strftime('%Y-%m-%d', time.localtime(ts)) + return '' + @Lazy def startTime(self): ts = self.track.start or self.defaultTimeStamp @@ -569,11 +581,12 @@ class CreateWorkItem(EditObject, BaseTrackView): setValue('task') result['deadline'] = parseDate(form.get('deadline')) startDate = form.get('start_date', '').strip() + endDate = form.get('end_date', '').strip() or startDate startTime = form.get('start_time', '').strip().replace('T', '') or '00:00:00' endTime = form.get('end_time', '').strip().replace('T', '') or '00:00:00' if startDate: result['start'] = parseDateTime('T'.join((startDate, startTime))) - result['end'] = parseDateTime('T'.join((startDate, endTime))) + result['end'] = parseDateTime('T'.join((endDate, endTime))) result['duration'] = parseTime(form.get('duration')) result['effort'] = parseTime(form.get('effort')) return action, result @@ -663,5 +676,9 @@ def formatTimeDelta(value): if not value: return u'' h, m = divmod(int(value) / 60, 60) + if h > 24: + #d, h = divmod(h / 24, 24) + #return u'%id %02i:%02i' % (d, h, m) + return str(int(round(h / 24.0))) return u'%02i:%02i' % (h, m) diff --git a/organize/work/work_macros.pt b/organize/work/work_macros.pt index 26bcfb0..54d9bb0 100644 --- a/organize/work/work_macros.pt +++ b/organize/work/work_macros.pt @@ -173,6 +173,17 @@ dojoType="dijit.form.TimeTextBox" tal:attributes="value view/endTime" /> +
+ +
+ + +
@@ -238,7 +249,9 @@ Start - End: - - + + + Duration/Effort: