Changeset 728

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

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pycherokeeconf/src/cherokeeconf/generic_entry.py

    r368 r728  
    4949    auth = property (_get_auth, _set_auth) 
    5050 
    51  
    52 class GenericEntryList (object): 
    53     def __init__ (self, dirs, exts, reqs): 
    54         if dirs: assert (isinstance(dirs, ConfigNode)) 
    55         if exts: assert (isinstance(exts, ConfigNode)) 
    56         if reqs: assert (isinstance(reqs, ConfigNode)) 
    57  
    58         self._dirs_conf = dirs 
    59         self._exts_conf = exts 
    60         self._reqs_conf = reqs 
    61  
    62     # Directories 
    63     def _get_directories (self): 
    64         dirs = [] 
    65         if self._dirs_conf: 
    66             for dirname in self._dirs_conf: 
    67                 from directory import Directory 
    68                 dir_conf = self._dirs_conf[dirname] 
    69                 new_dir  = Directory (dir_conf, dirname) 
    70                 dirs.append (new_dir) 
    71         return dirs 
    72  
    73     directories = property (_get_directories) 
    74  
    75     # Extensions 
    76     def _get_extensions (self): 
    77         exts = [] 
    78         if self._exts_conf: 
    79             for extname in self._exts_conf: 
    80                 from extension import Extension 
    81                 ext_conf = self._exts_conf[extname] 
    82                 new_ext  = Extension (ext_conf, extname) 
    83                 exts.append (new_ext) 
    84         return exts 
    85  
    86     extensions = property (_get_extensions) 
    87  
    88     # Requests 
    89     def _get_requests (self): 
    90         reqs = [] 
    91         if self._reqs_conf: 
    92             for reqname in self._reqs_conf: 
    93                 from request import Request 
    94                 req_conf = self._reqs_conf[reqname] 
    95                 new_req  = Request (req_conf, reqname) 
    96                 reqs.append (new_req) 
    97         return reqs 
    98      
    99     requests = property (_get_requests) 
    100  
    101     # All 
    102     def _get_all (self): 
    103         def cmp (a, b): 
    104             return a.priority > b.priority 
    105  
    106         all = self._get_directories() + \ 
    107               self._get_extensions()  + \ 
    108               self._get_requests() 
    109         all.sort (cmp) 
    110         return all 
    111  
    112     all = property (_get_all) 
    113  
    114     # Add 
    115     def __setitem__ (self, key, obj): 
    116         assert (isinstance(obj, ConfigNode)) 
    117          
    118         if obj.type == 'directory': 
    119             self._dirs_conf[key] = obj 
    120         elif obj.type == 'extension': 
    121             self._exts_conf[key] = obj 
    122         elif obj.type == 'request': 
    123             self._reqs_conf[key] = obj 
    124         else: 
    125             raise "Unknown type: " + obj.type 
    126  
    127     # Remove 
    128     def _remove (self, obj, conf): 
    129         priority = obj.priority 
    130         for c in conf: 
    131             p = conf[c]['priority'] 
    132             if p and p.value == priority: 
    133                 del (conf[c]) 
    134          
    135     def __delitem__ (self, obj): 
    136         if item.type == 'directory': 
    137             self._remove (obj, self._dirs) 
    138         elif item.type == 'extension': 
    139             self._remove (obj, self._exts) 
    140         elif item.type == 'request': 
    141             self._remove (obj, self._reqs) 
    142         else: 
    143             raise "Unknown type: " + item.type 
    144  
    145     # Iter 
    146     def __iter__ (self): 
    147         return iter(self._get_all()) 
    148  
    149     # Get 
    150     def __getitem__ (self, name): 
    151         if type(name) == types.StringType: 
    152             for e in self._get_all(): 
    153                 if e.entry == name: 
    154                     return e