Changeset 513 for elixir/trunk/elixir
- Timestamp:
- 11/09/09 21:10:55 (3 years ago)
- Location:
- elixir/trunk/elixir
- Files:
-
- 2 modified
-
entity.py (modified) (5 diffs)
-
options.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
elixir/trunk/elixir/entity.py
r512 r513 48 48 def __init__(self, entity): 49 49 self.entity = entity 50 # entity.__module__ is not always reliable (eg in mod_python)51 self.module = sys.modules.get(entity.__module__)52 53 self.builders = []54 55 50 self.parent = None 56 #XXX: use entity.__subclasses__ ?57 self.children = []58 51 59 52 bases = [] … … 73 66 bases.append(base) 74 67 self.bases = bases 75 76 if not is_entity(entity): 68 if not is_entity(entity) or is_abstract_entity(entity): 77 69 return 70 71 # entity.__module__ is not always reliable (eg in mod_python) 72 self.module = sys.modules.get(entity.__module__) 73 74 self.builders = [] 75 76 #XXX: use entity.__subclasses__ ? 77 self.children = [] 78 78 79 79 # used for multi-table inheritance … … 98 98 99 99 # base class(es) options_defaults 100 base_defaults = {} 101 for base in self.bases: 102 base_defaults.update(getattr(base, 'options_defaults', {})) 100 options_defaults = self.options_defaults() 103 101 104 102 complete_defaults = options.options_defaults.copy() … … 111 109 # set default value for other options 112 110 for key in options.valid_options: 113 value = base_defaults.get(key, complete_defaults[key])111 value = options_defaults.get(key, complete_defaults[key]) 114 112 if isinstance(value, dict): 115 113 value = value.copy() … … 121 119 if hasattr(self.module, attr): 122 120 setattr(self, key, getattr(self.module, attr)) 121 122 def options_defaults(self): 123 base_defaults = {} 124 for base in self.bases: 125 base_defaults.update(base._descriptor.options_defaults()) 126 base_defaults.update(getattr(self.entity, 'options_defaults', {})) 127 return base_defaults 123 128 124 129 def setup_options(self): -
elixir/trunk/elixir/options.py
r511 r513 242 242 raise Exception("'%s' is not a valid option for Elixir entities." 243 243 % kwarg) 244 if not hasattr(entity, 'options_defaults'): 244 245 # We use __dict__ instead of hasattr to not check its presence within the 246 # parent, and thus update the parent dict instead of creating a local dict. 247 if not entity.__dict__.get('options_defaults'): 245 248 entity.options_defaults = {} 246 249 entity.options_defaults.update(kwargs)
