diff --git a/Reskreen/settings.py b/Reskreen/settings.py index 8b35263..4dc5725 100644 --- a/Reskreen/settings.py +++ b/Reskreen/settings.py @@ -27,7 +27,7 @@ DEBUG = True cfg_dev_mode = False -ALLOWED_HOSTS = ["192.168.3.125","rh.ambulance-clerc.ch"] +ALLOWED_HOSTS = ["rh.ambulance-clerc.ch"] if cfg_dev_mode: ALLOWED_HOSTS.append("127.0.0.1") CSRF_TRUSTED_ORIGINS = ['https://rh.ambulance-clerc.ch'] @@ -44,6 +44,7 @@ INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'vehicles.apps.VehiclesConfig', 'collabs.apps.CollabsConfig', + 'caldav.apps.CaldavConfig', 'custom_admin.apps.CustomAdminConfig', 'rangefilter', 'django.contrib.admin', @@ -92,6 +93,15 @@ if cfg_dev_mode: 'NAME': BASE_DIR / 'db.sqlite3', } } + ''' + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'OPTIONS': { + 'read_default_file': 'my_dev.cnf', + }, + } + }''' else: DATABASES = { 'default': { diff --git a/Reskreen/urls.py b/Reskreen/urls.py index 557322a..d9a47cb 100644 --- a/Reskreen/urls.py +++ b/Reskreen/urls.py @@ -19,5 +19,6 @@ from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('collabs/', include('collabs.urls')), + path('caldav/', include('caldav.urls')), #path('collabs_hour/', include('collabs.urls')), ] diff --git a/caldav/__init__.py b/caldav/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/caldav/admin.py b/caldav/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/caldav/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/caldav/apps.py b/caldav/apps.py new file mode 100644 index 0000000..9f53a77 --- /dev/null +++ b/caldav/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CaldavConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'caldav' diff --git a/caldav/migrations/__init__.py b/caldav/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/caldav/models.py b/caldav/models.py new file mode 100644 index 0000000..61e45b9 --- /dev/null +++ b/caldav/models.py @@ -0,0 +1,78 @@ +from datetime import datetime, timedelta, time +import datetime as Datetime + +from django.db import models +import urllib.request +import ssl + +from icalendar import Calendar, Event +import recurring_ical_events + +# Create your models here. +class cls_caldav(): + url = "" + data = None + items = [] + day = [] + night = [] + + def __init__(self, url=""): + self.url = url + + def clear_data(self): + self.data = None + self.items = [] + self.day = [] + self.night = [] + + def get_caldav_data(self): + ctx = ssl.create_default_context() + ctx.check_hostname = False + ctx.verify_mode = ssl.CERT_NONE + + self.clear_data() + + o_url = urllib.request.urlopen(self.url, context=ctx) + self.data = o_url.read() + o_url.close() + + now = f"{datetime.now().day}.{datetime.now().month}.{datetime.now().year}" + tomorow = datetime.now() + timedelta(days=1) + today = datetime.today() + + + + for event in recurring_ical_events.of(Calendar.from_ical(self.data)).at(today): + print(event) + item = _caldav_item() + item.name = event["SUMMARY"] + item.desc = event["DESCRIPTION"] + item.dtstart = event["DTSTART"].dt.strftime("%d.%m.%Y %H:%M") + item.dtend = event["DTEND"].dt.strftime("%d.%m.%Y %H:%M") + self.items.append(item) + + start = event["DTSTART"].dt + if isinstance(start, Datetime.date): + start = datetime.combine(start, datetime.min.time()) + if start < datetime.combine(datetime.today(), time(19,0)): + self.day.append(item) + if start >= datetime.combine(datetime.today(), time(19,0)): + self.night.append(item) + print(self.day) + print(self.night) + + return self.data + +class _caldav_item(): + name = "" + desc = "" + dtstart = None + dtend = None + dtstamp = None + + + + + +o_caldav = cls_caldav(url="https://sync.infomaniak.com/calendars/AA01593/a4835de4-b3cd-46ca-8f48-3dacd3a2b46e?export") + diff --git a/caldav/templates/task/task.html b/caldav/templates/task/task.html new file mode 100644 index 0000000..d487f1b --- /dev/null +++ b/caldav/templates/task/task.html @@ -0,0 +1,15 @@ +{% if latest_task_list %} + +------------------------------------------------------ + +{% else %} +

No task are available.

+{% endif %} \ No newline at end of file diff --git a/caldav/tests.py b/caldav/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/caldav/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/caldav/urls.py b/caldav/urls.py new file mode 100644 index 0000000..9b43d93 --- /dev/null +++ b/caldav/urls.py @@ -0,0 +1,12 @@ +from django.urls import path + + + +from . import views + +app_name = "caldav" +urlpatterns = [ + path('task', views.view_task_caldav, name='view_task_caldav'), + +] + diff --git a/caldav/views.py b/caldav/views.py new file mode 100644 index 0000000..46bfa00 --- /dev/null +++ b/caldav/views.py @@ -0,0 +1,14 @@ +from django.http import HttpResponse +from django.shortcuts import render +from django.views import generic +from django.template import loader + +# Create your views here. + +from caldav.models import * + +def view_task_caldav(request): + o_caldav.get_caldav_data() + template = loader.get_template("task/task.html") + context = {'latest_task_list':o_caldav.day, 'night_task_list': o_caldav.night} + return HttpResponse(template.render(context,request)) \ No newline at end of file