-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheventCls.py
More file actions
executable file
·127 lines (99 loc) · 3.42 KB
/
eventCls.py
File metadata and controls
executable file
·127 lines (99 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/usr/bin/python3.11
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
import loggerFct
help ="""
classe de gestion facile des dates
source:
https://www.guru99.com/date-time-and-datetime-classes-in-python.html
"""
types =( 'logement', 'boutique', 'nature', 'promenade')
typesStreet =( 'rue', 'avenue', 'passage', 'quai' )
templateUtz = '%Y-%m-%dT%H:%M:00.0Z' # 2018-01-29T12:00:00+01:00.0Z
class Place():
def __init__ (self):
self.type =""
self.name =""
self.city =""
self.postalCode =""
self.street =""
self.streetType =""
self.number =""
self.complement =""
monthDuration =( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
monthNames =( 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre' )
class DatePerso (datetime):
# attriuts: year, month, day, our, minute, monthName
def __init__ (self, year, month, day, hour=0, minute=0):
datetime.__init__(self)
self.monthName = monthNames[self.month -1]
def difference (self, newDate):
delta = None
if self < newDate: delta = newDate - self
else: delta = self - newDate
return delta
def today():
dtDate = datetime.now()
return DatePerso (dtDate.year, dtDate.month, dtDate.day, dtDate.hour, dtDate.minute)
def fromUtz (dateStr):
return DatePerso.fromStr (templateUtz, dateStr)
def toUtz (self):
return self.strftime (templateUtz)
def fromGoogle (googleDate):
if len (googleDate) ==10: return DatePerso.fromStr ('%Y-%m-%d', googleDate)
else:
googleDate = googleDate[:16]
return DatePerso.fromStr ('%Y-%m-%dT%H:%M', googleDate)
def fromStr_interne (self, model, source):
dtDate = datetime.strptime (source, model)
return DatePerso (dtDate.year, dtDate.month, dtDate.day, dtDate.hour, dtDate.minute)
def fromStr (model, source):
dtDate = datetime.strptime (source, model)
return DatePerso (dtDate.year, dtDate.month, dtDate.day, dtDate.hour, dtDate.minute)
def toStrDay (self):
return self.strftime ('%Y/%m/%d')
def toStrHour (self):
return self.strftime ('%Y/%m/%d %H:%M')
def __str__(self):
return self.toStrHour()
DatePerso.today = staticmethod (DatePerso.today)
DatePerso.fromStr = staticmethod (DatePerso.fromStr)
DatePerso.fromUtz = staticmethod (DatePerso.fromUtz)
DatePerso.fromGoogle = staticmethod (DatePerso.fromGoogle)
"""
dt= DatePerso.today()
print (dt)
do= datetime (2022, 2, 25, 13, 45)
print (do)
print (do.year)
print (do.month)
print (do.day)
print (do.hour)
print (do.minute)
print (do.replace (day=28, hour=4))
"""
class Event():
def __init__ (self):
self.date = DatePerso.today()
self.duration = 0 # en minutes
self.location =""
self.category =""
self.title =""
self.infos =""
def equals (self, newEvt):
if self.title == newEvt.title and self.infos == newEvt.infos: return True
else: return False
def __lt__ (self, newEvent):
return self.date.__lt__ (newEvent.date)
def __str__ (self):
return self.toStrDay()
def setDuration (self, datePerso):
self.duration =0
if datePerso > self.date:
difference = self.date.difference (datePerso)
if difference.days ==0 and difference.seconds >0: self.duration = difference.seconds /60
def toStrHour (self):
strEvt = self.date.toStrHour() +'\t'+ self.category +'\t'+ self.title +'\t'+ self.location +'\n\t'+ self.infos
return strEvt
def toStrDay (self):
strEvt = self.date.toStrDay() +'\t'+ self.category +'\t'+ self.title +'\t'+ self.location +'\n\t'+ self.infos