Changeset 3274

Show
Ignore:
Timestamp:
06/01/07 13:17:30 (1 year ago)
Author:
pobrien
Message:

Since a set cannot be compared to something that is not a set, such as UNASSIGNED, store the EntitySet? field as a tuple instead.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Schevo/schevo/field.py

    r3258 r3274  
    13861386        value = self._value 
    13871387        if isinstance(value, (set, frozenset)): 
    1388             value = frozenset(Placeholder(entity) for entity in value) 
     1388            value = tuple(Placeholder(entity) for entity in value) 
    13891389        return value 
    13901390 
     
    14221422    def _restore(self, db): 
    14231423        value = self._value 
    1424         if isinstance(value, frozenset): 
     1424        if isinstance(value, tuple): 
    14251425            value = set(placeholder.restore(db) for placeholder in value) 
    14261426        self._value = value 
  • trunk/Schevo/tests/test_field_entityset.py

    r3233 r3274  
    5151        self.reopen() 
    5252        assert bar.foo_set == set([foo]) 
     53 
     54    def test_store_and_retrieve_one_entity_plus_UNASSIGNED(self): 
     55        foo = ex(db.Foo.t.create(name='foo')) 
     56        bar = ex(db.Bar.t.create(foo_set=set([foo]))) 
     57        assert bar.foo_set == set([foo]) 
     58        bar2 = ex(db.Bar.t.create(foo_set=UNASSIGNED)) 
     59        assert bar2.foo_set is UNASSIGNED 
     60        self.reopen() 
     61        assert bar.foo_set == set([foo]) 
     62        assert bar2.foo_set is UNASSIGNED 
    5363 
    5464    def test_store_and_retrieve_multiple_entities(self):