Skip to content
Snippets Groups Projects
Commit ff498b70 authored by Tomáš Valenta's avatar Tomáš Valenta
Browse files

merge personcalendarmixin and calendarmixin

parent e7698600
No related branches found
No related tags found
2 merge requests!787Release,!749Add personal calendars, move from requests-cache to Django cache
Pipeline #12677 passed
......@@ -89,6 +89,26 @@ class CalendarMixin(models.Model):
class Meta:
abstract = True
def get_fullcalendar_data(self) -> str:
calendar_format_events = []
for event in self.calendar.past_events + self.calendar.future_events:
parsed_event = {
"allDay": event["all_day"],
"start": event["start"].isoformat(),
"end": event["end"].isoformat(),
}
if event["summary"] is not None:
parsed_event["title"] = event["summary"]
if event["url"] is not None:
parsed_event["url"] = event["url"]
calendar_format_events.append(parsed_event)
return json.dumps(calendar_format_events)
def save(self, *args, **kwargs):
# create or update related Calendar
if self.calendar_url:
......@@ -111,36 +131,3 @@ class CalendarMixin(models.Model):
self.calendar = None
super().save(*args, **kwargs)
class PersonCalendarMixin(CalendarMixin):
def get_parsed_calendar_data(self) -> list:
calendar_format_events = []
for event in self.calendar.past_events + self.calendar.future_events:
parsed_event = {
"allDay": event["all_day"],
"start": event["start"].isoformat(),
"end": event["end"].isoformat(),
}
if event["summary"] is not None:
parsed_event["title"] = event["summary"]
if event["url"] is not None:
parsed_event["url"] = event["url"]
calendar_format_events.append(parsed_event)
return calendar_format_events
def get_context(self, request) -> dict:
context = super().get_context(request)
if self.calendar:
context["calendar_data"] = json.dumps(self.get_parsed_calendar_data())
return context
class Meta:
abstract = True
# Generated by Django 4.1.8 on 2023-05-02 19:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('district', '0110_remove_districtpersonpage_ical_calendar_url_and_more'),
('district', '0113_merge_20230502_1854'),
]
operations = [
]
......@@ -26,7 +26,7 @@ from wagtail.fields import RichTextField, StreamField
from wagtail.models import Orderable, Page
from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import CalendarMixin, PersonCalendarMixin
from calendar_utils.models import CalendarMixin
from maps_utils.blocks import MapPointBlock
from maps_utils.const import (
DEFAULT_MAP_STYLE,
......@@ -622,7 +622,7 @@ class DistrictPersonPage(
ExtendedMetadataPageMixin,
SubpageMixin,
MetadataPageMixin,
PersonCalendarMixin,
CalendarMixin,
Page,
):
### FIELDS
......
......@@ -24,10 +24,10 @@
<div class="content-block w-full mb-16">
{{ page.text|richtext }}
</div>
{% if calendar_data %}
{% if page.calendar %}
<section>
<h2 class="head-alt-md mb-3"><i class="ico--calendar mr-4"></i>Kalendář</h2>
<ui-person-calendar events='{{ calendar_data|safe }}'></ui-person-calendar>
<ui-person-calendar events='{{ page.get_fullcalendar_data|safe }}'></ui-person-calendar>
</section>
{% endif %}
</section>
......
......@@ -29,7 +29,7 @@ from wagtail.models import Page
from wagtail.search import index
from wagtailmetadata.models import MetadataPageMixin
from calendar_utils.models import PersonCalendarMixin
from calendar_utils.models import CalendarMixin
from elections2021.constants import REGION_CHOICES # pozor, import ze sousedního modulu
from instagram_utils.models import InstagramPost
from shared.forms import SubscribeForm
......@@ -733,7 +733,7 @@ class MainPersonPage(
ExtendedMetadataPageMixin,
SubpageMixin,
MetadataPageMixin,
PersonCalendarMixin,
CalendarMixin,
Page,
):
### FIELDS
......
......@@ -109,14 +109,14 @@
</section>
{% endif %}
{% if calendar_data %}
{% if page.calendar %}
<section class="grid-container no-max mr-0 mb-4 xl:mb-20">
<div class="grid-content-with-right-side">
<h2 class="head-4xl text-left">
Kalendář
</h2>
<div class="xl:max-w-[1145px] __js-root">
<ui-person-calendar events='{{ calendar_data|safe }}'></ui-person-calendar>
<ui-person-calendar events='{{ page.get_fullcalendar_data|safe }}'></ui-person-calendar>
</div>
</div>
</section>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment