Changement caldav to mycaldav
This commit is contained in:
117
mycaldav/models.py
Normal file
117
mycaldav/models.py
Normal file
@@ -0,0 +1,117 @@
|
||||
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 = []
|
||||
|
||||
#Trie les tableau par odre croissant sur la date de début de l'événement
|
||||
def sort_array(self):
|
||||
self.items.sort(key=lambda x: x.dtstamp, reverse=False)
|
||||
|
||||
def get_caldav_data(self,periode=1):
|
||||
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.now().year,datetime.now().month,datetime.now().day)
|
||||
|
||||
events = None
|
||||
if periode == 1:
|
||||
events = recurring_ical_events.of(Calendar.from_ical(self.data)).at(today)
|
||||
elif periode == 2:
|
||||
events = recurring_ical_events.of(Calendar.from_ical(self.data)).between(today,tomorow)
|
||||
|
||||
for event in events:
|
||||
item = _caldav_item()
|
||||
item.name = event["SUMMARY"]
|
||||
if "-" in item.name:
|
||||
arr = item.name.split("-")
|
||||
item.key = arr[0]
|
||||
item.name = arr[1]
|
||||
|
||||
if "DESCRIPTION" in event.keys():
|
||||
item.desc = event["DESCRIPTION"]
|
||||
if "#" in item.desc:
|
||||
item.done = True
|
||||
if '{href=' in item.desc:
|
||||
temp_str = item.desc.split('{href=')[1]
|
||||
temp_str = temp_str.split('}')[0]
|
||||
item.href = temp_str
|
||||
item.desc = item.desc.replace("{href=" + item.href + "}","")
|
||||
|
||||
item.dtstart = event["DTSTART"].dt.strftime("%d.%m.%Y %H:%M")
|
||||
item.dtstamp = int(event["DTSTART"].dt.strftime("%Y%m%d%H%M"))
|
||||
print(item.dtstamp)
|
||||
item.dtend = event["DTEND"].dt.strftime("%d.%m.%Y %H:%M")
|
||||
|
||||
item.format_str_date()
|
||||
self.items.append(item)
|
||||
|
||||
|
||||
start = datetime.strptime(item.dtstart,"%d.%m.%Y %H:%M")
|
||||
|
||||
if type(start) is Datetime.date:
|
||||
start = datetime.combine(start, datetime.min.time())
|
||||
print("convert Date to datetime")
|
||||
print(start)
|
||||
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)
|
||||
|
||||
|
||||
self.sort_array()
|
||||
return self.data
|
||||
|
||||
class _caldav_item():
|
||||
key = ""
|
||||
name = ""
|
||||
desc = ""
|
||||
dtstart = None
|
||||
str_start_date = ""
|
||||
str_start_time = ""
|
||||
dtend = None
|
||||
str_end_date = ""
|
||||
str_end_time = ""
|
||||
dtstamp = None
|
||||
done = False
|
||||
href = ""
|
||||
|
||||
def format_str_date(self):
|
||||
self.str_start_date = datetime.strptime(self.dtstart,"%d.%m.%Y %H:%M").strftime("%d.%m")
|
||||
self.str_start_time = datetime.strptime(self.dtstart, "%d.%m.%Y %H:%M").strftime("%H:%M")
|
||||
self.str_end_date = datetime.strptime(self.dtend,"%d.%m.%Y %H:%M").strftime("%d.%m")
|
||||
self.str_end_time = datetime.strptime(self.dtend, "%d.%m.%Y %H:%M").strftime("%H:%M")
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user