newmediamonitoring/dashboard/views.py

194 lines
7.9 KiB
Python

from captcha.helpers import captcha_image_url
from captcha.models import CaptchaStore
from django.contrib import messages
from django.contrib.auth import logout, authenticate, login
from django.contrib.auth.models import User
from django.db.models import Q
from django.http import HttpResponseRedirect, JsonResponse
from django.shortcuts import render
import datetime
# Create your views here.
from dashboard.models import Userprofile, Organization, Area_code_2020, Weixin, Weibo, Toutiao, Qita
def refresh_captcha(request):
to_json_response = dict()
to_json_response['status'] = 1
to_json_response['new_cptch_key'] = CaptchaStore.generate_key()
to_json_response['new_cptch_image'] = captcha_image_url(to_json_response['new_cptch_key'])
return JsonResponse(to_json_response)
def index(request):
weixin_count = Weixin.objects.all().count()
weibo_count = Weibo.objects.all().count()
toutiao_count = Toutiao.objects.all().count()
qita_count = Qita.objects.all().count()
return render(request,'dashboard/index.html',{'weixin_count':weixin_count,'weibo_count':weibo_count,'toutiao_count':toutiao_count,'qita_count':qita_count})
def user_login(request):
username = None
password = None
hash_key = CaptchaStore.generate_key()
image_url = captcha_image_url(hash_key)
if request.method == 'POST':
if not request.POST.get('username'):
messages.error(request, '请输入用户名')
else:
username = request.POST.get('username')
if not request.POST.get('password'):
messages.error(request, '请输入密码')
else:
password = request.POST.get('password')
captcha_input = request.POST.get('captcha_1')
captcha_hashkey = request.POST.get('captcha_0')
try:
CaptchaStore.objects.get(response=captcha_input.lower(), hashkey=captcha_hashkey,
expiration__gt=datetime.datetime.now()).delete()
except CaptchaStore.DoesNotExist:
messages.error(request, '验证码错误')
return HttpResponseRedirect('/login/')
if username is not None and password is not None:
try:
# user = authenticate(username=username, password=password)
user = User.objects.get(Q(username=username) | Q(first_name=username) | Q(email=username))
if user is not None:
if user.check_password(password):
login(request, user)
return HttpResponseRedirect('/')
else:
messages.error(request, '无效的账号')
else:
messages.error(request, '账号或密码错误,请您确认账号和密码')
except:
messages.error(request, '账号或密码错误,请您确认账号和密码')
return render(request,'dashboard/login.html',{'hash_key':hash_key,'image_url':image_url})
def user_logout(request):
logout(request)
return HttpResponseRedirect('/')
def register(request):
username = None
email = None
password = None
confirm_password = None
name = None
phone = None
image = None
flag = False
o = None
sex = None
hash_key = CaptchaStore.generate_key()
image_url = captcha_image_url(hash_key)
organization = Organization.objects.all()
if request.method == 'POST':
if not request.POST.get('organization'):
messages.error(request, '请选择单位')
else:
o = request.POST.get('organization')
if not request.POST.get('name'):
messages.error(request, '请输入姓名')
else:
name = request.POST.get('name')
if not request.POST.get('email'):
messages.error(request, '请输入邮箱')
else:
email = request.POST.get('email')
if not request.POST.get('phone'):
messages.error(request, '请输入电话')
else:
phone = request.POST.get('phone')
if not request.POST.get('username'):
messages.error(request, '请输入用户名')
else:
username = request.POST.get('username')
if not request.POST.get('password'):
messages.error(request, '请输入密码')
else:
password = request.POST.get('password')
if not request.POST.get('confirm_password'):
messages.error(request, '请再次输入密码')
else:
confirm_password = request.POST.get('confirm_password')
if not request.FILES.get('image'):
messages.error(request, '请选择头像')
else:
image = request.FILES.get('image')
print(str(image)+"1111111111111111111111111111111111111111111")
if request.POST.get('sex') == 0:
sex = ''
else:
sex = ''
captcha_input = request.POST.get('captcha_1')
captcha_hashkey = request.POST.get('captcha_0')
try:
CaptchaStore.objects.get(response=captcha_input.lower(), hashkey=captcha_hashkey,
expiration__gt=datetime.datetime.now()).delete()
except CaptchaStore.DoesNotExist:
messages.error(request, '验证码错误')
return HttpResponseRedirect('/register/')
if password is not None and confirm_password is not None:
if password == confirm_password:
flag = True
else:
messages.error(request, '两次输入的密码不一致,请重新输入')
filter_result = User.objects.filter(username=username)
if len(filter_result) > 0:
messages.error(request, '对不起,您输入的用户名已被注册')
return render(request, "dashboard/register.html")
if username is not None and password is not None and confirm_password is not None and email is not None and flag:
user = User.objects.create_user(username, email, password)
user.is_active = True
user.is_staff = True
user.first_name = phone
user.save()
userprofile = Userprofile(name=name,image=image,user_id=user.id,organization_id=o,sex=sex)
userprofile.save()
messages.success(request, '注册成功,请登录')
return HttpResponseRedirect('/login/')
return render(request, 'dashboard/register.html', {'hash_key': hash_key, 'image_url': image_url,'organization':organization})
def get_province(request):
#省
province = Area_code_2020.objects.filter(level=1)
res = []
for i in province:
res.append([i.code,i.name,i.level,i.pcode])
return JsonResponse({"province":res})
def get_city(request):
code = request.GET.get('code')
print(code)
#市
cities = Area_code_2020.objects.filter(pcode=code)
res = []
for i in cities:
res.append([i.code,i.name,i.level,i.pcode])
return JsonResponse({"city": res})
def get_district(request):
code = request.GET.get('code')
#县
district = Area_code_2020.objects.filter(pcode=code)
res = []
for i in district:
res.append([i.code, i.name, i.level, i.pcode])
return JsonResponse({"district": res})
def get_town(request):
code = request.GET.get('code')
# 乡
town = Area_code_2020.objects.filter(pcode=code)
res = []
for i in town:
res.append([i.code, i.name, i.level, i.pcode])
return JsonResponse({"town": res})
def get_village(request):
code = request.GET.get('code')
# 村
village = Area_code_2020.objects.filter(pcode=code)
res = []
for i in village:
res.append([i.code, i.name, i.level, i.pcode])
return JsonResponse({"village": res})