def testManyToOne1(self): for i in range(0, 10): a = Datum('Schema', 'id', id=1, parent=many_to_one( Datum('OtherSchema', 'other_schema_primary_key', other_schema_primary_key=i))) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(i, a._tableau_fields['parent'].render()) for i in range(0, 10): a = Datum('Schema', 'id', id=1, parent=many_to_one( Datum('OtherSchema', 'other_schema_primary_key', other_schema_primary_key=i), 'parent_id', )) suite = DataSuite() DataWalker(suite)(a) self.assertEqual('OtherSchema', a.parent._tableau_schema) self.assertEqual(i, a.parent_id)
def testOneToMany2(self): a = Datum( 'Schema', 'id', id=1, items=one_to_many( [ Datum( 'OtherSchema', 'id', id=i, value=i, schema_id=many_to_one('Schema') ) for i in range(0, 10) ] ) ) self.assertEqual(10, len(a.items)) suite = DataSuite() DataWalker(suite)(a) for i, item in enumerate(a.items): self.assertEqual(i, item.id) self.assertEqual(1, item.schema_id) self.assertTrue(item in suite['OtherSchema'].data) datasets = list(suite) self.assertEqual(2, len(datasets)) self.assertEqual('Schema', datasets[0].schema) self.assertEqual('OtherSchema', datasets[1].schema)
def __setattr__(self, k, v): if k.startswith('_'): object.__setattr__(self, k, v) else: if isinstance(v, FunctionType): v = Lazy(v) elif isinstance(v, DatumBase): # implicit many_to_one v = many_to_one(v, k, v._tableau_id_fields) elif is_iterable_container(v): # implicit one_to_many v = one_to_many(v, k) if isinstance(v, DynamicField): v.bind(self, k) if isinstance(v, many_to_one): for _k in v.this_side_fields: self.__check_key_is_declared(_k) elif isinstance(v, one_to_many): self.__check_key_is_declared(k) if v.referred_fields is not None: for _k in v.referred_fields: self.__check_key_is_declared(_k) object.__getattribute__(self, '_tableau_fields')[k] = v if self._tableau_managed_class is not None and not isinstance( v, Lazy): object.__setattr__(self, k, self._value_of(k, v))
def __setattr__(self, k, v): if k.startswith('_'): object.__setattr__(self, k, v) else: if isinstance(v, FunctionType): v = Lazy(v) elif isinstance(v, DatumBase): # implicit many_to_one v = many_to_one(v, k, v._tableau_id_fields) elif is_iterable_container(v): # implicit one_to_many v = one_to_many(v, k) if isinstance(v, DynamicField): v.bind(self, k) if isinstance(v, many_to_one): for _k in v.this_side_fields: self.__check_key_is_declared(_k) elif isinstance(v, one_to_many): self.__check_key_is_declared(k) if v.referred_fields is not None: for _k in v.referred_fields: self.__check_key_is_declared(_k) object.__getattribute__(self, '_tableau_fields')[k] = v if self._tableau_managed_class is not None and not isinstance(v, Lazy): object.__setattr__(self, k, self._value_of(k, v))
def testManyToOne3(self): metadata = MetaData() Table('Schema', metadata, Column('id', Integer, primary_key=True), Column('parent_id', Integer)) SADatum = self.SADatum = newSADatum(metadata) a = SADatum('Schema', 'id', id=1, parent=many_to_one(Datum('Foo', 'id', id=1), 'parent_id')) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(1, a._tableau_fields['parent'].render())
def testManyToOne2(self): a = Datum( 'Schema', 'id', id=1, parent=many_to_one( None ) ) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(None, a._tableau_fields['parent'].render())
def __setattr__(self, k, v): if k.startswith('_'): object.__setattr__(self, k, v) else: if isinstance(v, FunctionType): v = Lazy(v) elif isinstance(v, DatumBase): # implicit many_to_one v = many_to_one(v, k, v._tableau_id_fields) elif is_iterable_container(v): # implicit one_to_many v = one_to_many(v, k) if isinstance(v, DynamicField): v.bind(self, k) self._tableau_fields[k] = v
def testManyToOne1(self): for i in range(0, 10): a = Datum( 'Schema', 'id', id=1, parent=many_to_one( Datum( 'OtherSchema', 'other_schema_primary_key', other_schema_primary_key=i ) ) ) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(i, a._tableau_fields['parent'].render()) for i in range(0, 10): a = Datum( 'Schema', 'id', id=1, parent=many_to_one( Datum( 'OtherSchema', 'other_schema_primary_key', other_schema_primary_key=i ), 'parent_id', ) ) suite = DataSuite() DataWalker(suite)(a) self.assertEqual('OtherSchema', a.parent._tableau_schema) self.assertEqual(i, a.parent_id)
def testManyToOne3(self): metadata = MetaData() Table('Schema', metadata, Column('id', Integer, primary_key=True), Column('parent_id', Integer) ) SADatum = newSADatum(metadata) a = SADatum( 'Schema', 'id', id=1, parent=many_to_one( Datum('Foo', 'id', id=1), 'parent_id' ) ) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(1, a._tableau_fields['parent'].render())
def testOneToMany2(self): a = Datum('Schema', 'id', id=1, items=one_to_many([ Datum('OtherSchema', 'id', id=i, value=i, schema_id=many_to_one('Schema')) for i in range(0, 10) ])) self.assertEqual(10, len(a.items)) suite = DataSuite() DataWalker(suite)(a) for i, item in enumerate(a.items): self.assertEqual(i, item.id) self.assertEqual(1, item.schema_id) self.assertTrue(item in suite['OtherSchema'].data) datasets = list(suite) self.assertEqual(2, len(datasets)) self.assertEqual('Schema', datasets[0].schema) self.assertEqual('OtherSchema', datasets[1].schema)
def testManyToOne2(self): a = Datum('Schema', 'id', id=1, parent=many_to_one(None)) suite = DataSuite() DataWalker(suite)(a) self.assertEqual(None, a._tableau_fields['parent'].render())