Starting implementation of month ommission
This commit is contained in:
@@ -9,28 +9,38 @@ from icalendar.parser import Contentlines, Contentline
|
||||
import caldav
|
||||
|
||||
class Task:
|
||||
def __init__(self, ref_date):
|
||||
def __init__(self, ref_date, name, data):
|
||||
self.ref_date = ref_date
|
||||
|
||||
def load_data(self, name, data):
|
||||
self.name = name
|
||||
|
||||
only = data['only'].split(',') if 'only' in data else None
|
||||
if data['periodicity'] == 'monthly':
|
||||
self.date_begin = self.parse_date_monthly(data['date-begin'])
|
||||
self.date_end = self.parse_date_monthly(data['date-end'])
|
||||
self.date_begin = self.parse_date_monthly(data['date-begin'], only)
|
||||
self.date_end = self.parse_date_monthly(data['date-end'], only)
|
||||
elif data['periodicity'] == 'weekly':
|
||||
pass
|
||||
|
||||
|
||||
self.title = data['title']
|
||||
self.body = data['body']
|
||||
self.priority = data['priority']
|
||||
|
||||
def parse_date_monthly(self, day):
|
||||
def parse_date_monthly(self, day, only=None):
|
||||
if day < 0:
|
||||
last_day_month = calendar.monthrange(self.ref_date.year, self.ref_date.month)[1]
|
||||
day = last_day_month + day + 1
|
||||
|
||||
return datetime.date(year=self.ref_date.year, month=self.ref_date.month, day=day)
|
||||
if only is not None:
|
||||
only.sort()
|
||||
for selected in only:
|
||||
if int(selected) >= self.ref_date.month:
|
||||
month = int(selected)
|
||||
break
|
||||
if month is None:
|
||||
month = only[0]
|
||||
else:
|
||||
month = self.ref_date.month
|
||||
|
||||
return datetime.date(year=self.ref_date.year, month=month, day=day)
|
||||
|
||||
def to_ical(self):
|
||||
current_dtstamp = datetime.datetime.now().strftime('%Y%m%dT%H%M%SZ')
|
||||
@@ -57,23 +67,29 @@ class Task:
|
||||
|
||||
return c.to_ical()
|
||||
|
||||
class Client:
|
||||
def __init__(self, url):
|
||||
self.client = caldav.DAVClient(url)
|
||||
self.principal = self.client.principal()
|
||||
self.calendar = self.principal.calendar()
|
||||
|
||||
def add_event(self, event):
|
||||
self.calendar.add_event(task.to_ical())
|
||||
|
||||
#conf = load('./configuration.yml')
|
||||
|
||||
ref_date = datetime.date.today() + datetime.timedelta(days=1)
|
||||
ref_date = datetime.date.today() + datetime.timedelta(days=3)
|
||||
with open('./tasks.yml', 'r') as content_file:
|
||||
tasks_conf = load(content_file.read())
|
||||
|
||||
task_list = []
|
||||
for task_name, task_data in tasks_conf.items():
|
||||
t = Task(ref_date);
|
||||
t.load_data(task_name, task_data)
|
||||
t = Task(ref_date, task_name, task_data);
|
||||
if (t.date_begin == ref_date):
|
||||
task_list.append(t)
|
||||
|
||||
#caldav_url = "https://ggentile:ID0t'8h6@127.0.0.1:5232/webdav/ggentile/test.ics/"
|
||||
caldav_url = "https://ggentile:ID0t'8h6@cloud.dorfsvald.net/webdav/ggentile/calendar.ics/"
|
||||
client = caldav.DAVClient(caldav_url)
|
||||
principal = client.principal()
|
||||
calendar = principal.calendar()
|
||||
import ipdb; ipdb.set_trace()
|
||||
url = "https://ggentile:ID0t'8h6@cloud.dorfsvald.net/webdav/ggentile/calendar.ics/"
|
||||
client = Client(url)
|
||||
for task in task_list:
|
||||
calendar.add_event(task.to_ical())
|
||||
client.add_event(task)
|
||||
|
||||
27
tasks.yml
27
tasks.yml
@@ -5,17 +5,32 @@ reglement_piano:
|
||||
title: Règlement Piano
|
||||
body: 578236
|
||||
priority: 1
|
||||
loyer:
|
||||
periodicity: monthly
|
||||
date-begin: 1
|
||||
date-end: 10
|
||||
title: Loyer
|
||||
body: https://fr.foncia.com/login\nA797GEA4EP23F
|
||||
priority: 1
|
||||
declaration_polemploi:
|
||||
periodicity: monthly
|
||||
date-begin: 1
|
||||
date-end: 10
|
||||
title: Déclaration Pôle Emploi
|
||||
body: coucou
|
||||
body: N/A
|
||||
priority: 1
|
||||
test:
|
||||
declaration_ae:
|
||||
periodicity: monthly
|
||||
date-begin: -2
|
||||
date-end: -1
|
||||
title: Test
|
||||
body: coucou
|
||||
only: 1,4,7,10
|
||||
date-begin: 1
|
||||
date-end: 10
|
||||
title: Déclaration AE
|
||||
body: N/A
|
||||
priority: 1
|
||||
facturation_x2i:
|
||||
periodicity: monthly
|
||||
date-begin: -4
|
||||
date-end: -1
|
||||
title: Facture X2I
|
||||
body: N/A
|
||||
priority: 1
|
||||
|
||||
Reference in New Issue
Block a user