;ò
ÎBNDc           @   sù   d  Z  d k Td k Td k Z d k Td k l Z d k l Z d k l	 Z	 d k
 l Z d k l Z e ƒ  Z e d „ Z y e d	 e ƒ  ƒ Z Wn n Xd
 f  d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sE   
   Copyright (C) 1999-2006 PimenTech SARL (http://www.pimentech.net)

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with this library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.	
(   s   *N(   s   StringIO(   s   HTMLFile(   s   MessageDialog(   s
   SimpleItem(   s   DateTimec         C   sG   t  | | | ƒ } |  i | | ƒ | t j	 o |  i	 |  | ƒ Sn d S(   s   Add a Row to a folder.N(
   s   Rows   ids	   tablenames   uids   rows   selfs
   _setObjects   REQUESTs   Nones   manage_main(   s   selfs   ids	   tablenames   uids   REQUESTs   row(    (    s   row.pys   manage_addRow#   s
     s   dtml/rowAdds	   CommonRowc           B   sŒ   t  Z d  Z e Z e e d „ Z d „  Z h  d „ Z d „  Z e d „ Z	 e d „ Z
 e d „ Z h  d „ Z d	 „  Z d
 „  Z d „  Z RS(   sÀ    This a abstract class for Row and VRow
	* id : row label
	* map : {key : value} of the row
	* tablename : name of the table. must be present in pgmlgraph
	* pgmlgraph : mus be present in aq
	c         C   sŽ   | |  _  | |  _ | t j o t | ƒ |  _ n t d | ƒ |  _ | t j o |  |  _ n
 | |  _ d |  i |  i f |  _ d |  _ d  S(   Ns   %ss   %s(%s)i    (	   s   ids   selfs	   tablenames   uids   Nones   ints   approots   titles   _to_be_commited(   s   selfs   ids	   tablenames   uids   approot(    (    s   row.pys   __init__9   s    			c         C   s   |  i | Sd  S(   N(   s   selfs   datas   key(   s   selfs   key(    (    s   row.pys   __getitem__H   s    c         C   sÌ   | i ƒ  } d } x« |  i i |  i i i	 ƒ  D] } | | j o | | } n |  | } t | ƒ t t ƒ j o/ d | } t | ƒ d j o | d  } q¢ n | d | t | ƒ f 7} q/ W| d  Sd S(   sS   
		Retourne la chaine prop1='val1',...,propn='valn'
		(pour construire l'update)
		s    s   %si
   iúÿÿÿs   %s=%s,iÿÿÿÿN(   s   fields_overloads   keyss
   ovrld_keyss   ress   selfs   approots	   pgmlgraphs	   tablenames   objects
   get_fieldss   keys   values   types   const_dateTimes   lens	   sqlFilter(   s   selfs   fields_overloads
   ovrld_keyss   ress   values   key(    (    s   row.pys   _names_values_quotedK   s      

c         C   s\   x; | i i ƒ  D]* \ } } |  i | ƒ o | |  | <q q W|  i ƒ  | i i	 d ƒ d S(   s   set_from_form.s   manage_mainN(
   s   REQUESTs   forms   itemss   keys   values   selfs   has_keys   commits   RESPONSEs   redirect(   s   selfs   REQUESTs   values   key(    (    s   row.pys   set_from_form_   s      
c         C   s/  |  i i ƒ  } |  i i |  i i i ƒ  } | i	 d t
 | d ƒ |  i |  i f ƒ | i d j o$ |  i i d |  i |  i f ƒ n; | i d j o* |  i i d |  i | i |  i f ƒ n x* | i ƒ  i ƒ  D] \ } } | |  | <qÕ Wd |  _ d |  _ | t j	 o t d d d	 d
 d d ƒ Sn d S(   s   maj à partir de pgs   select %s from %s where uid=%ss   ,i    s!   table %s : uid %s does not existsi   s   table %s : %s rows for uid %ss   titles   Modification effectuées   messages,   Les paramètres ont été modifiés avec succès.s   actions
   index_htmlN(   s   selfs   approots
   get_cursors   curss	   pgmlgraphs	   tablenames   objects
   get_fieldss
   sel_fieldss   executes   joins   uids   rowcounts   errors   warnings   dictfetchones   itemss   keys   values
   _p_changeds   _to_be_commiteds   REQUESTs   Nones   MessageDialog(   s   selfs   REQUESTs   curss   values   keys
   sel_fields(    (    s   row.pys   updateg   s"     )$* 			c   
   	   C   sp  | p |  i  } h  } x |  i i | i i ƒ  D]t } | d d d d d d d f j oL | d j o- y t |  d ƒ | | d <w0 Wq’ q’ Xn |  | | | <q0 q0 Wx$ | i ƒ  D] \ } } | | | <qµ W| | d <|  i ƒ  | d <t ƒ  | d <|  i i | ƒ | d <d	 | d
 <d t | | ƒ } |  i d | ƒ |  i i ƒ  }	 |  i i | |	 ƒ t | ƒ |  d <d S(   s    duplication in postgresql s   uids   datecreas	   datemodifs   authcreas	   authmodifs   codecreas	   codemodifs   zidi   s   frozens   %s;s   copy query = %ss
   ref_objectN(   s	   tablenames   selfs   dict_valuess   approots	   pgmlgraphs   objects
   get_fieldss   keys   ints   refs   dict_options   itemss   values   _get_code_logs   DateTimes   get_ref_authors   REQUESTs
   sql_inserts   querys   messages
   get_cursors   curss   exec_vital_sql(
   s   selfs   refs   dict_options   REQUESTs	   tablenames   values   keys   querys   dict_valuess   curs(    (    s   row.pys   _copy~   s6      "
 

c         C   s/  |  i i ƒ  } |  i i |  i i i ƒ  } | i	 d t
 | d ƒ |  i |  i f ƒ | i d j o$ |  i i d |  i |  i f ƒ n; | i d j o* |  i i d |  i | i |  i f ƒ n xb | i ƒ  i ƒ  D]N \ } } |  i i d |  i |  i ƒ  | | f ƒ |  | | j o d SqÕ qÕ Wd Sd S(	   s%   returns 1 if pg values != zodb valuess   select %s from %s where uid=%ss   ,i    s!   table %s : uid %s does not existsi   s   table %s : %s rows for uid %ss!   %s (Row)%s.update() : self[%s]=%sN(   s   selfs   approots
   get_cursors   curss	   pgmlgraphs	   tablenames   objects
   get_fieldss
   sel_fieldss   executes   joins   uids   rowcounts   errors   warnings   dictfetchones   itemss   keys   values   messages	   meta_types   getId(   s   selfs   REQUESTs   curss   values   keys
   sel_fields(    (    s   row.pys
   pg_differs   s     )$* )c         C   s¶   |  i o d Sn |  i i ƒ  } d |  i |  i | ƒ |  i f } |  i i
 | | ƒ } | i d j o% |  i i d | i | f ƒ t Sn |  i i d | ƒ d |  i _ | Sd S(   s   commit en baseNs   update %s set %s where uid=%si   s.   update error : %s rows affected for query :
%ss   row.commit : %si    (   s   selfs   _to_be_commiteds   approots
   get_cursors   curss	   tablenames   _names_values_quoteds   fields_overloads   uids   querys   exec_vital_sqls   ress   rowcounts   errors   Nones   notice(   s   selfs   fields_overloads   curss   ress   query(    (    s   row.pys   commit¬   s     "c         C   s:  |  i i d |  i |  i f ƒ o0 d |  i |  i f } |  i i | ƒ | ‚ n d |  i |  i f } |  i i | ƒ xº |  i i |  i i	 i
 ƒ  D]œ } |  i | ƒ o… |  i i |  i i	 i | ƒ d } | d j o- |  i i |  i i	 i | ƒ d d d f j o t ƒ  |  | <q2t | ƒ |  | <q– q– Wd	 S(
   s*   insert (quand creation depuis l'interface)s   select uid from %s where uid=%ss   %s uid %s deja en bases!   insert into %s (uid) values (%s);s   defaults   now()s   types   dates	   timestampN(   s   selfs   approots   fetchs	   tablenames   uids   errors   querys   exec_vital_sqls	   pgmlgraphs   objects
   get_fieldss   keys   has_keys	   get_fields   defaults   DateTimes   unSqlFilter(   s   selfs   defaults   keys   errors   query(    (    s   row.pys   insert¼   s     #
 #=c         C   sF   |  i i d |  i |  i f ƒ o |  i i ƒ  n |  i i ƒ  d S(   s)   DEPRECATED : use update or insert methodes   select uid from %s where uid=%sN(   s   selfs   approots   fetchs	   tablenames   uids   inserts   update(   s   self(    (    s   row.pys   createÍ   s     $c         C   s<   |  i i |  i i i | ƒ o d | |  i f ‚ n d S(   s7   check the existence of a field for a table in pgml files.   champ %s inconnu dans la table %s pour le pgmlN(   s   selfs   approots	   pgmlgraphs	   tablenames   objects	   get_fields   key(   s   selfs   key(    (    s   row.pys   check_fieldÓ   s     !(   s   __name__s
   __module__s   __doc__s   Nones	   meta_types   __init__s   __getitem__s   _names_values_quoteds   set_from_forms   updates   _copys
   pg_differss   commits   inserts   creates   check_field(    (    (    s   row.pys	   CommonRow/   s    				s   Rowc           B   s;   t  Z d  Z d Z e i Z e i Z e	 d „ Z d „  Z
 RS(   s    Persistent Row s   Rowc         C   s'   |  i | ƒ |  i | | | t ƒ d  S(   N(   s   selfs   _Row__PDictMap_inits   ids   _Row__CommonRow_inits	   tablenames   uids   None(   s   selfs   ids	   tablenames   uid(    (    s   row.pys   __init__á   s    c         C   s-   |  i | ƒ t i |  | | ƒ d |  _ d  S(   Ni   (   s   selfs   check_fields   keys   PDictMaps   __setitem__s   values   _to_be_commited(   s   selfs   keys   value(    (    s   row.pys   __setitem__å   s    (   s   __name__s
   __module__s   __doc__s	   meta_types   PDictMaps   __init__s   _Row__PDictMap_inits	   CommonRows   _Row__CommonRow_inits   Nones   __setitem__(    (    (    s   row.pys   RowØ   s    		s   VRowc           B   sA   t  Z d  Z d Z e h  d „ Z d „  Z d „  Z h  d „ Z RS(   s    Volatile Row s   VRowc         C   se   t  i |  | ƒ t i |  | | | | ƒ x5 | i	 ƒ  D]' \ } } | d j o | |  | <q6 q6 Wd  S(   Ns   uid(   s   DictMaps   __init__s   selfs   ids	   CommonRows	   tablenames   uids   approots   propss   itemss   keys   value(   s   selfs   ids   approots	   tablenames   uids   propss   keys   value(    (    s   row.pys   __init__ð   s     c         C   s-   |  i | ƒ t i |  | | ƒ d |  _ d  S(   Ni   (   s   selfs   check_fields   keys   DictMaps   __setitem__s   values   _to_be_commited(   s   selfs   keys   value(    (    s   row.pys   __setitem__ø   s    c         C   sa   t  i |  ƒ |  i ƒ  |  d <t ƒ  |  d <|  i i | ƒ |  d <|  i ƒ  |  d <t  i	 |  ƒ Sd  S(   Ns   codecreas   datecreas   authcreas   zid(
   s	   CommonRows   inserts   selfs   _get_code_logs   DateTimes   approots   get_ref_authors   REQUESTs   getIds   commit(   s   selfs   REQUEST(    (    s   row.pys   insertý   s    c         C   sG   |  i ƒ  |  d <t ƒ  |  d <|  i i | ƒ |  d <t i |  | ƒ Sd  S(   Ns	   codemodifs	   datemodifs	   authmodif(	   s   selfs   _get_code_logs   DateTimes   approots   get_ref_authors   REQUESTs	   CommonRows   commits   fields_overload(   s   selfs   REQUESTs   fields_overload(    (    s   row.pys   commit  s    (	   s   __name__s
   __module__s   __doc__s	   meta_types   Nones   __init__s   __setitem__s   inserts   commit(    (    (    s   row.pys   VRowë   s    		s   PRowc           B   sS   t  Z d  Z e i Z e i Z e i	 Z
 e d ƒ Z d „  Z d „  Z	 h  d „ Z RS(   s3    A better Row object but depends of database model s    c         C   s  |  i | ƒ | t j oÞ |  i i |  i i i	 | ƒ d } | d j o | |  i j o
 t } qø | d d f j o t | ƒ } qø | d d f j o t | ƒ } qø | d d f j o7 t | ƒ t t ƒ j o d	 t | ƒ | f ‚ qô qø n |  i | | ƒ d
 |  _ d S(   sf   
		 * check if key exits
		 * cast the value for int and float or set None
		 * check datetime type
		s   types    s   ints   int4s   floats   float8s   dates	   timestamps0   Error : %s found on field %s (DateTime expected)i   N(   s   selfs   check_fields   keys   values   Nones   approots	   pgmlgraphs	   tablenames   objects	   get_fields   pg_types   type_strings   ints   floats   types   const_dateTimes   map_setitems   _to_be_commited(   s   selfs   keys   values   pg_type(    (    s   row.pys   __setitem__  s     #
"c         C   sg   |  i ƒ  |  i ƒ  |  d <t ƒ  |  d <|  i |  i ƒ  i ƒ  ƒ |  d <|  i i ƒ  |  d <|  i	 ƒ  Sd  S(   Ns   codecreas   datecreas   authcreas   zid(
   s   selfs
   row_inserts   _get_code_logs   DateTimes   get_ref_authors   getOwners   getUserNames	   aq_parents   getIds
   row_commit(   s   self(    (    s   row.pys   insert*  s    
c         C   sA   |  i ƒ  |  d <t ƒ  |  d <|  i | ƒ |  d <|  i | ƒ Sd  S(   Ns	   codemodifs	   datemodifs	   authmodif(   s   selfs   _get_code_logs   DateTimes   get_ref_authors   REQUESTs
   row_commits   fields_overload(   s   selfs   REQUESTs   fields_overload(    (    s   row.pys   commit2  s    (   s   __name__s
   __module__s   __doc__s   DictMaps   __setitem__s   map_setitems   Rows   commits
   row_commits   inserts
   row_inserts   types   type_string(    (    (    s   row.pys   PRow  s    					(   s   __doc__s   Products.PimenTechLibCommon.maps%   Products.PimenTechLibCommon.sqlcommons   syss   strings	   cStringIOs   StringIOs   Globalss   HTMLFiles   MessageDialogs   OFS.SimpleItems
   SimpleItems   DateTimes   const_dateTimes   Nones   manage_addRows   globalss   manage_addRowForms	   CommonRows   PDictMaps   Rows   DictMaps   VRows   PRow(   s   StringIOs   PRows   HTMLFiles   const_dateTimes   VRows   DateTimes   syss
   SimpleItems	   CommonRows   manage_addRows   manage_addRowForms   MessageDialogs   Row(    (    s   row.pys   ?   s&   		©"
