2 # -*- coding: utf-8 -*-
5 # Classe pour un fournisseur
6 # (export de la vue auf_v_acces_fournisseur)
8 from objet
import Objet
, ObjetInconnu
9 from utils
import dict_fetchone
11 class fournisseur(Objet
):
12 """objet fournisseur CODA"""
14 accept_like_filters
= [ 'code', 'nom', 'createur', 'nom_complet', 'categorie', 'adresse_pays' ]
17 """renvoie une liste de fournisseurs"""
18 # connexion a la base de données
19 cursor
= self
.cursor()
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
!= '':
23 self
.sqlwhere
+= ' and (adresse_defaut = 1) '
25 self
.sqlwhere
= ' (adresse_defaut = 1) '
26 if self
.sqlwhere
!= '':
27 self
.sqlwhere
= ' where ' + self
.sqlwhere
28 request
= "select top %d * from auf_v_acces_fournisseurs %s order by date_creation desc" % ( self
.sqllimit
, self
.sqlwhere
)
29 cursor
.execute( request
)
32 item
= dict_fetchone( cursor
)
33 if item
== None: break
36 index
['fournisseurs'] = items
37 index
['nombre_fournisseurs'] = len(items
)
38 index
['limite_fournisseurs'] = self
.sqllimit
,
39 index
['filtres'] = self
.filters
40 index
['requete_sql'] = request
43 def _get_fournisseur(self
,code
):
44 """renvoie un fournisseur"""
45 # note : renvoie aussi la liste des adresses et pas seulement la premiere iteration trouvée
46 cursor
= self
.cursor()
47 request
= "select * from auf_v_acces_fournisseurs where (code = '%s') order by adresse_defaut desc" % code
48 cursor
.execute( request
)
49 # le premier resultat est normalement l'adresse par defaut
50 fournisseur
= dict_fetchone(cursor
)
51 if fournisseur
== None:
52 raise ObjetInconnu('fournisseur')
55 # les resultats suivant contiennent les autres adresses
56 adr
= dict_fetchone( cursor
)
58 adr_extraite
= { 'categorie': adr
['categorie'] ,
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'],
70 autres_adresses
.append(adr_extraite
)
71 fournisseur
['autres_adresses'] = autres_adresses
72 fournisseur
['requete_sql'] = request
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
83 """renvoie un fournisseur formaté"""
84 code
= self
.environ
['wsgiorg.routing_args'][1]['id'].upper()
85 template
= self
.template( 'fournisseur' )
86 fournisseur
= self
._get_fournisseur( code
)
87 output
= template
.render( fournisseur
)
88 return self
.outputformat
, output