Lorenzo Gil Sanchez
2004-08-17 13:13:05 UTC
I have a pymodel written in a file and after creating the database and
the python classes (mdl_generate_DB_schema.py and
mdl_generate_python_code -B) I try to run some basic code and I get this
exception:
Traceback (most recent call last):
File "model_person.py", line 33, in ?
from Person.Customer import Customer
File "/home/lgs/proyectos/pruebas-modeling/Person/Customer.py", line
2, in ?
from MDL.Customer import Customer as MDL_Customer_Customer
File "/home/lgs/proyectos/pruebas-modeling/Person/MDL/Customer.py",
line 5, in ?
from Person.Person import Person
ImportError: No module named Person
It looks like the problem arises when using Inheritance. In my model,
the Customer entity inherits from the Person entity. The python code
generated by modeling tryies to import Person when defining Customer and
it can't find it.
I think a possible solution would be to modify the __init__.py file of
the package modeling is generating so it imports all the domain classes
generated.
Here is my pymodel and test file:
from Modeling.PyModel import *
Attribute.defaults['usedForLocking']=1
AString.defaults['externalType']='TEXT'
AString.defaults['width'] = 0
AString.defaults['usedForLocking']=1
Association.defaults['delete']=['nullify', 'nullify']
Entity.defaults['properties'] = [
APrimaryKey('id', isClassProperty=0, isRequired=1, doc='PK')
]
_connDict = {'database': 'people.sqlite'}
model = Model('Person', adaptorName='SQLite', connDict=_connDict,
version='0.1')
model.entities = [
Entity('Person',
properties = [AString('name'), AString('surname')],
),
Entity('Customer',
properties = [AString('phone')],
parent='Person',
)
]
model.build()
if __name__ == '__main__':
from Modeling.EditingContext import EditingContext
from Person.Person import Person
from Person.Customer import Customer
ec = EditingContext()
p = Person()
p.setName('Erny')
ec.insert(p)
c = Customer()
c.setName('Lorenzo')
c.setPhone('93923924')
the python classes (mdl_generate_DB_schema.py and
mdl_generate_python_code -B) I try to run some basic code and I get this
exception:
Traceback (most recent call last):
File "model_person.py", line 33, in ?
from Person.Customer import Customer
File "/home/lgs/proyectos/pruebas-modeling/Person/Customer.py", line
2, in ?
from MDL.Customer import Customer as MDL_Customer_Customer
File "/home/lgs/proyectos/pruebas-modeling/Person/MDL/Customer.py",
line 5, in ?
from Person.Person import Person
ImportError: No module named Person
It looks like the problem arises when using Inheritance. In my model,
the Customer entity inherits from the Person entity. The python code
generated by modeling tryies to import Person when defining Customer and
it can't find it.
I think a possible solution would be to modify the __init__.py file of
the package modeling is generating so it imports all the domain classes
generated.
Here is my pymodel and test file:
from Modeling.PyModel import *
Attribute.defaults['usedForLocking']=1
AString.defaults['externalType']='TEXT'
AString.defaults['width'] = 0
AString.defaults['usedForLocking']=1
Association.defaults['delete']=['nullify', 'nullify']
Entity.defaults['properties'] = [
APrimaryKey('id', isClassProperty=0, isRequired=1, doc='PK')
]
_connDict = {'database': 'people.sqlite'}
model = Model('Person', adaptorName='SQLite', connDict=_connDict,
version='0.1')
model.entities = [
Entity('Person',
properties = [AString('name'), AString('surname')],
),
Entity('Customer',
properties = [AString('phone')],
parent='Person',
)
]
model.build()
if __name__ == '__main__':
from Modeling.EditingContext import EditingContext
from Person.Person import Person
from Person.Customer import Customer
ec = EditingContext()
p = Person()
p.setName('Erny')
ec.insert(p)
c = Customer()
c.setName('Lorenzo')
c.setPhone('93923924')