From d90a4ab24d15ea82914e5e30f0556f9e1faeb156 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Wed, 4 Dec 2013 10:00:24 +0100 Subject: [PATCH] =?utf8?q?On=20peut=20maintenant=20update=20en=20mettant?= =?utf8?q?=20last=20=C3=A0=20la=20place=20d'un=20num=C3=A9ro?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- today.py | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/today.py b/today.py index 6d28b1f..5b51621 100755 --- a/today.py +++ b/today.py @@ -79,13 +79,30 @@ def get_last_seen(): """Récupère la liste des derniers trucs vus/lus""" with open(config.last_seen_file) as f: return json.loads(f.read()) - + +def is_int(a): + try: + int(a) + return True + except ValueError: + return False + def update_last_seen(newdict): """Met à jour un des derniers trucs vus/lus""" - lasts = get_last_seen() - lasts.update(newdict) + if not all([is_int(v) or (v == "last") for v in newdict.values()]): + raise ValueError("Donner un entier ou last") + # Il est possible qu'on ait mis "last" quelque part + if "last" in newdict.values(): + # il faut alors récupérer les derniers pour convertir "last" en + lasts_published = get_whatsup() + for key in [k for (k, v) in newdict.items() if v == "last"]: + newdict[key] = lasts_published[key] + # On convertit les chaînes en entier (pour les il leur arrive rien) + newdict = {k: int(v) for (k,v) in newdict.items()} + lasts_seen = get_last_seen() + lasts_seen.update(newdict) with open(config.last_seen_file, "w") as f: - f.write(json.dumps(lasts)) + f.write(json.dumps(lasts_seen)) def parse_datefile(namefile): """Ouvre et parse un fichier avec des lignes de la forme @@ -246,34 +263,34 @@ def get_dtc(*args): return textquotes def update_xkcd(newid): - update_last_seen({"xkcd" : int(newid)}) + update_last_seen({"xkcd" : newid}) def update_xantah(newid): - update_last_seen({"xantah" : int(newid)}) + update_last_seen({"xantah" : newid}) def update_visiteur(newid): - update_last_seen({"visiteur" : int(newid)}) + update_last_seen({"visiteur" : newid}) def update_noob(newid): - update_last_seen({"noob" : int(newid)}) + update_last_seen({"noob" : newid}) def update_warpzone(newid): - update_last_seen({"warpzone" : int(newid)}) + update_last_seen({"warpzone" : newid}) def update_hugo(newid): - update_last_seen({"hugo" : int(newid)}) + update_last_seen({"hugo" : newid}) def update_norman(newid): - update_last_seen({"norman" : int(newid)}) + update_last_seen({"norman" : newid}) def update_cyprien(newid): - update_last_seen({"cyprien" : int(newid)}) + update_last_seen({"cyprien" : newid}) def update_grenier(newid): - update_last_seen({"grenier" : int(newid)}) + update_last_seen({"grenier" : newid}) def update_jl8(newid): - update_last_seen({"dc" : int(newid)}) + update_last_seen({"dc" : newid}) THINGS = { @@ -293,12 +310,17 @@ THINGS = { "saints" : u"Fêtes à souhaiter", } -def check_all(): - """Vérifie si il y a des derniers trucs non lus/vus.""" +def get_whatsup(): + """Récuère sur le serveur les derniers trucs.""" cmd = "%s whatsup" % (config.path_today_server,) proc = subprocess.Popen(["ssh", "-4", config.distant_server, cmd], stdout=subprocess.PIPE) out, err = proc.communicate() news = json.loads(out) + return news + +def check_all(): + """Vérifie si il y a des derniers trucs non lus/vus.""" + news = get_whatsup() seen = get_last_seen() news["birthdays"] = check_birthdays() news["saints"] = check_saints() -- 2.39.2