Untitled

 avatar
unknown
python
2 years ago
1.1 kB
5
Indexable
import mongoengine as me
from datetime import datetime


class BaseDocument(me.Document):
    _created_at = me.DateTimeField(default=datetime.utcnow)
    _updated_at = me.DateTimeField(default=datetime.utcnow)
    fields = ["id"]

    @property
    def created_at(self) -> str | None:
        if self._created_at is None:
            return None
        created_at = self._created_at.isoformat()
        return created_at

    @property
    def updated_at(self) -> str | None:
        if self._updated_at is None:
            return None
        updated_at = self._updated_at.isoformat()
        return updated_at

    @property
    def to_dict(self):
        data = {}
        for field in self.fields:
            data[field] = getattr(self, field, None)
        return data

    def from_dict(self, data, new_obj=True) -> None:
        for field in self.fields:
            if field in data:
                setattr(self, field, data[field])

        now = datetime.utcnow()
        if new_obj:
            self.get_token()
            self._created_at = now
        self._updated_at = now
Editor is loading...
Leave a Comment