utilities – Utilitaires effectuant la plupart des opérations bas niveau

Fonctions secondaires pour contruire les pages.

Attention, ce module est en trois parties dont voici les descriptions :

Les méthodes _get

Les méthodes pour faire des requêtes au serveur NK2015

La convention est la suivante :
  • en cas de réussite, on renvoie l’objet demandé
  • en cas d’échec, on raise une erreur note.basic.NotFound avec en attribut .fallback_with l’adresse de redirection

La gestion des photos

Quelques fonctions pour stocker et fournir les photos

La gestion commune à toutes les pages

Dans un soucis de factorisation de code, tout ce qui a besoin d’être fait sur toutes les pages (à part login et logout) est dans ces fonctions.

Documentation successive des trois parties

note.utilities._get_activites(sock, isadmin, isold, request, fallback='/note/index/', computecandelete=False, whoami=None, mine=False)[source]

Récupère la liste des activités

note.utilities._get_activite(sock, idact, request, fallback='/note/activites/', computecandelete=False, whoami=None, isadmin=False)[source]

Récupère une activité

note.utilities._get_invites(sock, idact, isadmin, request, fallback='/note/activites/')[source]

Récupère la liste des invités d’une activité. Il ne peut pas y avoir d’échec 404, au pire la liste est vide.

note.utilities._get_variable_droits(sock, request, fallback='/note/index/')[source]

Récupère les droits existants renvoie une paire (<liste de (<alias qui le donne>, <droit>), <liste de droits sans alias>)

note.utilities._get_compte(sock, idbde, request, fallback='/note/comptes/')[source]

Récupère un compte

note.utilities._get_historique_pseudo(sock, idbde, request, fallback='/note/index/')[source]

Récupère un compte et ses anciens pseudos. Place l’historique des pseudos dans la clé "historique_pseudo" du résultat.

note.utilities._get_aliases(sock, idbde, request, fallback='/note/index/')[source]

Récupère un compte et post-processe ses alias

note.utilities._get_boutons(sock, request, hidden=False, fallback='/note/index/')[source]

Récupère tous les boutons et les ordonne par (catégorie, label)

note.utilities._get_un_bouton(sock, idbouton, request, fallback='/note/index/')[source]

Récupère un bouton

note.utilities._get_clubs(sock, request, fallback='/note/index/')[source]

Récupère la liste des (idbde, pseudo) des clubs

note.utilities._get_preinscription(sock, preid, request, fallback='/note/inscriptions/')[source]

Récupère une préinscription

note.utilities._get_preinscriptions(sock, request, fallback='/note/index')[source]

Récupère la liste des préinscriptions

note.utilities._get_wei(sock, idwei, request, fallback='/note/index')[source]

Récupère les informations d’une préinscription wei.

note.utilities._get_full_rights(sock)[source]

Récupère la liste exhaustive des droits et surdroits du compte (alias déréférencés).

note.utilities._get_tarifs_adhesion(sock)[source]

Récupère les tarifs d’adhésion wei/pas wei normalien/pas normalien.

note.utilities._prepare_variables(sock, idbde, request, form=False, whoami=None)[source]

Prépare plein de variables pour l’affichage/la modification des comptes. (Le post-processing n’est pas forcément le même)

Renvoie un dico des variables récupérées

note.utilities._del_activite(sock, request, idact)[source]

Supprime une activité (le Redirect en cas d’échec est à la charge de l’appelant)

note.utilities._get_remise(sock)[source]

Récupère la liste des idremise des remises non closes

note.utilities._get_photoname(idbde)[source]

Donne le nom de fichier de la photo n°``idbde``

note.utilities._get_photopath(idbde)[source]

Donne le chemin de la photo n°``idbde``

note.utilities._get_url_photo(idbde)[source]

Donne l’url d’accès à la photo n°``idbde``

note.utilities._store_photo(photodata, idbde)[source]

Stocke la photo n°``idbde`` dans un fichier

note.utilities._provide_photo(sock, idbde)[source]

Fait en sorte que la photo n°``idbde`` soit disponible à son url.

