mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
import datetime
|
|
|
|
from sqlalchemy import Column, DateTime, ForeignKey
|
|
from sqlalchemy.orm import declared_attr, deferred, relationship
|
|
|
|
from project.models.functions import _current_user_id_or_none
|
|
|
|
|
|
class TrackableMixin(object):
|
|
@declared_attr
|
|
def created_at(cls):
|
|
return deferred(
|
|
Column(DateTime, default=datetime.datetime.utcnow), group="trackable"
|
|
)
|
|
|
|
@declared_attr
|
|
def updated_at(cls):
|
|
return deferred(
|
|
Column(
|
|
DateTime,
|
|
default=datetime.datetime.utcnow,
|
|
onupdate=datetime.datetime.utcnow,
|
|
),
|
|
group="trackable",
|
|
)
|
|
|
|
@declared_attr
|
|
def created_by_id(cls):
|
|
return deferred(
|
|
Column(
|
|
"created_by_id",
|
|
ForeignKey("user.id"),
|
|
default=_current_user_id_or_none,
|
|
),
|
|
group="trackable",
|
|
)
|
|
|
|
@declared_attr
|
|
def created_by(cls):
|
|
return relationship(
|
|
"User",
|
|
primaryjoin="User.id == %s.created_by_id" % cls.__name__,
|
|
remote_side="User.id",
|
|
)
|
|
|
|
@declared_attr
|
|
def updated_by_id(cls):
|
|
return deferred(
|
|
Column(
|
|
"updated_by_id",
|
|
ForeignKey("user.id"),
|
|
default=_current_user_id_or_none,
|
|
onupdate=_current_user_id_or_none,
|
|
),
|
|
group="trackable",
|
|
)
|
|
|
|
@declared_attr
|
|
def updated_by(cls):
|
|
return relationship(
|
|
"User",
|
|
primaryjoin="User.id == %s.updated_by_id" % cls.__name__,
|
|
remote_side="User.id",
|
|
)
|