Source code for highton.models.highton_model
from abc import ABCMeta
from highton import fields
from highton.highton_constants import HightonConstants
from highton.parsing.xml_decoder import XMLDecoder
from highton.parsing.xml_encoder import XMLEncoder
[docs]class HightonModel(XMLDecoder, XMLEncoder, metaclass=ABCMeta):
"""
This class inherit from XMLDecoder and XMLEncoder which allows every HightonModel to be encoded and decoded in xml.
:ivar id: fields.IntegerField(name=HightonConstants.ID)
"""
ENDPOINT = None
def __init__(self, **kwargs):
self.id = fields.IntegerField(name=HightonConstants.ID)
for key, value in kwargs.items():
setattr(self, key, value)
[docs] def to_serializable_value(self):
"""
Parses the Hightonmodel to a serializable value such dicts, lists, strings
This can be used to save the model in a NoSQL database
:return: the serialized HightonModel
:rtype: dict
"""
return_dict = {}
for name, field in self.__dict__.items():
if isinstance(field, fields.Field):
return_dict[name] = field.to_serializable_value()
return return_dict