fournisseur.show() renvoie toutes les adresses d'un fournisseur
[restcoda.git] / fournisseur.py
CommitLineData
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
8from objet import Objet, ObjetInconnu
9from utils import dict_fetchone
10
11class 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