import uuid from django.contrib.auth.models import User from django.db import models # 权限等级 class Level(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) name = models.CharField('等级名', max_length=256, null=True, blank=True) level = models.IntegerField('级别', blank=True, null=True, default=0) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.name class Group_type(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) type = models.CharField('矩阵类型', max_length=256, null=True, blank=True) def __str__(self): return self.type # 矩阵 class Group(models.Model): GROUP_STATUS_CHOICES = ( ('0', '关闭'), ('1', '开启') ) id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) name = models.CharField('矩阵名称', max_length=256, null=True, blank=True) presentation = models.TextField('矩阵描述', null=True, blank=True) image = models.FileField(upload_to='groupimage', null=True, blank=True) type = models.ForeignKey( Group_type, on_delete=models.CASCADE, null=True, blank=True) status = models.CharField( '状态', max_length=256, null=True, blank=True, choices=GROUP_STATUS_CHOICES) province = models.CharField('省', max_length=256, null=True, blank=True) cities = models.CharField('市', max_length=256, null=True, blank=True) district = models.CharField('县', max_length=256, null=True, blank=True) town = models.CharField('乡', max_length=256, null=True, blank=True) village = models.CharField('村', max_length=256, null=True, blank=True) user = models.ForeignKey(User,on_delete=models.CASCADE,blank=True,null=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.name # 矩阵管理员 class Group_admin(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) user = models.ForeignKey( User, on_delete=models.CASCADE, null=True, blank=True) group = models.ForeignKey( Group, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.group.name # 矩阵成员 class Group_user(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) user = models.ForeignKey( User, on_delete=models.CASCADE, null=True, blank=True) group = models.ForeignKey( Group, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.user.username # 单位类型 class Organizationtype(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) organizationtype = models.CharField( '单位类型', blank=True, null=True, max_length=256) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.organizationtype # 单位 class Organization(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) name = models.CharField('单位名', max_length=256, null=True, blank=True) image = models.FileField(upload_to='cover', null=True, blank=True) organizationtype = models.ForeignKey( Organizationtype, on_delete=models.CASCADE, null=True, blank=True) province = models.CharField('省', max_length=256, null=True, blank=True) cities = models.CharField('市', max_length=256, null=True, blank=True) district = models.CharField('县', max_length=256, null=True, blank=True) town = models.CharField('乡', max_length=256, null=True, blank=True) village = models.CharField('村', max_length=256, null=True, blank=True) level = models.ForeignKey(Level,on_delete=models.CASCADE,null=True,blank=True) directly = models.CharField('直属',max_length=256,null=True,blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.name # 扩展用户表 class Userprofile(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField('姓名', null=True, blank=True, max_length=256) sex = models.CharField('性别', null=True, blank=True, max_length=256) department = models.CharField('部门', null=True, blank=True, max_length=256) post = models.CharField('职务', null=True, blank=True, max_length=256) image = models.FileField(upload_to='profile', null=True, blank=True) organization = models.ForeignKey( Organization, on_delete=models.CASCADE, null=True, blank=True) # 用户状态:注册进来默认为0,为未审核状态,审核后status=1 status = models.IntegerField('用户状态', null=True, blank=True, default=0) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) class Meta: ordering = ["-created"] def __str__(self): return self.user.username+":"+self.name def create_user_profile(sender, instance, created, **kwargs): """Create the UserProfile when a new User is saved""" if created: profile = Userprofile() profile.user = instance profile.save() class NewMedia(models.Model): NEWMEDIA_STATUS_CHOICES = ( ('1', '开启'), ('0', '关闭') ) id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) code = models.CharField('微信公众号', max_length=256, null=True, blank=True) alias = models.CharField('别名', max_length=256, null=True, blank=True) image = models.FileField( upload_to='cover/%Y/%m/%d/', null=True, blank=True) organization = models.ForeignKey( Organization, on_delete=models.CASCADE, null=True, blank=True) status = models.CharField( '状态', max_length=256, null=True, blank=True, choices=NEWMEDIA_STATUS_CHOICES) attention = models.CharField('关注量',null=True,blank=True,max_length=256) remark = models.CharField('备注',null=True,blank=True,max_length=2560) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) class Meta: abstract = True ordering = ["-created"] def __str__(self): return self.code + ':' + self.alias # 微信公众号 class Weixin(NewMedia): weixinid = models.CharField('微信ID', max_length=256, null=True, blank=True) # 微信文章采集 class Weixin_data(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) title = models.CharField('文章标题', max_length=256, null=True, blank=True) site = models.CharField('位置', max_length=256, null=True, blank=True) date = models.DateField('发文时间', max_length=256, null=True, blank=True) original = models.BooleanField('是否原创', null=True, blank=True) url = models.CharField('文章链接', max_length=256, null=True, blank=True) author = models.CharField('作者', max_length=256, null=True, blank=True) comment = models.CharField('评论数', max_length=256, null=True, blank=True) reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) content = models.TextField('正文', null=True, blank=True) weixin = models.ForeignKey( Weixin, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.title # 微信评论 class Weixin_comment(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) comment = models.TextField('评论', null=True, blank=True) user = models.CharField('用户', max_length=256, null=True, blank=True) reply = models.TextField('回复', null=True, blank=True) weixin = models.ForeignKey( Weixin, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.user # 微信错别字 class Weixin_Wrong(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) wrong = models.CharField('错别字', max_length=256, null=True, blank=True) idea = models.CharField('建议', max_length=256, null=True, blank=True) site = models.CharField('位置', max_length=256, null=True, blank=True) weixin = models.ForeignKey( Weixin, on_delete=models.CASCADE, null=True, blank=True) change = models.BooleanField('是否已修改', null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.wrong # 微博 class Weibo(NewMedia): weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) # 微博文章采集 class Weibo_data(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) content = models.TextField('正文', null=True, blank=True) url = models.CharField('文章url', max_length=256, null=True, blank=True) originalimageurl = models.CharField( '原始图片url', max_length=256, null=True, blank=True) transpondimageurl = models.CharField( '转发图片url', max_length=256, null=True, blank=True) original = models.BooleanField('是否原创', null=True, blank=True) site = models.CharField('发布位置', max_length=256, null=True, blank=True) date = models.DateField('发布时间', max_length=256, null=True, blank=True) tool = models.CharField('发布工具', max_length=256, null=True, blank=True) like = models.CharField('点赞数', max_length=256, null=True, blank=True) transpond = models.CharField('转发数', max_length=256, null=True, blank=True) comment = models.CharField('评论数', max_length=256, null=True, blank=True) title = models.CharField('文章标题', max_length=256, null=True, blank=True) weibo = models.ForeignKey( Weibo, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.title # 微博错别字 class Weibo_Wrong(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) wrong = models.CharField('错别字', max_length=256, null=True, blank=True) idea = models.CharField('建议', max_length=256, null=True, blank=True) site = models.CharField('位置', max_length=256, null=True, blank=True) weibo = models.ForeignKey( Weibo, on_delete=models.CASCADE, null=True, blank=True) change = models.BooleanField('是否已修改', null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) # 今日头条 class Toutiao(NewMedia): toutiaoid = models.CharField('头条ID', max_length=256, null=True, blank=True) # 今日头条数据 class Toutiao_data(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) title = models.CharField('标题', max_length=256, null=True, blank=True) url = models.CharField('链接', max_length=256, null=True, blank=True) img = models.CharField('缩略图', max_length=256, null=True, blank=True) count = models.CharField('阅读数', max_length=256, null=True, blank=True) commentcount = models.CharField( '评论数', max_length=256, null=True, blank=True) reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) date = models.DateField('时间', max_length=256, null=True, blank=True) content = models.TextField('正文', null=True, blank=True) comment = models.TextField('评论', null=True, blank=True) toutiao = models.ForeignKey( Toutiao, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.title # 今日头条评论 class Toutiao_comment(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) comment = models.TextField('评论', null=True, blank=True) user = models.CharField('用户', max_length=256, null=True, blank=True) reply = models.TextField('回复', null=True, blank=True) toutiao = models.ForeignKey( Toutiao, on_delete=models.CASCADE, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.user # 今日头条错别字 class Toutiao_Wrong(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) wrong = models.CharField('错别字', max_length=256, null=True, blank=True) idea = models.CharField('建议', max_length=256, null=True, blank=True) site = models.CharField('位置', max_length=256, null=True, blank=True) toutiao = models.ForeignKey( Toutiao, on_delete=models.CASCADE, null=True, blank=True) change = models.BooleanField('是否已修改', null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.wrong # 抖音 class Douyin(NewMedia): douyinid = models.CharField('抖音ID', max_length=256, null=True, blank=True) # 抖音数据 class Douyin_data(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) mewnedia = models.ForeignKey(Douyin, on_delete=models.CASCADE) count = models.CharField('总发文量', max_length=256, null=True, blank=True) count_jc = models.CharField( '监测时间内发文量', max_length=256, null=True, blank=True) comment = models.CharField('评论数', max_length=256, null=True, blank=True) reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) date = models.DateField('最近发文日期', max_length=256, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.mewnedia.code # 其他新媒体 class Qita(NewMedia): type = models.CharField('新媒体类型', max_length=256, null=True, blank=True) name = models.CharField('新媒体名称', max_length=256, null=True, blank=True) qitaid = models.CharField('新媒体ID', max_length=256, null=True, blank=True) def __str__(self): return self.name # 其他新媒体监测 class Qita_jc(models.Model): id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) mewnedia = models.ForeignKey(Qita, on_delete=models.CASCADE) count = models.CharField('总发文量', max_length=256, null=True, blank=True) count_jc = models.CharField( '监测时间内发文量', max_length=256, null=True, blank=True) comment = models.CharField('评论数', max_length=256, null=True, blank=True) reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) date = models.DateField('最近发文日期', max_length=256, null=True, blank=True) created = models.DateTimeField('创建时间', auto_now_add=True) updated = models.DateTimeField('更新时间', auto_now=True) def __str__(self): return self.mewnedia.name # 5级地名库 class Area_code_2020(models.Model): code = models.CharField('区划代码', max_length=256, null=True, blank=True) name = models.CharField('名称', max_length=256, null=True, blank=True) level = models.CharField( '级别1-5,省市县镇村', max_length=256, null=True, blank=True) pcode = models.CharField('父级区划代码', max_length=256, null=True, blank=True) def __str__(self): return self.name #新闻 class News(models.Model): NEWMEDIA_NEWS_CHOICES = ( ('0', '政策依据'), ('1', '基层动态'), ('2', '外省动态'), ('3', '监测通报'), ('4', '舆情热点') ) id = models.UUIDField('id',primary_key=True,default=uuid.uuid4) type = models.CharField('文章类型',max_length=256,null=True,blank=True,choices=NEWMEDIA_NEWS_CHOICES) source = models.CharField('文章来源',max_length=256,null=True,blank=True) title = models.CharField('文章标题',max_length=256,null=True,blank=True) image = models.FileField( upload_to='news/%Y/%m/%d/', null=True, blank=True) author = models.CharField('作者',max_length=256,null=True,blank=True) date = models.DateField('发表日期',null=True,blank=True,max_length=256) content = models.TextField('内容',null=True,blank=True) def __str__(self): return self.title