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