Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Post(Entity):
- """
- A user-created post.
- """
- using_options(tablename='user_post')
- user = ManyToOne('User', primary_key=True, ondelete='cascade')
- post_id = Field(Integer, primary_key=True)
- actual_ts = Field(DateTime, default=datetime.utcnow, nullable=False)
- actual_tzoffset = Field(Integer)
- apparent_ts = Field(DateTime, default=datetime.utcnow, nullable=False)
- apparent_tzoffset = Field(Integer)
- mood = ManyToOne('Mood', ondelete='restrict')
- mood_name_db = Field(Unicode(30))
- location = Field(Unicode(200))
- music = Field(Unicode(200))
- title = Field(Unicode(300))
- userpic_keyword = Field(Unicode(40))
- post_tags = OneToMany('UserPostTag', order_by='name')
- has_many('tags', through='post_tags', via='user_tag')
- def set_mood_name(self, text):
- mood_name_db = text
- def get_mood_name(self):
- if (mood_name_db is None) and mood:
- mood_name_db = mood.name
- return mood_name_db
- mood_name = property(fget=get_mood_name, fset=set_mood_name)
- class UserPostTag(Entity):
- """
- A tag applied to a post.
- """
- using_options(tablename='user_post_tag')
- post = ManyToOne('Post', colname=['user_id', 'post_id'],
- primary_key=True, ondelete='cascade')
- name = Field(Unicode(40), primary_key=True)
- has_property('user_tag',
- lambda c: sa_relation(
- UserTag, primaryjoin=((c.user_id == UserTag.c.user_id) and \
- (c.name == UserTag.c.name)),
- foreign_keys=[UserTag.c.user_id, UserTag.c.name],
- uselist=False
- )
- )
- class UserTag(Entity):
- """
- Tags a user has used on various posts.
- """
- using_options(tablename='user_tag')
- user = ManyToOne('User', colname='user_id',
- primary_key=True, ondelete='cascade')
- name = Field(Unicode(40), primary_key=True)
- has_property('post_tags',
- lambda c: sa_relation(
- UserPostTag, primaryjoin=((c.user_id == UserPostTag.c.user_id) and \
- (c.name == UserPostTag.c.name)),
- foreign_keys=[UserPostTag.c.user_id, UserPostTag.c.name],
- order_by=['user_post_tag.post_id']
- )
- )
- has_many('posts', through='post_tags', via='post')
Add Comment
Please, Sign In to add comment