From f0b2c9fdcf16f8f4472c6b9f4c51f3ff24e9186d Mon Sep 17 00:00:00 2001 From: xieshen <1397910458@qq.com> Date: Tue, 17 Nov 2020 09:03:09 +0800 Subject: [PATCH 1/4] #add message --- backstage/views.py | 43 +++++++++++++++++-- dashboard/views.py | 1 + .../newmedia-management-edit-douyin.html | 10 +++-- .../newmedia-management-edit-qita.html | 8 ++-- .../newmedia-management-edit-toutiao.html | 10 +++-- .../newmedia-management-edit-weibo.html | 10 +++-- .../newmedia-management-edit-weixin.html | 10 +++-- .../templates/management/user-management.html | 4 +- management/views.py | 30 +++++++------ test.py | 40 ++--------------- 10 files changed, 90 insertions(+), 76 deletions(-) diff --git a/backstage/views.py b/backstage/views.py index f85f2c5..b3503cb 100644 --- a/backstage/views.py +++ b/backstage/views.py @@ -1,11 +1,14 @@ import os +import re import xlrd +from django.contrib import messages from django.http import HttpResponse from django.shortcuts import render # Create your views here. from NewMediaMonitoring import settings +from dashboard.models import TimelinessMonitoring def backstage_new_media_public_opinion(request): @@ -18,7 +21,39 @@ def backstage_new_media_public_opinion(request): # ncols = sheet.ncols table = workbook.sheets()[0] for row in range(table.nrows): - v = table.row_values(row)[0] - if v != '账号名称': - print(table.row_values(row)[0]) - return render(request,'backstage/backstage_new_media_public_opinion.html') \ No newline at end of file + v = table.row_values(row) + if v[0] != '新媒体类型' or v[1] != '新媒体名称' or v[2] != '主体类型' or v[3] != '代表主体名称' or v[4] != '市' or v[ + 6] != '备注' or v[7] != '结果' or v[8] != '更新次数' or v[9] != '最大连续静默日数' or v[10] != '开始时间' or v[ + 11] != '结束时间': + messages.error(request, '请上传正确的文件格式!!!') + return render(request, 'backstage/backstage_new_media_public_opinion.html') + mat1 = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", v[10]) + mat2 = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", v[11]) + if mat1 is None or mat2 is None: + messages.error(request, '请上传正确的时间格式!!!') + return render(request, 'backstage/backstage_new_media_public_opinion.html') + if v[8].isdigit() and v[9].isdigit(): + if v != '账号名称': + n_type = v[0] + n_name = v[1] + o_type = v[2] + o_name = v[3] + city = v[4] + counties = v[5] + remark = v[6] + results = v[7] + update = v[8] + silet = v[9] + start_data = v[10] + end_data = v[11] + timelinessmonitoring = TimelinessMonitoring(n_type=n_type, n_name=n_name, o_type=o_type, o_name=o_name, + city=city, counties=counties, remark=remark, + results=results, update=update, silet=silet, + start_data=start_data, end_data=end_data,) + print(timelinessmonitoring) + + else: + messages.error(request, '更新次数和最大连续静默日数只能为数字!!!') + return render(request, 'backstage/backstage_new_media_public_opinion.html') + + return render(request, 'backstage/backstage_new_media_public_opinion.html') diff --git a/dashboard/views.py b/dashboard/views.py index 05ea3f4..d05fbca 100644 --- a/dashboard/views.py +++ b/dashboard/views.py @@ -471,6 +471,7 @@ def user_search_by_keyword(request): for u in userpaginator[:30]: o = dict() o['id'] = str(u.id) + o['user_id'] = str(u.user_id) if u.image: o['image'] = u.image o['name'] = u.name diff --git a/management/templates/management/newmedia-management-edit-douyin.html b/management/templates/management/newmedia-management-edit-douyin.html index 20bc385..c681fee 100644 --- a/management/templates/management/newmedia-management-edit-douyin.html +++ b/management/templates/management/newmedia-management-edit-douyin.html @@ -28,7 +28,7 @@
@@ -62,9 +62,11 @@ {% for w in res %} {{ forloop.counter }} - + {{ w.code }} {{ w.douyinid }} {{ w.organization }} diff --git a/management/templates/management/newmedia-management-edit-qita.html b/management/templates/management/newmedia-management-edit-qita.html index 7ee50f6..b0b4f2f 100644 --- a/management/templates/management/newmedia-management-edit-qita.html +++ b/management/templates/management/newmedia-management-edit-qita.html @@ -64,9 +64,11 @@ {% for w in res %} {{ forloop.counter }} - + {{ w.type }} {{ w.name }} {{ w.qitaid }} diff --git a/management/templates/management/newmedia-management-edit-toutiao.html b/management/templates/management/newmedia-management-edit-toutiao.html index 57456f4..acd3659 100644 --- a/management/templates/management/newmedia-management-edit-toutiao.html +++ b/management/templates/management/newmedia-management-edit-toutiao.html @@ -28,7 +28,7 @@
@@ -62,9 +62,11 @@ {% for w in res %} {{ forloop.counter }} - + {{ w.code }} {{ w.toutiaoid }} {{ w.organization }} diff --git a/management/templates/management/newmedia-management-edit-weibo.html b/management/templates/management/newmedia-management-edit-weibo.html index 61d4cc6..0e95f85 100644 --- a/management/templates/management/newmedia-management-edit-weibo.html +++ b/management/templates/management/newmedia-management-edit-weibo.html @@ -28,7 +28,7 @@
@@ -63,9 +63,11 @@ {% for w in res %} {{ forloop.counter }} - + {{ w.code }} {{ w.weiboid }} {{ w.organization }} diff --git a/management/templates/management/newmedia-management-edit-weixin.html b/management/templates/management/newmedia-management-edit-weixin.html index a156793..554b610 100644 --- a/management/templates/management/newmedia-management-edit-weixin.html +++ b/management/templates/management/newmedia-management-edit-weixin.html @@ -28,7 +28,7 @@
@@ -62,9 +62,11 @@ {% for w in res %} {{ forloop.counter }} - + {{ w.code }} {{ w.weixinid }} {{ w.organization }} diff --git a/management/templates/management/user-management.html b/management/templates/management/user-management.html index 94503e1..f663d01 100644 --- a/management/templates/management/user-management.html +++ b/management/templates/management/user-management.html @@ -51,7 +51,7 @@ 序号 头像 姓名 - 电话^ + 电话 单位名称 {# 单位类型#} 行政区划 @@ -71,7 +71,7 @@ {# {{ u.type }}#} {{ u.administrativedivision }} - 删除 diff --git a/management/views.py b/management/views.py index 00c11d1..9fa4ee6 100644 --- a/management/views.py +++ b/management/views.py @@ -24,16 +24,16 @@ def user_management(request): district = o.district userpaginator = None if level == 1: - userpaginator = User.objects.filter(userprofile__organization__province=province).order_by('-date_joined') + userpaginator = Userprofile.objects.filter(organization__province=province).order_by('-created') elif level == 2: - userpaginator = User.objects.filter(userprofile__organization__province=province, - userprofile__organization__cities=cities).order_by('-date_joined') + userpaginator = Userprofile.objects.filter(organization__province=province, + organization__cities=cities).order_by('-created') elif level == 3: - userpaginator = User.objects.filter(userprofile__organization__province=province, - userprofile__organization__cities=cities, - userprofile__organization__district=district).order_by('-date_joined') + userpaginator = Userprofile.objects.filter(organization__province=province, + organization__cities=cities, + organization__district=district).order_by('-created') elif level == 9: - userpaginator = User.objects.all().order_by('-date_joined') + userpaginator = Userprofile.objects.all().order_by('-created') userallinfo = [] if userpaginator is not None: paginator = Paginator(userpaginator, 6) @@ -48,12 +48,13 @@ def user_management(request): for u in userpaginator: o = dict() o['id'] = str(u.id) - if u.userprofile_set.get(user_id=u.id).image: - o['image'] = u.userprofile_set.get(user_id=u.id).image - o['name'] = u.userprofile_set.get(user_id=u.id).name - o['phone'] = u.username - o['organization'] = u.userprofile_set.get(user_id=u.id).organization.name - organization_id = Userprofile.objects.get(user_id=u.id).organization_id + o['user_id'] = str(u.user_id) + if u.image: + o['image'] = u.image + o['name'] = u.name + o['phone'] = u.user.username + o['organization'] = u.organization.name + organization_id = u.organization.id print(organization_id) if Organization.objects.get(id=organization_id).province and Organization.objects.get( id=organization_id).cities and Organization.objects.get( @@ -100,8 +101,9 @@ def user_management(request): @login_required def user_delete(request, pk): + print(pk) user = User.objects.get(id=pk) - user.delete() + # user.delete() return HttpResponseRedirect('/management/user/management/') diff --git a/test.py b/test.py index 116b654..ef1bb8c 100644 --- a/test.py +++ b/test.py @@ -1,38 +1,4 @@ -# -*- coding: utf-8 -*- -import csv import re -import uuid -import os -import psycopg2 - -from pip._vendor import chardet - -# G1 = 'host=210.77.68.250 port=5432 dbname=g214_test user=g214 password=g214G214' -G2 = 'host=210.77.68.250 port=5432 dbname=newmediaDB1 user=newmedia password=newmedia2020!@#' - - -def insert_area(title,date, code,content): - with psycopg2.connect(G2) as connection: - with connection.cursor() as cursor: - id = uuid.uuid4() - cursor.execute( - 'insert into monitor_test(id, title,date, code,content) values (%s,%s, %s,%s,%s)' - , (str(id),title,date, code,content)) - connection.commit() - return code - - -if __name__ == '__main__': - - with open('D:/2020/舆论监测平台/新媒体监测数据/天水/天水20200822-20200922/天水20200822-20200922数据整理/天水微信正文.csv',encoding='utf8') as csvfile: - reader = csv.reader(csvfile) - try: - for r in reader: - print(r) - title = r[0] - date = r[1] - code = r[2] - content = r[5] - insert_area(title, date, code, content) - except: - pass +s = '2020-10-9' +mat = re.search(r"(\d{4}-\d{1,2}-\d{1,2})",s) +print(mat) \ No newline at end of file From e034d3f8c927ffb277a51d1db32521004a692b28 Mon Sep 17 00:00:00 2001 From: xieshen <1397910458@qq.com> Date: Tue, 17 Nov 2020 18:25:42 +0800 Subject: [PATCH 2/4] #add message --- NewMediaMonitoring/settings.py | 1 - .../backstage_new_media_public_opinion.html | 10 +- backstage/views.py | 101 +++++++++++------- dashboard/models.py | 5 +- dashboard/templates/dashboard/base/left.html | 2 +- management/urls.py | 2 +- 6 files changed, 74 insertions(+), 47 deletions(-) diff --git a/NewMediaMonitoring/settings.py b/NewMediaMonitoring/settings.py index 6a4057a..8bebb98 100644 --- a/NewMediaMonitoring/settings.py +++ b/NewMediaMonitoring/settings.py @@ -159,7 +159,6 @@ MEDIA_ROOT = '/var/www/p3/newmediamonitoring/media/' """用户模块扩展部分""" AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile' """用户模块扩展完成""" -UPLOAD_ROOT = os.path.join(BASE_DIR,'/static/upload') CORS_ORIGIN_ALLOW_ALL = True CORS_URLS_REGEX = r'^/polls/.*$' diff --git a/backstage/templates/backstage/backstage_new_media_public_opinion.html b/backstage/templates/backstage/backstage_new_media_public_opinion.html index 79fcc2a..a12b09e 100644 --- a/backstage/templates/backstage/backstage_new_media_public_opinion.html +++ b/backstage/templates/backstage/backstage_new_media_public_opinion.html @@ -32,11 +32,17 @@
新媒体舆情数据录入
-
{% csrf_token %} + {% csrf_token %} +
+ + +
-

请上传excel文件

+

请上传csv文件(文件表头依次为:新媒体类型,新媒体名称,主体类型,代表主体名称,市,县/区,备注,结果,更新次数,最大连续静默日数,开始时间,结束时间。时间格式为(2020/11/17).更新次数和最大连续静默日必须是数字)

diff --git a/backstage/views.py b/backstage/views.py index b3503cb..63c71af 100644 --- a/backstage/views.py +++ b/backstage/views.py @@ -1,59 +1,78 @@ +import csv import os import re import xlrd from django.contrib import messages -from django.http import HttpResponse +from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render # Create your views here. from NewMediaMonitoring import settings +from NewMediaMonitoring.local_settings import MEDIA_ROOT from dashboard.models import TimelinessMonitoring def backstage_new_media_public_opinion(request): if request.method == 'POST': filename = request.FILES.get('file') - workbook = xlrd.open_workbook(settings.UPLOAD_ROOT + "/" + str(filename)) - # sheet = readboot.sheet_by_index(0) - # # 获取excel的行和列 - # nrows = sheet.nrows - # ncols = sheet.ncols - table = workbook.sheets()[0] - for row in range(table.nrows): - v = table.row_values(row) - if v[0] != '新媒体类型' or v[1] != '新媒体名称' or v[2] != '主体类型' or v[3] != '代表主体名称' or v[4] != '市' or v[ - 6] != '备注' or v[7] != '结果' or v[8] != '更新次数' or v[9] != '最大连续静默日数' or v[10] != '开始时间' or v[ - 11] != '结束时间': - messages.error(request, '请上传正确的文件格式!!!') - return render(request, 'backstage/backstage_new_media_public_opinion.html') - mat1 = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", v[10]) - mat2 = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", v[11]) - if mat1 is None or mat2 is None: - messages.error(request, '请上传正确的时间格式!!!') - return render(request, 'backstage/backstage_new_media_public_opinion.html') - if v[8].isdigit() and v[9].isdigit(): - if v != '账号名称': - n_type = v[0] - n_name = v[1] - o_type = v[2] - o_name = v[3] - city = v[4] - counties = v[5] - remark = v[6] - results = v[7] - update = v[8] - silet = v[9] - start_data = v[10] - end_data = v[11] - timelinessmonitoring = TimelinessMonitoring(n_type=n_type, n_name=n_name, o_type=o_type, o_name=o_name, - city=city, counties=counties, remark=remark, - results=results, update=update, silet=silet, - start_data=start_data, end_data=end_data,) - print(timelinessmonitoring) + date = request.POST.get("date") + print(filename) + if not os.path.exists(settings.MEDIA_ROOT): + os.makedirs(settings.MEDIA_ROOT) + if filename is None: + messages.error(request,'请选择要上传的文件!!!') + return HttpResponseRedirect('/backstage/backstage/newmedia/public/opinion/') + if str(filename).split('.')[1] == 'csv': + data = filename.read().decode("utf-8") + line = str(data).split('\n') + for l in line: + v = l.split(',') + # print(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9],v[10],v[11]) + # if str(v[0]) != '新媒体类型' or str(v[1]) != '新媒体名称' or str(v[2]) != '主体类型' or str(v[3]) != '代表主体名称' or str(v[4]) != '市' or str(v[6]) != '备注' or str(v[7]) != '结果' or str(v[8]) != '更新次数' or str(v[9]) != '最大连续静默日数' or str(v[10]) != '开始时间' or str(v[11]) != '结束时间': + # messages.error(request, '请上传正确的文件格式!!!') + # return HttpResponseRedirect('/backstage/backstage/newmedia/public/opinion/') + mat1 = None + mat2 = None + # if v[10] is not None and v[11] is not None: + # mat1 = re.search(r"(\d{4}/\d{1,2}/\d{1,2})", v[10]) + # mat2 = re.search(r"(\d{4}/\d{1,2}/\d{1,2})", v[11]) + # if mat1 is None or mat2 is None: + # messages.error(request, '请上传正确的时间格式!!!') + # return HttpResponseRedirect('/backstage/backstage/newmedia/public/opinion/') - else: - messages.error(request, '更新次数和最大连续静默日数只能为数字!!!') - return render(request, 'backstage/backstage_new_media_public_opinion.html') + + try: + if v[8] != '更新次数': + # if v[8].isdigit(): + n_type = v[0] + n_name = v[1] + o_type = v[2] + o_name = v[3] + city = v[4] + counties = v[5] + remark = v[6] + results = v[7] + update = v[8] + silet = v[9] + start_data = v[10] + end_data = v[11] + timelinessmonitoring = TimelinessMonitoring(n_type=n_type, n_name=n_name, o_type=o_type, + o_name=o_name, + city=city, counties=counties, remark=remark, + results=results, update=update, silet=silet, + start_data=start_data, end_data=end_data, + comment=0, date=date) + print(timelinessmonitoring.n_type) + timelinessmonitoring.save() + # else: + # messages.error(request, '更新次数只能为数字!!!') + # return HttpResponseRedirect('/backstage/backstage/newmedia/public/opinion/') + except: + print(v) + + else: + messages.error(request, '请上传正确的文件类型!!!') + return HttpResponseRedirect('/backstage/backstage/newmedia/public/opinion/') return render(request, 'backstage/backstage_new_media_public_opinion.html') diff --git a/dashboard/models.py b/dashboard/models.py index 3657287..8dffda5 100644 --- a/dashboard/models.py +++ b/dashboard/models.py @@ -731,7 +731,7 @@ class NewmediaSentimentToutiao(models.Model): class TimelinessMonitoring(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4()) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) n_type = models.CharField('新媒体类型', max_length=256, null=True, blank=True) n_name = models.CharField('新媒体名称', max_length=256, null=True, blank=True) o_type = models.CharField('主体类型', max_length=256, null=True, blank=True) @@ -766,3 +766,6 @@ class Wrongly(models.Model): def __str__(self): return self.title +#时效性监测文件存储表 + + diff --git a/dashboard/templates/dashboard/base/left.html b/dashboard/templates/dashboard/base/left.html index 7de2908..a1e060e 100644 --- a/dashboard/templates/dashboard/base/left.html +++ b/dashboard/templates/dashboard/base/left.html @@ -174,7 +174,7 @@