You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
588 lines
24 KiB
588 lines
24 KiB
import random
|
|
from . import models, forms
|
|
from django.shortcuts import render
|
|
from django.shortcuts import redirect
|
|
from django.shortcuts import get_object_or_404
|
|
from django.http import HttpResponse
|
|
|
|
from django.contrib import messages
|
|
from django.contrib.auth import authenticate
|
|
from django.contrib import auth
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.hashers import make_password
|
|
|
|
from django.db.models import F
|
|
from django.db.models import Q
|
|
|
|
import json
|
|
from datetime import datetime
|
|
import xlwt
|
|
import xlrd
|
|
# Create your views here.
|
|
@login_required(login_url='/wgsite/login')
|
|
def index(request):
|
|
page1 = 'active'
|
|
if request.user.is_authenticated:
|
|
username = request.user.username
|
|
if request.user.is_superuser:
|
|
super_admin = True
|
|
messages.get_messages(request)
|
|
return render(request, 'index.html', locals())
|
|
|
|
|
|
def login(request):
|
|
if request.method == 'POST':
|
|
login_form = forms.LoginForm(request.POST)
|
|
if login_form.is_valid():
|
|
login_name = login_form.cleaned_data['username']
|
|
login_password = login_form.cleaned_data['password']
|
|
if User.objects.filter(username=login_name):
|
|
user = authenticate(username=login_name,
|
|
password=login_password)
|
|
if user:
|
|
if user.is_active:
|
|
auth.login(request, user)
|
|
# messages.add_message(request, messages.SUCCESS, '登入成功')
|
|
return redirect('/wgsite')
|
|
else:
|
|
messages.add_message(request, messages.WARNING,
|
|
'账号未启用')
|
|
else:
|
|
messages.add_message(request, messages.WARNING, '密码错误')
|
|
else:
|
|
messages.add_message(request, messages.WARNING, '用户名不存在')
|
|
else:
|
|
messages.add_message(request, messages.INFO, '请检查输入的字段内容')
|
|
else:
|
|
login_form = forms.LoginForm()
|
|
|
|
return render(request, 'login.html', locals())
|
|
|
|
|
|
def logout(request):
|
|
auth.logout(request)
|
|
messages.add_message(request, messages.INFO, '成功注销')
|
|
return redirect('/wgsite')
|
|
|
|
|
|
def register(request):
|
|
if request.method == 'POST':
|
|
register_form = forms.RegisterForm(request.POST)
|
|
if register_form.is_valid():
|
|
username = register_form.cleaned_data['username']
|
|
email = register_form.cleaned_data['email']
|
|
password = register_form.cleaned_data['password']
|
|
repassword = register_form.cleaned_data['repassword']
|
|
if password == repassword:
|
|
if User.objects.filter(username=username):
|
|
messages.add_message(request, messages.WARNING, '用户已存在')
|
|
else:
|
|
|
|
user = User.objects.create_user(username=username,
|
|
password=password,
|
|
email=email)
|
|
user.save()
|
|
messages.add_message(request, messages.SUCCESS, '注册成功,请登录')
|
|
else:
|
|
messages.add_message(request, messages.WARNING, '两次密码不一致')
|
|
else:
|
|
register_form = forms.RegisterForm()
|
|
return render(request, 'register.html', locals())
|
|
|
|
|
|
# 找回密码
|
|
def findPassword(request):
|
|
button = '获取验证码'
|
|
new_password = False
|
|
if request.method == 'POST':
|
|
username = request.POST.get('username', '')
|
|
VerificationCode = request.POST.get('VerificationCode', '')
|
|
password = request.POST.get('password', '')
|
|
user = User.objects.filter(username=username)
|
|
# 用户不存在
|
|
if not user:
|
|
tips = '用户' + username + '不存在'
|
|
messages.add_message(request, messages.WARNING, tips)
|
|
else:
|
|
# 判断验证码是否已发送
|
|
if not request.session.get('VerificationCode', ''):
|
|
# 发送验证码并将验证码写入session
|
|
button = '重置密码'
|
|
tips = '验证码已发送'
|
|
messages.add_message(request, messages.SUCCESS, tips)
|
|
new_password = True
|
|
VerificationCode = str(random.randint(1000, 9999))
|
|
request.session['VerificationCode'] = VerificationCode
|
|
user[0].email_user('找回密码', VerificationCode)
|
|
# 匹配输入的验证码是否正确
|
|
elif VerificationCode == request.session.get('VerificationCode'):
|
|
# 密码加密处理并保存到数据库
|
|
dj_ps = make_password(password, None, 'pbkdf2_sha256')
|
|
user[0].password = dj_ps
|
|
user[0].save()
|
|
del request.session['VerificationCode']
|
|
tips = '密码已重置'
|
|
messages.add_message(request, messages.SUCCESS, tips)
|
|
# 输入验证码错误
|
|
else:
|
|
tips = '验证码错误,请重新获取'
|
|
messages.add_message(request, messages.WARNING, tips)
|
|
new_password = False
|
|
del request.session['VerificationCode']
|
|
return render(request, 'forgot-password.html', locals())
|
|
|
|
|
|
@login_required(login_url='/wgsite/login')
|
|
def wsxx(request):
|
|
page2 = 'active'
|
|
page2_1 = 'active'
|
|
page2_s = 'show'
|
|
if request.user.is_authenticated:
|
|
username = request.user.username
|
|
email = request.user.email
|
|
user_id = request.user.id
|
|
if request.user.is_superuser:
|
|
super_admin = True
|
|
if request.method == 'GET':
|
|
changeWSXX = False
|
|
information3 = forms.AddWsxxForm() # 添加信息的框
|
|
instance = models.MyUser.objects.filter(user_id=user_id)
|
|
if instance:
|
|
isWSXX = True # 是否有完善信息的数据
|
|
information = forms.WsxxModelForm(instance=instance[0])
|
|
information2 = forms.ChangeWsxxModelForm(instance=instance[0])
|
|
# information3 = forms.AddWsxxForm(instance[0])
|
|
else:
|
|
isWSXX = False
|
|
information = forms.WsxxModelForm()
|
|
information2 = forms.ChangeWsxxModelForm()
|
|
# information3 = forms.AddWsxxForm()
|
|
return render(request, 'wsxx.html', locals())
|
|
else:
|
|
temp = request.POST.get('changeWSXX', '')
|
|
|
|
if temp != 'yes':
|
|
instance = models.MyUser.objects.filter(user_id=user_id)
|
|
if instance: # 修改信息
|
|
information_change = forms.ChangeWsxxModelForm(
|
|
instance=instance[0], data=request.POST)
|
|
if information_change.is_valid():
|
|
realname = information_change.cleaned_data['realname']
|
|
sex = information_change.cleaned_data['sex']
|
|
phone_number = information_change.cleaned_data[
|
|
'phone_number']
|
|
college = information_change.cleaned_data['college']
|
|
information_change.save()
|
|
messages.add_message(request, messages.WARNING,
|
|
"修改个人信息成功")
|
|
return redirect('/wgsite/wsxx')
|
|
else: # 增加信息
|
|
user = User.objects.get(id=user_id)
|
|
information_add = forms.AddWsxxForm(request.POST)
|
|
if information_add.is_valid():
|
|
realname = information_add.cleaned_data['realname']
|
|
sex = information_add.cleaned_data['sex']
|
|
phone_number = information_add.cleaned_data[
|
|
'phone_number']
|
|
college = information_add.cleaned_data['college']
|
|
myuser = models.MyUser.objects.create(
|
|
realname=realname,
|
|
sex=sex,
|
|
phone_number=phone_number,
|
|
college=college,
|
|
user=user)
|
|
myuser.save()
|
|
messages.add_message(request, messages.WARNING,
|
|
"添加个人信息成功")
|
|
return redirect('/wgsite/wsxx')
|
|
else:
|
|
changeWSXX = True
|
|
instance = models.MyUser.objects.filter(user_id=user_id)
|
|
if instance:
|
|
isWSXX = True # 是否有完善信息的数据
|
|
information = forms.WsxxModelForm(instance=instance[0])
|
|
information2 = forms.ChangeWsxxModelForm(
|
|
instance=instance[0])
|
|
# information3 = forms.AddWsxxForm(instance[0])
|
|
else:
|
|
isWSXX = False
|
|
information = forms.WsxxModelForm()
|
|
information2 = forms.ChangeWsxxModelForm()
|
|
# information3 = forms.AddWsxxForm()
|
|
return render(request, 'wsxx.html', locals())
|
|
|
|
return render(request, 'wsxx.html', locals())
|
|
|
|
|
|
@login_required(login_url='/wgsite/login')
|
|
def mp(request):
|
|
page_manage_people = 'active'
|
|
if request.user.is_authenticated:
|
|
username = request.user.username # 获取用户名
|
|
if request.user.is_superuser: # 是否是高级账号
|
|
super_admin = True
|
|
|
|
# 管理员部分
|
|
|
|
user_set2 = models.AdminUser.objects.select_related(
|
|
'staffuser').values('staffuser__id')
|
|
user_set = models.StaffUser.objects.values(
|
|
'id', 'myuser__realname').exclude(id__in=user_set2)
|
|
# user_set = list(user_set.difference(user_set2))
|
|
|
|
# 工作人员部分
|
|
|
|
staffuser_set2 = models.StaffUser.objects.select_related(
|
|
'myuser').values('myuser__id')
|
|
staffuser_set = models.MyUser.objects.values(
|
|
'id', 'realname').exclude(id__in=staffuser_set2)
|
|
|
|
if request.method == 'GET':
|
|
information_add = forms.AdminUserForm(user_set) # 添加管理员的框
|
|
staffuser_add = forms.StaffUserForm(staffuser_set) # 添加工作人员的框
|
|
information_now = models.AdminUser.objects.values(
|
|
'staffuser__id', 'staffuser__myuser__realname')
|
|
staffuser_now = models.StaffUser.objects.values(
|
|
'id', 'department', 'myuser__realname').order_by('department')
|
|
return render(request, 'manage_people.html', locals())
|
|
else:
|
|
staff_user_id = request.POST.get('user', '')
|
|
myuser_id = request.POST.get('staff_user', '')
|
|
if staff_user_id != '':
|
|
staff_user = models.StaffUser.objects.get(id=staff_user_id)
|
|
# other = request.POST.get('other', '')
|
|
information_add = forms.AddAdminUserForm(request.POST)
|
|
if information_add.is_valid():
|
|
other = information_add.cleaned_data['other']
|
|
adminuser = models.AdminUser.objects.create(
|
|
other=other, staffuser=staff_user)
|
|
adminuser.save()
|
|
messages.add_message(request, messages.WARNING, "设为管理员成功")
|
|
return redirect('/wgsite/mp')
|
|
else:
|
|
print('???')
|
|
elif myuser_id != '':
|
|
my_user = models.MyUser.objects.get(id=myuser_id)
|
|
request_copy = request.POST.copy()
|
|
request_copy['birthdate'] = datetime.strptime(
|
|
request_copy['birthdate'], '%m/%d/%Y')
|
|
staffuser_add = forms.StaffUserForm(None, request_copy)
|
|
if staffuser_add.is_valid():
|
|
department = staffuser_add.cleaned_data['department']
|
|
birthdate = staffuser_add.cleaned_data['birthdate']
|
|
other = staffuser_add.cleaned_data['staff_other']
|
|
staffuser = models.StaffUser.objects.create(
|
|
department=department,
|
|
birthdate=birthdate,
|
|
other=other,
|
|
myuser=my_user)
|
|
staffuser.save()
|
|
messages.add_message(request, messages.WARNING, "设为工作人员成功")
|
|
return redirect('/wgsite/mp')
|
|
else:
|
|
print('???')
|
|
return render(request, 'manage_people.html', locals())
|
|
return render(request, 'manage_people.html', locals())
|
|
|
|
|
|
@login_required(login_url='/wgsite/login')
|
|
def del_adim(request):
|
|
itemid = request.GET.get('id')
|
|
if request.method == 'POST':
|
|
admin = get_object_or_404(Item, pk=itemid)
|
|
admin.delete()
|
|
|
|
|
|
@login_required(login_url='/login/')
|
|
def bsproject(request):
|
|
username = request.user.username
|
|
if request.method == 'POST':
|
|
print(1)
|
|
if 'addbsproject' in request.POST:
|
|
form = forms.BsProForm(request.POST)
|
|
if form.is_valid():
|
|
try:
|
|
form.save()
|
|
messages.success(request, u"一个新的项目被添加.")
|
|
return redirect('/wgsite/bsproject')
|
|
except Exception as e:
|
|
event = '新项目保存有一个问题: %s' % e
|
|
messages.warning(request, event)
|
|
else:
|
|
messages.warning(request, u'项目添加失败')
|
|
return redirect('/wgsite/bsproject')
|
|
|
|
# elif 'mark_done' in request.POST:
|
|
# del_list = request.POST.getlist('mark_done')
|
|
|
|
# models.BsProject.objects.filter(
|
|
# id__in=del_list).update(is_delete=True)
|
|
# messages.info(request, u'任务已经删除')
|
|
|
|
else:
|
|
form = forms.BsProForm()
|
|
bsproject = models.BsProject.objects.all()
|
|
return render(request, 'bsproject.html', locals())
|
|
|
|
|
|
@login_required(login_url='/login/')
|
|
def ebsproject(request, id):
|
|
GetTask = get_object_or_404(models.BsProject, pk=id)
|
|
if request.method == 'POST':
|
|
form = forms.BsProForm(request.POST, instance=GetTask)
|
|
if form.is_valid():
|
|
try:
|
|
form.save()
|
|
messages.success(request, u"项目修改完成.")
|
|
return redirect('/wgsite/bsproject')
|
|
except Exception as e:
|
|
event = '新项目保存有一个问题: %s' % e
|
|
messages.warning(request, event)
|
|
else:
|
|
form = forms.BsProForm(instance=GetTask)
|
|
return render(request, 'baseform.html', locals())
|
|
|
|
|
|
@login_required(login_url='/login/')
|
|
def bmbsproject(request):
|
|
username = request.user.username
|
|
itemid = request.GET.get('id', '')
|
|
if request.method == 'POST':
|
|
|
|
myuser = models.MyUser.objects.filter(user_id=request.user.id)
|
|
if myuser:
|
|
bsproject = models.BsProject.objects.get(
|
|
id=itemid)
|
|
try:
|
|
bm = models.BmBsProject.objects.create(
|
|
myuser=myuser[0], bsproject=bsproject)
|
|
bm.save()
|
|
event = '已报名'
|
|
messages.warning(request, event)
|
|
except Exception as e:
|
|
event = '报名失败,请务重复报名,如果没有报上名请联系管理员'
|
|
messages.warning(request, event)
|
|
else:
|
|
messages.add_message(request, messages.WARNING,
|
|
"请先完善个人信息")
|
|
return render(request, 'wsxx.html', locals())
|
|
# if 'addbsproject' in request.POST:
|
|
# form = forms.BsProForm(request.POST)
|
|
# if form.is_valid():
|
|
# try:
|
|
# form.save()
|
|
# messages.success(request, u"一个新的项目被添加.")
|
|
# return redirect('/wgsite/bsproject')
|
|
# except Exception as e:
|
|
# event = '新项目保存有一个问题: %s' % e
|
|
# messages.warning(request, event)
|
|
# else:
|
|
# messages.warning(request, u'项目添加失败')
|
|
# return redirect('/wgsite/bmbsproject')
|
|
|
|
# elif 'mark_done' in request.POST:
|
|
# del_list = request.POST.getlist('mark_done')
|
|
|
|
# models.BsProject.objects.filter(
|
|
# id__in=del_list).update(is_delete=True)
|
|
# messages.info(request, u'任务已经删除')
|
|
|
|
else:
|
|
form = forms.BsProForm()
|
|
bmbsproject = models.BmBsProject.objects.filter(myuser__user__id=request.user.id)
|
|
bsproject = models.BsProject.objects.all()
|
|
return render(request, 'bmbsproject.html', locals())
|
|
|
|
|
|
def nofound(request):
|
|
return render(request, '404.html')
|
|
|
|
|
|
def dcbsproject(request):
|
|
itemid = request.GET.get('id', '')
|
|
if request.method == 'POST':
|
|
response = HttpResponse(content_type="application/ms-excel")
|
|
response['Content-Disposition'] = 'attachment; filename="数据名单.xls"'
|
|
wb = xlwt.Workbook()
|
|
|
|
ws = wb.add_sheet(u'sheet1')
|
|
ws.write(0, 0, u'姓名')
|
|
ws.write(0, 1, u'邮箱')
|
|
ws.write(0, 2, u'手机号码')
|
|
ws.write(0, 3, u'性别')
|
|
#ws.write(0, 4, u'身份证号码')
|
|
row = 1
|
|
bsproject = models.BmBsProject.objects.filter(bsproject_id=itemid)
|
|
for i in bsproject:
|
|
myuser = models.MyUser.objects.get(id=i.myuser_id)
|
|
ws.write(row, 0, myuser.realname)
|
|
ws.write(row, 1, myuser.user.email)
|
|
ws.write(row, 2, myuser.phone_number)
|
|
ws.write(row, 3, myuser.sex)
|
|
row += 1
|
|
wb.save(response)
|
|
return response
|
|
return render(request, 'bsproject.html', locals())
|
|
|
|
def abmbsproject(request):
|
|
'''
|
|
:param request:
|
|
:return: 上传文件excel表格 ,并进行解析
|
|
'''
|
|
if request.method == "POST":
|
|
print("post request")
|
|
myform = forms.FileUploadForm(request.POST, request.FILES)
|
|
|
|
#在这里可以添加筛选excel的机制
|
|
if myform.is_valid():
|
|
# print(myform)
|
|
f = request.FILES['my_file']
|
|
print(f)
|
|
|
|
#开始解析上传的excel表格
|
|
wb = xlrd.open_workbook(filename=None, file_contents=f.read()) # 关键点在于这里
|
|
table = wb.sheets()[3]
|
|
nrows = table.nrows #行数
|
|
ncole = table.ncols #列数
|
|
print("row :%s, cole: %s" % (nrows, ncole))
|
|
|
|
for i in range(1, nrows):
|
|
rowValues = table.row_values(i) #一行的数据
|
|
|
|
print(rowValues)
|
|
zkzh = rowValues[0]
|
|
realname = rowValues[1]
|
|
email = rowValues[2]
|
|
phone_number = rowValues[3]
|
|
myuser = models.MyUser.objects.filter(realname= realname,phone_number=phone_number)
|
|
if myuser:
|
|
myuser = myuser[0]
|
|
bsproject = models.BsProject.objects.get(id=1)
|
|
bmbsproject = models.BmBsProject.objects.filter(myuser = myuser,bsproject=bsproject)
|
|
if bmbsproject:
|
|
bmbsproject=bmbsproject[0]
|
|
bmbsproject.zkzh = zkzh
|
|
bmbsproject.save()
|
|
else:
|
|
messages.add_message(request, messages.WARNING, i+'行导入错误')
|
|
else:
|
|
messages.add_message(request, messages.WARNING, i+'行导入错误')
|
|
|
|
|
|
|
|
# pf = PhoneMsg.objects.filter(M_name = R_projectname)
|
|
# # pf = PhoneMsg.objects.all()
|
|
# if not pf.exists(): #空值
|
|
# return render(request,'abmbsproject.html',context={'error':u'R_projectname 不存在,联系管理员进行添加!'})
|
|
|
|
# print(pf)
|
|
|
|
# pm = PhoneMsg.objects.get(M_name =R_projectname)
|
|
# pm.save()
|
|
# re = Result() #实例化result表
|
|
# re.R_projectname = R_projectname
|
|
# re.R_name = rowValues[2]
|
|
# re.R_version = rowValues[3]
|
|
# re.R_context = rowValues[4]
|
|
# re.R_result = rowValues[5]
|
|
# re.R_note = rowValues[6]
|
|
# re.R_ower = rowValues[7]
|
|
# re.R_kexuan = rowValues[8]
|
|
# re.R_inning = rowValues[9]
|
|
# re.R_createtime = datetime(*xldate_as_tuple(rowValues[10],0))
|
|
# print(datetime(*xldate_as_tuple(rowValues[10],0)))
|
|
# re.save()
|
|
# pm.result.add(re)
|
|
|
|
#handle_upload_file(f, str(f)) #上传文件处理
|
|
myform = forms.FileUploadForm()
|
|
return render(request, "abmbsproject.html", context={'form': myform, 'what': "文件传输"})
|
|
|
|
|
|
else:
|
|
print("get request")
|
|
myform = forms.FileUploadForm()
|
|
return render(request, 'abmbsproject.html', context={'form': myform, 'what': "文件传输"})
|
|
|
|
@login_required(login_url='/login/')
|
|
def showbm(request):
|
|
bsproject = models.BmBsProject.objects.all()
|
|
return render(request, 'showbm.html', locals())
|
|
def weibo(request):
|
|
return render(request, 'weibo.html', locals())
|
|
def lbmbsproject(request):
|
|
'''
|
|
:param request:
|
|
:return: 上传文件excel表格 ,并进行解析
|
|
'''
|
|
if request.method == "POST":
|
|
print("post request")
|
|
myform = forms.FileUploadForm(request.POST, request.FILES)
|
|
|
|
#在这里可以添加筛选excel的机制
|
|
if myform.is_valid():
|
|
# print(myform)
|
|
f = request.FILES['my_file']
|
|
print(f)
|
|
|
|
#开始解析上传的excel表格
|
|
wb = xlrd.open_workbook(filename=None, file_contents=f.read()) # 关键点在于这里
|
|
table = wb.sheets()[0]
|
|
nrows = table.nrows #行数
|
|
ncole = table.ncols #列数
|
|
print("row :%s, cole: %s" % (nrows, ncole))
|
|
|
|
for i in range(1, nrows):
|
|
rowValues = table.row_values(i) #一行的数据
|
|
|
|
realname = rowValues[0]
|
|
phone_number = rowValues[2]
|
|
myuser = models.MyUser.objects.filter(realname= realname,phone_number=phone_number)
|
|
if myuser:
|
|
myuser = myuser[0]
|
|
bsproject = models.BsProject.objects.get(id=1)
|
|
bmbsproject = models.BmBsProject.objects.filter(myuser = myuser,bsproject=bsproject)
|
|
if bmbsproject:
|
|
bmbsproject=bmbsproject[0]
|
|
bmbsproject.lqqk = 1
|
|
bmbsproject.save()
|
|
else:
|
|
messages.add_message(request, messages.WARNING, i+'行导入错误')
|
|
else:
|
|
messages.add_message(request, messages.WARNING, i+'行导入错误')
|
|
|
|
|
|
|
|
# pf = PhoneMsg.objects.filter(M_name = R_projectname)
|
|
# # pf = PhoneMsg.objects.all()
|
|
# if not pf.exists(): #空值
|
|
# return render(request,'abmbsproject.html',context={'error':u'R_projectname 不存在,联系管理员进行添加!'})
|
|
|
|
# print(pf)
|
|
|
|
# pm = PhoneMsg.objects.get(M_name =R_projectname)
|
|
# pm.save()
|
|
# re = Result() #实例化result表
|
|
# re.R_projectname = R_projectname
|
|
# re.R_name = rowValues[2]
|
|
# re.R_version = rowValues[3]
|
|
# re.R_context = rowValues[4]
|
|
# re.R_result = rowValues[5]
|
|
# re.R_note = rowValues[6]
|
|
# re.R_ower = rowValues[7]
|
|
# re.R_kexuan = rowValues[8]
|
|
# re.R_inning = rowValues[9]
|
|
# re.R_createtime = datetime(*xldate_as_tuple(rowValues[10],0))
|
|
# print(datetime(*xldate_as_tuple(rowValues[10],0)))
|
|
# re.save()
|
|
# pm.result.add(re)
|
|
|
|
#handle_upload_file(f, str(f)) #上传文件处理
|
|
myform = forms.FileUploadForm()
|
|
return render(request, "lbmbsproject.html", context={'form': myform, 'what': "文件传输"})
|
|
else:
|
|
print("get request")
|
|
myform = forms.FileUploadForm()
|
|
return render(request, 'lbmbsproject.html', context={'form': myform, 'what': "文件传输"})
|