newmediamonitoring/backstage/views.py

447 lines
19 KiB
Python

import csv
import os
import re
import time
from datetime import datetime
import xlrd
from django.contrib import messages
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
# Create your views here.
from xlrd import xldate_as_tuple, xldate_as_datetime
from NewMediaMonitoring import settings
from dashboard.models import TimelinessMonitoring, Wrongly, Comment, Area_code_2020, Organization, Weixin, Douyin, \
Weibo, Toutiao, Qita, NewMedia
from polls.models import UnqualifiedMedia
def backstage_new_media_public_opinion(request):
if request.method == 'POST':
filename = request.FILES.get('file')
date = request.POST.get("date")
date_length = request.POST.get("date_length")
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/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
identificationcode = table.row_values(row)[3]
n_type = table.row_values(row)[7]
results = table.row_values(row)[21]
update = table.row_values(row)[22]
silent = table.row_values(row)[23]
start_data = table.row_values(row)[24]
d = datetime(*xldate_as_tuple(start_data, 0))
cell_start = d.strftime('%Y-%m-%d')
end_data = table.row_values(row)[25]
e = datetime(*xldate_as_tuple(end_data, 0))
cell_end = e.strftime('%Y-%m-%d')
city = table.row_values(row)[10]
cell_city = Area_code_2020.objects.get(name=city).code
district = table.row_values(row)[11]
cell_district = Area_code_2020.objects.get(name=district).code
timelinessmonitoring = TimelinessMonitoring(identificationcode=identificationcode, n_type=n_type,
results=results, update=update, silent=silent,
start_data=cell_start, end_data=cell_end, date=date,
date_length=date_length,city=cell_city,district=cell_district)
timelinessmonitoring.save()
except:
pass
messages.success(request,"上传成功")
return render(request, 'backstage/backstage_new_media_public_opinion.html')
def backstage_error(request):
if request.method == 'POST':
filename = request.FILES.get('file')
city = request.POST.get('city')
jc_date = request.POST.get('jc_date')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/error/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '建议':
try:
error = table.row_values(row)[0]
idea = table.row_values(row)[1]
site = table.row_values(row)[4]
n_type = table.row_values(row)[2]
n_name = table.row_values(row)[3]
date = table.row_values(row)[5]
d = datetime(*xldate_as_tuple(date, 0))
cell_date = d.strftime('%Y-%m-%d')
title = table.row_values(row)[6]
wrongly = Wrongly(error=error, idea=idea, site=site, n_type=n_type, n_name=n_name, date=cell_date,
title=title, city=city, jc_date=jc_date)
wrongly.save()
except:
pass
messages.success(request,'上传成功')
return render(request, 'backstage/backstage-error.html')
def backstage_comment(request):
if request.method == 'POST':
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/comment/')
if str(filename).split('.')[1] == 'csv':
data = filename.read().decode("utf-8")
line = str(data).split('\n')
for l in line:
v = l.split(',')
try:
if v[0] != '评论':
comment = v[0]
reply = v[1]
name = v[2]
title = v[3]
date = v[4]
url = v[5]
comment = Comment(comment=comment, reply=reply, name=name, title=title, date=date, url=url)
comment.save()
except:
print(v)
else:
messages.error(request, '请上传正确的文件类型!!!')
return HttpResponseRedirect('/backstage/backstage/comment/')
return render(request, 'backstage/backstage-comment.html')
def backstage_user(request):
return render(request, '')
def backstage_organization_update(request):
print("____________________________________________________________________")
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/organization/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
organization = Organization.objects.all()
for o in organization:
o_code_list.append(o.name)
except:
pass
for i in list(set( o_code_list ) ^ set( csv_code_list )):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
return render(request, 'backstage/backstage-organization-update.html',{'data_results':data_results})
def backstage_weixin_update(request):
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/weixin'
'/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
weixin = Weixin.objects.all()
for o in weixin:
o_code_list.append(o.code)
except:
pass
for i in list(set(o_code_list) ^ set(csv_code_list)):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
print(data_results)
return render(request, 'backstage/backstage-weixin-update.html', {'data_results': data_results})
def backstage_douyin_update(request):
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/douyin'
'/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
douyin = Douyin.objects.all()
for o in douyin:
o_code_list.append(o.code)
except:
pass
for i in list(set(o_code_list) ^ set(csv_code_list)):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
print(data_results)
return render(request, 'backstage/backstage-douyin-update.html', {'data_results': data_results})
def backstage_weibo_update(request):
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/weibo'
'/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
weibo = Weibo.objects.all()
for o in weibo:
o_code_list.append(o.code)
except:
pass
for i in list(set(o_code_list) ^ set(csv_code_list)):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
print(data_results)
return render(request, 'backstage/backstage-weibo-update.html', {'data_results': data_results})
def backstage_toutiao_update(request):
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/toutiao'
'/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
toutiao = Toutiao.objects.all()
for o in toutiao:
o_code_list.append(o.code)
except:
pass
for i in list(set(o_code_list) ^ set(csv_code_list)):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
print(data_results)
return render(request, 'backstage/backstage-toutiao-update.html', {'data_results': data_results})
def backstage_qita_update(request):
data_results = []
if request.method == 'POST':
o_code_list = []
csv_code_list = []
filename = request.FILES.get('file')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/backstage/qita'
'/update/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
try:
csv_code_list.append(table.row_values(row)[4])
qita = Qita.objects.all()
for o in qita:
o_code_list.append(o.code)
except:
pass
for i in list(set(o_code_list) ^ set(csv_code_list)):
x = dict()
x['o'] = i
if i in o_code_list and i not in csv_code_list:
x['c'] = '删除'
data_results.append(x)
elif i in csv_code_list and i not in o_code_list:
x['c'] = '新增'
data_results.append(x)
else:
x['c'] = '异常'
data_results.append(x)
print(data_results)
return render(request, 'backstage/backstage-toutiao-update.html', {'data_results': data_results})
def add_unqualified_media(request):
if request.method == 'POST':
filename = request.FILES.get('file')
version = request.POST.get('version')
if not os.path.exists(settings.MEDIA_ROOT):
os.makedirs(settings.MEDIA_ROOT)
if filename is None:
messages.error(request, '请选择要上传的文件!!!')
return HttpResponseRedirect('/backstage/add/unqualified/media/')
data = xlrd.open_workbook(filename=None, file_contents=filename.read())
table = data.sheets()[0]
for row in range(table.nrows):
v = table.row_values(row)[1]
if v != '单位全称':
media_type = table.row_values(row)[7]
media_code = table.row_values(row)[3]
name = table.row_values(row)[4]
unit = table.row_values(row)[1]
media_id = None
type = None
print(media_code)
try:
if "微信" in str(media_type):
media_id = Weixin.objects.get(code=name).id
type = 0
elif "微博" in str(media_type):
media_id = Weibo.objects.get(code=name).id
type = 1
elif "抖音" in str(media_type):
media_id = Douyin.objects.get(code=name).id
type = 2
elif "头条" in str(media_type):
media_id = Toutiao.objects.get(code=name).id
type = 3
else:
media_id = Qita.objects.get(code=name).id
type = 4
if Area_code_2020.objects.filter(name=table.row_values(row)[9]).count() > 0:
province = Area_code_2020.objects.get(name=table.row_values(row)[9]).code
else:
province = table.row_values(row)[9]
if Area_code_2020.objects.filter(name=table.row_values(row)[10]).count() > 0:
cities = Area_code_2020.objects.get(name=table.row_values(row)[10]).code
else:
cities = table.row_values(row)[10]
if Area_code_2020.objects.filter(name=table.row_values(row)[11]).count() > 0:
district = Area_code_2020.objects.get(name=table.row_values(row)[11]).code
else:
district = table.row_values(row)[11]
result = table.row_values(row)[20]
cou = table.row_values(row)[21]
dos = table.row_values(row)[22]
sdos = time.strftime('%Y-%m-%d', time.localtime(table.row_values(row)[23]))
edos = time.strftime('%Y-%m-%d', time.localtime(table.row_values(row)[24]))
unqualifiedmedia = UnqualifiedMedia(media_id=media_id, name=name, unit=unit, type=type,
province=province, cities=cities, district=district,
result=result, cou=cou, dos=dos, sdos=sdos, edos=edos,
version=version)
unqualifiedmedia.save()
except:
pass
print(media_id)
messages.success(request,"上传成功")
return render(request,'backstage/backstage_add_unqualified_media.html')