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
| #! python3
# coding: utf-8
import asyncio
from dataclasses import dataclass
# ---------------------------------
from termcolor import cprint
from dateutil.tz import gettz
import datetime as dt
import locale
locale.setlocale(locale.LC_ALL, ('fr_FR', 'UTF-8'))
tzi = gettz('Europe/Brussels')
cprint('{} {}'.format('danielhagnoul', '2020-05-24T19:50:00.998531+02:00'), 'red')
# -------------------------------
@dataclass(init=True, repr=False)
class SMS():
""" Chaque objet généré par cette dataclass conserve les données d'un SMS """
has_been_viewed: bool = False
from_number: str = ''
time_arrived: str = ''
text_of_SMS: str = ''
def __repr__(self):
self.has_been_viewed = True
return "<SMS time_arrived= {},\n from_number = {},\n text_of_SMS = {}>".format(
self.time_arrived, self.from_number, self.text_of_SMS)
__str__ = __repr__
class SMSStore:
def __init__(self):
self.__list_sms = []
def add_new_arrival(self, from_number, text_of_SMS):
self.__list_sms.append(
SMS(time_arrived=dt.datetime.now(tz=tzi).isoformat(), from_number=from_number, text_of_SMS=text_of_SMS))
def message_count(self):
return len(self.__list_sms)
def get_unread_indexes(self):
lst = []
for i, item in enumerate(self.__list_sms):
if item.has_been_viewed == False:
lst.append(i)
return lst
def get_message(self, index: int = 0):
if index < len(self.__list_sms) and self.__list_sms[index]:
return self.__list_sms[index]
else:
return None
def delete(self, index: int = 0):
if index < len(self.__list_sms) and self.__list_sms[index]:
self.__list_sms.pop(index) # pop car c'est une valeur d'index !
def clear(self):
self.__list_sms.clear()
def __repr__(self):
return "<SMSStore, nombre de messages = {}>".format(self.message_count())
__str__ = __repr__
async def main():
store = SMSStore()
print(store)
cprint("Patience, il faut attendre 20 secondes l'arrivée des SMS !", "green")
store.add_new_arrival("024568713", "Bonjour Daniel !")
await asyncio.sleep(5)
store.add_new_arrival("024568713", "Tu vas bien !")
await asyncio.sleep(5)
store.add_new_arrival("024568713", "Déjà debout !")
await asyncio.sleep(5)
store.add_new_arrival("024568713", "Pas encore couché !")
await asyncio.sleep(5)
store.add_new_arrival("024568713", "Bonne nuit !")
store.delete(2) # index = 2
print("Nombre de messages = ", store.message_count())
await asyncio.sleep(1)
print("Message = ", store.get_message(0))
# 2 pas 3 car l'ancien message 2 est supprimé
await asyncio.sleep(3)
print("Message = ", store.get_message(2))
await asyncio.sleep(3)
print("Index des messages non lus = ", store.get_unread_indexes())
await asyncio.sleep(3)
store.clear()
print("Nombre de messages = ", store.message_count())
if __name__ == "__main__":
asyncio.run(main()) |