ajout infos buget et liaison dans document
authorThomas NOEL <thomas@new-dev.(none)>
Fri, 4 Jul 2008 22:52:47 +0000 (18:52 -0400)
committerThomas NOEL <thomas.noel@auf.org>
Fri, 4 Jul 2008 22:52:47 +0000 (18:52 -0400)
25 files changed:
document.py
modeles/document-index.html [new file with mode: 0644]
modeles/document-index.json [new file with mode: 0644]
modeles/document-index.rss [new file with mode: 0644]
modeles/document.html [new file with mode: 0644]
modeles/document.json [new file with mode: 0644]
modeles/document.txt [new file with mode: 0644]
modeles/document.xml [new file with mode: 0644]
modeles/fournisseur-index.html [new file with mode: 0644]
modeles/fournisseur.html [new file with mode: 0644]
modeles/utilisateur-index.html [new file with mode: 0644]
modeles/utilisateur.xml [new file with mode: 0644]
objet.py
rest.py
templates/document-index.html [deleted file]
templates/document-index.json [deleted file]
templates/document-index.rss [deleted file]
templates/document.html [deleted file]
templates/document.json [deleted file]
templates/document.txt [deleted file]
templates/document.xml [deleted file]
templates/fournisseur-index.html [deleted file]
templates/fournisseur.html [deleted file]
templates/utilisateur-index.html [deleted file]
templates/utilisateur.xml [deleted file]

index 43f6999..ab55ef2 100644 (file)
@@ -10,6 +10,8 @@
 
 from objet import Objet, ObjetInconnu
 from utils import dict_fetchone, coda2rest
+# pour l'annee du budget
+from datetime import datetime
 
 class Document(Objet):
     """objet document CODA (demlog, comlog, demdep... ils ont tous le même format)"""
@@ -44,11 +46,11 @@ class Document(Objet):
        index['requete_sql'] = request
        return index
 
-    def _get_details(self,code,id):
+    def _get_details(self,code,numero):
         """renvoie la liste des détails pour un document"""
         details = []
        cursor = self.cursor()
-       request = "select * from auf_v_acces_dtls_demcom where (code like '%s') and (numero = %d)" % (code, id)
+       request = "select * from auf_v_acces_dtls_demcom where (code = '%s') and (numero = '%s')" % (code, numero)
        cursor.execute( request )
         while 1:
             detail = dict_fetchone(cursor)
@@ -56,17 +58,50 @@ class Document(Objet):
             details.append(detail)
         return details
 
-    def _get_document(self,code,id):
+    def _get_liaisons(self,code,numero):
+        """renvoie la liste des demandes sources d'une commande ou des commandes issues d'une demande"""
+       liaisons = []
+       cursor = self.cursor()
+       if code[:3] == 'DEM': 
+           request = "select code,numero from auf_v_acces_dtls_demcom where source_code = '%s' and source_numero = '%s' group by code,numero" 
+       else:
+           request = "select source_code,source_numero from auf_v_acces_dtls_demcom where code = '%s' and numero = '%s' group by source_code,source_numero" 
+       cursor.execute( request % (code, numero ) )
+       while 1:
+           liaison = dict_fetchone(cursor)
+           if liaison == None: break
+           liaisons.append(liaison)
+       return liaisons
+
+    def _get_budget(self,code_service,annee):
+        """renvoie les données du budget du code_service"""
+       cursor = self.cursor()
+       request = "select top 1 * from auf_budget where projet_poste = '%s' and annee = %d" % ( code_service[:6] , annee )
+       cursor.execute( request )
+       budget = dict_fetchone(cursor)
+       if budget == None:
+           budget = { 'projet_poste': '0000XX', 'projet': 'Inconnu', 'poste':'Inconnu', 'annee': annee }
+       budget['date_interrogation'] = datetime.today()
+       return budget
+
+    def _get_document(self,code,numero):
         """renvoie un document"""
        cursor = self.cursor()
-       request = "select top 1 * from auf_v_acces_demcom where (code like '%s') and (numero = %d) %s" % (code, id, self.sqlwhere)
+       request = "select top 1 * from auf_v_acces_demcom where (code like '%s') and (numero = %d) %s" % (code, numero, self.sqlwhere)
        cursor.execute( request )
         document = dict_fetchone(cursor)
        if document == None:
            raise ObjetInconnu('document')
-       document['code_rest'] = coda2rest( document['code'] )
-        document['details'] = self._get_details( code,id )
        document['requete_sql'] = request
