Amélioration export ical:
- ajout des images - ajout de cache
This commit is contained in:
parent
f7f8d9cb0c
commit
3316d28e09
@ -300,10 +300,10 @@ class CalendarList:
|
|||||||
def time_intervals_list_first(self):
|
def time_intervals_list_first(self):
|
||||||
return self.time_intervals_list(True)
|
return self.time_intervals_list(True)
|
||||||
|
|
||||||
def export_to_ics(self):
|
def export_to_ics(self, request):
|
||||||
from .models import Event
|
from .models import Event
|
||||||
events = [event for day in self.get_calendar_days().values() for event in day.events]
|
events = [event for day in self.get_calendar_days().values() for event in day.events]
|
||||||
return Event.export_to_ics(events)
|
return Event.export_to_ics(events, request)
|
||||||
|
|
||||||
|
|
||||||
class CalendarMonth(CalendarList):
|
class CalendarMonth(CalendarList):
|
||||||
|
@ -1646,7 +1646,7 @@ class Event(models.Model):
|
|||||||
|
|
||||||
return (dtstart <= e_dtstart <= dtend) or (e_dtstart <= dtstart <= e_dtend)
|
return (dtstart <= e_dtstart <= dtend) or (e_dtstart <= dtstart <= e_dtend)
|
||||||
|
|
||||||
def export_to_ics(events):
|
def export_to_ics(events, request):
|
||||||
cal = icalCal()
|
cal = icalCal()
|
||||||
# Some properties are required to be compliant
|
# Some properties are required to be compliant
|
||||||
cal.add("prodid", "-//My calendar product//example.com//")
|
cal.add("prodid", "-//My calendar product//example.com//")
|
||||||
@ -1704,6 +1704,8 @@ class Event(models.Model):
|
|||||||
eventIcal.add(
|
eventIcal.add(
|
||||||
"description", description + url
|
"description", description + url
|
||||||
)
|
)
|
||||||
|
if not event.local_image is None:
|
||||||
|
eventIcal.add('image', request.build_absolute_uri(event.local_image), parameters={'VALUE': 'URI'})
|
||||||
eventIcal.add("location", event.exact_location or event.location)
|
eventIcal.add("location", event.exact_location or event.location)
|
||||||
|
|
||||||
cal.add_component(eventIcal)
|
cal.add_component(eventIcal)
|
||||||
|
@ -13,6 +13,8 @@ from django.utils.safestring import mark_safe
|
|||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from honeypot.decorators import check_honeypot
|
from honeypot.decorators import check_honeypot
|
||||||
from .utils import PlaceGuesser
|
from .utils import PlaceGuesser
|
||||||
|
import hashlib
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
|
|
||||||
from django.contrib.gis.geos import Point
|
from django.contrib.gis.geos import Point
|
||||||
@ -711,7 +713,7 @@ def export_event_ical(request, year, month, day, pk):
|
|||||||
events = list()
|
events = list()
|
||||||
events.append(event)
|
events.append(event)
|
||||||
|
|
||||||
cal = Event.export_to_ics(events)
|
cal = Event.export_to_ics(events, request)
|
||||||
|
|
||||||
response = HttpResponse(content_type="text/calendar")
|
response = HttpResponse(content_type="text/calendar")
|
||||||
response.content = cal.to_ical().decode("utf-8").replace("\r\n", "\n")
|
response.content = cal.to_ical().decode("utf-8").replace("\r\n", "\n")
|
||||||
@ -726,8 +728,12 @@ def export_ical(request):
|
|||||||
|
|
||||||
request = EventFilter.set_default_values(request)
|
request = EventFilter.set_default_values(request)
|
||||||
filter = EventFilter(request.GET, queryset=get_event_qs(request), request=request)
|
filter = EventFilter(request.GET, queryset=get_event_qs(request), request=request)
|
||||||
|
id_cache = hashlib.md5(filter.get_url().encode("utf8")).hexdigest()
|
||||||
|
ical = cache.get(id_cache)
|
||||||
|
if not ical:
|
||||||
calendar = CalendarList(now + timedelta(days=-7), now + timedelta(days=+60), filter)
|
calendar = CalendarList(now + timedelta(days=-7), now + timedelta(days=+60), filter)
|
||||||
ical = calendar.export_to_ics()
|
ical = calendar.export_to_ics(request)
|
||||||
|
cache.set(id_cache, ical, 3600) # 1 heure
|
||||||
|
|
||||||
response = HttpResponse(content_type="text/calendar")
|
response = HttpResponse(content_type="text/calendar")
|
||||||
response.content = ical.to_ical().decode("utf-8").replace("\r\n", "\n")
|
response.content = ical.to_ical().decode("utf-8").replace("\r\n", "\n")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user