Guest User

Untitled

a guest
Feb 19th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. class Post(Entity):
  2. """
  3. A user-created post.
  4. """
  5. using_options(tablename='user_post')
  6. user = ManyToOne('User', primary_key=True, ondelete='cascade')
  7. post_id = Field(Integer, primary_key=True)
  8. actual_ts = Field(DateTime, default=datetime.utcnow, nullable=False)
  9. actual_tzoffset = Field(Integer)
  10. apparent_ts = Field(DateTime, default=datetime.utcnow, nullable=False)
  11. apparent_tzoffset = Field(Integer)
  12. mood = ManyToOne('Mood', ondelete='restrict')
  13. mood_name_db = Field(Unicode(30))
  14. location = Field(Unicode(200))
  15. music = Field(Unicode(200))
  16. title = Field(Unicode(300))
  17. userpic_keyword = Field(Unicode(40))
  18. post_tags = OneToMany('UserPostTag', order_by='name')
  19. has_many('tags', through='post_tags', via='user_tag')
  20.  
  21. def set_mood_name(self, text):
  22. mood_name_db = text
  23. def get_mood_name(self):
  24. if (mood_name_db is None) and mood:
  25. mood_name_db = mood.name
  26. return mood_name_db
  27. mood_name = property(fget=get_mood_name, fset=set_mood_name)
  28.  
  29.  
  30. class UserPostTag(Entity):
  31. """
  32. A tag applied to a post.
  33. """
  34. using_options(tablename='user_post_tag')
  35.  
  36. post = ManyToOne('Post', colname=['user_id', 'post_id'],
  37. primary_key=True, ondelete='cascade')
  38. name = Field(Unicode(40), primary_key=True)
  39. has_property('user_tag',
  40. lambda c: sa_relation(
  41. UserTag, primaryjoin=((c.user_id == UserTag.c.user_id) and \
  42. (c.name == UserTag.c.name)),
  43. foreign_keys=[UserTag.c.user_id, UserTag.c.name],
  44. uselist=False
  45. )
  46. )
  47.  
  48.  
  49. class UserTag(Entity):
  50. """
  51. Tags a user has used on various posts.
  52. """
  53. using_options(tablename='user_tag')
  54.  
  55. user = ManyToOne('User', colname='user_id',
  56. primary_key=True, ondelete='cascade')
  57. name = Field(Unicode(40), primary_key=True)
  58. has_property('post_tags',
  59. lambda c: sa_relation(
  60. UserPostTag, primaryjoin=((c.user_id == UserPostTag.c.user_id) and \
  61. (c.name == UserPostTag.c.name)),
  62. foreign_keys=[UserPostTag.c.user_id, UserPostTag.c.name],
  63. order_by=['user_post_tag.post_id']
  64. )
  65. )
  66. has_many('posts', through='post_tags', via='post')
Add Comment
Please, Sign In to add comment