Changeset 3382
- Timestamp:
- 07/24/07 17:11:00 (1 year ago)
- Files:
-
- trunk/Schevo/schevo/database2.py (modified) (1 diff)
- trunk/Schevo/schevo/extent.py (modified) (2 diffs)
- trunk/Schevo/schevo/field.py (modified) (5 diffs)
- trunk/Schevo/schevo/placeholder.py (modified) (2 diffs)
- trunk/Schevo/schevo/query.py (modified) (10 diffs)
- trunk/Schevo/schevo/test/icons (added)
- trunk/Schevo/schevo/test/icons/configure.png (added)
- trunk/Schevo/schevo/test/icons/db.Sprocket.png (added)
- trunk/Schevo/schevo/test/icons/db.User.png (added)
- trunk/Schevo/schevo/test/template.txt (added)
- trunk/Schevo/schevo/test/test_bank.py (added)
- trunk/Schevo/schevo/test/test_calculated_field_unicode.py (added)
- trunk/Schevo/schevo/test/test_change.py (added)
- trunk/Schevo/schevo/test/test_constant.py (added)
- trunk/Schevo/schevo/test/test_convert_format.py (added)
- trunk/Schevo/schevo/test/test_database.py (added)
- trunk/Schevo/schevo/test/test_database_namespace.py (added)
- trunk/Schevo/schevo/test/test_default_values.py (added)
- trunk/Schevo/schevo/test/test_entity_extent.py (added)
- trunk/Schevo/schevo/test/test_entity_subclass.py (added)
- trunk/Schevo/schevo/test/test_equivalent.py (added)
- trunk/Schevo/schevo/test/test_evolve.py (added)
- trunk/Schevo/schevo/test/test_extent_name_override.py (added)
- trunk/Schevo/schevo/test/test_extent_without_fields.py (added)
- trunk/Schevo/schevo/test/test_extentmethod.py (added)
- trunk/Schevo/schevo/test/test_field.py (added)
- trunk/Schevo/schevo/test/test_field_entity.py (added)
- trunk/Schevo/schevo/test/test_field_entitylist.py (added)
- trunk/Schevo/schevo/test/test_field_entityset.py (added)
- trunk/Schevo/schevo/test/test_field_entitysetset.py (added)
- trunk/Schevo/schevo/test/test_field_factory_aliases.py (added)
- trunk/Schevo/schevo/test/test_field_maps.py (added)
- trunk/Schevo/schevo/test/test_icon.py (added)
- trunk/Schevo/schevo/test/test_label.py (added)
- trunk/Schevo/schevo/test/test_links.py (added)
- trunk/Schevo/schevo/test/test_module.py (added)
- trunk/Schevo/schevo/test/test_mrow.py (added)
- trunk/Schevo/schevo/test/test_namespace.py (added)
- trunk/Schevo/schevo/test/test_odict.py (added)
- trunk/Schevo/schevo/test/test_on_delete.py (added)
- trunk/Schevo/schevo/test/test_populate.py (added)
- trunk/Schevo/schevo/test/test_prefix.py (added)
- trunk/Schevo/schevo/test/test_query.py (added)
- trunk/Schevo/schevo/test/test_relax_index.py (added)
- trunk/Schevo/schevo/test/test_schema.py (added)
- trunk/Schevo/schevo/test/test_schema_db_reference.py (added)
- trunk/Schevo/schevo/test/test_store_btree.py (added)
- trunk/Schevo/schevo/test/test_store_client_storage.py (added)
- trunk/Schevo/schevo/test/test_store_connection.py (added)
- trunk/Schevo/schevo/test/test_store_file_storage.py (added)
- trunk/Schevo/schevo/test/test_store_history.py (added)
- trunk/Schevo/schevo/test/test_store_persistent.py (added)
- trunk/Schevo/schevo/test/test_store_persistent_set.py (added)
- trunk/Schevo/schevo/test/test_store_serialize.py (added)
- trunk/Schevo/schevo/test/test_store_storage.py (added)
- trunk/Schevo/schevo/test/test_store_storage_server.py (added)
- trunk/Schevo/schevo/test/test_store_utils.py (added)
- trunk/Schevo/schevo/test/test_transaction.py (added)
- trunk/Schevo/schevo/test/test_transaction_before_after.py (added)
- trunk/Schevo/schevo/test/test_transaction_field_reorder.py (added)
- trunk/Schevo/schevo/test/test_transaction_require_changes.py (added)
- trunk/Schevo/schevo/test/test_view.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_bad (added)
- trunk/Schevo/schevo/test/testschema_equivalent_bad/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_bad/schema_001.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_bad/schema_002.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_bad/schema_003.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_good (added)
- trunk/Schevo/schevo/test/testschema_equivalent_good/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_good/schema_001.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_good/schema_002.py (added)
- trunk/Schevo/schevo/test/testschema_equivalent_good/schema_003.py (added)
- trunk/Schevo/schevo/test/testschema_evolve (added)
- trunk/Schevo/schevo/test/testschema_evolve/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_evolve/schema_001.py (added)
- trunk/Schevo/schevo/test/testschema_evolve/schema_002.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad1 (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad1/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad1/bar_001.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad1/foo_001.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad2 (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad2/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad2/bar_002.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_bad2/foo_001.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_good (added)
- trunk/Schevo/schevo/test/testschema_prefix_good/__init__.py (added)
- trunk/Schevo/schevo/test/testschema_prefix_good/foo_001.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Schevo/schevo/database2.py
r3306 r3382 1256 1256 e_id = extent_name_id[e_name] 1257 1257 EntityClass = E[e_name] 1258 extent = Extent(self, e_name, EntityClass)1258 extent = Extent(self, e_name, e_id, EntityClass) 1259 1259 extents[e_id] = extents[e_name] = extent 1260 1260 relaxed[e_name] = {} trunk/Schevo/schevo/extent.py
r3306 r3382 18 18 """An extent of entity instances.""" 19 19 20 def __init__(self, db, name, EntityClass):20 def __init__(self, db, name, id, EntityClass): 21 21 # Decorate the EntityClass. 22 22 EntityClass._db = db … … 29 29 self.default_key = EntityClass._default_key 30 30 self.field_spec = EntityClass._field_spec 31 self.id = id 31 32 self.index_spec = EntityClass._index_spec 32 33 self.initial = EntityClass._initial trunk/Schevo/schevo/field.py
r3306 r3382 306 306 FieldClass = self.__class__ 307 307 new_field = FieldClass(None, None) 308 new_field.__dict__.update(self.__dict__) 308 try: 309 new_field.__dict__.update(self.__dict__) 310 except AttributeError: 311 for name in self.__slots__: 312 setattr(new_field, name, getattr(self, name)) 309 313 return new_field 310 314 … … 1161 1165 return [(r(value), value) for value in values] 1162 1166 1167 def _transform(self, transform_entity): 1168 """Transforms, in place, the value of the field, using the 1169 return value of `transform_entity(entity)` for each entity 1170 that is in the field's value. 1171 1172 This is used by extension libraries such as SchevoPolicy. 1173 """ 1174 value = self._value 1175 if isinstance(value, EntityActual): 1176 self._value = transform_entity(value) 1177 1163 1178 def validate(self, value): 1164 1179 """Validate the value, raising an error on failure.""" … … 1323 1338 def reversible(self, value=None): 1324 1339 return None 1340 1341 def _transform(self, transform_entity): 1342 value = self._value 1343 if isinstance(value, list): 1344 self._value = [transform_entity(entity) for entity in value] 1325 1345 1326 1346 def _unassign(self, member): … … 1429 1449 return None 1430 1450 1451 def _transform(self, transform_entity): 1452 value = self._value 1453 if isinstance(value, (set, frozenset)): 1454 self._value = set(transform_entity(entity) for entity in value) 1455 1431 1456 def validate(self, value): 1432 1457 """Validate the value, raising an error on failure.""" … … 1523 1548 def reversible(self, value=None): 1524 1549 return None 1550 1551 def _transform(self, transform_entity): 1552 value = self._value 1553 if isinstance(value, (set, frozenset)): 1554 self._value = set( 1555 set(transform_entity(entity) for entity in inner_set) 1556 for inner_set in value 1557 ) 1525 1558 1526 1559 def validate(self, value): trunk/Schevo/schevo/placeholder.py
r3306 r3382 17 17 def __init__(self, entity): 18 18 """Create a Placeholder instance based on `entity`.""" 19 self.extent_id = entity._ db._extent_name_id[entity._extent.name]19 self.extent_id = entity._extent.id 20 20 self.oid = entity._oid 21 21 self.entity = entity … … 87 87 # would result in it being the wrong one. 88 88 return self.entity 89 extent = db.extent( db._extent_id_name[self.extent_id])89 extent = db.extent(self.extent_id) 90 90 oid = self.oid 91 91 if oid in extent: trunk/Schevo/schevo/query.py
r3306 r3382 36 36 37 37 def __call__(self): 38 """Shortcut to get to `_query_results` method.""" 39 return self._results() 40 41 def _results(self): 38 42 """Return a `Results` instance based on the current state of 39 43 this query.""" … … 56 60 self._label = label 57 61 58 def _ _call__(self):62 def _results(self): 59 63 return results(self._fn()) 60 64 … … 156 160 field.assigned = True 157 161 158 def _ _call__(self):162 def _results(self): 159 163 return results(self._on.find(**self._criteria)) 160 164 … … 195 199 self._other_field_name = other_field_name 196 200 197 def _ _call__(self):201 def _results(self): 198 202 return results(self._entity.sys.links( 199 203 self._other_extent, self._other_field_name)) … … 293 297 self.value = value 294 298 295 def _ _call__(self):299 def _results(self): 296 300 on = self.on 297 301 if isinstance(on, base.Query): … … 410 414 self.queries = list(queries) 411 415 412 def _ _call__(self):416 def _results(self): 413 417 assert log(1, 'called Intersection') 414 418 resultset = None … … 498 502 self.queries = list(queries) 499 503 500 def _ _call__(self):504 def _results(self): 501 505 resultset = set() 502 506 for query in self.queries: … … 519 523 self.FieldClass = FieldClass 520 524 521 def _ _call__(self):525 def _results(self): 522 526 field_name = self.field_name 523 527 groups = {} … … 542 546 self.FieldClass = FieldClass 543 547 544 def _ _call__(self):548 def _results(self): 545 549 def generator(): 546 550 field_name = self.field_name … … 574 578 self.FieldClass = FieldClass 575 579 576 def _ _call__(self):580 def _results(self): 577 581 def generator(): 578 582 field_name = self.field_name
