Guest User

Untitled

a guest
Dec 7th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. from datetime import datetime
  2. from sqlalchemy import Column, Integer, DateTime, ForeignKey
  3. from sqlalchemy.orm import relationship
  4. from sqlalchemy.ext.declarative import declared_attr
  5. from flask_security import current_user
  6.  
  7.  
  8. class AuditMixin(object):
  9. created_at = Column(DateTime, default=datetime.now)
  10. updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
  11.  
  12. @declared_attr
  13. def created_by_id(cls):
  14. return Column(Integer,
  15. ForeignKey('user.id', name='fk_%s_created_by_id' % cls.__name__, use_alter=True),
  16. # nullable=False,
  17. default=_current_user_id_or_none
  18. )
  19.  
  20. @declared_attr
  21. def created_by(cls):
  22. return relationship(
  23. 'User',
  24. primaryjoin='User.id == %s.created_by_id' % cls.__name__,
  25. remote_side='User.id'
  26. )
  27.  
  28. @declared_attr
  29. def updated_by_id(cls):
  30. return Column(Integer,
  31. ForeignKey('user.id', name='fk_%s_updated_by_id' % cls.__name__, use_alter=True),
  32. # nullable=False,
  33. default=_current_user_id_or_none,
  34. onupdate=_current_user_id_or_none
  35. )
  36.  
  37. @declared_attr
  38. def updated_by(cls):
  39. return relationship(
  40. 'User',
  41. primaryjoin='User.id == %s.updated_by_id' % cls.__name__,
  42. remote_side='User.id'
  43. )
  44.  
  45.  
  46. def _current_user_id_or_none():
  47. try:
  48. return current_user.id
  49. except:
  50. return None
Add Comment
Please, Sign In to add comment