Commit | Line | Data |
---|---|---|
d374db4d TN |
1 | #!/usr/bin/python |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | # | |
5 | # Classe pour un fournisseur | |
6 | # (export de la vue auf_v_acces_fournisseur) | |
7 | ||
8 | from objet import Objet, ObjetInconnu | |
9 | from utils import dict_fetchone | |
10 | ||
11 | class fournisseur(Objet): | |
12 | """objet fournisseur CODA""" | |
34d0e750 | 13 | |
be244ce3 | 14 | accept_like_filters = [ 'code', 'nom', 'createur', 'nom_complet', 'categorie', 'adresse_pays' ] |
34d0e750 TN |
15 | |
16 | def _get_index(self): | |
17 | """renvoie une liste de fournisseurs""" | |
18 | # connexion a la base de données | |
19 | cursor = self.cursor() | |
d374db4d TN |
20 | # finition sur le where : si aucune categorie d'adresse n'est demandee, on envoie celle par defaut |
21 | if not 'categorie' in self.filters: | |
22 | if self.sqlwhere != '': | |
be244ce3 | 23 | self.sqlwhere += ' and (adresse_defaut = 1) ' |
d374db4d | 24 | else: |
be244ce3 | 25 | self.sqlwhere = ' (adresse_defaut = 1) ' |
d374db4d TN |
26 | if self.sqlwhere != '': |
27 | self.sqlwhere = ' where ' + self.sqlwhere | |
ecb895d1 | 28 | request = "select top %d * from auf_v_acces_fournisseurs %s order by date_creation desc" % ( self.sqllimit, self.sqlwhere ) |
d374db4d TN |
29 | cursor.execute( request ) |
30 | items = [] | |
31 | while 1: | |
32 | item = dict_fetchone( cursor ) | |
33 | if item == None: break | |
34 | items.append(item) | |
35 | index = {} | |
d374db4d | 36 | index['fournisseurs'] = items |
924e2f0a TN |
37 | index['nombre_fournisseurs'] = len(items) |
38 | index['limite_fournisseurs'] = self.sqllimit, | |
39 | index['filtres'] = self.filters | |
d374db4d TN |
40 | index['requete_sql'] = request |
41 | return index | |
42 | ||
43 | def _get_fournisseur(self,code): | |
44 | """renvoie un fournisseur""" | |
2614b885 | 45 | # note : renvoie aussi la liste des adresses et pas seulement la premiere iteration trouvée |
d374db4d | 46 | cursor = self.cursor() |
be244ce3 | 47 | request = "select * from auf_v_acces_fournisseurs where (code = '%s') order by adresse_defaut desc" % code |
d374db4d | 48 | cursor.execute( request ) |
2614b885 | 49 | # le premier resultat est normalement l'adresse par defaut |
d374db4d TN |
50 | fournisseur = dict_fetchone(cursor) |
51 | if fournisseur == None: | |
52 | raise ObjetInconnu('fournisseur') | |
2614b885 TN |
53 | autres_adresses = [] |
54 | while 1: | |
55 | # les resultats suivant contiennent les autres adresses | |
56 | adr = dict_fetchone( cursor ) | |
57 | if adr == None: break | |
58 | adr_extraite = { 'categorie': adr['categorie'] , | |
be244ce3 TN |
59 | 'adresse1': adr['adresse1'], |
60 | 'adresse2': adr['adresse2'], | |
61 | 'adresse3': adr['adresse3'], | |
62 | 'adresse4': adr['adresse4'], | |
63 | 'adresse5': adr['adresse5'], | |
64 | 'adresse6': adr['adresse6'], | |
65 | 'adresse_code_postal': adr['adresse_code_postal'], | |
66 | 'adresse_pays': adr['adresse_pays'], | |
67 | 'adresse_telephone': adr['adresse_telephone'], | |
68 | 'adresse_telecopie': adr['adresse_telecopie'], | |
2614b885 TN |
69 | } |
70 | autres_adresses.append(adr_extraite) | |
71 | fournisseur['autres_adresses'] = autres_adresses | |
d374db4d TN |
72 | fournisseur['requete_sql'] = request |
73 | return fournisseur | |
74 | ||
75 | def index(self): | |
76 | """renvoie une liste de fournisseurs formatée""" | |
77 | template = self.template('fournisseur-index') # préparation du modèle | |
78 | index = self._get_index( ) # extraction des documents concernés | |
79 | output = template.render( index ) # formattage via le modèle | |
80 | return self.outputformat, output | |
81 | ||
82 | def show(self): | |
83 | """renvoie un fournisseur formaté""" | |
924e2f0a | 84 | code = self.environ['wsgiorg.routing_args'][1]['id'].upper() |
d374db4d TN |
85 | template = self.template( 'fournisseur' ) |
86 | fournisseur = self._get_fournisseur( code ) | |
87 | output = template.render( fournisseur ) | |
88 | return self.outputformat, output | |
89 |