diff --git a/RIGS/ical.py b/RIGS/ical.py index c276e512..b7ecbee4 100644 --- a/RIGS/ical.py +++ b/RIGS/ical.py @@ -12,7 +12,6 @@ class CalendarICS(ICalFeed): #Metadata which is passed on to clients product_id = 'PyRIGS' title = 'PyRIGS Calendar' - timezone = 'UTC' file_name = "rigs.ics" def items(self): @@ -49,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 @@ -64,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 @@ -95,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..38cbe99a 100644 --- a/RIGS/views.py +++ b/RIGS/views.py @@ -299,13 +299,13 @@ class SecureAPIRequest(generic.View): if item.start_date: data['start_date'] = item.start_date.strftime('%Y-%m-%d') - if item.start_time: + if item.has_start_time: data['start_time'] = item.start_time.strftime('%H:%M:%SZ') if item.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: