diff --git a/facho/model/fields/many2one.py b/facho/model/fields/many2one.py
index 1f6670c..0ead219 100644
--- a/facho/model/fields/many2one.py
+++ b/facho/model/fields/many2one.py
@@ -1,23 +1,21 @@
from .field import Field
class Many2One(Field):
- def __init__(self, model, setter=None, namespace=None):
+ def __init__(self, model, name=None, setter=None, namespace=None):
self.model = model
self.setter = setter
self.namespace = namespace
-
- def __set_name__(self, owner, name):
- self.name = name
+ self.field_name = name
def __get__(self, inst, cls):
if inst is None:
return self
assert self.name is not None
- return self._create_model(inst)
+ return self._create_model(inst, name=self.field_name)
def __set__(self, inst, value):
assert self.name is not None
- inst_model = self._create_model(inst, model=self.model)
+ inst_model = self._create_model(inst, name=self.field_name, model=self.model)
# si hay setter manual se ejecuta
# de lo contrario se asigna como texto del elemento
diff --git a/facho/model/fields/model.py b/facho/model/fields/model.py
index 7ae217a..ad48212 100644
--- a/facho/model/fields/model.py
+++ b/facho/model/fields/model.py
@@ -1,11 +1,13 @@
from .field import Field
+import warnings
class Model(Field):
def __init__(self, model, name=None, namespace=None):
self.model = model
self.namespace = namespace
self.field_name = name
-
+ warnings.warn('deprecated use Many2One instead')
+
def __get__(self, inst, cls):
if inst is None:
return self
diff --git a/tests/test_model.py b/tests/test_model.py
index fb2a30c..220a4ec 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -103,13 +103,28 @@ def test_field_model():
class Person(facho.model.Model):
__name__ = 'Person'
- id = fields.Model(ID)
+ id = fields.Many2One(ID)
person = Person()
person.id = ID()
person.id = 33
assert "33" == person.to_xml()
+def test_field_multiple_model():
+ class ID(facho.model.Model):
+ __name__ = 'ID'
+
+ class Person(facho.model.Model):
+ __name__ = 'Person'
+
+ id = fields.Many2One(ID)
+ id2 = fields.Many2One(ID)
+
+ person = Person()
+ person.id = 33
+ person.id2 = 44
+ assert "3344" == person.to_xml()
+
def test_field_model_failed_initialization():
class ID(facho.model.Model):
__name__ = 'ID'
@@ -117,7 +132,7 @@ def test_field_model_failed_initialization():
class Person(facho.model.Model):
__name__ = 'Person'
- id = fields.Model(ID)
+ id = fields.Many2One(ID)
person = Person()
@@ -131,7 +146,7 @@ def test_field_model_with_custom_name():
class Person(facho.model.Model):
__name__ = 'Person'
- id = fields.Model(ID, name='DID')
+ id = fields.Many2One(ID, name='DID')
person = Person()
@@ -147,7 +162,7 @@ def test_field_model_default_initialization_with_attributes():
class Person(facho.model.Model):
__name__ = 'Person'
- id = fields.Model(ID)
+ id = fields.Many2One(ID)
person = Person()
person.id = 33
@@ -189,7 +204,7 @@ def test_field_model_with_namespace():
__namespace__ = {
"facho": "http://lib.facho.cyou"
}
- id = fields.Model(ID, namespace="facho")
+ id = fields.Many2One(ID, namespace="facho")
person = Person()
@@ -203,7 +218,7 @@ def test_field_hook_before_xml():
class Person(facho.model.Model):
__name__ = 'Person'
- hash = fields.Model(Hash)
+ hash = fields.Many2One(Hash)
def __before_xml__(self):
self.hash = "calculate"