+       document['code_rest'] = coda2rest( document['code'] )
+        document['details'] = self._get_details( document['code'], document['numero'] )
+        document['liaisons'] = self._get_liaisons( document['code'], document['numero'] )
+       if isinstance( document['date_modif'], datetime ):
+           annee = document['date_modif'].year
+       else:
+           annee = datetime.today().year
+       document['budget'] = self._get_budget( document['code_service'], annee )
+       # TODO : ajouter budget (a l'heure de la demande)
        return document
 
     def index(self):
@@ -79,9 +114,9 @@ class Document(Objet):
     def show(self):
         """renvoie un document formaté"""
         # return 'txt', '%s' % self.environ # pour debug
-        id = int(self.environ['wsgiorg.routing_args'][1]['id'])
+        numero = int(self.environ['wsgiorg.routing_args'][1]['id'])
         template = self.template( self.prefix_template )
-        document = self._get_document( self.code_document, id )
+        document = self._get_document( self.code_document, numero )
         output = template.render( document )
        return self.outputformat, output
 
diff --git a/modeles/document-index.html b/modeles/document-index.html
new file mode 100644 (file)
index 0000000..5f07ff3
--- /dev/null
@@ -0,0 +1,2 @@
+<pre>{{ debug()|e }}</pre>
+
diff --git a/modeles/document-index.json b/modeles/document-index.json
new file mode 100644 (file)
index 0000000..f0559da
--- /dev/null
@@ -0,0 +1,3 @@
+
+{{ documents | jsonencode }}
+
diff --git a/modeles/document-index.rss b/modeles/document-index.rss
new file mode 100644 (file)
index 0000000..0ed51ee
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<rss version="2.0">
+
+<channel>
+        <title>documents CODA {{ code }}</title>
+        <link>http://intranet.auf/</link>
+       <description>les derniers documents CODA de type {{ code }}</description>
+       <language>fr</language>
+                       
+{% for d in documents %}
+<item>
+     <title>[{{d.statut}}] {{d.code }} {{d.numero | int}} de {{d.demandeur}} pour {{d.approbateur}} : {{d.total}} {{d.devise}} sur {{ d.code_service }}</title>
+     <link>http://bacasable.auf/rest/{{d.code_rest}}/{{d.numero | int}}.txt</link>
+     <guid>http://bacasable.auf/rest/{{d.code_rest}}/{{d.numero | int}}</guid>
+     <description>Fournisseur http://bacasable.auf/rest/fournisseur/{{ d.fournisseur }}</description>
+     <pubDate>{{ d.date_modif }}</pubDate>
+</item>
+{% endfor %}
+
+</channel>
+</rss>
+
diff --git a/modeles/document.html b/modeles/document.html
new file mode 100644 (file)
index 0000000..5f07ff3
--- /dev/null
@@ -0,0 +1,2 @@
+<pre>{{ debug()|e }}</pre>
+
diff --git a/modeles/document.json b/modeles/document.json
new file mode 100644 (file)
index 0000000..4ba4d78
--- /dev/null
@@ -0,0 +1,5 @@
+
+NB : Ca ressemble a du JSON, mais ce n'est pas du JSON !... C'est juste un test...
+
+{{ debug()|e }}
+
diff --git a/modeles/document.txt b/modeles/document.txt
new file mode 100644 (file)
index 0000000..f01578c
--- /dev/null
@@ -0,0 +1,48 @@
+Document CODA {{code }} {{ numero }}
+
+Statut: {{ statut }}
+
+Demandeur   : {{ demandeur }}
+Approbateur : {{ approbateur }}
+Créé le     : {{ date_creation }} (mise à jour {{ date_modif }})
+
+Valeur totale : {{ total }} {{ devise }}
+Code service  : {{ code_service }}
+
+Fournisseur   : {{ fournisseur }}
+
+Commentaires  :
+{{commentaires}}
+
+Adresse de livraison :
+{{ livraison_destination}}
+{{ livraison_addresse1 }}
+{{ livraison_addresse2 }}
+{{ livraison_addresse3 }}
+{{ livraison_addresse4 }}
+{{ livraison_addresse5 }}
+{{ livraison_addresse6 }}
+C.P. {{ livraison_code_postal }}
+Tél. : {{ livraison_telephone }}
+Tlc. : {{ livraison_telecopie }}
+
+Implantation payeuse : {{ implantation_payeuse }}
+
+Adresse de facturation :
+{{ facturation_destination}}
+{{ facturation_addresse1 }}
+{{ facturation_addresse2 }}
+{{ facturation_addresse3 }}
+{{ facturation_addresse4 }}
+{{ facturation_addresse5 }}
+{{ facturation_addresse6 }}
+C.P. {{ facturation_code_postal }}
+Tél. : {{ facturation_telephone }}
+Tlc. : {{ facturation_telecopie }}
+
+Détails : {% for detail in details %}
+({{ detail.ligne }}) {{ detail.code_article }} : {{ detail.description_article }}
+    quantité : {{ detail.quantite }} prix unitaire : {{ detail.prix_unitaire }}
+    total : {{ detail.valeur_ligne }} (taxes : {{ detail.taxe }})
+{% endfor %}
+
diff --git a/modeles/document.xml b/modeles/document.xml
new file mode 100644 (file)
index 0000000..66cc9ea
--- /dev/null
@@ -0,0 +1,54 @@
+<{{ code_rest }}>
+  <numero>{{ numero }}</numero>
+  <statut>{{ statut }}</statut>
+  <demandeur>{{ demandeur }}</demandeur>
+  <approbateur>{{ approbateur }}</approbateur>
+  <date.modification>{{ date_modif }}</date.modification>
+  <date.creation>{{ date_creation }}</date.creation>
+  <valeur>{{ total }}</valeur>
+  <devise>{{ devise }}</devise>
+  <imputation>{{ code_service }}</imputation>
+  <fournisseur>{{ fournisseur }}</fournisseur>
+  <commentaires>{{ commentaires | e }}</commentaires>
+  <livraison>
+    <adresse>{{ livraison_destination | e }}
+{{ livraison_addresse1 | e }}
+{{ livraison_addresse2 | e }}
+{{ livraison_addresse3 | e }}
+{{ livraison_addresse4 | e }}
+{{ livraison_addresse5 | e }}
+{{ livraison_addresse6 | e }}
+{{ livraison_code_postal }}
+    </adresse>
+    <telephone>{{ livraison_telephone }}</telephone>
+    <telecopie>{{ livraison_telecopie }}</telecopie>
+  </livraison>
+  <impl.payeuse>{{ implantation_payeuse }}</impl.payeuse>
+  <facturation>
+    <adresse>{{ facturation_destination | e }}
+{{ facturation_addresse1 | e }}
+{{ facturation_addresse2 | e }}
+{{ facturation_addresse3 | e }}
+{{ facturation_addresse4 | e }}
+{{ facturation_addresse5 | e }}
+{{ facturation_addresse6 | e }}
+{{ facturation_code_postal }}
+    </adresse>
+    <telephone>{{ facturation_telephone }}</telephone>
+    <telecopie>{{ facturation_telecopie }}</telecopie>
+  </facturation>
+  <details>
+  {% for detail in details %}
+    <detail>
+       <ligne>{{ detail.ligne }}</ligne>
+       <code>{{ detail.code_article }}</code>
+       <description>{{ detail.description_article | e }}</description>
+       <quantite>{{ detail.quantite }}</quantite>
+       <pu>{{ detail.prix_unitaire }}</pu>
+       <taxe>{{ detail.taxe }}</taxe>
+       <total>{{ detail.valeur_ligne }}</total>
+     </detail>
+   {% endfor %}
+  </details>
+</{{ code_rest }}>
+
diff --git a/modeles/fournisseur-index.html b/modeles/fournisseur-index.html
new file mode 100644 (file)
index 0000000..5f07ff3
--- /dev/null
@@ -0,0 +1,2 @@
+<pre>{{ debug()|e }}</pre>
+
diff --git a/modeles/fournisseur.html b/modeles/fournisseur.html
new file mode 100644 (file)
index 0000000..5f07ff3
--- /dev/null
@@ -0,0 +1,2 @@
+<pre>{{ debug()|e }}</pre>
+
diff --git a/modeles/utilisateur-index.html b/modeles/utilisateur-index.html
new file mode 100644 (file)
index 0000000..5f07ff3
--- /dev/null
@@ -0,0 +1,2 @@
+<pre>{{ debug()|e }}</pre>
+
diff --git a/modeles/utilisateur.xml b/modeles/utilisateur.xml
new file mode 100644 (file)
index 0000000..dcd587a
--- /dev/null
@@ -0,0 +1,8 @@
+<utilisateur>
+  <code>{{ code }}</code>
+  <nom>{{ nom }}</nom>
+  <nom_connexion>{{ nom_connexion }}</nom_connexion>
+  <date_connexion>{{ date_connexion }}</date_connexion>
+  <implantation>{{ implantation }}</implantation>
+</utilisateur>
+
index 56b0768..dc0538b 100644 (file)
--- a/objet.py
+++ b/objet.py
@@ -15,7 +15,7 @@ from pymssql import connect
 
 # le système de template
 from jinja import Environment, FileSystemLoader
-ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/templates/'))
+ejinja = Environment(loader=FileSystemLoader('/home/thomas/public_html/modeles/'))
 
 # le système d'analyse des variables HTTP
 from paste.request import parse_formvars
diff --git a/rest.py b/rest.py
index 959da45..766395e 100644 (file)
--- a/rest.py
+++ b/rest.py
@@ -19,8 +19,7 @@ from objet import ObjetInconnu
 # from beaker.middleware import CacheMiddleware
 
 # formats de sortie autorisés, et content-type correspondant
-# formats = { 'xml': 'application/xml', 'html': 'text/html', 'txt': 'text/plain', 'json': 'application/json', 'rss': 'application/rss+xml' }
-formats = { 'xml': 'application/xml', 'html': 'text/html', 'txt': 'text/plain', 'json': 'text/plain', 'rss': 'application/rss+xml' } # pour debug : json en text/plain
+formats = { 'xml': 'application/xml', 'html': 'text/html', 'txt': 'text/plain', 'json': 'application/json', 'rss': 'application/rss+xml', 'debug': 'text/plain' }
 
 
 # les routes RESTful (cf http://routes.groovie.org/manual.html#restful-services)
diff --git a/templates/document-index.html b/templates/document-index.html
deleted file mode 100644 (file)
index 5f07ff3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<pre>{{ debug()|e }}</pre>
-
diff --git a/templates/document-index.json b/templates/document-index.json
deleted file mode 100644 (file)
index f0559da..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-{{ documents | jsonencode }}
-
diff --git a/templates/document-index.rss b/templates/document-index.rss
deleted file mode 100644 (file)
index 0ed51ee..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<rss version="2.0">
-
-<channel>
-        <title>documents CODA {{ code }}</title>
-        <link>http://intranet.auf/</link>
-       <description>les derniers documents CODA de type {{ code }}</description>
-       <language>fr</language>
-                       
-{% for d in documents %}
-<item>
-     <title>[{{d.statut}}] {{d.code }} {{d.numero | int}} de {{d.demandeur}} pour {{d.approbateur}} : {{d.total}} {{d.devise}} sur {{ d.code_service }}</title>
-     <link>http://bacasable.auf/rest/{{d.code_rest}}/{{d.numero | int}}.txt</link>
-     <guid>http://bacasable.auf/rest/{{d.code_rest}}/{{d.numero | int}}</guid>
-     <description>Fournisseur http://bacasable.auf/rest/fournisseur/{{ d.fournisseur }}</description>
-     <pubDate>{{ d.date_modif }}</pubDate>
-</item>
-{% endfor %}
-
-</channel>
-</rss>
-
diff --git a/templates/document.html b/templates/document.html
deleted file mode 100644 (file)
index 5f07ff3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<pre>{{ debug()|e }}</pre>
-
diff --git a/templates/document.json b/templates/document.json
deleted file mode 100644 (file)
index 4ba4d78..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-NB : Ca ressemble a du JSON, mais ce n'est pas du JSON !... C'est juste un test...
-
-{{ debug()|e }}
-
diff --git a/templates/document.txt b/templates/document.txt
deleted file mode 100644 (file)
index f01578c..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Document CODA {{code }} {{ numero }}
-
-Statut: {{ statut }}
-
-Demandeur   : {{ demandeur }}
-Approbateur : {{ approbateur }}
-Créé le     : {{ date_creation }} (mise à jour {{ date_modif }})
-
-Valeur totale : {{ total }} {{ devise }}
-Code service  : {{ code_service }}
-
-Fournisseur   : {{ fournisseur }}
-
-Commentaires  :
-{{commentaires}}
-
-Adresse de livraison :
-{{ livraison_destination}}
-{{ livraison_addresse1 }}
-{{ livraison_addresse2 }}
-{{ livraison_addresse3 }}
-{{ livraison_addresse4 }}
-{{ livraison_addresse5 }}
-{{ livraison_addresse6 }}
-C.P. {{ livraison_code_postal }}
-Tél. : {{ livraison_telephone }}
-Tlc. : {{ livraison_telecopie }}
-
-Implantation payeuse : {{ implantation_payeuse }}
-
-Adresse de facturation :
-{{ facturation_destination}}
-{{ facturation_addresse1 }}
-{{ facturation_addresse2 }}
-{{ facturation_addresse3 }}
-{{ facturation_addresse4 }}
-{{ facturation_addresse5 }}
-{{ facturation_addresse6 }}
-C.P. {{ facturation_code_postal }}
-Tél. : {{ facturation_telephone }}
-Tlc. : {{ facturation_telecopie }}
-
-Détails : {% for detail in details %}
-({{ detail.ligne }}) {{ detail.code_article }} : {{ detail.description_article }}
-    quantité : {{ detail.quantite }} prix unitaire : {{ detail.prix_unitaire }}
-    total : {{ detail.valeur_ligne }} (taxes : {{ detail.taxe }})
-{% endfor %}
-
diff --git a/templates/document.xml b/templates/document.xml
deleted file mode 100644 (file)
index 66cc9ea..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<{{ code_rest }}>
-  <numero>{{ numero }}</numero>
-  <statut>{{ statut }}</statut>
-  <demandeur>{{ demandeur }}</demandeur>
-  <approbateur>{{ approbateur }}</approbateur>
-  <date.modification>{{ date_modif }}</date.modification>
-  <date.creation>{{ date_creation }}</date.creation>
-  <valeur>{{ total }}</valeur>
-  <devise>{{ devise }}</devise>
-  <imputation>{{ code_service }}</imputation>
-  <fournisseur>{{ fournisseur }}</fournisseur>
-  <commentaires>{{ commentaires | e }}</commentaires>
-  <livraison>
-    <adresse>{{ livraison_destination | e }}
-{{ livraison_addresse1 | e }}
-{{ livraison_addresse2 | e }}
-{{ livraison_addresse3 | e }}
-{{ livraison_addresse4 | e }}
-{{ livraison_addresse5 | e }}
-{{ livraison_addresse6 | e }}
-{{ livraison_code_postal }}
-    </adresse>
-    <telephone>{{ livraison_telephone }}</telephone>
-    <telecopie>{{ livraison_telecopie }}</telecopie>
-  </livraison>
-  <impl.payeuse>{{ implantation_payeuse }}</impl.payeuse>
-  <facturation>
-    <adresse>{{ facturation_destination | e }}
-{{ facturation_addresse1 | e }}
-{{ facturation_addresse2 | e }}
-{{ facturation_addresse3 | e }}
-{{ facturation_addresse4 | e }}
-{{ facturation_addresse5 | e }}
-{{ facturation_addresse6 | e }}
-{{ facturation_code_postal }}
-    </adresse>
-    <telephone>{{ facturation_telephone }}</telephone>
-    <telecopie>{{ facturation_telecopie }}</telecopie>
-  </facturation>
-  <details>
-  {% for detail in details %}
-    <detail>
-       <ligne>{{ detail.ligne }}</ligne>
-       <code>{{ detail.code_article }}</code>
-       <description>{{ detail.description_article | e }}</description>
-       <quantite>{{ detail.quantite }}</quantite>
-       <pu>{{ detail.prix_unitaire }}</pu>
-       <taxe>{{ detail.taxe }}</taxe>
-       <total>{{ detail.valeur_ligne }}</total>
-     </detail>
-   {% endfor %}
-  </details>
-</{{ code_rest }}>
-
diff --git a/templates/fournisseur-index.html b/templates/fournisseur-index.html
deleted file mode 100644 (file)
index 5f07ff3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<pre>{{ debug()|e }}</pre>
-
diff --git a/templates/fournisseur.html b/templates/fournisseur.html
deleted file mode 100644 (file)
index 5f07ff3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<pre>{{ debug()|e }}</pre>
-
diff --git a/templates/utilisateur-index.html b/templates/utilisateur-index.html
deleted file mode 100644 (file)
index 5f07ff3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<pre>{{ debug()|e }}</pre>
-
diff --git a/templates/utilisateur.xml b/templates/utilisateur.xml
deleted file mode 100644 (file)
index dcd587a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<utilisateur>
-  <code>{{ code }}</code>
-  <nom>{{ nom }}</nom>
-  <nom_connexion>{{ nom_connexion }}</nom_connexion>
-  <date_connexion>{{ date_connexion }}</date_connexion>
-  <implantation>{{ implantation }}</implantation>
-</utilisateur>
-