se adiciona atributo default a many2one y attribute
FossilOrigin-Name: 9ddb1d1b8bebef24da17cc47d8fc70392f6015bb61866f251992aea518ed3d0f
This commit is contained in:
		| @@ -1,3 +1,4 @@ | ||||
| from .fields import Field | ||||
|  | ||||
| class ModelMeta(type): | ||||
|     def __new__(cls, name, bases, ns): | ||||
| @@ -19,7 +20,15 @@ class ModelBase(object, metaclass=ModelMeta): | ||||
|         obj._fields = {} | ||||
|         obj._text = "" | ||||
|         obj._namespace_prefix = None | ||||
|          | ||||
|  | ||||
|         # forzamos registros de campos al modelo | ||||
|         # al instanciar | ||||
|         for (key, v) in type(obj).__dict__.items(): | ||||
|             if isinstance(v, fields.Attribute) or isinstance(v, fields.Many2One): | ||||
|                 if hasattr(v, 'default') and v.default is not None: | ||||
|                     setattr(obj, key, v.default) | ||||
|  | ||||
|  | ||||
|         return obj | ||||
|  | ||||
|     def __setitem__(self, key, val): | ||||
| @@ -32,10 +41,12 @@ class ModelBase(object, metaclass=ModelMeta): | ||||
|         pass | ||||
|  | ||||
|     def __default_set__(self, value): | ||||
|         return str(value) | ||||
|         return value | ||||
|      | ||||
|     def _set_content(self, value): | ||||
|         self._text = str(self.__default_set__(value)) | ||||
|         default = self.__default_set__(value) | ||||
|         if default is not None: | ||||
|             self._text = str(default) | ||||
|  | ||||
|     def _hook_before_xml(self): | ||||
|         self.__before_xml__() | ||||
| @@ -63,7 +74,6 @@ class ModelBase(object, metaclass=ModelMeta): | ||||
|  | ||||
|         for name, value in self._fields.items(): | ||||
|             if hasattr(value, 'to_xml'): | ||||
|                 print(self._fields) | ||||
|                 content += value.to_xml() | ||||
|             elif isinstance(value, str): | ||||
|                 content += value | ||||
|   | ||||
| @@ -3,5 +3,6 @@ from .many2one import Many2One | ||||
| from .model import Model | ||||
| from .function import Function | ||||
| from .virtual import Virtual | ||||
| from .field import Field | ||||
|  | ||||
| __all__ = [Attribute, Many2One, Model, Virtual] | ||||
| __all__ = [Attribute, Many2One, Model, Virtual, Field] | ||||
|   | ||||
| @@ -4,6 +4,7 @@ class Attribute(Field): | ||||
|     def __init__(self, tag, default=None): | ||||
|         self.tag = tag | ||||
|         self.value = default | ||||
|         self.default = default | ||||
|  | ||||
|     def __get__(self, inst, cls): | ||||
|         if inst is None: | ||||
|   | ||||
| @@ -14,6 +14,7 @@ class Function(Field): | ||||
|         # si se indica `field` se adiciona | ||||
|         # como campo del modelo, esto es | ||||
|         # que se serializa a xml | ||||
|         self.field.name = self.name | ||||
|         inst._fields[self.name] = self.field | ||||
|  | ||||
|         if self.getter is not None: | ||||
|   | ||||
| @@ -1,11 +1,12 @@ | ||||
| from .field import Field | ||||
|  | ||||
| class Many2One(Field): | ||||
|     def __init__(self, model, name=None, setter=None, namespace=None): | ||||
|     def __init__(self, model, name=None, setter=None, namespace=None, default=None): | ||||
|         self.model = model | ||||
|         self.setter = setter | ||||
|         self.namespace = namespace | ||||
|         self.field_name = name | ||||
|         self.default = default | ||||
|  | ||||
|     def __get__(self, inst, cls): | ||||
|         if inst is None: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user