From 702f941469546444cc06db1e5abfb95b7757574a Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Wed, 20 Nov 2013 00:33:29 +0100 Subject: [PATCH] =?UTF-8?q?[printing]=20Club,=20adherent,=20machines=20aff?= =?UTF-8?q?ichable=20de=20fa=C3=A7on=20plus=20exhaustive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- printing/templates.py | 80 ++++++++++++++++++++++++--------- printing/templates/adherent | 28 +++++------- printing/templates/blacklist | 4 ++ printing/templates/club | 11 +++++ printing/templates/compte_crans | 12 +++++ printing/templates/machine | 17 +++---- printing/templates/object | 6 +++ printing/templates/proprio | 11 +++++ 8 files changed, 124 insertions(+), 45 deletions(-) create mode 100644 printing/templates/blacklist create mode 100644 printing/templates/club create mode 100644 printing/templates/compte_crans create mode 100644 printing/templates/object create mode 100644 printing/templates/proprio diff --git a/printing/templates.py b/printing/templates.py index 32094c5..ba912bd 100644 --- a/printing/templates.py +++ b/printing/templates.py @@ -1,39 +1,79 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- import sys sys.path.append('/usr/scripts/') import jinja2 from gestion.affich_tools import coul from lc_ldap import objets +import time + +import gestion.whos +import gestion.annuaires_pg + +def prise_etat(chbre): + if chbre=="????": + return coul("Chambre invalide", "violet") + return gestion.whos.prise_etat(chbre)[0] + +def timeformat(t, format): + return time.strftime(format, time.localtime(t)) + +def blacklist(l): + bl=[] + for b in l: + b=b.value + debut=time.strftime("%d/%m/%Y %H:%M", time.localtime(b['debut'])) + fin=time.strftime("%d/%m/%Y %H:%M", time.localtime(b['fin'])) + couleur='rouge' if b['actif'] else None + bl.append(coul("du %s au %s : %s [%s]" % (debut, fin, b['type'], b['comm']), couleur)) + return bl + +def split(str, *arg): + return str.split(*arg) template_path = '/usr/scripts/lc_ldap/printing/templates/' templateLoader = jinja2.FileSystemLoader( searchpath=["/", template_path] ) -templateEnv = jinja2.Environment( loader=templateLoader ) +templateEnv = jinja2.Environment( loader=templateLoader, trim_blocks=True ) templateEnv.filters['coul'] = coul +templateEnv.filters['blacklist'] = blacklist +templateEnv.filters['prise_etat'] = prise_etat +templateEnv.filters['timeformat'] = timeformat +templateEnv.filters['split'] = split -def machine(machine, limit): - params={} - params.update(machine.attrs) - params['proprio']=machine.proprio().attrs - if limit: - for attr in ['historique', 'blacklist']: - if params.get(attr, []) and len(params[attr])>limit: - params[attr]=params[attr][0:limit] +def machine(machine, params): + params['o']=machine return templateEnv.get_template("machine").render(params) -def adherent(adherent, limit): - params={} - params.update(adherent.attrs) - params['etat']=adherent.paiement_ok() - if limit: - for attr in ['historique', 'blacklist']: - if params.get(attr, []) and len(params[attr])>limit: - params[attr]=params[attr][0:limit] +def proprio(proprio, params): + params['o']=proprio + etat_administratif=[] + if proprio.paiement_ok() and proprio.carte_ok(): + etat_administratif.append(coul(u"à jour", "vert")) + if not proprio.carte_ok(): + etat_administratif.append(coul(u"manque carte d'étudiant", "violet")) + if not proprio.paiement_ok(): + etat_administratif.append(coul(u"cotisation non réglée", "violet")) + params['etat_administratif']=etat_administratif + if proprio["chbre"][0].value not in ["????", "EXT"]: + params['brassage'] = coul("Cr@ns", "bleu") if gestion.annuaires_pg.is_crans(proprio["chbre"][0].value[0], proprio["chbre"][0].value[1:]) else coul("CROUS", "jaune") + return params + +def club(club, params): + params=proprio(club, params) + return templateEnv.get_template("club").render(params) + +def adherent(adherent, params): + params=proprio(adherent, params) return templateEnv.get_template("adherent").render(params) -def sprint(object, limit=10): +def sprint(object, limit=5): + params={'limit':limit} if isinstance(object, objets.machine): - return machine(object, limit) + return machine(object, params) elif isinstance(object, objets.adherent): - return adherent(object, limit) + return adherent(object, params) + elif isinstance(object, objets.club): + return club(object, params) else: return str(object) diff --git a/printing/templates/adherent b/printing/templates/adherent index d4df959..66429f9 100644 --- a/printing/templates/adherent +++ b/printing/templates/adherent @@ -1,17 +1,11 @@ -{{["aid=",aid.0]|join|coul('bleu')}} {{"Nom : "|coul('gras')}}{{prenom|join(' ')}} {{nom|join(' ')}} -{%if uid %}{{"Login : "|coul('gras')}}{{uid.0}} {{"Alias : "|coul('gras')}}{{mailAlias|join(', ')}} -{{"Droits sur les serveurs : "|coul('gras')}}{{droits|join(', ')}} -{{"Dernière connexion : "|coul('gras')}}{{derniereConnexion|join}} -{{"Solde : "|coul('gras')}}{{solde.0}} -{% endif %}{{"Date d'inscription : "|coul('gras')}} -{{"État administratif : "|coul('gras')}}{{etat}} -{{"Numéro de téléphone : "|coul('gras')}}{{tel|join(', ')}} -{{"Chambre : "|coul('gras')}}{{chbre|join(', ')}} -{{"Brassage : "|coul('gras')}} -{{"Études : "|coul('gras')}}{{etudes|join(' ')}} -{{"Cotisation payée pour les années :"|coul('gras')}} - {{paiement|join(' ')}} -{{"Carte d'étudiant fournie pour les années :"|coul('gras')}} - {{carteEtudiant|join(' ')}} -{{"Blackliste : "|coul('gras')}}{{blacklist|join('\n ')}} -{{"Historique : "|coul('gras')}}{{historique|join('\n ')}} +{% extends "proprio" %} +{% block id %} +{{["aid=",o.aid.0]|join|coul('bleu')}} {{"Nom : "|coul('gras')}}{{o.prenom|join(' ')}} {{o.nom|join(' ')}} +{% endblock%} +{% block proprio %} +{{"Numéro de téléphone : "|coul('gras')}}{{o.tel|join(', ')}} +{{"Chambre : "|coul('gras')}}{{o.chbre.0}} ({{o.chbre.0|string|prise_etat}}) +{{"Études : "|coul('gras')}}{{o.etudes|join(' ')}} +{{"Cotisation payée pour les années : "|coul('gras')}}{{o.paiement|join(' ')}} {% if 'p' in o.controle.0.value %}{{"(OK)"|coul('vert')}}{% endif %} +{{"Carte d'étudiant fournie pour les années : "|coul('gras')}}{{o.carteEtudiant|join(' ')}} {% if 'c' in o.controle.0.value %}{{"(OK)"|coul('vert')}}{% endif %} +{% endblock%} diff --git a/printing/templates/blacklist b/printing/templates/blacklist new file mode 100644 index 0000000..6957887 --- /dev/null +++ b/printing/templates/blacklist @@ -0,0 +1,4 @@ +{% if o.__getitem__('blacklist') %} +{{"Blackliste : "|coul('gras')}}{{o.__getitem__('blacklist')[-limit:]|reverse|blacklist|join('\n ')}} +{% endif %} +{% include 'object' %} diff --git a/printing/templates/club b/printing/templates/club new file mode 100644 index 0000000..16a17e2 --- /dev/null +++ b/printing/templates/club @@ -0,0 +1,11 @@ +{% extends "proprio" %} +{% block id %} +{{["cid=",o.cid.0]|join|coul('bleu')}} {{"Nom : "|coul('gras')}}{{o.nom|join(' ')}} +{% endblock%} +{% block proprio %} +{{"Responsable : "|coul('gras')}}{{o.responsable.0.value.prenom|join(' ')}} {{o.responsable.0.value.nom|join(' ')}} ({{o.responsable.0.value.aid|join(' ')}}) +{{"Imprimeurs : "|coul('gras')}}{% for i in o.imprimeurClub %}{{i.value.prenom|join(' ')}} {{i.value.nom|join(' ')}} ({{i.value.aid|join(' ')}}) {% endfor%} + +{{"Local : "|coul('gras')}}{{o.chbre.0}} ({{o.chbre.0|string|prise_etat}}) +{{"Charte signée pour les années scolaires : "|coul('gras')}}{{o.paiement|join(' ')}} +{% endblock%} diff --git a/printing/templates/compte_crans b/printing/templates/compte_crans new file mode 100644 index 0000000..09a6ef3 --- /dev/null +++ b/printing/templates/compte_crans @@ -0,0 +1,12 @@ +{{"Login : "|coul('gras')}}{{o.uid.0}} {{"Alias : "|coul('gras')}}{{o.mailAlias|join(', ')}} +{% if o.droits %} +{{"Droits sur les serveurs : "|coul('gras')}}{{o.droits|join(', ')}} +{% endif %} +{{"Dernière connexion : "|coul('gras')}}{%if derniereConnexion %} +{{o.derniereConnexion.0|timeformat}} +{% else %} +{{"Jamais"|coul('rouge')}} +{% endif %} +{% if o.solde %} +{{"Solde : "|coul('gras')}}{{o.solde.0}}€ +{% endif %} diff --git a/printing/templates/machine b/printing/templates/machine index e3c9e8c..f23694a 100644 --- a/printing/templates/machine +++ b/printing/templates/machine @@ -1,8 +1,9 @@ -{{["mid=",mid.0]|join|coul('bleu')}} {{[objectClass.0, " : "]|join|coul('gras')}}{{host.0}} {{["rid=",rid.0]|join|coul('bleu')}} -{{"Alias : "|coul('gras')}}{{alias|join(', ')}} -{{"MAC : "|coul('gras')}}{{macAddress|join(', ')}} -{{"IPv4 : "|coul('gras')}}{{ipHostNumber|join(', ')}} -{{"IPv6 : "|coul('gras')}}{{ip6HostNumber|join(', ')}} -{{"Propriétaire : "|coul('gras')}}{{proprio.prenom|join(', ')}} {{proprio.nom|join(', ')}} (aid={{proprio.aid|join(', ')}}) -{{"Blackliste : "|coul('gras')}}{{blacklist|join('\n ')}} -{{"Historique : "|coul('gras')}}{{historique|join('\n ')}} +{{["mid=",o.mid.0]|join|coul('bleu')}} {{[o.objectClass.0, " : "]|join|coul('gras')}}{{o.host.0}} {{["rid=",o.rid.0]|join|coul('bleu')}} +{% if o.alias %} +{{"Alias : "|coul('gras')}}{{o.alias|join(', ')}} +{% endif %} +{{"MAC : "|coul('gras')}}{{o.macAddress|join(', ')}} +{{"IPv4 : "|coul('gras')}}{{o.ipHostNumber|join(', ')}} +{{"IPv6 : "|coul('gras')}}{{o.ip6HostNumber|join(', ')}} +{{"Propriétaire : "|coul('gras')}}{{o.proprio().prenom|join(', ')}} {{o.proprio().nom|join(', ')}} (aid={{o.proprio().aid|join(', ')}}) +{% include 'blacklist' %} diff --git a/printing/templates/object b/printing/templates/object new file mode 100644 index 0000000..24128c6 --- /dev/null +++ b/printing/templates/object @@ -0,0 +1,6 @@ +{% if o.info %} +{{"Remarque : "|coul('gras')}}{{o.info|reverse|join('\n ')}} +{% endif %} +{% if o.historique %} +{{"Historique : "|coul('gras')}}{{o.historique[-limit:]|reverse|join('\n ')}} +{% endif %} diff --git a/printing/templates/proprio b/printing/templates/proprio new file mode 100644 index 0000000..cbe3c7f --- /dev/null +++ b/printing/templates/proprio @@ -0,0 +1,11 @@ +{% block id %}{% endblock %} +{{"Date d'inscription : "|coul('gras')}}{{o.historique.0|string|split(',',1)|first}} +{{"État administratif : "|coul('gras')}}{{etat_administratif|join(' et ')}} +{%if o.uid %} +{% include 'compte_crans' %} +{% endif %} +{% block proprio %}{% endblock %} +{% if brassage %} +{{"Brassage : "|coul('gras')}}{{brassage}} +{% endif %} +{% include 'blacklist' %}