se depreca fields.Model port fields.Many2One
FossilOrigin-Name: 73d74488ca7458ff7dc84898ff76fa9b16b427cc6bc77540d7c81450e4f33869
This commit is contained in:
parent
92bae58e51
commit
ba4e3d546f
@ -1,23 +1,21 @@
|
|||||||
from .field import Field
|
from .field import Field
|
||||||
|
|
||||||
class Many2One(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.model = model
|
||||||
self.setter = setter
|
self.setter = setter
|
||||||
self.namespace = namespace
|
self.namespace = namespace
|
||||||
|
self.field_name = name
|
||||||
def __set_name__(self, owner, name):
|
|
||||||
self.name = name
|
|
||||||
|
|
||||||
def __get__(self, inst, cls):
|
def __get__(self, inst, cls):
|
||||||
if inst is None:
|
if inst is None:
|
||||||
return self
|
return self
|
||||||
assert self.name is not None
|
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):
|
def __set__(self, inst, value):
|
||||||
assert self.name is not None
|
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
|
# si hay setter manual se ejecuta
|
||||||
# de lo contrario se asigna como texto del elemento
|
# de lo contrario se asigna como texto del elemento
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
from .field import Field
|
from .field import Field
|
||||||
|
import warnings
|
||||||
|
|
||||||
class Model(Field):
|
class Model(Field):
|
||||||
def __init__(self, model, name=None, namespace=None):
|
def __init__(self, model, name=None, namespace=None):
|
||||||
self.model = model
|
self.model = model
|
||||||
self.namespace = namespace
|
self.namespace = namespace
|
||||||
self.field_name = name
|
self.field_name = name
|
||||||
|
warnings.warn('deprecated use Many2One instead')
|
||||||
|
|
||||||
def __get__(self, inst, cls):
|
def __get__(self, inst, cls):
|
||||||
if inst is None:
|
if inst is None:
|
||||||
return self
|
return self
|
||||||
|
@ -103,13 +103,28 @@ def test_field_model():
|
|||||||
class Person(facho.model.Model):
|
class Person(facho.model.Model):
|
||||||
__name__ = 'Person'
|
__name__ = 'Person'
|
||||||
|
|
||||||
id = fields.Model(ID)
|
id = fields.Many2One(ID)
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
person.id = ID()
|
person.id = ID()
|
||||||
person.id = 33
|
person.id = 33
|
||||||
assert "<Person><ID>33</ID></Person>" == person.to_xml()
|
assert "<Person><ID>33</ID></Person>" == 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 "<Person><ID>33</ID><ID>44</ID></Person>" == person.to_xml()
|
||||||
|
|
||||||
def test_field_model_failed_initialization():
|
def test_field_model_failed_initialization():
|
||||||
class ID(facho.model.Model):
|
class ID(facho.model.Model):
|
||||||
__name__ = 'ID'
|
__name__ = 'ID'
|
||||||
@ -117,7 +132,7 @@ def test_field_model_failed_initialization():
|
|||||||
class Person(facho.model.Model):
|
class Person(facho.model.Model):
|
||||||
__name__ = 'Person'
|
__name__ = 'Person'
|
||||||
|
|
||||||
id = fields.Model(ID)
|
id = fields.Many2One(ID)
|
||||||
|
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
@ -131,7 +146,7 @@ def test_field_model_with_custom_name():
|
|||||||
class Person(facho.model.Model):
|
class Person(facho.model.Model):
|
||||||
__name__ = 'Person'
|
__name__ = 'Person'
|
||||||
|
|
||||||
id = fields.Model(ID, name='DID')
|
id = fields.Many2One(ID, name='DID')
|
||||||
|
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
@ -147,7 +162,7 @@ def test_field_model_default_initialization_with_attributes():
|
|||||||
class Person(facho.model.Model):
|
class Person(facho.model.Model):
|
||||||
__name__ = 'Person'
|
__name__ = 'Person'
|
||||||
|
|
||||||
id = fields.Model(ID)
|
id = fields.Many2One(ID)
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
person.id = 33
|
person.id = 33
|
||||||
@ -189,7 +204,7 @@ def test_field_model_with_namespace():
|
|||||||
__namespace__ = {
|
__namespace__ = {
|
||||||
"facho": "http://lib.facho.cyou"
|
"facho": "http://lib.facho.cyou"
|
||||||
}
|
}
|
||||||
id = fields.Model(ID, namespace="facho")
|
id = fields.Many2One(ID, namespace="facho")
|
||||||
|
|
||||||
|
|
||||||
person = Person()
|
person = Person()
|
||||||
@ -203,7 +218,7 @@ def test_field_hook_before_xml():
|
|||||||
class Person(facho.model.Model):
|
class Person(facho.model.Model):
|
||||||
__name__ = 'Person'
|
__name__ = 'Person'
|
||||||
|
|
||||||
hash = fields.Model(Hash)
|
hash = fields.Many2One(Hash)
|
||||||
|
|
||||||
def __before_xml__(self):
|
def __before_xml__(self):
|
||||||
self.hash = "calculate"
|
self.hash = "calculate"
|
||||||
|
Loading…
Reference in New Issue
Block a user