def testMoney(self): assert len(MoneyNode.registry) == 2 assert len(MoneyRelationship.registry) == 1 g = self.g if g.server_version.major == 1: self.skipTest( 'UUID method does not exists in OrientDB version < 2') costanzo = g.people.create(full_name='Costanzo Veronesi', uuid=UUID()) valerius = g.people.create(full_name='Valerius Burgstaller' , uuid=UUID()) if g.server_version >= (2,1,0): # Default values supported oliver = g.people.create(full_name='Oliver Girard') else: oliver = g.people.create(full_name='Oliver Girard', uuid=UUID()) # If you override nullable properties to be not-mandatory, be aware that # OrientDB version < 2.1.0 does not count null assert Person.objects.query().what(distinct(Person.uuid)).count() == 3 original_inheritance = decimal.Decimal('1520841.74309871919') inheritance = g.wallets.create( amount_precise = original_inheritance , amount_imprecise = original_inheritance) assert inheritance.amount_precise == original_inheritance assert inheritance.amount_precise != inheritance.amount_imprecise pittance = decimal.Decimal('0.1') poor_pouch = g.wallets.create( amount_precise=pittance , amount_imprecise=pittance) assert poor_pouch.amount_precise == pittance assert poor_pouch.amount_precise != poor_pouch.amount_imprecise # Django-style creation costanzo_claim = Carries.objects.create(costanzo, inheritance) valerius_claim = Carries.objects.create(valerius, inheritance) oliver_carries = Carries.objects.create(oliver, poor_pouch) g.scripts.add(GroovyScripts.from_file( os.path.join( os.path.split( os.path.abspath(__file__))[0], 'money.groovy')), 'money') rich_list = g.gremlin('rich_list', 1000000, namespace='money') assert costanzo in rich_list and valerius in rich_list \ and oliver not in rich_list bigwallet_query = g.query(Wallet).filter(Wallet.amount_precise > 100000) smallerwallet_query = g.query(Wallet).filter( Wallet.amount_precise < 100000) # Basic query slicing assert len(bigwallet_query[:]) == 1 assert len(smallerwallet_query) == 1 assert bigwallet_query.first() == inheritance pouch = smallerwallet_query[0] assert pouch == poor_pouch assert len(pouch.outE()) == len(pouch.out()) assert pouch.in_() == pouch.both() and pouch.inE() == pouch.bothE() first_inE = pouch.inE()[0] assert first_inE == oliver_carries assert first_inE.outV() == oliver and first_inE.inV() == poor_pouch for i, wallet in enumerate(g.query(Wallet)): print(decimal.Decimal(wallet.amount_imprecise) - wallet.amount_precise) assert i < 2 schema_registry = g.build_mapping(MoneyNode, MoneyRelationship) assert all(c in schema_registry for c in ['person', 'wallet', 'carries']) WalletType = schema_registry['wallet'] # Original property name, amount_precise, lost-in-translation assert type(WalletType.amount) == Decimal assert type(WalletType.amount_imprecise) == Double g.include(schema_registry) debt = decimal.Decimal(-42.0) WalletType.objects.create(amount=debt, amount_imprecise=0) assert g.query(Wallet)[2].amount == -42
class Person(MoneyNode): element_plural = 'people' full_name = String(nullable=False) uuid = String(nullable=False, default=UUID())