Changeset 726

Show
Ignore:
Timestamp:
04/25/07 22:01:38 (1 year ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pycherokeeconf/src

    • Property svn:ignore set to
      *.pyc
      *.pyo
      *~
  • pycherokeeconf/src/cherokeeconf/config.py

    r720 r726  
    1414    value = property (_get_value, _set_value) 
    1515 
    16     # Child 
    17     def _get_subitem (self, path): 
     16    # Get child 
     17    # 
     18    def _getitem_simple (self, key): 
     19        if not key in self._child: 
     20            return None 
     21 
     22        r = self._child[key] 
     23        assert (isinstance(r, ConfigNode)) 
     24        return r 
     25 
     26    def _getitem_complex (self, path): 
    1827        node = self 
    1928        for p in path.split('!'): 
     
    2433        return node 
    2534 
    26     def __getitem__ (self, key): 
    27         if not key in self._child: 
    28             return None 
    29  
    30         r = self._child[key] 
    31         assert (isinstance(r, ConfigNode)) 
    32         return r 
    33  
    34     def __setitem__ (self, key, val): 
     35    def __getitem__ (self, path): 
     36        if '!' in path: 
     37            return self._getitem_complex (path) 
     38        else: 
     39            return self._getitem_simple (path) 
     40 
     41    # Add children 
     42    # 
     43    def _create_path (self, path): 
     44        node = self 
     45        for p in path.split('!'): 
     46            tmp = node[p] 
     47            if not tmp: 
     48                tmp = ConfigNode() 
     49                node[p] = tmp 
     50            node = tmp 
     51        return node 
     52 
     53    def _setitem_simple (self, key, val): 
    3554        assert (isinstance(val, ConfigNode)) 
    3655        self._child[key] = val 
    3756 
     57    def __setitem__ (self, key, val): 
     58        if '!' in key: 
     59            obj = self[key] 
     60            if not obj: 
     61                self._create_path(key) 
     62         
     63        if isinstance (val, ConfigNode): 
     64            if '!' in key: 
     65                parts = key.split('!') 
     66                last  = parts[-1] 
     67                prev  = reduce (lambda x,y: "%s!%s" % (x,y), parts[:-1]) 
     68                obj = self[prev] 
     69                obj._child[last] = val 
     70            else: 
     71                self._child[key] = val 
     72        else: 
     73            if '!' in key: 
     74                self[key].value = val 
     75            else: 
     76                child = self[key] 
     77                if not child: 
     78                    child = self._create_path (key) 
     79                child.value = val 
     80 
     81    # Modify child 
     82    # 
    3883    def __delitem__ (self, key): 
    3984        del (self._child[key]) 
     
    113158    # Access 
    114159    def __getitem__ (self, path): 
    115         node = self.root 
    116         for p in path.split('!'): 
    117             tmp = node[p] 
    118             if not tmp: 
    119                 return None 
    120             node = tmp 
    121         return node 
     160        return self.root[path] 
    122161 
    123162    def set_sub_node (self, path, config_node): 
  • pycherokeeconf/src/cherokeeconf/util.py

    r720 r726  
    4040 
    4141def ensure_handler (path): 
    42     return ensure_path (path) 
     42    # Improve this 
     43    return path 
    4344 
    4445def ensure_priority (prio): 
  • pycherokeeconf/src/cherokeeconf/virtual_server.py

    r720 r726  
    6363    alias_list = property (_get_alias_list, _set_alias_list) 
    6464 
     65    # Directories 
     66    def directory_get (self, name): 
     67        dirs = self._conf['directory'] 
     68        if not dirs or not name in dirs:  
     69            return None 
     70 
     71        return GenericEntry(dirs[name]) 
     72 
     73    def directory_new (self, name): 
     74        self._conf['directory!%s' % (name)] = ConfigNode() 
     75        return self.directory_get (name) 
     76 
     77 
    6578    # Entries 
    6679    def _get_entries (self):