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):
|
||||
return self.time_intervals_list(True)
|
||||
|
||||
def export_to_ics(self):
|
||||
def export_to_ics(self, request):
|
||||
from .models import Event
|
||||
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):
|
||||
|
@ -1646,7 +1646,7 @@ class Event(models.Model):
|
||||
|
||||
return (dtstart <= e_dtstart <= dtend) or (e_dtstart <= dtstart <= e_dtend)
|
||||
|
||||
def export_to_ics(events):
|
||||
def export_to_ics(events, request):
|
||||
cal = icalCal()
|
||||
# Some properties are required to be compliant
|
||||
cal.add("prodid", "-//My calendar product//example.com//")
|
||||
@ -1704,6 +1704,8 @@ class Event(models.Model):
|
||||
eventIcal.add(
|
||||
"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)
|
||||
|
||||
cal.add_component(eventIcal)
|
||||
|
@ -13,6 +13,8 @@ from django.utils.safestring import mark_safe
|
||||
from django.utils.decorators import method_decorator
|
||||
from honeypot.decorators import check_honeypot
|
||||
from .utils import PlaceGuesser
|
||||
import hashlib
|
||||
from django.core.cache import cache
|
||||
|
||||
|
||||
from django.contrib.gis.geos import Point
|
||||
@ -711,7 +713,7 @@ def export_event_ical(request, year, month, day, pk):
|
||||
events = list()
|
||||
events.append(event)
|
||||
|
||||
cal = Event.export_to_ics(events)
|
||||
cal = Event.export_to_ics(events, request)
|
||||
|
||||
response = HttpResponse(content_type="text/calendar")
|
||||
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)
|
||||
filter = EventFilter(request.GET, queryset=get_event_qs(request), request=request)
|
||||
calendar = CalendarList(now + timedelta(days=-7), now + timedelta(days=+60), filter)
|
||||
ical = calendar.export_to_ics()
|
||||
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)
|
||||
ical = calendar.export_to_ics(request)
|
||||
cache.set(id_cache, ical, 3600) # 1 heure
|
||||
|
||||
response = HttpResponse(content_type="text/calendar")
|
||||
response.content = ical.to_ical().decode("utf-8").replace("\r\n", "\n")
|
||||
|
Loading…
x
Reference in New Issue
Block a user