def wcon_sel(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) out_list = [] if request.method == "POST": s_con = request.POST.get('s_con') if s_con: c_list = Contract.objects.filter(name=s_con).first() if c_list: con_list = State.objects.filter(conNum=c_list.num).first() isexist = Process.objects.filter(conNum=c_list.num) if not isexist: out_list.append({'conName': s_con, 'time': con_list.time}) else: state_list = State.objects.filter(type=1) for user in state_list: c_list = Contract.objects.filter(num=user.conNum).first() isexist = Process.objects.filter(conNum=user.conNum) if not isexist: out_list.append({'conName': c_list.name, 'time': user.time}) return render(request, 'Wcontract_sel.html', {'wcon_list': out_list, 'per_list': per}) state_list = State.objects.filter(type=1) for user in state_list: c_list = Contract.objects.filter(num=user.conNum).first() isexist = Process.objects.filter(conNum=user.conNum) if not isexist: out_list.append({'conName': c_list.name, 'time': user.time}) return render(request, 'Wcontract_sel.html', {'wcon_list': out_list, 'per_list': per})
def con_assign(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": con_name = request.POST.get('conName') num_list = Contract.objects.filter(name=con_name).first() countersignp = request.POST.getlist('check_box_list1') approvalp = request.POST.getlist('check_box_list2') signp = request.POST.getlist('check_box_list3') if not countersignp or not approvalp or not signp: role_list1 = Right.objects.filter(description__contains='会签合同') role_list2 = Right.objects.filter(description__contains='审批合同') role_list3 = Right.objects.filter(description__contains='签订合同') return render(request, 'contract_assign.html', {'role_list1': role_list1, 'role_list2': role_list2, 'role_list3': role_list3, 'conName': con_name, 'per_list': per}) else: for sign in countersignp: Process.objects.create(conNum=num_list.num, type=1, state=0, userName=sign, time=timezone.now()) user = User.objects.get(username=sign) send_mail('合同管理系统', '尊敬的的用户' + user.username+ ',您有一条合同需要会签!', '*****@*****.**', [user.email], fail_silently=False) for app in approvalp: Process.objects.create(conNum=num_list.num, type=2, state=0, userName=app, time=timezone.now()) user = User.objects.get(username=app) send_mail('合同管理系统', '尊敬的的用户' + user.username + ',您有一条合同需要审批!', '*****@*****.**', [user.email], fail_silently=False) for sig in signp: Process.objects.create(conNum=num_list.num, type=3, state=0, userName=sig, time=timezone.now()) user = User.objects.get(username=sig) send_mail('合同管理系统', '尊敬的的用户' + user.username + ',您有一条合同需要签订!', '*****@*****.**', [user.email], fail_silently=False) return HttpResponseRedirect('Wcontract_sel.html')
def post(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) name = request.POST.get('name') address = request.POST.get('address') fax = request.POST.get('fax') tel = request.POST.get('tel') email = request.POST.get('email') bank = request.POST.get('bank') account = request.POST.get('account') remark = request.POST.get('remark') customer_list = Customer.objects.all() for user in customer_list: if user.name == name: return render(request, 'customer_add.html', { 'is_exist': '该客户已存在,请重新输入', 'per_list': per }) Customer.objects.create(name=name, address=address, fax=fax, tel=tel, email=email, bank=bank, account=account, remark=remark) return HttpResponseRedirect('/customer_select')
def post(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) name = request.POST.get('name') tel = request.POST.get('tel') address = request.POST.get('address') print(name, tel, address) if tel is None: customer_list = Customer.objects.all() user_exist = False for user in customer_list: if user.name == name: user_exist = True return render(request, 'customer_delete.html', { 'user': user, 'per_list': per }) else: continue return render(request, 'customer_delete.html', { 'not_found': "User not found", 'per_list': per }) else: Customer.objects.filter(name=name).delete() return render(request, 'customer_delete.html', { 'complish': "User delete complish", 'per_list': per })
def wper_sel(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) out_list = [] if request.method == "POST": s_name = request.POST.get('s_name') if s_name: user_list = User.objects.filter(username=s_name).first() if not user_list: return render(request, 'Wpermission_sel.html', {'msg': '所查找的用户不存在', 'per_list': per}) else: right_list = Right.objects.filter(userName=user_list.username).first() if right_list: out_list.append({'username': user_list.username, 'rolename': right_list.roleName}) else: out_list.append({'username': user_list.username, 'rolename': '无'}) return render(request, 'Wpermission_sel.html', {'out_list': out_list, 'per_list': per}) user_list = User.objects.all() for user in user_list: right_list = Right.objects.filter(userName=user.username).first() if right_list: out_list.append({'username': user.username, 'rolename': right_list.roleName}) else: out_list.append({'username': user.username, 'rolename': '无'}) return render(request, 'Wpermission_sel.html', {'out_list': out_list, 'per_list': per})
def drafting_contract(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "GET": return render(request, 'DraftingContract.html', {'per_list': per}) if request.method == "POST": name = request.POST.get('name') customer = request.POST.get('customer') beginTime = request.POST.get('beginTime') endTime = request.POST.get('endTime') content = request.POST.get('content') userName = request.user.username nowTime = datetime.datetime.now() newTime = time.strftime("%Y-%m-%d", time.localtime()) begin = datetime.datetime.strptime(beginTime, "%Y-%m-%d") end = datetime.datetime.strptime(endTime, "%Y-%m-%d") # print(newTime) # print(begin) # print(end) customer_list = Customer.objects.all() customer_exist = False for user in customer_list: if user.name == customer: customer_exist = True else: continue if customer_exist is False: return render(request, 'draftingContract.html', {"errormsg": "该客户不存在", 'per_list': per}) file = request.FILES.get('files') my_contract = Contract.objects.create(name=name, customer=customer, beginTime=beginTime, endTime=endTime, content=content, userName=userName) my_state = State.objects.create(conNum=my_contract.num, type=1, time=newTime) if file is not None: path = 'media//' + file.name my_attachment = Attachment.objects.create(conNum=my_contract.num, cusName=customer, fileName=file.name, path=path, uploadTime=newTime, file=file) # print(my_contract) # print(my_state) # print(my_contract.beginTime) # 发送邮件 # message1 = ('Subject here', 'Here is the message', '*****@*****.**', ['*****@*****.**']) # message2 = ('Another Subject', 'Here is another message', '*****@*****.**', ['*****@*****.**']) # # send_mass_mail((message1, message2), fail_silently=False) return render(request, 'draftingContract.html', {'per_list': per})
def Process_select(request, type='0', pagenum='1'): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) print(request.method) if request.method == "GET": if type == '0': process_list = Process.objects.all() elif type == '1': process_list = Process.objects.filter(type=1, state=0) process_list = process_list elif type == '2': process_list = Process.objects.filter(type=1, state=1) elif type == '3': process_list = Process.objects.filter(type=2, state=0) elif type == '4': process_list = Process.objects.filter(type=2, state=1) elif type == '5': process_list = Process.objects.filter(type=3, state=1) else: # 已取消合同 process_list = Process.objects.filter(state=2) # 分页构建 paginator = Paginator(process_list, 5) # 获取某页对象 try: page = paginator.page(pagenum) except PageNotAnInteger: page = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: page = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'Contract_process.html', {'page': page, "paginator": paginator, 'pagerange': paginator.page_range, 'currentpage': page.number, 'type': type, 'per_list': per}) if request.method == "POST": pid = request.POST['P_id'] if pid != "": int(pid) process_list = Process.objects.filter(conNum=pid) else: process_list = Process.objects.all() paginator = Paginator(process_list, 5) try: page = paginator.page(pagenum) except PageNotAnInteger: page = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: page = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'Contract_process.html', {'page': page, "paginator": paginator, 'pagerange': paginator.page_range, 'currentpage': page.number, 'type': type, 'per_list': per})
def Contract_Select(request, pagenum='1'): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) print(request.method) if request.method == "GET": contract_list = Contract.objects.all() # 分页构建 paginator = Paginator(contract_list, 5) # 获取某页对象 try: page = paginator.page(pagenum) except PageNotAnInteger: page = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: page = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'Contract_select.html', {'page': page, "paginator": paginator, 'pagerange': paginator.page_range, 'currentpage': page.number, 'per_list': per}) if request.method == "POST": s_name = request.POST['name'] name_list = s_name.split() count = 0 ########对用户输入框内的字符进行分割并提取关键字进行合同名和用户名包含在内的模糊查询######### if s_name != "": for name in name_list: if count == 0: contract_list1 = Contract.objects.filter(Q(name__icontains=name)) contract_list2 = contract_list1.union(Contract.objects.filter(Q(content__icontains=name))) contract_list = contract_list2.union(Contract.objects.filter(Q(userName__icontains=name))) count = 1 else: contract_list1 = contract_list.union(Contract.objects.filter(Q(userName__icontains=name))) \ .union(Contract.objects.filter(Q(name__icontains=name)))\ .union(Contract.objects.filter(Q(content__icontains=name))) contract_list = contract_list.union(contract_list1) else: contract_list = Contract.objects.all() paginator = Paginator(contract_list, 5) try: page = paginator.page(pagenum) except PageNotAnInteger: page = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: page = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'Contract_select.html', {'page': page, "paginator": paginator, 'pagerange': paginator.page_range, 'currentpage': page.number, 'per_list': per})
def get(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) customer_list = Customer.objects.all() # file = open('media/新建文本文档.txt', 'rb') # response = StreamingHttpResponse(file) # response['Content-Type'] = 'application/octet-stream' # response['Content-Disposition'] = 'attachment;filename="models.txt"' # # return response return render(request, 'customer_select.html', { 'customer_list': customer_list, 'per_list': per })
def user_add(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": form = RegistrationForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] email = form.cleaned_data['email'] password = form.cleaned_data['password2'] User.objects.create_user(username=username, email=email, password=password) return HttpResponseRedirect("user_sel.html") else: form = RegistrationForm() return render(request, 'user_add.html', {'form': form, 'per_list': per})
def post(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) name = request.POST.get('name') download = request.POST.get('download') if download is None: customer_list = Customer.objects.all() attach_list = Attachment.objects.all() user_exist = False for user in customer_list: if user.name == name: user_exist = True for attach in attach_list: if attach.cusName == user.name: return render(request, 'customer_select.html', { 'user': user, 'query': "query", 'per_list': per }) return render(request, 'customer_select.html', { 'user': user, 'per_list': per }) else: continue return render(request, 'customer_select.html', { 'not_found': "User not found", 'per_list': per }) else: attach_list = Attachment.objects.all() file = '' path = '' for attach in attach_list: print(attach.cusName) print(attach.path) if attach.cusName == download: path = attach.path file = open(attach.path, 'rb') response = StreamingHttpResponse(file) response['Content-Type'] = 'application/octet-stream' response[ 'Content-Disposition'] = 'attachment;filename=' + os.path.basename( path) return response
def permission_assign(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": u_name = request.POST.get('user_w') permission = request.POST.get('check_box_list') if permission: role_msg = Role.objects.filter(name=permission).first() Right.objects.create(userName=u_name, roleName=permission, description=role_msg.functions) return HttpResponseRedirect('Wpermission_sel.html') else: right_list = Right.objects.filter(userName=u_name).first() if right_list: return HttpResponseRedirect('Wpermission_sel.html') role_list = Role.objects.all() return render(request, 'permission_assign.html', {'user_w': u_name, 'role_list': role_list, 'per_list': per})
def contract_info(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": num = request.POST.get('num') contract = Contract.objects.filter(num=num).first() content = {} singing = Process.objects.filter(conNum=num, type=1).last() if singing is not None: content['singing'] = singing.content approval = Process.objects.filter(conNum=num, type=2).last() if singing is not None: content['approval'] = approval.content sing = Process.objects.filter(conNum=num, type=3).last() if singing is not None: content['sing'] = sing.content return render(request, 'contractInfo.html', {'contract': contract, 'content': content, 'per_list': per})
def final_contract(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": if 'table' in request.POST: num = request.POST.get('num') contract = Contract.objects.filter(num=num).first() process = Process.objects.filter(conNum=num, type=1).first() return render(request, 'finalContract.html', {'contract': contract, 'content': process.content, 'per_list': per}) else: num = request.POST.get('num') content = request.POST.get('content') Contract.objects.filter(num=num).update(content=content) State.objects.create(conNum=num, type=3, time=datetime.datetime.now()) return redirect('/listDraft') return render(request, 'finalContract.html', {'per_list': per})
def role_add(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": role_name = request.POST.get('role_name') description = request.POST.get('description') permission = request.POST.getlist('check_box_list') if not role_name: return render(request, 'role_add.html', {'r_error': '未输入角色名称', 'per_list': per}) else: judge = Role.objects.filter(name=role_name) if judge: return render(request, 'role_add.html', {'r_error': '该角色已存在,请重新输入', 'per_list': per}) Role.objects.create(name=role_name, description=description, functions=permission) return HttpResponseRedirect("role_sel.html") return render(request, 'role_add.html', {'per_list': per})
def list_contract(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) contract_list = [] process_list = Process.objects.filter(state=0, userName=request.user.username) for process in process_list: state = State.objects.filter(conNum=process.conNum).last() if state.type == 1 and process.type == 1: p_type = '会签' elif state.type == 3 and process.type == 2: p_type = '审批' elif state.type == 4 and process.type == 3: p_type = '签订' else: continue contract = Contract.objects.filter(num=process.conNum).first() temp = State.objects.filter(conNum=contract.num).first() contract_list.append({'conNum': process.conNum, 'name': contract.name, 'time': temp.time, 'p_type': p_type}) return render(request, 'listContract.html', {'contract_list': contract_list, 'per_list': per})
def sign_contract(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": if 'table' in request.POST: num = request.POST.get('num') contract = Contract.objects.filter(num=num).first() return render(request, 'signContract.html', {'contract': contract, 'per_list': per}) else: num = request.POST.get('num') content = request.POST.get('content') Process.objects.filter(conNum=num, type=3, userName=request.user.username).update(state=1, content=content, time=datetime.datetime.now()) filter_result = Process.objects.filter(conNum=num, type=3, state=0) if not filter_result: State.objects.create(conNum=num, type=5, time=datetime.datetime.now()) return redirect('/listContract') return render(request, 'signContract.html', {'per_list': per})
def post(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) name = request.POST.get('name') tel = request.POST.get('tel') if tel is None: customer_list = Customer.objects.all() user_exist = False for user in customer_list: if user.name == name: user_exist = True return render(request, 'customer_modify.html', { 'user': user, 'per_list': per }) else: continue return render(request, 'customer_modify.html', { 'not_found': "User not found", 'per_list': per }) else: address = request.POST.get('address') fax = request.POST.get('fax') tel = request.POST.get('tel') email = request.POST.get('email') bank = request.POST.get('bank') account = request.POST.get('account') remark = request.POST.get('remark') Customer.objects.filter(name=name).update(tel=tel, fax=fax, email=email, address=address, bank=bank, account=account, remark=remark) return render(request, 'customer_modify.html', { 'complish': "User modify complish", 'per_list': per })
def role_mod(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == 'POST': role_name = request.POST.get('m_name') description = request.POST.get('description') permission = request.POST.getlist('check_box_list') if not description: role_list = Role.objects.all() return render(request, 'role_mod.html', {'m_name': role_name, 'role_list': role_list, 'mod': "mod", 'per_list': per}) else: if permission: Role.objects.filter(name=role_name).update(description=description, functions=permission) else: Role.objects.filter(name=role_name).update(description=description) return HttpResponseRedirect("role_sel.html") role_list = Role.objects.all() return render(request, 'role_mod.html', {'role_list': role_list, 'per_list': per})
def list_draft(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) contract_list = [] data_list = Contract.objects.filter(userName=request.user.username) for contract in data_list: state = State.objects.filter(conNum=contract.num).last() if state.type == 1: state = '待会签' elif state.type == 2: state = '待定稿' elif state.type == 3: state = '待审批' elif state.type == 4: state = '待签订' elif state.type == 5: state = '已签订' else: state = '审批拒绝' temp = State.objects.filter(conNum=contract.num).first() contract_list.append({'num': contract.num, 'name': contract.name, 'time': temp.time, 'state': state}) return render(request, 'listDraft.html', {'contract_list': contract_list, 'per_list': per})
def user_sel(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) if request.method == "POST": name = request.POST.get('s_name') d_name = request.POST.get('d_name') if name: user_list = User.objects.filter(username=name) if not user_list: return render(request, 'user_sel.html', {'d_msg': '未找到要查询的角色', 'per_list': per}) return render(request, 'user_sel.html', {'user_list': user_list, 'per_list': per}) else: if d_name: User.objects.filter(username=d_name).delete() Right.objects.filter(userName=d_name).delete() user_list = User.objects.all() return render(request, 'user_sel.html', {'user_list': user_list, 'd_msg': '删除成功', 'per_list': per}) user_list = User.objects.all() return render(request, 'user_sel.html', {'user_list': user_list, 'per_list': per}) else: user_list = User.objects.all() return render(request, 'user_sel.html', {'user_list': user_list, 'per_list': per})
def Process_Detail(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) num = request.POST.get("num") if num != "": int(num) username = request.POST.get("username") type = request.POST.get("type") if type != "": int(type) process_list = Process.objects.filter(conNum=num, type=type, userName=username) pagenum = 1 paginator = Paginator(process_list, 5) try: page = paginator.page(pagenum) except PageNotAnInteger: page = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: page = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'Contract_process.html', {'page': page, "paginator": paginator, 'pagerange': paginator.page_range, 'currentpage': page.number, 'type': type, 'per_list': per})
def user_mod(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) user_list = User.objects.all() if request.method == 'POST': user_name = request.POST.get('m_name') email = request.POST.get('email') if not email: password1 = request.POST.get('password1') if not password1: return render(request, 'user_mod.html', {'m_name': user_name, 'user_list': user_list, 'mod': "mod", 'per_list': per}) else: error = 'ok' password2 = request.POST.get('password2') if len(password1) < 6: error = "密码最短6个字符" elif len(password1) > 20: error = "密码最长20个字符" if password1 and password2 and password1 != password2: error = "两次密码不一致" if error == 'ok': User.objects.filter(username=user_name).update(password=make_password(password1)) return HttpResponseRedirect("user_mod.html") return render(request, 'user_mod.html', {'r_error': error, 'm_name': user_name, 'user_list': user_list, 'mod': "mod", 'per_list': per}) else: valid_email = '\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{1,14}' if re.match(valid_email, email) != None: User.objects.filter(username=user_name).update(email=email) return HttpResponseRedirect("user_mod.html") error = '邮箱格式错误' return render(request, 'user_mod.html', {'r_error': error, 'm_name': user_name, 'user_list': user_list, 'mod': "mod", 'per_list': per}) return render(request, 'user_mod.html', {'user_list': user_list, 'per_list': per})
def get(self, request, *args, **kwargs): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) return render(request, 'customer_modify.html', {'per_list': per})
def list_log(request): user = User.objects.filter(username=request.user.username).first() per = judgeP(user.username) log_list = Log.objects.all() return render(request, 'listLog.html', {'log_list': log_list, 'per_list': per})