;ò
¾5^Bc           @   sr   d  Z  d d d !Z d k Td k Td k Z d k Td k l Z d k l	 Z	 d k l
 Z
 d	 e f d
 „  ƒ  YZ d S(   sF   
   Copyright (C) 2001-2003 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   $Revision: 1.21 $i   iþÿÿÿ(   s   *N(   s   StringIO(   s   HTMLFile(   s   MessageDialogs	   CoreTablec           B   s,  t  Z d  Z d Z y e d e ƒ  ƒ Z Wn n Xh  d d <d d <h  d d <d d <h  d d	 <d d
 <f Z d d d f f d d
 f f d d f f d d f f f Z h  d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d  d! <d" d <d# d! <d$ d <d% d! <d& d& <Z	 d' Z
 d e e e d( „ Z d) „  Z d* „  Z d+ „  Z d, „  Z d- „  Z d. „  Z d/ „  Z d0 „  Z d1 „  Z d2 „  Z d3 „  Z d4 „  Z d5 „  Z d6 „  Z d7 „  Z d8 „  Z d9 „  Z d: „  Z d; d< „ Z d= „  Z  d> „  Z! d? „  Z" RS(@   s+   the core table handles tables and relationss	   CoreTables   dtml/coreTableIndexs   labels   Edits   actions   manage_mains   Views    s   Securitys   manage_accesss   View management screenss   manage_tabss   Change permissionss   Change Boringss   manage_edits   View Boringss   equals   =s   eqs	   not-equals   !=s   nes   neqs   lesss   <s   greaters   >s   lts   gts   less-or-equals   <=s   greater-or-equals   >=s   leqs   geqs   les   ges   likeiH   c         C   sJ   t  i |  | | ƒ t |  _ | |  _ | |  _ | |  _	 t  d ƒ |  _
 d  S(   Ns   conditionMap(   s   Maps   __init__s   selfs   ids   titles   Nones   isas
   idSequences   usePostgreSqlIsas
   useIndicess   conditionMap(   s   selfs   ids   titles
   idSequences   usePostgreSqlIsas
   useIndices(    (    s   coretable.pys   __init__M   s    				c         C   s'   | i d t |  ƒ |  i ƒ  f ƒ d  S(   Ns   %s [ shape=box label="%s" ];
(   s   outputs   writes   strs   selfs   _get_dot_label(   s   selfs   output(    (    s   coretable.pys	   write_dotV   s    c         C   st   | i d t |  ƒ ƒ |  i o |  i o | i d t |  i ƒ ƒ n | i d ƒ |  i | ƒ | i d ƒ d  S(   Ns   <table name='%s's    isa='%s'>
s   >
s	   </table>
(   s   outputs   writes   strs   selfs   usePostgreSqlIsas   isas   _write_attributes_pgml(   s   selfs   output(    (    s   coretable.pys
   write_pgmlY   s    c         C   sµ   x® |  i ƒ  D]  \ } } | i d | | d f ƒ | d o | i d | d ƒ n | d o | i d | d ƒ n | d o | i d | d ƒ n | i d	 ƒ q Wd  S(
   Ns   <attribute name='%s' type='%s's   types   defaults    default='%s's
   referencess    references='%s's   constraintss    constraints='%s's   />
(   s   selfs   itemss   names
   propertiess   outputs   write(   s   selfs   outputs   names
   properties(    (    s   coretable.pys   _write_attributes_pgmlb   s     c         C   sg   d t  |  ƒ } |  i ƒ  o d | } n x1 |  i ƒ  D]# \ } } d | | | d f } q8 W| Sd  S(   Ns   %ss   %s\n__s   %s\n%s : %ss   type(   s   strs   selfs	   dot_labels   itemss   names
   properties(   s   selfs	   dot_labels   names
   properties(    (    s   coretable.pys   _get_dot_labelm   s     c         C   s=   |  | o t d | d | ƒ |  | <n | |  | | <d  S(   Ns   %ss   Properties of %s(   s   selfs	   attributes   PDictMaps   property_values   property_name(   s   selfs	   attributes   property_names   property_value(    (    s   coretable.pys   insert_attributeu   s    c         C   su   |  i | o" t d | d | ƒ |  i | <n |  i | | o g  |  i | | <n |  i | | i | ƒ d  S(   Ns   %ss   Operators of %s(   s   selfs   conditionMaps	   attributes   PDictMaps   operators   appends   value(   s   selfs	   attributes   operators   value(    (    s   coretable.pys   insert_conditionz   s
    "c         C   s   |  i | | d ƒ d  S(   Ni   (   s   selfs   insert_conditions	   attributes   operator(   s   selfs	   attributes   operator(    (    s   coretable.pys   insert_unary_condition   s    c         C   s‘   |  i oƒ |  i o@ t |  i ƒ d } | i d t |  ƒ | t |  ƒ | f ƒ q | i d t |  ƒ t |  ƒ t |  ƒ t |  ƒ f ƒ n d  S(   Ni    s#   create index idx_%s_%s on %s (%s);
s)   create index idx_%s_id_%s on %s (id_%s);
(   s   selfs
   useIndicess
   idSequences   splits   uidNames   outputs   writes   str(   s   selfs   outputs   uidName(    (    s   coretable.pys   _write_sql_uid_indexes„   s
    

-c         C   sš   |  i oŒ |  } xƒ | ow x] | i ƒ  D]O \ } } | d p | d o- | i d t |  ƒ | t |  ƒ | f ƒ q' q' W|  i	 o | i } q Wn d  S(   Ns
   referencess   indexs#   create index idx_%s_%s on %s (%s);
(
   s   selfs
   useIndicess   isas   itemss   names
   propertiess   outputs   writes   strs   usePostgreSqlIsa(   s   selfs   outputs   names   isas
   properties(    (    s   coretable.pys   _write_sql_indexes   s    
  1c         C   sº   |  } x­ | o¥ x‹ | i ƒ  D]} \ } } | |  j o | d o q n | d o t | d d ƒ d j o- | i d t |  ƒ | t |  ƒ | f ƒ q q W|  i	 o | i } q	 Wd  S(   Ns   types   constraintss   uniqueiÿÿÿÿs*   create unique index %s_%s_key on %s (%s);
(
   s   selfs   isas   itemss   names
   propertiess   finds   outputs   writes   strs   usePostgreSqlIsa(   s   selfs   outputs   names   isas
   properties(    (    s   coretable.pys    _write_sql_parent_unique_indexes—   s       %1c         C   s¨  | i d t |  ƒ ƒ d } |  i p |  i o |  i o= |  i o | i d |  i ƒ q€ | i d t |  ƒ ƒ n d } x® |  i ƒ  D]  \ } } | d o q n | o | i d ƒ n d } | i d | | d f ƒ | d	 o | i d
 | d	 ƒ n | d o | i d | d ƒ q q W| i d ƒ |  i o |  i o | i d t |  i ƒ ƒ n | i d ƒ |  i | ƒ |  i | ƒ |  i | ƒ d  S(   Ns   CREATE TABLE %s (
i   s   	%ss   	id_%s SERIAL PRIMARY KEYi    s   types   ,
s   	%s %ss   defaults    DEFAULT '%s's   constraintss    %ss   
)s    inherits (%s)s   ;
(   s   outputs   writes   strs   selfs	   commaFlags   isas   usePostgreSqlIsas
   idSequences   itemss   names
   propertiess    _write_sql_parent_unique_indexess   _write_sql_uid_indexess   _write_sql_indexes(   s   selfs   outputs   names	   commaFlags
   properties(    (    s   coretable.pys	   write_sql¡   s4     
  c         C   s$   t  ƒ  } |  i | ƒ | i ƒ  Sd  S(   N(   s   StringIOs   stringIOs   selfs	   write_sqls   getvalue(   s   selfs   stringIO(    (    s   coretable.pys   get_sqlÆ   s    	c         C   sî   t  |  ƒ } | i d t  |  ƒ ƒ | i d t  |  ƒ t  |  ƒ f ƒ |  i o |  i o* | i d t  |  ƒ t  |  i ƒ f ƒ n xc |  i ƒ  D]U \ } } d } | d o | d } n | i d t  |  ƒ | | | d | f ƒ q‘ Wd  S(   Ns1   CREATE TABLE struct%s () inherits (structtable);
sz   insert into structtable (champ,denom,editable,rang,isoid,type,defaut,disp) VALUES ('%s','%s','1','1','t','Config','','');
s.    insert into struct%s select * from struct%s;
s    s
   referencessu   insert into struct%s (champ,denom,editable,rang,isoid,type,defaut,disp) VALUES ('%s','%s','1','1','t','%s','','%s');
s   type(   s   strs   selfs
   nameStructs   outputs   writes   isas   usePostgreSqlIsas   itemss   names
   propertiess	   reference(   s   selfs   outputs   names	   references
   nameStructs
   properties(    (    s   coretable.pys
   write_ssqlË   s    #* c         C   s&  | i d t |  ƒ ƒ |  i p |  i o |  i o= |  i o | i d |  i ƒ qt | i d t |  ƒ ƒ n x« |  i ƒ  D] \ } } | i d | ƒ | i d ƒ | d o | i d | d ƒ n | d oD | i d	 | d ƒ t
 | d
 d ƒ d j o | i d ƒ qq q Wd  S(   Ns	   btree %s
s   key %s
s
   key id_%s
s	   field %s
s   type nt
s   defaults   default %s
s
   referencess	   joint %s
s   constraintss   cascadeiÿÿÿÿs   on_delete cascade
(   s   outputs   writes   strs   selfs   isas   usePostgreSqlIsas
   idSequences   itemss   names
   propertiess   find(   s   selfs   outputs   names
   properties(    (    s   coretable.pys	   write_ldbÚ   s     
 c         C   sF   g  } |  } x/ | o' | | i ƒ  } |  i o | i } q W| Sd  S(   N(   s   ls   selfs   isas   keyss   usePostgreSqlIsa(   s   selfs   isas   l(    (    s   coretable.pys
   get_fieldsð   s     c         C   sL   |  } x; | o3 | i | ƒ o | | Sn |  i o | i } q	 Wt Sd  S(   N(   s   selfs   isas   has_keys   names   usePostgreSqlIsas   None(   s   selfs   names   isa(    (    s   coretable.pys	   get_fieldø   s     c         C   sJ   g  } x9 |  i i ƒ  D]( \ } } | d o | i | ƒ q q W| Sd  S(   Ns   view(   s   ls   selfs   conditionMaps   itemss   names
   conditionss   append(   s   selfs
   conditionss   ls   name(    (    s   coretable.pys   get_select_fields   s     c      	   C   s¹   d } d } x¢ |  i i ƒ  D]‘ \ } } x‚ | i ƒ  D]t \ } } |  i	 | o | oS xP | D]D } | o d | } n d } d | | |  i	 | t | ƒ f } q] Wq5 q5 Wq W| Sd  S(   Ns    i    s   %s andi   s	   %s %s%s%s(   s	   src_wheres   and_tags   selfs   conditionMaps   itemss   names
   conditionss   operators   valuess   operatorMaps   values	   sqlFilter(   s   selfs   names   and_tags   values	   src_wheres   valuess   operators
   conditions(    (    s   coretable.pys   get_where_clause  s       3s   uidc         C   sž   d | } x$ |  i ƒ  D] } d | | f } q W|  i d j o d | |  i ƒ  f } n d | |  i ƒ  f } |  i ƒ  } | o d | | f Sn | Sd S(   s   get_uid_selects	   select %ss   %s,%siG   s
   %s from %ss   %s from %s*s
   %s where%sN(	   s   uidNames   srcs   selfs   get_select_fieldss   names	   PGVERSIONs   getIds   get_where_clauses	   src_where(   s   selfs   uidNames   srcs   names	   src_where(    (    s   coretable.pys   get_uid_select  s     
 c         C   sT  d |  i ƒ  } d } x† |  i i ƒ  D]u \ } } | d p | d p | d } | o t	 | ƒ d j o/ | o d | } n d } d | | f } q& q& Wd	 | } d } x |  i i ƒ  D] \ } } | d p | d p | d } | o t	 | ƒ d j o9 | o d | } n d } d | t
 | d ƒ f } q¿ q¿ Wd
 | } | Sd  S(   Ns   insert into %s (i    s   sets   gets   equali   s   %s,s   %s%ss   %s) values (s   %s)(   s   selfs   getIds   srcs	   comma_tags   conditionMaps   itemss   names
   conditionss   valuess   lens	   sqlFilter(   s   selfs   srcs   names   valuess
   conditionss	   comma_tag(    (    s   coretable.pys
   get_insert)  s,      
  "
c         C   sÎ   d |  i ƒ  } d } xˆ |  i i ƒ  D]w \ } } | d p | d } | o t	 | ƒ d j o< | o d | } n d } d | | t
 | d ƒ f } q& q& W|  i ƒ  } | o d | | f Sn | Sd  S(	   Ns   update %s set i    s   sets   geti   s   %s,s   %s%s=%ss
   %s where%s(   s   selfs   getIds   srcs	   comma_tags   conditionMaps   itemss   names
   conditionss   valuess   lens	   sqlFilters   get_where_clauses	   src_where(   s   selfs   srcs   names	   src_wheres   valuess
   conditionss	   comma_tag(    (    s   coretable.pys
   get_updateF  s     %c         C   s9   g  } |  } x" | o | i | ƒ | i } q W| Sd  S(   N(   s   ls   selfs   isas   append(   s   selfs   isas   l(    (    s   coretable.pys   get_table_and_parents[  s     (#   s   __name__s
   __module__s   __doc__s	   meta_types   HTMLFiles   globalss
   index_htmls   manage_optionss   __ac_permissions__s   operatorMaps	   PGVERSIONs   Nones   __init__s	   write_dots
   write_pgmls   _write_attributes_pgmls   _get_dot_labels   insert_attributes   insert_conditions   insert_unary_conditions   _write_sql_uid_indexess   _write_sql_indexess    _write_sql_parent_unique_indexess	   write_sqls   get_sqls
   write_ssqls	   write_ldbs
   get_fieldss	   get_fields   get_select_fieldss   get_where_clauses   get_uid_selects
   get_inserts
   get_updates   get_table_and_parents(    (    (    s   coretable.pys	   CoreTable!   sB    E9–												
	
	%									(   s   __doc__s   __version__s   Products.PimenTechLibCommon.maps%   Products.PimenTechLibCommon.sqlcommons   syss   strings	   cStringIOs   StringIOs   Globalss   HTMLFiles   MessageDialogs   Maps	   CoreTable(   s	   CoreTables   StringIOs   HTMLFiles   syss   __version__s   MessageDialog(    (    s   coretable.pys   ?   s   	
