ó
u[	Pc           @   sz  d  Z  d d l Z d d l j Z d d l Z d d l Z d d l m	 Z	 m
 Z
 d d l Z d d d d d d	 d
 d g Z d d d g Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rvd d l Z e j d ƒ e ƒ  Z e GHe j d ƒ GHe e j j ƒ GHe j j d d ƒ e j j Ge e j j ƒ GHe j ƒ  e j GHd d GHe GHn  d S(   sz   
$RCSfile: configuration.py,v $
$Revision: 1157 $
$Author: markus $
$Date: 2012-04-16 18:06:55 +0200 (Mo, 16. Apr 2012) $
iÿÿÿÿN(   t   DictTypet   ListTypet   recLimitt   expiret   error_maxbytest   error_backupcountt   debug_maxbytest   debug_backupcountt   request_maxbytest   request_backupcountt   debugt   picklet   prettyprintc         C   sW   yB t  |  ƒ }  |  j ƒ  }  |  j ƒ  }  |  d k r7 t St |  ƒ SWn t |  ƒ SXd S(   s´   Boolean expression evaluation extended by '0' and 'false' (case insensitive) evaluating to False 
    instead of True done by bool function which is used for all other evaluations.t   0t   falseN(   R   R   (   t   strt   stript   lowert   Falset   bool(   t   arg(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   isTrue   s    t	   Singletonc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s)   t  t |  ƒ j | | | ƒ d  |  _ d  S(   N(   t   superR   t   __init__t   Nonet   _Singleton__instance(   t   clst   namet   basest   dic(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   .   s    c         O   s7   |  j  d  k r0 t t |  ƒ j | | Ž  |  _  n  |  j  S(   N(   R   R   R   R   t   __call__(   R   t   argst   kw(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   1   s    !(   t   __name__t
   __module__R   R   (    (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   -   s   	t   ConfigurationSectionc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   d  |  _ d  |  _ d  S(   N(   R   R"   t   __filename__(   t   self(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   >   s    	c         C   s^   | t  k r/ y t | ƒ } WqJ d } qJ Xn | t k rJ t | ƒ } n  t |  | | ƒ d  S(   Ni    (   t	   INT_PROPSt   intt
   BOOL_PROPSR   t   setattr(   R&   t
   optionNamet   value(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   __setOption__C   s    c         C   s-  |  j  d  k r t Si  } xÐ t |  ƒ D]Â } | j d ƒ rA q& n  t |  | ƒ } t | ƒ t k rš xƒ t | ƒ D]$ \ } } | | d | | d f <qo Wq& | t	 k r¹ t
 | ƒ | | <q& | t k rØ t
 | ƒ | | <q& t
 | ƒ | | <q& Wt |  j  ƒ } d } d } d }	 t }
 x} | j ƒ  D]o } |
 sg|	 | }	 | j ƒ  d |  j k rt }
 |	 } d }	 qq | j ƒ  j d ƒ r t }
 d | }	 q q W|	 } | j ƒ  t |  j  d ƒ } | j | ƒ t | j ƒ  ƒ } x; | D]3 } | j d	 | j d
 ƒ | | j d
 ƒ f ƒ qÛW| j | ƒ | j ƒ  d  S(   Nt   __s   %s_%ii   t    s   [%s]t   [s   
t   ws
   %s  =  %s
s   utf-8(   R%   R   R   t   dirt
   startswitht   getattrt   typeR   t	   enumerateR'   t   unicodeR)   t   filet	   readlinesR   R"   t   Truet   closet   writet   sortedt   keyst   encode(   R&   t   optionsR   t   attrt   it   et   fpt   pret   postt   tmpt   inSectt   linet   fpwt   names(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   __save__O   sP     

1(   R"   R#   R   R-   RL   (    (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR$   <   s   		t   Cfgc           B   sÈ   e  Z e Z d  „  Z d d „ Z d „  Z d „  Z d d „ Z	 d „  Z
 d d d „ Z d d	 „ Z e d
 „ Z d „  Z g  d „ Z e d „ Z d „  Z d „  Z d d „ Z d „  Z g  d d „ Z RS(   c         C   s!   i  |  _  |  j ƒ  |  j ƒ  d  S(   N(   t	   ns2prefixt   _setHomeLocatort   _readConfigFiles(   R&   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   Œ   s    	
c         C   s&  | d  k s t j j | ƒ r„ d d l m } | d  k sN t j j | ƒ rŠ t j t j t	 j
 d „  ƒ ƒ t j t j ƒ } qŠ n | } t j | ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d	 ƒ t _ t j t j d
 ƒ t _ t j t j d ƒ t _ t j t j d d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d ƒ t _ t j t j d d ƒ t _ t j t j d ƒ t _ d  S(   Niÿÿÿÿ(   t   bpsPathc           S   s   d  S(   N(   R   (    (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   <lambda>š   s    t   libt   logt   cachet   wwwt	   resourcest   schemast   configt   datasourcest	   querytoolt   skinst	   templatest   cmft   archivet	   downloadst   biocaset   kettle(   R   t   ost   patht   isdirt
   adjustpathRQ   t   _pt   joint   dirnamet   _it   getfilet   pardirt   normpathRM   t   homeLocatort
   libLocatort
   logLocatort   cacheLocatort
   wwwLocatort   resourceLocatort   schemasLocatort   configurationLocatort
   dsaLocatort   skinLocatort   templateLocatort   rawCmfTemplateLocatort   dsaTemplateLocatort   archiveWorkLocatort   archiveDownloadLocatort   archiveLibLocatort   kettleLibLocator(   R&   RQ   Rn   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRO   ”   s,    6c         C   sJ   | t  |  ƒ k rF t |  | ƒ } t | t ƒ rF | j | | ƒ qF n  d  S(   N(   R2   R4   t
   isinstanceR$   R-   (   R&   t   sectionNameR+   R,   t   sect(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt
   _setOptionµ   s    c         C   sJ   | t  |  ƒ k rF t |  | ƒ } t | t ƒ rF |  j | ƒ j ƒ  Sn  g  S(   N(   R2   R4   R   R$   t   _getRecursiveDictR>   (   R&   R€   R   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   _listOptions¼   s
    i    c         C   s£   g  } | j  ƒ  } | j ƒ  xq | D]i } | | } t | ƒ t k rh d |  j d | d | d ƒ } n  d | } | j d | | | f ƒ q# Wd j | ƒ } | S(   Ns   
t   dt   indenti   s     s   %s%s:	%s(   R>   t   sortR5   R    t   _dictAsTablet   appendRh   (   R&   R…   R†   t   RRK   R   R,   t   indentString(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRˆ   Ä   s    

#
c         C   sO   g  } xB t  |  ƒ D]4 } t |  | ƒ } t | t ƒ r | j | ƒ q q W| S(   N(   R2   R4   R   R$   R‰   (   R&   t   sectionsR   RA   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   _getSectionsÒ   s    R/   c         C   s¨   i  } | d k r! |  j ƒ  } n  | j ƒ  } | j ƒ  xj | D]b } | | } t | ƒ t k rŒ |  j d | d d | ƒ } | j | ƒ q> | | d | | f <q> W| S(   s=   Return a simple dictionary with keys using . for the sectionsR…   t   bases   %s.s   %s%sN(   R   Rƒ   R>   R‡   R5   R    t   _getDictt   update(   R&   R…   RŽ   RŠ   RK   R   R,   t   R2(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyR   Û   s    

c         C   s›   | d  k r |  } n  i  } xy t | ƒ D]k } t | | ƒ } | j d ƒ s( t j | ƒ ra q( n  t | t ƒ r‰ |  j d | ƒ | | <q( | | | <q( W| S(   Nt   _t   obj(	   R   R2   R4   R3   Rj   t   ismethodR   R$   Rƒ   (   R&   R“   RŠ   R   RA   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRƒ   ë   s    	 c         C   s   |  j  ƒ  } |  j | ƒ S(   N(   Rƒ   Rˆ   (   R&   t   showEnvironmentRŠ   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   _asTableù   s    c         C   s
   |  j  ƒ  S(   N(   R–   (   R&   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   __repr__þ   s    c         C   sè   |  j  t j |  j d d ƒ d t ƒ|  j  t j |  j d ƒ d t ƒ|  j  t j |  j d ƒ d t ƒt |  d ƒ rÀ xE t |  j	 ƒ D]1 } | j
 d ƒ sˆ | |  j t |  j	 | ƒ <qˆ qˆ Wn  x! | D] } |  j  t d t ƒqÇ Wd  S(   NRa   s   configuration.init   readonlys
   config.inis   namespaces.init
   namespacesR’   (   t   __addCfgFile__Rg   Rh   Ro   R:   Ru   R   t   hasattrR2   R™   R3   RN   R4   t   configFilename(   R&   t	   filenamesR   t   fn(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRP     s    %""#c         C   s„  t  j  ƒ  } t | _ | j | ƒ x[| j ƒ  D]M} t ƒ  } | | _ t |  | | ƒ | ri d | _	 n	 | | _	 i  } x– | j
 | ƒ D]… \ } } t | ƒ d k rý | d d k rý t | d ƒ }	 | d  } | j | ƒ sì i  | | <n  | | | |	 <qˆ | j | | ƒ qˆ Wxh | j
 ƒ  D]Z \ } }
 |
 j ƒ  } | j ƒ  g  } x | D] } | j |
 | ƒ qMW| j | | ƒ qWq/ Wd S(   s;   Read a configParser file and add its entries to this objecti   iþÿÿÿR’   iÿÿÿÿN(   t   ConfigParserR   t   optionxformt   readRŒ   R$   R"   R*   R   R%   t   itemst   lenR(   t   has_keyR-   R>   R‡   R‰   (   R&   Rœ   R˜   t   cfgt   sectnamet   sectiont   listst   optt   valt   idxt   valListt   idst   lRB   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRš     s4    				"

c         C   s%   x |  j  ƒ  D] } | j ƒ  q Wd  S(   N(   R   RL   (   R&   R   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRL   5  s    c         C   s   d |  j  j |  j  j f S(   Ns   %s%s/(   t   servert   hostt   webroot(   R&   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   getWebappURL:  s    Ra   c         C   s8   | d k r  d |  j  ƒ  | f Sd |  j  ƒ  | f Sd S(   sA   Return the full absolute URL to the pywrapper for this datasourcet   spices   %spyspice.cgi?dsa=%ss   %spywrapper.cgi?dsa=%sN(   R²   (   R&   t   dsat   protocol(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   getAccessPoint<  s    c         C   s3   |  j  j j |  j  j |  j  j j d ƒ d  d ƒ S(   Ns   ://i   R/   (   R¯   R°   t   replacet   find(   R&   (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   getIPE  s    c         C   sE   x$ |  j  ƒ  D] } t |  | j ƒ q W|  j | ƒ |  j | ƒ d S(   s   reload config file(s)N(   R   t   delattrR"   RO   RP   (   R&   t   additionalConfigFilesRQ   t   sec(    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   reloadConfigFilesH  s    N(   R"   R#   R   t   __metaclass__R   R   RO   R‚   R„   Rˆ   R   R   Rƒ   R   R–   R—   RP   Rš   RL   R²   R¶   R¹   R½   (    (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyRM   ‰   s$   	!					%				t   __main__i   R¯   R   t   -iP   (   t   __doc__t   inspectRj   t   os.pathRd   Rg   t   sysRc   t   typesR    R   RŸ   R'   R)   R   R5   R   t   objectR$   RM   R"   t   setrecursionlimitR¥   R„   R¯   R
   R-   R½   RN   (    (    (    s@   /var/www/provider_software_3.1_work/lib/biocase/configuration.pyt   <module>   s0   	MÍ	
	