BaseFonctions – Des fontions de bases utilisées partout

Ce module définit des fonctions de base utiles un peu partout

BaseFonctions.debug_lock = <thread.lock object>

Lock unique utilisé afin que deux threads ne mélangent pas leur messages de debug

BaseFonctions.getcursor()[source]

Ouvre une connexion à la base de données et renvoie la pare (connexion, curseur). En effet, il faut garder la variable connexion, sinon, elle est garbage-collectée, ce qui ferme la connexion à la base.

BaseFonctions.isPgsqlDate(s)[source]

Vérifie si l’objet passé est une date PgSQL ou si la chaîne de caractère peut être transformée en date par pgsql.

BaseFonctions.executable_cmd(cmd)[source]

Retourne True si cmd peut être exécutée par le client.

Ne garantit pas que la commande existe vraiment.

BaseFonctions.inOrInAliases(terme, liste, aliases, sousdroit=False)[source]

Cherche si terme est dans liste ou bien s’il est dans une des valeur du dico aliases dont la clé la clé est dans liste.

Si sousdroit est mis à True, cherche également si liste contient un sous-droit de terme.

NB : Les alias "all" et "root" sont hardcodés.

BaseFonctions.inOrInAliasesWithMask(terme, liste, aliases, masque, sousdroit=False)[source]

inOrInAliases(terme, liste, aliases) and not inOrInAliases(terme, masque, aliases)

BaseFonctions.debug(debuglevel, text, name=u'', linejumps=0)[source]

Afficher des informations de debug, sur stdout et/ou dans le fichier de log. Certains messages sont droppés, ça dépend du debug_level.

Voir config.debug_level_logfile et config.debug_level_stdout.

BaseFonctions.log(ip, utilisateur, fonction, cur, params='', relevant_ids=[])[source]

Inscrit une action effectuée par utilisateur dans la table de log.

BaseFonctions.random_chain(size, saltsize=0)[source]

Donne une chaîne de caractères aléatoire ainsi que son hash sha256.

Le hash est salé avec un sel de longueur saltsize.

BaseFonctions.hash_pass(passwd)[source]

Hashe le password et renvoie <sel>|<hash>.

BaseFonctions.hash_mail(mail, idbde)[source]

Génère un hash à partir de l’adresse mail d’un compte, de son idbde, et d’un secret accessible uniquement sur le serveur.

BaseFonctions.pseudo_libre(pseudo, idbde=None)[source]

Dit si un pseudo est utilisable ou non. Le test est insensible à la casse : si "PseuDo" est pris, on n’autorise pas l’utilisation de "pSeudO".

  • Un pseudo ne peut pas être vide.
  • Un pseudo ne peut pas commencer par "#".
  • Un pseudo déjà utilisé par quelqu’un n’est pas utilisable…
  • … ou si c’est un pseudo que quelqu’un possédait il y a peu (peu = configurations.historique_incompressible)
  • … ou si c’est un alias que quelqu’un possède.

NB : si l’utilisateur qui a utilisé ce pseudo il n’y a pas longtemps est moi-même, je peux le reprendre quand même.

BaseFonctions.default_pseudo(nom, prenom, startwith=None)[source]

Génère le pseudo par défaut à partir du nom et du prénom du compte.

Un pseudo n’a pas le droit de commencer par un #, donc on droppe tout # dans prenom et nom, par sécurité.

BaseFonctions.pg_parse(obj)[source]

Renvoie essentiellement l’objet lui-même mais en le modifiant s’il est pgsql-typé en quelquechose de JSON-izable.

BaseFonctions.isAdherent(idbde, date='now()')[source]

Dit si l’adhérent n° idbde est à jour d’adhésion à la date fournie, ou, à défaut, maintenant.

Pour le même prix, renvoie sa section.

BaseFonctions.adhesion_current_year()[source]

Calcule l’année d’inscription par défaut en fonction de la configuration et de la date actuelle.

BaseFonctions.expandAliases(liste)[source]

Récupère une liste de droits, et cherche si dedans il y a des aliases, le cas échéant, les in-line (sans pour autant les enlever de la liste).

BaseFonctions.hasMoreRights(compte1, compte2)[source]

Fonction pour contrôler en cas de suppression si le compte2 possède certains droits que le compte1 n’aurait pas, et retourne False le cas échéant.

Les droits en question sont contenus dans la liste config.no_delete_droits.

class BaseFonctions.Compte(dico, section_data=None)[source]

Bases: object

Permet de faire quelques opérations sur un compte comme l’afficher, récupérer ses droits, sa section…

modify(dico)[source]

Modifie l’objet courant (ne sauvegarde pas les modfis dans la BDD).

save(cur=None)[source]

Modifie un adhérent (ne fait aucune vérification). Le __dict__ a intérêt à contenir tout ce qu’il faut.

Si cur est fourni, le curseur n’est pas COMMITé.

get_droits()[source]

Renvoie la liste des droits du compte.

get_surdroits()[source]

Renvoie la liste des surdroits du compte.

get_aliases()[source]

Va chercher les aliases de l’adhérent.

Les renvoie sous forme de liste de paires (<id>, <alias>).

get_historiques(old=False)[source]

Va chercher les anciens pseudos de l’adhérent.

Par défaut, seulement ceux qui le référencent encore, sauf si old = True.

Les renvoie sous forme de liste.

get_annees()[source]

Renvoie les années où le compte a adhéré au BDE.

get_data(acl_wei)[source]

Renvoie un dico contenant toutes les informations sur le compte. pbsante n’est fournis que si acl_wei = True.

anonymise()[source]

Anonymise un compte, peut être appelé lors de sa “suppression”.

BaseFonctions.sql_pretty_print(liste, keys=None)[source]

Affiche (presque) la même chose que la sortie obtenue dans un prompt psql.

Si keys n’est pas fourni, l’ordre des champs ne sera pas toujours le même.

Crashe si liste est vide.