;ò
\ÔÐHc           @   s¤   d  Z  d k l Z d k Td k Td k Td k l Z d k Td k	 l
 Z
 d k Z d k Z e d „ Z y e d e ƒ  ƒ Z Wn n Xd e e f d	 „  ƒ  YZ d S(
   sF   
   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   HTMLFile(   s   *(   s   DA(   s   ZCTextIndexNc         C   sD   t  | | ƒ } |  i | | ƒ | t j	 o |  i |  | ƒ Sn d S(   s   Add a AppRoot to a folder.N(	   s   PgRoots   ids   connection_ids   crs   selfs
   _setObjects   REQUESTs   Nones   manage_main(   s   selfs   ids   connection_ids   REQUESTs   cr(    (    s	   pgroot.pys   manage_addPgRoot#   s
     s   dtml/PgRootAdds   PgRootc           B   sû   t  Z d  Z d Z d „  Z d „  Z d „  Z d „  Z d „  Z d f d „ Z	 d	 „  Z
 d
 d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z e d
 e f e e d d „ Z d „  Z d „  Z e e d „ Z RS(   s    PgRoot class s   PgRootc         C   s0   t  i |  | | d d ƒt i |  | d ƒ d S(   s    PgClass init s   uidi   s    N(   s   PgObjects   __init__s   selfs   ids   connection_ids   PGEntityMap(   s   selfs   ids   connection_id(    (    s	   pgroot.pys   __init__5   s     c         C   s>   t  ƒ  i ƒ  t i i d ƒ t i i d ƒ |  i d ƒ d  S(   Ni   s   ZODB commit(   s   get_transactions   commits   Zopes   DBs   cacheMinimizes   cacheFullSweeps   selfs   message(   s   self(    (    s	   pgroot.pys
   commitZodb:   s    c         C   s˜   d } | |  i ƒ  j o |  i | ƒ n t d d d d d d d d d	 d
 d d ƒ} |  i | | ƒ |  | } t | ƒ } | i
 | ƒ | i ƒ  d S(   s    Add or update pgmlgraphs	   pgmlgraphs	   PgmlGraphs
   idSequences   uid SERIAL PRIMARY KEYs   usePostgreSqlIsai   s   usePostgreSqlConstraintsi    s
   refDefaults   0s
   useIndicesN(   s   ids   selfs	   objectIdss
   _delObjects	   PgmlGraphs	   pgmlgraphs
   _setObjects   opens   filenames   files   readFiles   simplify(   s   selfs   filenames   files	   pgmlgraphs   id(    (    s	   pgroot.pys   _set_pgmlgraph@   s     	
c         C   s  d } |  i d  } x3 | D]+ } | i ƒ  o | d | i ƒ  7} q q Wt | ƒ } t | ƒ xS t	 | ƒ D]E } | i | } | d  d j o
 | d j o |  i | | ƒ ql ql Wd |  _ | i ƒ  xH | D]@ } t | d ƒ o
 | i ƒ  o |  i d | i ƒ  7_ qÏ qÏ Wd	 Sd
 S(   s@    Add globals values : globals module must be in zope python paths   globalsiÿÿÿÿs   _i   s   oss    s   getIds   /%ss   set_globals : OKN(   s   str_paths   selfs   aq_chains   objectss   objects   getIds
   __import__s   globalss   reloads   dirs   names   __dict__s   values   _set_propertys   _getPaths   reverses   hasattr(   s   selfs   names   objectss   objects   values   globalss   str_path(    (    s	   pgroot.pys   _set_globalsP   s*      
 	
 !c         C   s~   d |  i ƒ  j o |  i d ƒ n t d ƒ } |  i | i | ƒ |  d } x* | D]" \ } } } | i | | | ƒ qT Wd S(   s    Add or update ZCatalog s   CatalogN(   s   selfs	   objectIdss
   _delObjects   ZCatalogs   zcs
   _setObjects   ids   indexess   indexs   types   extras   manage_addIndex(   s   selfs   indexess   indexs   extras   zcs   type(    (    s	   pgroot.pys   _set_catalogg   s     
 s   objectc         C   s  h  } d d t f d d t f d d t f g } xf | D]^ } xU |  i | i i ƒ  D]= } y |  i | | d | | <WqT d | | f ‚ qT XqT Wq7 Wxj | i
 ƒ  D]\ \ } } d | } | d	 d
 d f j o | i | d t f ƒ q¦ | i | d t f ƒ q¦ W| Sd S(   s"   build index list from named tabless   ids
   FieldIndexs	   meta_types   paths	   PathIndexs   types   %s %ss   pg_s   dates   datetimes	   timestamps	   DateIndexN(   s   ds   Nones   ls   tabless	   tablenames   selfs	   pgmlgraphs   objects
   get_fieldss   fields   itemss   typs   append(   s   selfs   tabless   ds	   tablenames   ls   fields   typ(    (    s	   pgroot.pys   get_index_list_from_tablesr   s$     *   
c      	   C   s‹   |  i ƒ  |  i |  i d |  i d |  i d ƒ t i |  i d d |  i	 |  i
 |  i |  i |  i f d d ƒ } |  i |  i | ƒ d S(   s@    Zope method : automaticaly called when an instance is created. s   /s   .pgmls    s-   host=%s user=%s password=%s dbname=%s port=%si   N(   s   selfs   _set_globalss   _set_pgmlgraphs   ZOPEPRODUCTSDIRs   ZOPEPRODUCTs   APPLICATIONs   DAs
   Connections   connection_ids   DBHOSTs   DBUSERs   DBPWDs   DBNAMEs   DBPORTs
   connections
   _setObject(   s   selfs   ids	   containers
   connection(    (    s	   pgroot.pys   manage_afterAddˆ   s     
*%i    c         C   sd   |  i d | ƒ |  i i | ƒ o  |  i i | | | | | ƒ Sn |  i i	 | | | | | ƒ Sd S(   s    Add a user s   Add or change user '%s'N(
   s   selfs   warnings   logins	   acl_userss   getUsers   _changeUsers   pwds   roless   domainss   _addUser(   s   selfs   logins   pwds   roless   domains(    (    s	   pgroot.pys   set_user™   s
      c         C   s(   |  i d | ƒ |  i i | f ƒ d S(   s    Remove a user s   Delete user '%s'N(   s   selfs   warnings   logins	   acl_userss	   _delUsers(   s   selfs   login(    (    s	   pgroot.pys   del_user¢   s     s   stringc         C   s;   |  i | ƒ o |  i | | ƒ n |  i | | | ƒ d S(   sŠ   
		shortcut to PropertyManager methods.
		_set_property do a setattr and fill the _property dict,
		usable in manage_propertiesForm tab
		N(   s   selfs   hasPropertys   names   _updatePropertys   values   _setPropertys   type(   s   selfs   names   values   type(    (    s	   pgroot.pys   _set_property¨   s     c         C   s   d Sd S(   s2    Construction of named path : nothing on root app s    N(    (   s   self(    (    s	   pgroot.pys   get_named_path³   s     c         C   sŽ   g  } | i d  } | i ƒ  t } x` | D]X } | |  j o
 d } n | o | d i	 d | ƒ o | i
 | i ƒ  | f ƒ q* q* W| Sd S(   s    Path of objects if rights iÿÿÿÿi   s   AUTHENTICATED_USERs   ViewN(   s   outs   objects   aq_chains   objectss   reverses   Nones   starts   selfs   REQUESTs   has_permissions   appends   getId(   s   selfs   objects   REQUESTs   starts   objectss   out(    (    s	   pgroot.pys   app_aq_chain·   s     
 
!c         C   s[   | i d  } | i ƒ  x, | D]$ } | i | j o | i ƒ  Sq q W|  i d ƒ d Sd S(   s1    return uid of first meta_type found in aq_chain iÿÿÿÿs<   pgroot.py(get_uid_from_first_meta_type) : no depatment foundi    N(	   s   objects   aq_chains   objectss   reverses   os	   meta_types   getUids   selfs   error(   s   selfs   objects	   meta_types   os   objects(    (    s	   pgroot.pys   get_uid_from_first_meta_typeÄ   s     
 s   User Folderc         C   s  d } t | ƒ t d ƒ j o | } d } n | i i ƒ  } |  i d | d | ƒ } t
 | ƒ d j o |  i d | ƒ d Sn‡ t
 | ƒ d	 j o> | d j o | i i d
 ƒ o |  i d | ƒ n d Sn6 | d	 i ƒ  } | i d j o | i Sn | i ƒ  Sd S(   s    Give the ref from the login s   REQUESTs    s   strings   pg_logins	   meta_typei   s   [pgroot] login '%s' non uniqueiÿÿÿÿi    s   Managers   [pgroot] no login '%s' foundiþÿÿÿs   UserIdN(   s   request_types   types   request_or_logins   logins   AUTHENTICATED_USERs   getUserNames   selfs   Catalogs	   meta_types   cats   lens   errors   has_roles   warnings	   getObjects   objs   pg_ref_personne_physiques   getUid(   s   selfs   request_or_logins	   meta_types   objs   cats   request_types   login(    (    s	   pgroot.pys   get_ref_authorÎ   s$     
!c         C   s|   |  i d | ƒ } t | ƒ d j o |  i d | ƒ d Sn; t | ƒ d j o |  i d | ƒ d Sn | d i ƒ  Sd S(   s    Return the object from id s   idi   s   [pgroot] id '%s' non uniquei    s   [pgroot] no id '%s'N(   s   selfs   Catalogs   ids   cats   lens   errors	   getObject(   s   selfs   ids   cat(    (    s	   pgroot.pys   get_object_from_idå   s     c         C   s   |  i d ƒ \ } | Sd S(   s   next uid sequences    select nextval('object_uid_seq')N(   s   selfs   fetchones   val(   s   selfs   val(    (    s	   pgroot.pys   get_next_uidñ   s     c         C   s   |  Sd  S(   N(   s   self(   s   self(    (    s	   pgroot.pys   get_root_appö   s    s    c         C   sæ   d | | f }
 | o | d o |
 d | 7}
 n | o |
 d | 7}
 n x„ |  i | ƒ D]s \ } }	 | d j o q] n | o | | ƒ o q] n |
 d | 7}
 | | j o |
 d 7}
 n |
 d |	 7}
 q] W|
 d	 7}
 |
 Sd
 S(   s&    create a html select from pgentities s   <select name="%s"%s>
i   s!     <option value="%s">%s</option>
s.     <option disabled="disabled">- %s -</option>
i    s     <option value="%d"s    selected="selected"s   >%s</option>
s
   </select>
N(   s
   selectnames   extras   txts   inits   titles   selfs   ztitle_entitiess	   tablenames   uids   ztitles   testfuncs	   selectuid(   s   selfs	   tablenames
   selectnames	   selectuids   inits   titles   testfuncs   extras   uids   ztitles   txt(    (    s	   pgroot.pys   html_form_selectü   s$      
c         C   s   d  S(   N(    (   s   self(    (    s	   pgroot.pys   html_form_radio  s    c         C   s   d  S(   N(    (   s   self(    (    s	   pgroot.pys   html_form_checkbox  s    c         C   s]   d | p d | f } | d j o | d 7} n | o | d | 7} n | d 7} | Sd S(   s    create a html label s#   <span class="label %s">%s : </span>s    i    s   -s   %ss   
N(   s   classoptions   names   txts   value(   s   selfs   names   values   classoptions   txt(    (    s	   pgroot.pys
   html_label  s     
(   s   __name__s
   __module__s   __doc__s	   meta_types   __init__s
   commitZodbs   _set_pgmlgraphs   _set_globalss   _set_catalogs   get_index_list_from_tabless   manage_afterAdds   set_users   del_users   _set_propertys   get_named_paths   app_aq_chains   get_uid_from_first_meta_types   get_ref_authors   get_object_from_ids   get_next_uids   get_root_apps   Nones   html_form_selects   html_form_radios   html_form_checkboxs
   html_label(    (    (    s	   pgroot.pys   PgRoot0   s.    											
					(   s   __doc__s   Globalss   HTMLFiles%   Products.PimenTechLibCommon.pgmlgraphs$   Products.PimenTechLibCommon.pgobjects'   Products.PimenTechLibCommon.pgentitymaps   Products.ZPsycopgDAs   DAs   Products.ZCatalog.ZCatalogs    Products.ZCTextIndex.ZCTextIndexs   ZCTextIndexs   DateTimes   Zopes   Nones   manage_addPgRoots   globalss   manage_addPgRootForms   PgObjects   PGEntityMaps   PgRoot(   s   PgRoots   manage_addPgRootForms   HTMLFiles   DateTimes   manage_addPgRoots   Zopes   DAs   ZCTextIndex(    (    s	   pgroot.pys   ?   s   		
