objet 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
29 # extraction des données
30 request = "select top %d * from auf_v_acces_fournisseurs %s order by nom desc" % ( self.sqllimit, self.sqlwhere )
31 cursor.execute( request )
32 items = []
33 while 1:
34 item = dict_fetchone( cursor )
35 if item == None: break
36 items.append(item)
37 index = {}
38 index['filtres'] = self.filters
39 index['fournisseurs'] = items
40 index['requete_sql'] = request
41 return index
42
43 def _get_fournisseur(self,code):
44 """renvoie un fournisseur"""
45 cursor = self.cursor()
46 if self.sqlwhere != '': self.sqlwhere = ' and ' + self.sqlwhere
47 request = "select top 1 * from auf_v_acces_fournisseurs where (code like '%s') %s" % (code, self.sqlwhere)
48 cursor.execute( request )
49 fournisseur = dict_fetchone(cursor)
50 if fournisseur == None:
51 raise ObjetInconnu('fournisseur')
52 fournisseur['requete_sql'] = request
53 return fournisseur
54
55 def index(self):
56 """renvoie une liste de fournisseurs formatée"""
57 template = self.template('fournisseur-index') # préparation du modèle
58 index = self._get_index( ) # extraction des documents concernés
59 output = template.render( index ) # formattage via le modèle
60 return self.outputformat, output
61
62 def show(self):
63 """renvoie un fournisseur formaté"""
64 code = self.environ['wsgiorg.routing_args'][1]['id'].replace('*','%').upper()
65 template = self.template( 'fournisseur' )
66 fournisseur = self._get_fournisseur( code )
67 output = template.render( fournisseur )
68 return self.outputformat, output
69