ajout filtre json ; systeme de template dans .py a part
[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"""
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