note.utilities._display_versions()[source]

Renvoie un string html-formaté des version de nginx et django.

note.utilities.get_varsock(request, socket=False)[source]

Fonction appelée pour générer quasiment toutes les pages (pas login).

Elle récupère la socket dans keep_alive et vérifie que la session NK2015 n’a pas timeout.

Renvoie (bool, sock_ou_response, variables_standard) avec les cas suivants :
  • (True, <une socket ouverte vers le serveur NK2015>, <un dico de variables de bases>)
  • (False, <un Http object utilisable>, {})
  • (True, None, <un dico de variables de base>) (dans le cas socket=False)
note.utilities.CAST_DICT = {'preid': (u'"%s" n\'est pas un identifiant de pr\xe9inscription valide.', '%sinscriptions/'), 'idtransaction': (u'"%s" n\'est pas un identifiant de transaction valide.', '%sconsos/'), 'idinv': (u'"%s" n\'est pas un identifiant d\'invit\xe9 valide.', '%sactivites/%s%s/'), 'idbde': (u'"%s" n\'est pas un identifiant de compte valide.', '%scomptes/'), 'idbouton': (u'"%s" n\'est pas un identifiant de bouton valide.', '%sboutons/'), 'idact': (u'"%s" n\'est pas un identifiant d\'activit\xe9 valide.', '%sactivites/'), 'idremise': (u'"%s" n\'est pas un identifiant de remise valide.', '%stresorerie/remises/')}

Correspondance (type d’id à convertir) -> (template message d’erreur en cas d’échec, url de fallback par défaut)

La valeur incorrecte de l’id sera string-formattée dans le message d’erreur Le premier "%s" de l’url de fallback sera remplacée par settings.NOTE_ROOT_URL

Pour le cas particulier d’"idinv", voir la documentation de _cast_as()

note.utilities._cast_as(cast_as_what, id_to_cast, request, kwargs)[source]

Pour transformer un id en entier et enregistrer une erreur dans la session en cas d’échec.

  • en cas de réussite, renvoie l’id
  • en cas d’échec, lève une erreur note.basic.IllegalId qui contient dans son .fallback_with l’URL de redirection.

Utilise note.views.CAST_DICT pour connaître le message d’erreur à éventuellement afficher et l’url de redirection.

  • On fallback sur l’url du dico en remplaçant le premier "%s" par la valeur de settings.NOTE_ROOT_URL
  • Dans le cas particulier de "idinv" :
  • Le deuxième "%s" est remplacé par kwargs["idact"]
  • Le troisième "%s" est remplacé par "/admin" si kwargs["admin"] est "/admin"
note.utilities.standard_page_withignores(ignore_casts=[])[source]

Décorateur pour la quasi-totalité des pages. S’occupe de caster les ids fournis dans l’url, récupère la socket et peuple les variables standard. Si l’id est précisé dans ignore_casts, on n’affiche pas d’erreur même si il est vide. (on y met None)

On reçoit dans kwargs d’éventuels ids à caster.

Lors du cast des ids ou la récupération de la socket, il peut y avoir une erreur. La fonction n’est alors pas appelée et une réponse d’erreur est envoyée.

On appelle ensuite la fonction de la page ainsi func(request, sock, kwargs).
  • sock est une socket de communication vers le serveur NK2015.
  • On a ajouté à kwargs une clé "variables_standard", qui contient quelques valeurs utiles. Ce n’est nécessaire que pour peu de fonctions, ce qui explique que ce ne soit pas un argument explicite.
  • Si une erreur note.basic.NotFound ou note.basic.IllegalId est levée, elle est rattrappée et on redirige vers son .fallback_with
note.utilities.standard_page(func)

Comme standard_page_withignores() mais, justement sans ignores, parce que la plupart des pages n’en ont pas besoin. (C’est en fait le résultat de standard_page_withignores([]))

note.utilities._get_dept_code(dept)[source]

Fonction transformant une chaine de caractères désignant un département d’enseignement en code, par exemple “Physique” -> “A2”. Renvoie ‘EXT’ si le département est inconnu.