mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-23 00:12:15 +00:00
Merge branch 'master' into revision-view
This commit is contained in:
@@ -174,7 +174,7 @@ else:
|
|||||||
|
|
||||||
LANGUAGE_CODE = 'en-gb'
|
LANGUAGE_CODE = 'en-gb'
|
||||||
|
|
||||||
TIME_ZONE = 'UTC'
|
TIME_ZONE = 'Europe/London'
|
||||||
|
|
||||||
FORMAT_MODULE_PATH = 'PyRIGS.formats'
|
FORMAT_MODULE_PATH = 'PyRIGS.formats'
|
||||||
|
|
||||||
|
|||||||
34
RIGS/ical.py
34
RIGS/ical.py
@@ -2,18 +2,26 @@ from RIGS import models, forms
|
|||||||
from django_ical.views import ICalFeed
|
from django_ical.views import ICalFeed
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.core.urlresolvers import reverse_lazy, reverse, NoReverseMatch
|
from django.core.urlresolvers import reverse_lazy, reverse, NoReverseMatch
|
||||||
|
from django.utils import timezone
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
import datetime
|
import datetime, pytz
|
||||||
|
|
||||||
class CalendarICS(ICalFeed):
|
class CalendarICS(ICalFeed):
|
||||||
"""
|
"""
|
||||||
A simple event calender
|
A simple event calender
|
||||||
"""
|
"""
|
||||||
#Metadata which is passed on to clients
|
#Metadata which is passed on to clients
|
||||||
product_id = 'PyRIGS'
|
product_id = 'RIGS'
|
||||||
title = 'PyRIGS Calendar'
|
title = 'RIGS Calendar'
|
||||||
|
timezone = settings.TIME_ZONE
|
||||||
file_name = "rigs.ics"
|
file_name = "rigs.ics"
|
||||||
|
|
||||||
|
def get(self, *args, **kwargs):
|
||||||
|
timezone.activate(timezone.UTC)
|
||||||
|
return super(CalendarICS, self).get(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
#include events from up to 1 year ago
|
#include events from up to 1 year ago
|
||||||
start = datetime.datetime.now() - datetime.timedelta(days=365)
|
start = datetime.datetime.now() - datetime.timedelta(days=365)
|
||||||
@@ -45,11 +53,13 @@ class CalendarICS(ICalFeed):
|
|||||||
def item_start_datetime(self, item):
|
def item_start_datetime(self, item):
|
||||||
#set start date to the earliest defined time for the event
|
#set start date to the earliest defined time for the event
|
||||||
if item.meet_at:
|
if item.meet_at:
|
||||||
startDateTime = item.meet_at.replace(tzinfo=None)
|
startDateTime = item.meet_at
|
||||||
elif item.access_at:
|
elif item.access_at:
|
||||||
startDateTime = item.access_at.replace(tzinfo=None)
|
startDateTime = item.access_at
|
||||||
elif item.has_start_time:
|
elif item.has_start_time:
|
||||||
startDateTime = datetime.datetime.combine(item.start_date,item.start_time).replace(tzinfo=None)
|
startDateTime = datetime.datetime.combine(item.start_date,item.start_time)
|
||||||
|
tz = pytz.timezone(settings.TIME_ZONE)
|
||||||
|
startDateTime = tz.normalize(tz.localize(startDateTime)).astimezone(pytz.timezone(self.timezone))
|
||||||
else:
|
else:
|
||||||
startDateTime = item.start_date
|
startDateTime = item.start_date
|
||||||
|
|
||||||
@@ -64,9 +74,11 @@ class CalendarICS(ICalFeed):
|
|||||||
endDateTime = item.end_date
|
endDateTime = item.end_date
|
||||||
|
|
||||||
if item.has_start_time and item.has_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)
|
endDateTime = datetime.datetime.combine(endDateTime,item.end_time)
|
||||||
|
tz = pytz.timezone(settings.TIME_ZONE)
|
||||||
|
endDateTime = tz.normalize(tz.localize(endDateTime)).astimezone(pytz.timezone(self.timezone))
|
||||||
elif item.has_end_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)
|
endDateTime = datetime.datetime.combine(endDateTime+datetime.timedelta(days=1),datetime.time(00, 00))
|
||||||
#elif item.end_time: # end time but no start time - this is weird - don't think ICS will like it so ignoring
|
#elif item.end_time: # end time but no start time - this is weird - don't think ICS will like it so ignoring
|
||||||
# do nothing
|
# do nothing
|
||||||
|
|
||||||
@@ -90,7 +102,7 @@ class CalendarICS(ICalFeed):
|
|||||||
|
|
||||||
desc += '\n'
|
desc += '\n'
|
||||||
if item.meet_at:
|
if item.meet_at:
|
||||||
desc += 'Crew Meet = ' + item.meet_at.strftime('%Y-%m-%d %H:%M') + (('('+item.meet_info+')') if item.meet_info else '---') + '\n'
|
desc += 'Crew Meet = ' + (item.meet_at.strftime('%Y-%m-%d %H:%M') if item.meet_at else '---') + '\n'
|
||||||
if item.access_at:
|
if item.access_at:
|
||||||
desc += 'Access At = ' + item.access_at.strftime('%Y-%m-%d %H:%M') + '\n'
|
desc += 'Access At = ' + item.access_at.strftime('%Y-%m-%d %H:%M') + '\n'
|
||||||
if item.start_date:
|
if item.start_date:
|
||||||
@@ -104,7 +116,7 @@ class CalendarICS(ICalFeed):
|
|||||||
if item.notes:
|
if item.notes:
|
||||||
desc += 'Notes:\n'+item.notes+'\n\n'
|
desc += 'Notes:\n'+item.notes+'\n\n'
|
||||||
|
|
||||||
base_url = "https://pyrigs.nottinghamtec.co.uk"
|
base_url = "http://rigs.nottinghamtec.co.uk"
|
||||||
desc += 'URL = '+base_url+str(item.get_absolute_url())
|
desc += 'URL = '+base_url+str(item.get_absolute_url())
|
||||||
|
|
||||||
return desc
|
return desc
|
||||||
@@ -118,7 +130,7 @@ class CalendarICS(ICalFeed):
|
|||||||
# return ''
|
# return ''
|
||||||
|
|
||||||
def item_updated(self, item): # some ical clients will display this
|
def item_updated(self, item): # some ical clients will display this
|
||||||
return item.last_edited_at.replace(tzinfo=None)
|
return item.last_edited_at
|
||||||
|
|
||||||
def item_guid(self, item): # use the rig-id as the ical unique event identifier
|
def item_guid(self, item): # use the rig-id as the ical unique event identifier
|
||||||
return item.pk
|
return item.pk
|
||||||
@@ -80,12 +80,12 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
{% if event.mic or not event.is_rig %}
|
{% if event.mic %}
|
||||||
{{ event.mic.initials }}
|
{{ event.mic.initials }}
|
||||||
<div>
|
<div>
|
||||||
<img src="{{ event.mic.profile_picture }}" class="event-mic-photo"/>
|
<img src="{{ event.mic.profile_picture }}" class="event-mic-photo"/>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% elif event.is_rig %}
|
||||||
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
Reference in New Issue
Block a user