From 143f4ea454afab6ab265629a56aebe395255033c Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 24 Apr 2015 14:22:08 +0100 Subject: [PATCH] Fixed midnight issues in ical, web calendar & event_table --- RIGS/ical.py | 10 +++++----- RIGS/models.py | 8 ++++++++ RIGS/templates/RIGS/event_table.html | 4 ++-- RIGS/views.py | 4 ++-- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/RIGS/ical.py b/RIGS/ical.py index 30cafffc..b7ecbee4 100644 --- a/RIGS/ical.py +++ b/RIGS/ical.py @@ -48,7 +48,7 @@ class CalendarICS(ICalFeed): startDateTime = item.meet_at.replace(tzinfo=None) elif item.access_at: startDateTime = item.access_at.replace(tzinfo=None) - elif item.start_time: + elif item.has_start_time: startDateTime = datetime.datetime.combine(item.start_date,item.start_time).replace(tzinfo=None) else: startDateTime = item.start_date @@ -63,9 +63,9 @@ class CalendarICS(ICalFeed): if item.end_date: endDateTime = item.end_date - if item.start_time and item.end_time: # don't allow an event with specific end but no specific start + if item.has_start_time and item.has_end_time: # don't allow an event with specific end but no specific start endDateTime = datetime.datetime.combine(endDateTime,item.end_time).replace(tzinfo=None) - elif item.start_time: # if there's a start time specified then an end time should also be specified + elif item.has_end_time: # if there's a start time specified then an end time should also be specified endDateTime = datetime.datetime.combine(endDateTime+datetime.timedelta(days=1),datetime.time(00, 00)).replace(tzinfo=None) #elif item.end_time: # end time but no start time - this is weird - don't think ICS will like it so ignoring # do nothing @@ -94,9 +94,9 @@ class CalendarICS(ICalFeed): if item.access_at: desc += 'Access At = ' + item.access_at.strftime('%Y-%m-%d %H:%M') + '\n' if item.start_date: - desc += 'Event Start = ' + item.start_date.strftime('%Y-%m-%d') + ((' '+item.start_time.strftime('%H:%M')) if item.start_time else '') + '\n' + desc += 'Event Start = ' + item.start_date.strftime('%Y-%m-%d') + ((' '+item.start_time.strftime('%H:%M')) if item.has_start_time else '') + '\n' if item.end_date: - desc += 'Event End = ' + item.end_date.strftime('%Y-%m-%d') + ((' '+item.end_time.strftime('%H:%M')) if item.end_time else '') + '\n' + desc += 'Event End = ' + item.end_date.strftime('%Y-%m-%d') + ((' '+item.end_time.strftime('%H:%M')) if item.has_end_time else '') + '\n' desc += '\n' if item.description: diff --git a/RIGS/models.py b/RIGS/models.py index 641aeab9..c93a1728 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -303,6 +303,14 @@ class Event(models.Model, RevisionMixin): def confirmed(self): return (self.status == self.BOOKED or self.status == self.CONFIRMED) + @property + def has_start_time(self): + return self.start_time is not None + + @property + def has_end_time(self): + return self.end_time is not None + objects = EventManager() def get_absolute_url(self): diff --git a/RIGS/templates/RIGS/event_table.html b/RIGS/templates/RIGS/event_table.html index cf87f53d..3cd5144f 100644 --- a/RIGS/templates/RIGS/event_table.html +++ b/RIGS/templates/RIGS/event_table.html @@ -62,14 +62,14 @@
Crew meet
{{ event.meet_at|date:"H:i" }}
{{ event.meet_at|date:"(Y-m-d)" }}
{% endif %} - {% if event.start_time %} + {% if event.has_start_time %}
Event starts
{{ event.start_time|date:"H:i" }}
{{ event.start_date|date:"(Y-m-d)" }}
{% endif %} - {% if event.end_time%}{% if event.start_date != event.end_date or event.start_time != event.end_time %} + {% if event.has_end_time%}{% if event.start_date != event.end_date or event.start_time != event.end_time %}
Event ends
{{ event.end_time|date:"H:i" }}
diff --git a/RIGS/views.py b/RIGS/views.py index 9ab260e7..ea95fc70 100644 --- a/RIGS/views.py +++ b/RIGS/views.py @@ -302,10 +302,10 @@ class SecureAPIRequest(generic.View): if item.start_time: data['start_time'] = item.start_time.strftime('%H:%M:%SZ') - if item.end_date: + if item.has_end_date: data['end_date'] = item.end_date.strftime('%Y-%m-%d') - if item.end_time: + if item.has_end_time: data['end_time'] = item.end_time.strftime('%H:%M:%SZ') if item.meet_at: