class PowerLog(models.Document): belong_to = models.StringField(default="", max_length=100) #对应的活动id power_member_id = models.LongField() #助力者id be_powered_member_id = models.LongField() #被助力者id created_at = models.DateTimeField(default=datetime.now()) #创建时间 meta = {'collection': 'powerme_powered_log', 'db_alias': 'apps'}
class Karma(mongoengine.Document): id = mongoengine.SequenceField(primary_key=True) chat_id = mongoengine.LongField(required=True) message_id = mongoengine.LongField(required=True) response_message_id = mongoengine.LongField(null=True) message = mongoengine.StringField(required=True) giver_user_id = mongoengine.LongField(required=True) giver_username = mongoengine.StringField(required=True) receiver_user_id = mongoengine.LongField(required=True) receiver_username = mongoengine.StringField(required=True) vote = mongoengine.IntField(required=True) date_added = mongoengine.DateTimeField(default=localized_date) date_modified = mongoengine.DateTimeField(default=localized_date) date_deleted = mongoengine.DateTimeField(required=False, null=True) @classmethod def by_id(cls, id): try: return cls.objects.get(id=id) except cls.DoesNotExist: return None @classmethod def by_chat_id_and_receiver_user_id(cls, chat_id, receiver_user_id): try: return cls.objects.get(chat_id=chat_id, receiver_user_id=receiver_user_id) except cls.DoesNotExist: return None
class Comment(me.Document): """ Schema for Comment created using 'mongoengine' Fields: time_index (long): This is an integer which determines time sorted index. comment_id (str): ID of the comment provided by Youtube. channel_id (str): Author ID of the comment referenced to Channel. channel_title (str): Author name of the comment referenced to Channel. channel_thumbnail (url): Url for pic of channel. video_id (str): Video of the comment. text (str): Content of the comment. likes (long): Number of likes for the comment. time (str): Passed time after commented as string representation. edited (bool): If comment is edited, value is True. timestamp (long): Timestamp of comment. has_replies (bool): If the comment is replied its value is True. """ time_index = me.LongField(required=True, default=0) comment_id = me.StringField(primary_key=True) channel_id = me.ReferenceField('Channel', required=True) channel_title = me.StringField(required=True) channel_thumbnail = me.URLField(required=True) video_id = me.ReferenceField('Video', required=True) text = me.MultiLineStringField(required=True) likes = me.LongField(required=True, default=0) time = me.StringField(required=True) edited = me.BooleanField(required=True, default=False) timestamp = me.LongField(required=True) has_replies = me.BooleanField(required=True, default=False) sentiment_category = me.StringField(choices=SENTIMENT_CATEGORIES)
class PageRankInfoDTO(mongo.EmbeddedDocument): """A DTO wrapper for information related to PageRank.""" total_with_self = mongo.LongField(min_value=0, db_field='ts') total = mongo.LongField(min_value=0, db_field='t') references = mongo.ListField( field=mongo.EmbeddedDocumentField(document_type=PageRankVectorDTO), db_field='r')
class RedPacketLog(models.Document): belong_to = models.StringField(default="", max_length=100) #对应的活动id helper_member_id = models.LongField() #帮助者id help_money = models.FloatField(default=0) #帮助金额 be_helped_member_id = models.LongField() #被帮助者id created_at = models.DateTimeField(default=datetime.now()) #创建时间 meta = {'collection': 'red_packet_red_packet_log', 'db_alias': 'apps'}
class feedbackParticipance(models.Document): webapp_user_id = models.LongField(default=0) #参与者id member_id = models.LongField(default=0) #参与者id tel = models.StringField(default="", max_length=100) termite_data = models.DynamicField(default="") #termite数据 prize = models.DynamicField(default="") #反馈奖励 created_at = models.DateTimeField() #创建时间 meta = {'collection': 'feedback_feedback_participance', 'db_alias': 'apps'}
class lotteryParticipance(models.Document): webapp_user_id = models.LongField(default=0) #参与者id member_id = models.LongField(default=0) #参与者id belong_to = models.StringField(default="", max_length=100) #对应的活动id has_prize = models.BooleanField(default=False) #是否中奖 total_count = models.IntField(default=0) #已参与次数 can_play_count = models.IntField(default=0) #可参与次数 lottery_date = models.DateTimeField() #最近一次抽奖时间 meta = {'collection': 'lottery_lottery_participance', 'db_alias': 'apps'}
class PowerMeControl(models.Document): member_id = models.LongField(default=0) #参与者id powered_member_id = models.LongField(default=0) #被助力者id belong_to = models.StringField(default="", max_length=100) #对应的活动id powerme_control = models.StringField( default="", max_length=100, unique_with=['belong_to', 'member_id', 'powered_member_id']) meta = {'collection': 'powerme_powerme_control', 'db_alias': 'apps'}
class PoweredLimitRelation(models.Document): """ 限制的微助力的log """ belong_to = models.StringField(default="", max_length=100) #对应的活动id member_id = models.LongField() #助力者的id powered_member_id = models.LongField() #被助力者id created_at = models.DateTimeField() #创建时间 meta = {'collection': 'powerme_powered_limit_relation', 'db_alias': 'apps'}
class eventParticipance(models.Document): webapp_user_id = models.LongField(default=0) #参与者id member_id = models.LongField(default=0) #参与者id belong_to = models.StringField(default="", max_length=100) #对应的活动id tel = models.StringField(default="", max_length=100) termite_data = models.DynamicField(default="") #termite数据 prize = models.DynamicField(default="") #活动奖励 created_at = models.DateTimeField() #创建时间 meta = {'collection': 'event_event_participance', 'db_alias': 'apps'}
class ChatRoom(gj.Document): meta = {'queryset_class': fm.BaseQuerySet} title = db.StringField(max_length=500) members = db.SortedListField(db.ReferenceField(User), reverse_delete_rule=db.CASCADE) members_history = db.ListField(db.ReferenceField(User), reverse_delete_rule=db.CASCADE) messages = db.EmbeddedDocumentListField(Message) created_at = db.LongField(required=True) available = db.BooleanField(required=True, default=False) available_at = db.LongField()
class User(gj.Document): meta = {'queryset_class': fm.BaseQuerySet} uid = db.StringField() nick_name = db.StringField() sex = db.StringField() birthed_at = db.LongField() height = db.IntField() body_id = db.IntField() occupation = db.StringField() education = db.StringField() religion_id = db.IntField() drink_id = db.IntField() smoking_id = db.IntField() blood_id = db.IntField() r_token = db.StringField() location = db.PointField() introduction = db.StringField() joined_at = db.LongField() last_login_at = db.LongField() job = db.StringField() area = db.StringField() phone = db.StringField() user_images = db.SortedListField(db.EmbeddedDocumentField(UserImage), ordering="index") user_images_temp = db.SortedListField(db.EmbeddedDocumentField(UserImage), ordering="index") charm_ids = db.ListField(db.IntField()) ideal_type_ids = db.ListField(db.IntField()) interest_ids = db.ListField(db.IntField()) available = db.BooleanField(default=False) status = db.IntField(default=0) # -10, 0, 10 @property def posts(self): posts = Post.objects(author=self).order_by("-created_at").all() for post in posts: post.favorite_users = [] post.comments.sort(key=lambda x: x.created_at, reverse=True) return posts def list_requests_like_me(self, response=None): return Request.objects(user_to=self, response=response).all() def list_requests_i_like(self, response=None): return Request.objects(user_from=self, response=response).all() def list_chat_rooms(self): return ChatRoom.objects(members=self).all() def list_users_rated_me_high(self): star_ratings = StarRating.objects(user_to=self, score__gte=4).all() return [star_rating.user_from for star_rating in star_ratings]
class RebateWeizoomCardDetails(models.Document): """ 发放返利微众卡的详情记录 """ record_id = models.StringField(default="", max_length=100) #对应的活动id order_id = models.StringField( default="", max_length=100) #对应返利订单的order_id,注意,不是order.id !! member_id = models.LongField(default=0) #返利的会员 weizoom_card_id = models.LongField(default=0) #返利的微众卡id created_at = models.DateTimeField() #发放时间 meta = {'collection': 'rebate_weizoom_card_details', 'db_alias': 'apps'}
class PoweredDetail(models.Document): """ 助力详情表 """ belong_to = models.StringField(default="", max_length=100) #对应的活动id owner_id = models.LongField() power_member_id = models.LongField() #助力者id power_member_name = models.StringField(default='', max_length=1024) #助力者昵称 has_powered = models.BooleanField(default=False) #是否已助力(针对未关注用户) created_at = models.DateTimeField() #创建时间 meta = {'collection': 'powerme_powered_detail', 'db_alias': 'apps'}
class Request(gj.Document): meta = {'queryset_class': fm.BaseQuerySet} user_from = db.ReferenceField(User, required=True, reverse_delete_rule=db.CASCADE) user_to = db.ReferenceField(User, required=True, reverse_delete_rule=db.CASCADE) requested_at = db.LongField() request_type_id = db.IntField(required=True) response = db.IntField() responded_at = db.LongField()
class OrderEvaluates(models.Document): """ 订单评价 """ owner_id = models.LongField() member_id = models.LongField() #评价用户 order_id = models.StringField(default='', max_length=50, unique=True) # Order.order_id !!! serve_score = models.IntField(default=5) # 服务态度评分 deliver_score = models.IntField(default=5) # 发货速度评分 process_score = models.IntField(default=5) # 物流服务评分 old_id = models.LongField(default=0) #mysql中的id,用于迁移数据 meta = {'collection': 'evaluate_order_evaluates', 'db_alias': 'apps'}
class RedPacketDetail(models.Document): """ 拼红包详情表 """ belong_to = models.StringField(default="", max_length=100) #对应的活动id owner_id = models.LongField() #被帮助者id helper_member_id = models.LongField() #帮助者id helper_member_name = models.StringField(default='', max_length=1024) #帮助者昵称 help_money = models.FloatField(default=0) #帮助金额 has_helped = models.BooleanField(default=False) #是否已帮助(针对未关注用户) is_valid = models.BooleanField(default=True) #该条记录是否有效(针对取关后再次关注的情况) created_at = models.DateTimeField() #创建时间 meta = {'collection': 'red_packet_red_packet_detail', 'db_alias': 'apps'}
class OrganizationDTO(mongo.Document): """A DTO wrapper for Organization documents.""" name = mongo.StringField(db_field='n') address = mongo.StringField(db_field='a') latlng = mongo.ListField(db_field='l') types = mongo.ListField(mongo.IntField(), db_field='ts') phone_numbers = mongo.ListField(db_field='ns') email_key = mongo.EmailField(db_field='ek') emails = mongo.ListField(db_field='es') contacts = mongo.ListField(mongo.ReferenceField(ContactDTO), db_field='cs') user_contacts = mongo.ListField(mongo.ReferenceField('UserDTO'), db_field='us') organization_url = mongo.StringField(db_field='u') partners = mongo.ListField(mongo.ReferenceField('self'), db_field='ps') facebook = mongo.URLField(db_field='f') twitter = mongo.URLField(db_field='t') keywords = mongo.StringField(db_field='ks') valid = mongo.BooleanField(db_field='v', default=True) last_updated = mongo.DateTimeField(db_field='lu') updated_by = mongo.ObjectIdField(db_field='ub') page_rank_info = mongo.EmbeddedDocumentField(document_type=PageRankInfoDTO, db_field='r') page_rank = mongo.LongField(min_value=0, db_field='pr') page_rank_weight = mongo.FloatField(min_value=0.0, max_value=1.0, db_field='w') content_weight = mongo.FloatField(min_value=0.0, db_field='c') combined_weight = mongo.FloatField(min_value=0.0, db_field='cw')
class event(models.Document): owner_id = models.LongField() #创建人id name = models.StringField(default="", max_length=100) #名称 start_time = models.DateTimeField() #开始时间 end_time = models.DateTimeField() #结束时间 status = models.IntField(default=0) #状态 participant_count = models.IntField(default=0) #参与者数量 related_page_id = models.StringField(default="", max_length=100) #termite page的id created_at = models.DateTimeField() #创建时间 meta = {'collection': 'event_event', 'db_alias': 'apps'} @property def status_text(self): if self.status == STATUS_NOT_START: return u'未开始' elif self.status == STATUS_RUNNING: now = datetime.today() if now >= self.end_time: return u'已结束' else: return u'进行中' elif self.status == STATUS_STOPED: return u'已结束' else: return u'未知' @property def is_finished(self): status_text = self.status_text if status_text == u'已结束': return True else: return False
class RebateParticipance(models.Document): member_id = models.LongField(default=0) #参与者id belong_to = models.StringField(default="", max_length=100) #对应的活动id created_at = models.DateTimeField() #扫码时间 is_new = models.BooleanField(default=True) #扫码之前没有关注过则为True meta = {'collection': 'rebate_rebate_participance', 'db_alias': 'apps'}
class exSign(models.Document): owner_id = models.LongField() #创建人id name = models.StringField(default="", max_length=100) #名称 share = models.DynamicField(default="") #分享设置 # reply = models.DynamicField(default="") #自动回复设置 prize_settings = models.DynamicField(default="") #签到奖项设置 status = models.IntField(default=0) #状态 participant_count = models.IntField(default=0) #参与者数量 related_page_id = models.StringField(default="", max_length=100) #termite page的id created_at = models.DateTimeField() #创建时间 meta = {'collection': 'exsign_exsign', 'db_alias': 'apps'} @property def status_text(self): return (u'未开始', u'进行中', u'已结束')[int(self.status)] @property def is_finished(self): status_text = self.status_text if status_text == u'已结束': return True else: return False
class User(mongo.DynamicDocument): first_name = mongo.StringField(required=True) last_name = mongo.StringField(required=True) display_name = mongo.StringField(required=True) verification_code = mongo.StringField(required=False) email = mongo.EmailField(required=True, unique=True) role = mongo.IntField(required=True, default=Role.USER) facebook_id = mongo.LongField( required=False) # Facebook ID is numeric but can be pretty big twitter_id = mongo.StringField( required=False) # Twitter ID is alphanumeric address = mongo.StringField(required=False) zip_code = mongo.StringField(required=False) country_code = mongo.StringField(min_length=2, max_length=2, required=False) # follows ISO_3166-1 tel = mongo.StringField(required=False) # contact number @property def role_type(self): return Role.get_role_type(self.role) def role_satisfy(self, role): return self.role >= role
class MongoDocument(mongoengine.DynamicDocument): """ DynamicDocument for the mongodb insert """ meta = {'collection': create_collection_name} id = mongoengine.LongField(primary_key=True) created_at = mongoengine.DateTimeField()
class ExlotteryCode(models.Document): owner_id = models.LongField() # 创建人id belong_to = models.StringField(default="", max_length=100) # 对应的专项抽奖活动id code = models.StringField(default="", max_length=20, unique=True) #抽奖码 created_at = models.DateTimeField() # 创建时间 use_time = models.DateTimeField(default=DEFAULT_TIME) # 抽奖码使用时间 meta = {'collection': 'exlottery_code', 'db_alias': 'apps'}
class PageRankVectorDTO(mongo.EmbeddedDocument): """A DTO wrapper for counting referenced organizations.""" org_domain = mongo.StringField(db_field='o') count = mongo.LongField(min_value=0, db_field='c') pages = mongo.ListField( field=mongo.EmbeddedDocumentField(document_type=UrlCountPairDTO), db_field='p')
class Subtopic(mongoengine.Document): chat_id = mongoengine.LongField(required=True) text = mongoengine.StringField(required=True) user_id = mongoengine.LongField(required=True) username = mongoengine.StringField() date_added = mongoengine.DateTimeField(default=localized_date) date_modified = mongoengine.DateTimeField(default=localized_date) date_deleted = mongoengine.DateTimeField(required=False, null=True) def __repr__(self): return self.text def __str__(self): return self.__repr__()
class exSignControl(models.Document): member_id = models.LongField(default=0) #参与者id belong_to = models.StringField(default="", max_length=100) #对应的活动id sign_control = models.StringField(default="", max_length=100, unique_with=['belong_to', 'member_id']) meta = {'collection': 'exsign_exsign_control', 'db_alias': 'apps'}
class Conversation(db.Document): meta = { 'strict': False, 'queryset_class': fm.BaseQuerySet, 'index_opts': INDEX_OPTS, 'index_background': INDEX_BACKGROUND, 'index_cls': INDEX_CLS, 'auto_create_index': AUTO_CREATE_INDEX, 'indexes': ['participants'] } title = db.StringField(max_length=500) participants = db.SortedListField(db.ReferenceField(User), reverse_delete_rule=db.CASCADE) references = db.ListField(db.ReferenceField(User), reverse_delete_rule=db.CASCADE) messages = db.EmbeddedDocumentListField(EmbeddedMessage) created_at = db.LongField(required=True) available = db.BooleanField(required=True, default=False) available_at = db.LongField()
class EvaluatesRelatedProducts(models.Document): """ 已经关联过的商品 """ belong_to = models.StringField(default="", max_length=100) # 对应的评价关联id owner_id = models.LongField() #商家id product_id = models.IntField() #商品id meta = {'collection': 'evaluate_related_products', 'db_alias': 'apps'}
class User(mongoengine.Document): user_id = mongoengine.LongField(required=True) domains = mongoengine.EmbeddedDocumentListField(Domain) meta = { 'db_alias': 'core', 'collection': 'users' }