def accueil(self): """Méthode d'accueil""" joueur = self.pere.joueur mails = type(self).importeur.communication.mails.get_mails_pour( joueur, ARCHIVE) msg = "||tit| " + "Archives".ljust(76) + "|ff||\n" msg += self.opts.separateur + "\n" msg += self.aide_courte + "\n\n" if not mails: msg += "|att|Vous n'avez aucun message archivé.|ff|" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 29)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg += "+" + "-".ljust(taille + 45, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|Lu|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Expéditeur|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).rjust(2) + "|ff| | " msg += (mail.lu and "|vrc|oui|ff|" or "|rgc|non|ff|") msg += " | |vr|" + couper_phrase(mail.sujet, 29).ljust( \ taille) + "|ff| | |blc|" msg += mail.nom_expediteur.ljust(10) + "|ff| | |jn|" msg += mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 45, "-") + "+" return msg
def accueil(self): """Méthode d'accueil""" joueur = self.pere.joueur mails = type(self).importeur.communication.mails.get_mails_pour( joueur, BROUILLON) msg = "||tit| " + "Brouillons".ljust(76) + "|ff||\n" msg += self.opts.separateur + "\n" msg += self.aide_courte + "\n\n" if not mails: msg += "|att|Aucun message enregistré dans ce dossier.|ff|" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 33)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg += "+" + "-".ljust(taille + 41, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Destinataire|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).rjust(2) + "|ff| | " msg += "|vr|" + couper_phrase(mail.sujet, 33).ljust( \ taille) + "|ff| | |blc|" msg += couper_phrase(mail.aff_dest,12).ljust(12) + "|ff| | " msg += "|jn|" + mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 41, "-") + "+" return msg
def accueil(self): """Méthode d'accueil""" joueur = self.pere.joueur mails = type(self).importeur.communication.mails.get_mails_pour( joueur, ENVOYE) msg = "||tit| " + "Messages envoyés".ljust(76) + "|ff||\n" msg += self.opts.separateur + "\n" msg += self.aide_courte + "\n\n" if not mails: msg += "|att|Vous n'avez envoyé aucun message.|ff|" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 33)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg += "+" + "-".ljust(taille + 41, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Destinataire|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).rjust(2) + "|ff| | " msg += "|vr|" + couper_phrase(mail.sujet, 33).ljust( \ taille) + "|ff| | |blc|" msg += couper_phrase(mail.aff_dest, 12).ljust(12) + "|ff| | " msg += "|jn|" + mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 41, "-") + "+" return msg
def interpreter(self, personnage, dic_masques): """Interprétation du paramètre""" rapports = [r for r in list(importeur.rapport.rapports.values()) if \ r.ouvert and r.assigne_a is personnage] rapports = sorted(rapports, key=lambda r: r.int_priorite) if not rapports: personnage << "|err|Aucun rapport ne vous est assigné.|ff|" return l_id = max([len(str(r.id)) for r in rapports] + [2]) l_createur = max([len(r.createur.nom) if r.createur else 7 \ for r in rapports] + [8]) l_titre = max([len(r.titre) for r in rapports] + [5]) l_titre_max = 70 - l_createur - l_id # longueur max d'un titre ljust_titre = min(l_titre_max, l_titre) lignes = [ "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+", "| |tit|" + "ID".ljust(l_id) + "|ff| | |tit|" \ + "Créateur".ljust(l_createur) + "|ff| | |tit|" \ + "Titre".ljust(ljust_titre) + "|ff| |", "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+", ] for rapport in rapports: if l_titre_max < l_titre: titre = couper_phrase(rapport.titre, l_titre_max) else: titre = rapport.titre createur = rapport.createur and rapport.createur.nom or \ "inconnu" lignes.append("| |vrc|" + str(rapport.id).ljust(l_id) \ + "|ff| | " + createur.ljust(l_createur) + " | " \ + titre.ljust(ljust_titre) + " |") lignes.append( "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+") personnage << echapper_accolades("\n".join(lignes))
def accueil(self): """Méthode d'accueil""" joueur = self.pere.joueur mails = type(self).importeur.communication.mails.get_mails_pour( joueur, RECU) nb_mails = len(mails) prf_mails = (nb_mails > 1 and "s") or "" nb_non_lus = len([mail for mail in mails if not mail.lu]) prf_non_lus = (nb_non_lus > 1 and "s") or "" nb_non_lus = (nb_non_lus != 0 and "|rgc|" + str(nb_non_lus) + "|ff|") \ or "aucun" msg = "||tit| " + "Messages reçus".ljust(76) + "|ff||\n" msg += self.opts.separateur + "\n" msg += self.aide_courte + "\n\n" if nb_mails != 0: msg += "|blc|" + str(nb_mails) + "|ff| message" + prf_mails msg += " dont " + nb_non_lus + " non lu" + prf_non_lus msg += "\n" if not mails: msg += "|att|Vous n'avez reçu aucun message.|ff|" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 29)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg += "+" + "-".ljust(taille + 45, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|Lu|ff| | |tit|" + "Sujet".ljust( taille) msg += "|ff| | |tit|Expéditeur|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).rjust(2) + "|ff| | " msg += (mail.lu and "|vrc|oui|ff|" or "|rgc|non|ff|") msg += " | |vr|" + couper_phrase(mail.sujet, 29).ljust( \ taille) + "|ff| | |blc|" msg += mail.nom_expediteur.ljust(10) + "|ff| | |jn|" msg += mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 45, "-") + "+" return msg
def accueil(self): """Méthode d'accueil""" joueur = self.pere.joueur mails = type(self).importeur.communication.mails.get_mails_pour( joueur, RECU) nb_mails = len(mails) prf_mails = (nb_mails > 1 and "s") or "" nb_non_lus = len([mail for mail in mails if not mail.lu]) prf_non_lus = (nb_non_lus > 1 and "s") or "" nb_non_lus = (nb_non_lus != 0 and "|rgc|" + str(nb_non_lus) + "|ff|") \ or "aucun" msg = "||tit| " + "Messages reçus".ljust(76) + "|ff||\n" msg += self.opts.separateur + "\n" msg += self.aide_courte + "\n\n" if nb_mails != 0: msg += "|blc|" + str(nb_mails) + "|ff| message" + prf_mails msg += " dont " + nb_non_lus + " non lu" + prf_non_lus msg += "\n" if not mails: msg += "|att|Vous n'avez reçu aucun message.|ff|" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 29)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg += "+" + "-".ljust(taille + 45, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|Lu|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Expéditeur|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).rjust(2) + "|ff| | " msg += (mail.lu and "|vrc|oui|ff|" or "|rgc|non|ff|") msg += " | |vr|" + couper_phrase(mail.sujet, 29).ljust( \ taille) + "|ff| | |blc|" msg += mail.nom_expediteur.ljust(10) + "|ff| | |jn|" msg += mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 45, "-") + "+" return msg
def interpreter(self, personnage, dic_masques): """Méthode d'interprétation de commande""" if dic_masques["message"] is not None: message = dic_masques["message"].message if len(message) > 20: message = couper_phrase(message, 20) personnage << "Vous passez AFK ({}).".format(message) personnage.afk = message else: if not personnage.afk: personnage << "Vous passez AFK." personnage.afk = "afk" else: personnage << "Vous n'êtes plus AFK." personnage.afk = ""
def tab_sujets_fils(self): """Retourne un tableau des sujets fils.""" lignes = [] taille = max([len(s.titre) for s in self.sujets_fils] or (10, )) if taille > 30: taille = 30 sep = "+" + 17 * "-" + "+" + (taille + 2) * "-" + "+" en_tete = sep + "\n" + "| |tit|" + "Sujet".ljust(15) + "|ff| |" en_tete += " |tit|" + "Titre".ljust(taille) + "|ff| |\n" + sep for s in self.sujets_fils: ligne = "| |ent|" + s.cle.ljust(15) + "|ff| | " ligne += couper_phrase(s.titre, taille).ljust(taille) + " |" lignes.append(ligne) if lignes: return en_tete + "\n" + "\n".join(lignes) + "\n" + sep else: return "|att|Aucun sujet affilié.|ff|"
def interpreter(self, personnage, dic_masques): """Interprétation du paramètre""" flags = {"non assignes": False, "fermes": False} if dic_masques["message"] is not None: t_flags = dic_masques["message"].message t_flags = [f.strip() for f in t_flags.split(",")] for f in flags.keys(): if f in t_flags: flags[f] = True rapports = list(importeur.rapport.rapports.values()) if not flags["fermes"]: rapports = [r for r in rapports if r.ouvert] if flags["non assignes"]: rapports = [r for r in rapports if r.assigne_a is None] if not personnage.est_immortel(): # On récupère les rapports envoyés par le joueur mortel rapports = [r for r in rapports if r.createur is personnage or \ r.public] if not rapports: personnage << "|att|Vous n'avez envoyé aucun rapport.|ff|" else: l_id = max([len(str(r.id)) for r in rapports] + [2]) l_createur = 15 l_titre = max([len(r.titre) for r in rapports] + [5]) l_titre_max = 34 - l_id # longueur max possible d'un titre ljust_titre = min(l_titre_max, l_titre) lignes = [ "+" + "-" * (l_id + l_createur + ljust_titre + 32) + "+", "| |tit|" + "ID".ljust(l_id) + "|ff| | |tit|" + \ "Créateur".ljust(l_createur) + "|ff| | |tit|" + "Titre".ljust(ljust_titre) + "|ff| | " \ "|tit|Statut|ff| | |tit|Avancement|ff| |", "+" + "-" * (l_id + l_createur + ljust_titre + 32) + "+", ] for rapport in rapports: id = "|vrc|" + str(rapport.id).ljust(l_id) + "|ff|" createur = rapport.createur.nom if rapport.createur else \ "inconnu" createur = createur.ljust(l_createur) if l_titre_max < l_titre: titre = couper_phrase(rapport.titre, l_titre_max) else: titre = rapport.titre titre = titre.ljust(ljust_titre) stat = CLR_STATUTS[rapport.statut] stat += rapport.statut.ljust(8) + "|ff|" clr = CLR_AVC[floor(rapport.avancement / 12.5)] avc = clr + str(rapport.avancement).rjust(9) lignes.append( "| {id} | {createur} | {titre} | {stat} | " \ "{avc}%|ff| |".format(id=id, createur=createur, titre=titre, stat=stat, avc=avc)) lignes.append("+" + "-" * (l_id + l_createur + ljust_titre + \ 32) + "+") personnage << echapper_accolades("\n".join(lignes)) else: if not rapports: personnage << "|err|Aucun rapport n'a été envoyé.|ff|" return l_id = max([len(str(r.id)) for r in rapports] + [2]) l_createur = max([len(r.createur.nom) if r.createur else 7 \ for r in rapports] + [8]) l_titre = max([len(r.titre) for r in rapports] + [5]) l_titre_max = 70 - l_createur - l_id # longueur max d'un titre ljust_titre = min(l_titre_max, l_titre) lignes = [ "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+", "| |tit|" + "ID".ljust(l_id) + "|ff| | |tit|" \ + "Créateur".ljust(l_createur) + "|ff| | |tit|" \ + "Titre".ljust(ljust_titre) + "|ff| |", "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+", ] for rapport in rapports: if l_titre_max < l_titre: titre = couper_phrase(rapport.titre, l_titre_max) else: titre = rapport.titre createur = rapport.createur and rapport.createur.nom or \ "inconnu" lignes.append("| |vrc|" + str(rapport.id).ljust(l_id) \ + "|ff| | " + createur.ljust(l_createur) + " | " \ + titre.ljust(ljust_titre) + " |") lignes.append( "+" + "-" * (l_id + l_createur + ljust_titre + 8) + "+") personnage << echapper_accolades("\n".join(lignes))
def interpreter(self, personnage, dic_masques): """Interprétation du paramètre""" flag = "" mails = type(self).importeur.communication.mails if dic_masques["flag_mail"] is not None: flag = dic_masques["flag_mail"].flag if flag == "recus": mails = mails.get_mails_pour(personnage, RECU) elif flag == "brouillons": mails = mails.get_mails_pour(personnage, BROUILLON) elif flag == "archives": mails = mails.get_mails_pour(personnage, ARCHIVE) elif flag == "envoyes": mails = mails.get_mails_pour(personnage, ENVOYE) else: mails = mails.get_mails_pour(personnage, RECU) mails = [mail for mail in mails if not mail.lu] if not mails: personnage << "|att|Vous n'avez aucun message dans cette " \ "catégorie.|ff|" else: if flag == "brouillons" or flag == "envoyes": taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 33)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg = "+" + "-".ljust(taille + 41, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Destinataire|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).ljust(2) + "|ff| | " msg += "|vr|" + couper_phrase(mail.sujet, 33).ljust( \ taille) + "|ff| | |blc|" msg += couper_phrase(mail.aff_dest,12).ljust(12) + "|ff| | " msg += "|jn|" + mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 41, "-") + "+" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 29)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg = "+" + "-".ljust(taille + 45, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|Lu|ff| | |tit|" + "Sujet".ljust( taille) msg += "|ff| | |tit|Expéditeur|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).ljust(2) + "|ff| | " msg += (mail.lu and "|vrc|oui|ff|" or "|rgc|non|ff|") msg += " | |vr|" + couper_phrase(mail.sujet, 29).ljust( \ taille) + "|ff| | |blc|" msg += mail.expediteur.nom.ljust(10) + "|ff| | |jn|" msg += mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 45, "-") + "+" personnage << msg
def interpreter(self, personnage, dic_masques): """Interprétation du paramètre""" flag = "" mails = type(self).importeur.communication.mails if dic_masques["flag_mail"] is not None: flag = dic_masques["flag_mail"].flag if flag == "recus": mails = mails.get_mails_pour(personnage, RECU) elif flag == "brouillons": mails = mails.get_mails_pour(personnage, BROUILLON) elif flag == "archives": mails = mails.get_mails_pour(personnage, ARCHIVE) elif flag == "envoyes": mails = mails.get_mails_pour(personnage, ENVOYE) else: mails = mails.get_mails_pour(personnage, RECU) mails = [mail for mail in mails if not mail.lu] if not mails: personnage << "|att|Vous n'avez aucun message dans cette " \ "catégorie.|ff|" else: if flag == "brouillons" or flag == "envoyes": taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 33)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg = "+" + "-".ljust(taille + 41, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|" + "Sujet".ljust(taille) msg += "|ff| | |tit|Destinataire|ff| | |tit|" + "Date".ljust( 16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).ljust(2) + "|ff| | " msg += "|vr|" + couper_phrase(mail.sujet, 33).ljust( \ taille) + "|ff| | |blc|" msg += couper_phrase(mail.aff_dest, 12).ljust(12) + "|ff| | " msg += "|jn|" + mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 41, "-") + "+" else: taille = 0 for mail in mails: t_sujet = len(couper_phrase(mail.sujet, 29)) if t_sujet > taille: taille = t_sujet taille = (taille < 5 and 5) or taille msg = "+" + "-".ljust(taille + 45, "-") + "+\n" msg += "| |tit|N°|ff| | |tit|Lu|ff| | |tit|" + "Sujet".ljust( taille) msg += "|ff| | |tit|Expéditeur|ff| | |tit|" + "Date".ljust(16) msg += "|ff| |\n" i = 1 for mail in mails: msg += "| |rg|" + str(i).ljust(2) + "|ff| | " msg += (mail.lu and "|vrc|oui|ff|" or "|rgc|non|ff|") msg += " | |vr|" + couper_phrase(mail.sujet, 29).ljust( \ taille) + "|ff| | |blc|" msg += mail.expediteur.nom.ljust(10) + "|ff| | |jn|" msg += mail.date.isoformat(" ")[:16] + "|ff| |\n" i += 1 msg += "+" + "-".ljust(taille + 45, "-") + "+" personnage << msg
def _get_phrase(self): """Retourne la phrase mise en forme""" return couper_phrase(self._phrase, 40)