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