fields.Model se permite cambiar el nombre de la etiqueta
FossilOrigin-Name: 896b797629e426a5e366d5be76fc00c3cc272299d6749e40f8317893b1545a9e
This commit is contained in:
		| @@ -1,9 +1,10 @@ | |||||||
| from .field import Field | from .field import Field | ||||||
|  |  | ||||||
| class Model(Field): | class Model(Field): | ||||||
|     def __init__(self, model, 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 | ||||||
|  |  | ||||||
|     def __get__(self, inst, cls): |     def __get__(self, inst, cls): | ||||||
|         if inst is None: |         if inst is None: | ||||||
| @@ -20,6 +21,8 @@ class Model(Field): | |||||||
|             return inst._fields[self.name] |             return inst._fields[self.name] | ||||||
|         except KeyError: |         except KeyError: | ||||||
|             obj = self.model() |             obj = self.model() | ||||||
|  |             if self.field_name is not None: | ||||||
|  |                 obj.__name__ = self.field_name | ||||||
|             self._set_namespace(obj, self.namespace, inst.__namespace__) |             self._set_namespace(obj, self.namespace, inst.__namespace__) | ||||||
|             inst._fields[self.name] = obj |             inst._fields[self.name] = obj | ||||||
|             return obj |             return obj | ||||||
|   | |||||||
| @@ -108,6 +108,20 @@ def test_field_model_failed_initialization(): | |||||||
|     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_model_with_custom_name(): | ||||||
|  |     class ID(facho.model.Model): | ||||||
|  |         __name__ = 'ID' | ||||||
|  |          | ||||||
|  |     class Person(facho.model.Model): | ||||||
|  |         __name__ = 'Person' | ||||||
|  |  | ||||||
|  |         id = fields.Model(ID, name='DID') | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     person = Person() | ||||||
|  |     person.id = 33 | ||||||
|  |     assert "<Person><DID>33</DID></Person>" == person.to_xml() | ||||||
|  |  | ||||||
| def test_field_model_default_initialization_with_attributes(): | def test_field_model_default_initialization_with_attributes(): | ||||||
|     class ID(facho.model.Model): |     class ID(facho.model.Model): | ||||||
|         __name__ = 'ID' |         __name__ = 'ID' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user