ReadDatabase – Accès prédéfinis à la base de données

Définition de quelques méthodes de recherche/accès à la base de données.

ReadDatabase._get_compte(quelparam, valeurparam)[source]

Pour usage interne. Récupère le compte par idbde ou par pseudo

ReadDatabase.get_compte(idbde)[source]

Récupère les infos du compte n° idbde dans la base de données et le renvoie sous forme d’un dictionnaire.

Prend soin de transformer les champs texte en unicode.

ReadDatabase.get_display_info(idbde)[source]

Retourne les infos d’un compte en rajoutant le tag negatif donnant des infos sur la négativité du compte : * 0 : en positif * 1 : solde_negatif > solde > solde_tres_negatif * 2 : solde_tres_negatif > solde > solde_pas_plus_negatif (forced sera nécessaire) * 3 : solde_pas_plus_negatif > solde (overforced sera nécessaire)

ReadDatabase.get_compte_by_pseudo(pseudo)[source]

Récupère un compte par son pseudo.

ReadDatabase.like_replace(chain)[source]

Échappe les % et _ avec = (et donc = avec ==) pour pouvoir faire un LIKE.

ReadDatabase.search(dico, give_alias, search_alias, give_historique, search_historique, old, insensitive, exact=0, orderby='nom', conj=False)[source]

Effectue une recherche avancée sur la tables des comptes.

dico = { <champ1> = <valeur1>, …}

Recherche les comptes dont au moins un des champs spécifiés “correspond” la valeur demandée. “correspond” signifiant :

  • correspondance sur le début si exact = 1, match exact si exact = 2, n’importe où si exact = 0 (défaut)
  • insensible à la casse si insensitive

Renvoie une liste (ordonnée selon le champ orderby) contenant un dictionnaire pour chaque compte trouvé.

On peut utiliser les switchs suivants :
  • give_alias : renvoie également les alias des comptes.
  • search_alias : cherche à matcher également parmi les alias.
  • give_historique : renvoie également les anciens pseudos des comptes.
  • search_historique : cherche à matcher également parmi les anciens pseudos.
  • old : cherche aussi dans les comptes qui ne sont pas à jour d’adhésion.
  • conj : recherche conjonctive.
ReadDatabase._is_pg_regexp(pattern)[source]

Renvoie True si pattern est une regexp correcte au sens de PostGreSQL.

ReadDatabase._forge_test(test_field, include_regex=False)[source]

Construit le test WHERE faisant un matching ILIKE entre test_field et le terme de recherche. Il faudra utiliser la clé "term_liked" pour le term LIKE-échapé avec un '"'.

Si include_regex est à True, le test fera un OR avec un matching regex case-insensitive de la clé "term_regex".

Il faut penser à like-échapper correctement term_liked et ajouter ^ à term_regex avant l’exécution de la requête.

ReadDatabase._forge_request(skeleton, pieces)[source]

Construit la requête de recherche en plaçant dans le squelette skeleton les morceaux du dico pieces.

Effectue une recherche simple :

  • sur les pseudos, les alias et l’historique
  • avec un filtre begin
  • case insensitive
  • on a juste le choix de préciser old ou pas (par défaut, on ne va pas chercher les comptes non à jour)
  • cas particulier : si byidbde est à True, on ne fait rien de tout ça mais on cherche sur les idbde

Ne renvoie que ce qui a matché et l’idbde correspondant et l’appelle "terme" (que ce soit un pseudo, alias ou historique). Ne renvoie pas les comptes bloqués ou supprimés.

Renvoie également le nom/prénom du compte en question. Ainsi que le solde, sauf si hide_solde est à True.

Le paramètre exclude est une liste d’idbde à exclure d’office. Ce paramètre vaut None si aucun résultat ne doit être exclus.

Rajoute également un champ "was" qui peut être "pseudo", "alias" ou "historique". pour qu’on puisse savoir ce qui a matché (pour une mise en forme différente, par exemple)

Donne également des infos sur la négativité du compte, dans le champ "negatif" :
  • 0 : en positif
  • 1 : solde_negatif > solde > solde_tres_negatif
  • 2 : solde_tres_negatif > solde > solde_pas_plus_negatif (forced sera nécessaire)
  • 3 : solde_pas_plus_negatif > solde (overforced sera nécessaire)

Les idbde < 0 sont ignorés.