import datetime from django.db import models import logging import traceback from .tag import Tag from .topic import Topic class PictorialFollow(models.Model): """画报关注""" class Meta: verbose_name = u"画报用户关系" app_label = "community" db_table = "community_pictorial_follow" id = models.IntegerField(verbose_name=u'关注ID', primary_key=True) create_time = models.DateTimeField(verbose_name=u'创建时间', default=datetime.datetime.fromtimestamp(0)) update_time = models.DateTimeField(verbose_name=u'更新时间', default=datetime.datetime.fromtimestamp(0)) is_online = models.BooleanField(verbose_name=u'是否上线') is_deleted = models.BooleanField(verbose_name=u'是否删除') pictorial_id = models.BigIntegerField(verbose_name=u'画报ID') user_id = models.BigIntegerField(verbose_name=u'用户ID') class PictorialTopics(models.Model): """画报帖子关系""" class Meta: verbose_name = u'画报帖子关系' app_label = 'community' db_table = 'community_pictorial_topic' id = models.IntegerField(verbose_name=u'日记ID', primary_key=True) pictorial_id = models.BigIntegerField(verbose_name=u'画报ID') topic_id = models.BigIntegerField(verbose_name=u'帖子ID') is_online = models.BooleanField(verbose_name=u"是否有效", default=True) is_online = models.BooleanField(verbose_name=u'是否上线') is_deleted = models.BooleanField(verbose_name=u'是否删除') class Pictorial(models.Model): """画报关注""" class Meta: verbose_name = u"画报" app_label = "community" db_table = "community_pictorial" id = models.IntegerField(verbose_name=u'关注ID', primary_key=True) create_time = models.DateTimeField(verbose_name=u'创建时间', default=datetime.datetime.fromtimestamp(0)) update_time = models.DateTimeField(verbose_name=u'更新时间', default=datetime.datetime.fromtimestamp(0)) is_online = models.BooleanField(verbose_name=u'是否上线') is_deleted = models.BooleanField(verbose_name=u'是否删除') is_recommend = models.BooleanField(verbose_name=u'推荐') name = models.CharField(verbose_name=u'画报名称', max_length=100) description = models.CharField(verbose_name=u'画报描述', max_length=200) creator_id = models.BigIntegerField(verbose_name=u'画报用户ID') icon = models.CharField(verbose_name=u'画报名称', max_length=255) topic_num = models.IntegerField(verbose_name=u'次数') def get_topic_id(self): try: topic_id =[] topic_id_list = PictorialTopics.objects.filter(pictorial_id=self.id).values_list("topic_id", flat=True) for i in topic_id_list: topic_id.append(i) return topic_id except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return False def get_effective(self,topic_id_list): try: effective_num = 0 ret = False for topic_id in topic_id_list: topic_id_object = Topic.objects.filter(id=int(topic_id)).first() if topic_id_object and topic_id_object.is_online and int(topic_id_object.content_level) in [0,3,4,5]: effective_num += 1 if effective_num >= 5: ret = True break return ret except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return False # 获取前一天4,5星发帖数 def get_high_quality_topic_num(self): try: yesterday = datetime.datetime.now() - datetime.timedelta(days=1) yesterday_begin_time = "%s-%s-%s 00:00:00" % (yesterday.year, yesterday.month, yesterday.day) yesterday_end_time = "%s-%s-%s 23:59:59" % (yesterday.year, yesterday.month, yesterday.day) topic_id_list = PictorialTopics.objects.filter(pictorial_id=self.id).values_list("topic_id", flat=True) topic_num = Topic.objects.filter(content_level__in=["4", "5"], create_time__gte=yesterday_begin_time, create_time__lte=yesterday_end_time, id__in=topic_id_list).count() return topic_num except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return False def get_tag_by_id(self): try: tag_id_list = [] tags = PictorialTag.objects.filter(pictorial_id=self.id, is_online=True).values_list("tag_id", flat=True) for i in tags: tag_id_list.append(i) return tag_id_list except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return False def get_tag_by_name(self, tag_id): try: tag_name_list = [] tags = Tag.objects.filter(id__in=tag_id, is_online=True).values_list("name", flat=True) for i in tags: tag_name_list.append(i) return tag_name_list except: logging.error("catch exception,err_msg:%s" % traceback.format_exc()) return False class PictorialTag(models.Model): """画报关注标签""" class Meta: verbose_name = u"画报标签" app_label = "community" db_table = "community_pictorial_tag" id = models.IntegerField(verbose_name=u'关注ID', primary_key=True) create_time = models.DateTimeField(verbose_name=u'创建时间', default=datetime.datetime.fromtimestamp(0)) update_time = models.DateTimeField(verbose_name=u'更新时间', default=datetime.datetime.fromtimestamp(0)) pictorial_id = models.BigIntegerField(verbose_name=u'画报ID', max_length=20) tag_id = models.BigIntegerField(verbose_name=u'标签ID', max_length=20) is_online = models.BooleanField(verbose_name=u'是否上线', max_length=1)