peewee_test: Added function 'int_from_list' and used bool() and boolean to interger correspondance to clean up code

This commit is contained in:
Cacahuete Lenovo Ubuntu 2018-10-04 00:36:56 +02:00
parent 433c35b5b1
commit 2c638f3968

View file

@ -42,19 +42,23 @@ class Event(BaseModel):
r = self._repeat
for _ in range(7):
r, m = divmod(r, 2)
bit_list.append(True if m else False)
bit_list.append(bool(m))
return bit_list
@repeat.setter
def repeat(self, bit_list):
self._repeat = int_from_list(bit_list)
self.save()
def int_from_list(bit_list):
if len(bit_list) != 7:
raise ValueError(f"Given list is of length {len(bit_list)} "
f"instead of 7")
reduced = 0
for i, b in enumerate(bit_list):
reduced += (1 if b else 0) * 2**i
self._repeat = reduced
self.save()
reduced += b * 2**i
return reduced
if __name__ == "__main__":
@ -80,14 +84,14 @@ if __name__ == "__main__":
Event(name='test event',
start_date=datetime.now(),
schedule=s1,
_repeat=127,
_repeat=int_from_list([True for _ in range(7)]),
).save()
Event(name='test event 2',
start_date=datetime.now(),
stop_date=datetime.now()+timedelta(days=2),
schedule=s2,
_repeat=1,
_repeat=int_from_list([True] + [False for _ in range(6)]),
).save()
events = Event.select()