import datetime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sticky_pi_api.utils import datetime_to_string
Base = declarative_base()
# A base class to add our own customisation to Base, using mixin
[docs]class BaseCustomisations(object):
__table__ = None
[docs] def to_dict(self):
out = {}
for column in self.__table__.columns:
value = getattr(self, column.name)
if isinstance(value, datetime.datetime):
value = datetime_to_string(value)
out[column.name] = value
return out
[docs] @classmethod
def column_names(cls):
return cls.__table__.columns.keys()
[docs]class DescribedColumn(Column):
def __init__(self, col_type, description="", *args, **kwargs):
super().__init__(col_type, *args, **kwargs)
self._description = description