File size: 6,079 Bytes
67e898c 6fc4565 58c260c 67e898c 6fc4565 67e898c 3b1dbb8 67e898c 6fc4565 58c260c 6fc4565 58c260c 67e898c 14a5766 58c260c 14a5766 58c260c 14a5766 6fc4565 67e898c da88570 67e898c da88570 67e898c da88570 67e898c da88570 67e898c da88570 67e898c da88570 67e898c 58c260c 67e898c da88570 67e898c 58c260c da88570 6fc4565 da88570 6fc4565 67e898c ce70327 67e898c ce70327 67e898c |
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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
from textwrap import indent
from sympy import false
class Schedule:
def __init__(self, start_date, end_date, start_time, end_time, admittance_time):
self.start_date = start_date
self.end_date = end_date
self.start_time = start_time
self.end_time = end_time
self.admittance_time = admittance_time
def __repr__(self):
date_format = "%d.%m.%Y"
time_format = "%H:%M"
start_date = self.start_date.strftime(date_format) if self.start_date else ""
end_date = (" - " + self.end_date.strftime(date_format)) if self.end_date else ""
start_time = self.start_time.strftime(time_format) if self.start_time else ""
end_time = (" - " + self.end_time.strftime(time_format) + " ") if self.end_time else ""
admittance_time = (" Einlass: " + self.admittance_time.strftime(time_format)) if self.admittance_time else ""
return f"๐
{start_date}{end_date}\nโฐ {start_time}{end_time}{admittance_time}"
def __str__(self):
date_format = "%d.%m.%Y"
time_format = "%H:%M"
start_date = self.start_date.strftime(date_format) if self.start_date else ""
end_date = (" - " + self.end_date.strftime(date_format)) if self.end_date else ""
start_time = self.start_time.strftime(time_format) if self.start_time else ""
end_time = (" - " + self.end_time.strftime(time_format) + " ") if self.end_time else ""
admittance_time = (" Einlass: " + self.admittance_time.strftime(time_format)) if self.admittance_time else ""
return f"{start_date}{end_date} {start_time}{end_time}{admittance_time}"
def __eq__(self, other):
if isinstance(other, Schedule):
print("Equals?", str(self),str(other), str(self) == str(other))
return str(self).strip() == str(other).strip()
else:
return False
def __hash__(self):
return hash((self.start_date, self.end_date, self.start_time, self.end_time, self.admittance_time))
def __len__(self):
return len([element for element in [self.start_date, self.end_date, self.start_time, self.end_time, self.admittance_time] if element])
def __contains__(self, item):
if not isinstance(item, Schedule):
return False # Falls item kein Schedule-Objekt ist, direkt False
print(f"SELF: {self}")
print(f"ITEM: {item}")
return all([
item.start_date in {self.start_date, self.end_date, None},
item.end_date in {self.end_date, self.start_date, None},
item.start_time in {self.start_time, self.end_time, None},
item.end_time in {self.end_time, self.start_time, None},
item.admittance_time in {self.admittance_time, None}
])
class Event:
def __init__(self):
self._title = None
self._organizers = None
self._locations = []
self._schedule = [] # Liste von Schedule-Objekten
self._address = None # Address-Objekt
self._categories = []
self._description = None
self._prices = []
self._url = None
@property
def title(self):
return self._title
@title.setter
def title(self, value):
self._title = value
@property
def organizers(self):
return self._organizers
@organizers.setter
def organizers(self, value):
self._organizers = value
@property
def locations(self):
return self._locations
@locations.setter
def locations(self, value):
self._locations = value
@property
def schedule(self):
return self._schedule
@schedule.setter
def schedule(self, value):
if isinstance(value, list) and all(isinstance(entry, Schedule) for entry in value):
self._schedule = value
else:
raise ValueError("Schedule must be a list of Schedule objects")
def add_schedule_entry(self, start_date, end_date, start_time, end_time, admittance_time):
self._schedule.append(Schedule(start_date, end_date, start_time, end_time, admittance_time))
@property
def address(self):
return self._address
@address.setter
def address(self, value):
self._address = value
@property
def categories(self):
return self._categories
@categories.setter
def categories(self, value):
self._categories = value
@property
def description(self):
return self._description
@description.setter
def description(self, value):
self._description = value
@property
def prices(self):
return self._prices
@prices.setter
def prices(self, value):
self._prices = sorted(value)
@property
def url(self):
return self._url
@url.setter
def url(self, value):
self._url = value
def __str__(self):
# Format Schedule entries, if any
schedule_str = "\n".join(indent(str(entry), " ") for entry in self._schedule) if self._schedule else ""
# Prepare individual parts of the string, only if they are not empty or None
event_str = ""
if self._url:
event_str += f"๐ URL: {self._url}"
if self._title:
event_str += f"๐ Event: {self._title}\n"
if self._organizers:
event_str += f"๐ฅ Organizers: {self._organizers}\n"
if self._locations:
event_str += f"๐ Locations: {', '.join(self._locations)}\n"
if schedule_str:
event_str += f"๐
Schedule:\n{schedule_str}\n"
if self._address:
event_str += f"๐ Address: {self._address}\n"
if self._categories:
event_str += f"๐ท Categories: {', '.join(self._categories)}\n"
if self._prices:
event_str += f"๐ฐ Prices: {', '.join(map(str, self._prices))}\n"
if self._description:
event_str += f"๐ Description: \n {self._description}\n"
return event_str
def print_event(self):
print(self)
|