def index(request, template_name='wash/index.html'): img_list = IndexBanner.objects.filter(is_show=True).order_by("index") imgs, page_numbers = adjacent_paginator(img_list, page=request.GET.get('page', 1)) return render(request, template_name, { 'imgs': imgs, 'page_numbers': page_numbers })
def order(request, template_name="wash/manage/order.html"): """ 订单概览列表 :param request: :param template_name: :return: """ if request.method == "POST": next = request.POST.get('next', None) oid = request.POST.get('oid', None) cancel = request.POST.get('cancel', None) close = request.POST.get('close', None) verify_code = request.POST.get('verify_code', None) hour = request.POST.get('hour', None) if next: status = Order.status_next(oid, verify_code=verify_code, hour=hour) if not status: messages.error(request, u'验证码错误') if cancel: Order.status_back(oid) if close: Order.status_close(oid, is_buyer=False) order_list = Order.objects.all().order_by("-updated") orders, page_numbers = adjacent_paginator(order_list, page=request.GET.get('page', 1)) return render(request, template_name, { 'orders': orders, 'page_number': page_numbers, })
def bookmark(request, template_name='bookmark/bookmark.html'): """ 个人书签展示""" bookmark_list = BookMark.objects.filter(user=request.user) bookmarks, bookmark_page_numbers = adjacent_paginator( bookmark_list, page=request.GET.get('page')) return render(request, template_name, {'bookmarks': bookmark_list})
def bookmark(request, template_name='bookmark/bookmark.html'): """ 个人书签展示""" bookmark_list = BookMark.objects.filter(user=request.user) bookmarks, bookmark_page_numbers = adjacent_paginator(bookmark_list, page=request.GET.get('page')) return render(request, template_name, { 'bookmarks': bookmark_list })
def property_detail(request, template_name='labour/company_property_detail.html'): """ 该公司资金详情""" year = request.GET.get('year', str(datetime.datetime.now().year)) print year company_id = request.GET.get('id') try: company = CompanyProfile.objects.get(pk=company_id) except CompanyProfile.DoesNotExist: return HttpResponseRedirect(reverse('company.views.property')) if request.method == 'POST': company_id = request.POST.get('company_id', None) actual = request.POST.get('actual', None) date = request.POST.get('date', None) year = date.split(':')[0] month = date.split(':')[1] if company_id: record = MoneyRecord.objects.get(company__id=company_id, year=year, month=month) record.actual = actual record.balance = str(float(record.actual) - float(record.deserve)) record.save() Data = { 'result': True, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='工资管理表', modified_type=1, modified_id=record.id, action='公司实到金额', ).save() data = u'操作员=%s, ModifyTable=MoneyRecord, action=公司实到金额, money=%s' % (request.user.username, actual) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) record_list = MoneyRecord.objects.filter(company=company, year=year) deserve_sum = 0.0 actual_sum = 0.0 for record in record_list: deserve_sum = deserve_sum + float(record.deserve) actual_sum = actual_sum + float(record.actual) balance_sum = actual_sum - deserve_sum records, page_numbers = adjacent_paginator(record_list, request.GET.get('page', 1)) return render(request, template_name, { 'records': records, 'page_numbers': page_numbers, 'months': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 'deserve_sum': deserve_sum, 'actual_sum': actual_sum, 'balance_sum': balance_sum, 'year': year, 'company_id': company_id })
def wash_img(request, template_name='wash/manage/index_imgs.html'): img_list = IndexBanner.objects.all().order_by("-updated") imgs, page_numbers = adjacent_paginator(img_list, page=request.GET.get('page', 1)) return render(request, template_name, { 'imgs': imgs, 'page_numbers': page_numbers })
def share(request, template_name='share/share_list.html'): """ 分享展示""" share_list = Share.objects.exclude(content='').order_by("-created") shares, page_numbers = adjacent_paginator(share_list, request.GET.get('page', 1), page_num=10) # 浏览最多 clickes_maxs = Share.objects.exclude(content='').order_by('-read_sum')[:10] return render(request, template_name, { 'shares': shares, 'page_numbers': page_numbers, 'clickes_maxs': clickes_maxs, })
def employee_audit(request, template_name='manager/employee_audit.html'): """ 企业人员导入,人员审核""" if request.method == 'POST': employees_id = request.POST.get('employees_id') id_arr = employees_id.lstrip(',').split(',') EmployeeProfile.objects.filter(id__in=id_arr).update(is_active=True) return HttpResponse(json.dumps({'result': True})) empoyees_list = EmployeeProfile.objects.filter(is_active=False) empoyees, page_numbers = adjacent_paginator(empoyees_list, request.GET.get('page', 1)) return render(request, template_name, { 'employees': empoyees, })
def wash_type(request, template_name="wash/manage/wash_type.html"): """ 洗刷类型清单 :param request: :param template_name: :return: """ wash_list = WashType.objects.all().order_by("-updated") wash_types, page_numbers = adjacent_paginator(wash_list, page=request.GET.get( 'page', 1)) return render(request, template_name, { 'wash_types': wash_types, 'page_numbers': page_numbers })
def discount(request, template_name="wash/manage/discount.html"): """ 优惠券列表 :param request: :param template_name: :return: """ discounts_list = Discount.objects.all().order_by("-updated") discounts, page_numbers = adjacent_paginator(discounts_list, page=request.GET.get( 'page', 1)) return render(request, template_name, { 'discounts': discounts, 'page_numbers': page_numbers })
def login_log(request, template_name='manager/login_log.html'): """ 登录日志查看""" user = request.user username = request.GET.get('username', '') if username == '': login_list = LoginLog.objects.all() else: user_list = User.objects.filter(username__contains=username) login_list = LoginLog.objects.filter(user__id__in=user_list) login_logs, page_numbers = adjacent_paginator(login_list, request.GET.get('page', 1)) return render(request, template_name, { 'user': user, 'login_logs': login_logs, 'page_numbers': page_numbers, 'username': username, })
def company_employees(request, company_id, template_name='manager/company_employees.html'): """ 公司人员信息-删除""" user = request.user name = request.GET.get('name', None) id_no = request.GET.get('id_no', None) health_card = request.GET.get('health_card', None) search = request.GET.get('search', None) search_dict = {} extra_kwargs = {} if search is not None: if name != '': search_dict['name__contains'] = name if id_no != '': search_dict['id_no__contains'] = id_no if health_card != '': search_dict['health_card__contains'] = health_card UserAction( user=user, ip=request.META['REMOTE_ADDR'], table_name='雇员信息表', modified_type=2, modified_id=None, action='搜索', ).save() data = u'user=%s, search_table=EmployeeProfile, action=搜索, search_name=%s, search_id_no=%s, search_health_card=%s' % (user.username, name, id_no, health_card) INFO_LOG.info(data) employee_list = EmployeeProfile.objects.filter(company_id=company_id, is_deleted=0, **search_dict) else: employee_list = EmployeeProfile.objects.filter(company_id=company_id, is_deleted=0, **extra_kwargs) employees, page_numbers = adjacent_paginator(employee_list, request.GET.get('page', 1)) return render(request, template_name, { 'employees': employees, 'user': request.user, 'name': name, 'id_no': id_no, 'health_card': health_card, })
def note(request, template_name='bookmark/notes.html'): """ 便签显示""" if request.method == "POST": if request.user.is_authenticated(): if request.POST.get('note'): title = request.POST.get('note') if len(title) > 250: messages.error(request, 'shout out内容过长!') else: if not NotePad.objects.filter(title=title).exists(): note = NotePad( user=request.user, title=title, updated=datetime.datetime.now(), ) note.save() # 对关注者发送邮件提醒 interests = SpecialCare.objects.filter( care=request.user) for interest in interests: context = { 'username': note.user.username, 'action': '发布了新的状态:', 'content': note.title, } async_send_html_email.delay( '新状态提醒', [ interest.user.username, ], 'new_action_template.html', context) else: messages.error(request, 'shout out不能为空') else: messages.info(request, '请登录后才能shout out') node_list = NotePad.objects.all().select_related().order_by("-updated") nodes, page_numbers = adjacent_paginator(node_list, request.GET.get('page', 1)) return render(request, template_name, { 'nodes': nodes, 'pages': page_numbers, })
def order_detail(request, order_id='0', template_name="wash/manage/order_detail.html"): """ 订单概览列表 :param request: :param template_name: :return: """ if request.method == "POST": pass if order_id == '0': detail_list = OrderDetail.objects.all().order_by('-created') else: detail_list = OrderDetail.objects.filter(order_id=order_id) details, page_numbers = adjacent_paginator(detail_list, page=request.GET.get('page', 1)) return render(request, template_name, { 'details': details, })
def companys(request, template_name='manager/companys.html'): """ 公司信息-删除""" user = request.user if request.method == "POST": if request.is_ajax(): try: company_id = request.POST.get("company_id") if not EmployeeProfile.objects.filter(company_id=company_id, is_deleted=0).exists(): company = CompanyProfile.objects.get(id=company_id) company.is_deleted = 1 company.save() UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='公司信息表', modified_type=1, modified_id=None, action='删除', ).save() data = u'user=%s, delete_table=CompanyProfile, action=删除, \ delete_name=%s, delete_id=%s' % (user.username, company.name, company.id) INFO_LOG.info(data) return HttpResponse(json.dumps({"result": True, "msg": "删除成功"})) else: return HttpResponse(json.dumps({"result": False, "msg": "请先删除全部员工信息再删除公司"})) except CompanyProfile.DoesNotExist: pass company_list = CompanyProfile.objects.filter(is_deleted=0) companys, page_numbers = adjacent_paginator(company_list, request.GET.get('page', 1)) return render(request, template_name, { 'companys': companys, 'page_numbers': page_numbers, })
def note(request, template_name='bookmark/notes.html'): """ 便签显示""" if request.method == "POST": if request.user.is_authenticated(): if request.POST.get('note'): title = request.POST.get('note') if len(title) > 250: messages.error(request, 'shout out内容过长!') else: if not NotePad.objects.filter(title=title).exists(): note = NotePad( user=request.user, title=title, updated=datetime.datetime.now(), ) note.save() # 对关注者发送邮件提醒 interests = SpecialCare.objects.filter(care=request.user) for interest in interests: context = { 'username': note.user.username, 'action': '发布了新的状态:', 'content': note.title, } async_send_html_email.delay('新状态提醒', [interest.user.username,], 'new_action_template.html', context) else: messages.error(request, 'shout out不能为空') else: messages.info(request, '请登录后才能shout out') node_list = NotePad.objects.all().select_related().order_by("-updated") nodes, page_numbers = adjacent_paginator(node_list, request.GET.get('page', 1)) return render(request, template_name, { 'nodes': nodes, 'pages': page_numbers, })
def update(request, template_name="manager/index.html"): """ 账号管理""" user = request.user update_type = request.POST.get('update_type', None) username = request.GET.get("username", '') if request.method == 'POST': user_id = request.POST.get('user_id') try: update_user = User.objects.get(id=user_id) except User.DoesNotExist: return HttpResponse(json.dumps('user_not_exist')) if update_type == 'reset_pwd': update_user.set_password('111111') update_user.save() Data = { 'result': True, 'name': update_user.username, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='User', modified_type=0, modified_id=update_user.id, action='重置密码', ).save() data = u'user=%s, ModifyTable=User, action=重置密码, modified_username=%s' % (request.user.username, update_user.username) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) elif update_type == 'disabled_user': update_user.is_active = False update_user.save() Data = { 'result': True, 'name': update_user.username, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='User', modified_type=0, modified_id=update_user.id, action='禁止用户', ).save() data = u'user=%s, ModifyTable=User, action=禁止用户, modified_username=%s' % (request.user.username, update_user.username) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) elif update_type == 'del_user': try: account = UserProfile.objects.get(user=update_user) if account.level == 1: company = CompanyProfile.objects.get(profile=account) company.profile = None company.save() except Exception: pass update_user.delete() Data = { 'result': True, 'name': update_user.username, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='User', modified_type=0, modified_id=update_user.id, action='删除用户', ).save() data = u'user=%s, ModifyTable=User, action=删除用户, modified_username=%s' % (request.user.username, update_user.username) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) elif update_type == 'active_user': update_user.is_active = True update_user.save() Data = { 'result': True, 'name': update_user.username, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='User', modified_type=0, modified_id=update_user.id, action='解禁用户', ).save() data = u'user=%s, ModifyTable=User, action=解禁用户, modified_username=%s' % (request.user.username, update_user.username) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) self_id = user.id if username is None: user_list = User.objects.all().exclude(id=self_id) else: user_list = User.objects.filter(username__contains=username).exclude(id=self_id) users, page_numbers = adjacent_paginator(user_list, request.GET.get('page', 1)) return render(request, template_name, { 'user': user, 'users': users, 'page_numbers': page_numbers, })
def property(request, template_name='labour/company_property.html'): """ 企业资金管理""" filter_company = {} if request.user.account.level == 1: filter_company['company'] = request.user.account.profile today = datetime.datetime.now() year = today.year month = today.month if request.method == 'POST': company_id = request.POST.get('company_id', None) actual = request.POST.get('actual', None) if company_id: record = MoneyRecord.objects.get(company__id=company_id, year=year, month=month) record.actual = actual record.balance = str(float(record.actual) - float(record.deserve)) record.save() Data = { 'result': True, } UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='工资管理表', modified_type=1, modified_id=record.id, action='公司实到金额', ).save() data = u'操作员=%s, ModifyTable=MoneyRecord, action=公司实到金额, money=%s' % (request.user.username, actual) INFO_LOG.info(data) return HttpResponse(json.dumps(Data)) else: company_list = CompanyProfile.objects.all() for company in company_list: if not MoneyRecord.objects.filter(year=year, month=month, company=company).exists(): employee_count = EmployeeProfile.objects.filter(company=company).count() contracts = Contract.objects.filter(employee__company=company) employee_salary_sum = 0.0 for contract in contracts: employee_salary_sum = employee_salary_sum + float(contract.real_salary) deserve = float(company.service_cost) * employee_count + employee_salary_sum actual = 0.0 balance = 0.0 #history_balance = MoneyRecord.objects.filter(company=company, year=year) #for history in history_balance: # balance = balance + float(history.balance) balance = balance + actual - deserve MoneyRecord( company=company, deserve=str(deserve), actual=str(actual), balance=str(balance), year=year, month=month, ).save() money_list = MoneyRecord.objects.filter(year=year, month=month, **filter_company) companys, page_numbers = adjacent_paginator(money_list, request.GET.get('page', 1)) return render(request, template_name, { 'companys': companys, 'page_numbers': page_numbers, })
def insurance(request, template_name='labour/company_insurance_search.html'): """ 保险搜索""" search_args = {} filter_company = {} if request.user.account.level == 1: filter_company['pk'] = request.user.account.profile.id search_args['company__id'] = request.user.account.profile.id name = request.GET.get('name', '') id_no = request.GET.get('id_no', '') company_id = request.GET.get('company_id', '') export = request.GET.get('export_s', None) if name: search_args['name__contains'] = name if id_no: search_args['id_no__contains'] = id_no if company_id: search_args['company__id'] = company_id try: int(company_id) except: company_id = 0 # 批量修改工资发放时间 if request.method == 'POST': change_date = request.POST.get("change_date", None) select_ids = request.POST.get("select_ids", None) insurance_type = request.POST.get('insurance_type', None) if change_date: id_attr = select_ids.split(',')[1:] employees = EmployeeProfile.objects.filter(id__in=id_attr) for employee in employees: if insurance_type == 'health': employee.health_payment_end = change_date elif insurance_type == 'endowment': employee.endowment_payment_end = change_date elif insurance_type == 'born': employee.born_payment_end = change_date elif insurance_type == 'industrial': employee.industrial_payment_end = change_date elif insurance_type == 'unemployed': employee.unemployed_payment_end = change_date elif insurance_type == 'reserved': employee.reserved_payment_end = change_date employee.save() UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='员工信息表', modified_type=3, modified_id=employee.id, action=u'%s保险截止时间修改' % insurance_type, ).save() data = u'操作员=%s, ModifyTable=EmployeeProfile, action=%s保险截止时间修改, modified_username=%s, company_name=%s' % (request.user.username, insurance_type, employee.name, employee.company.name) INFO_LOG.info(data) employee_list = EmployeeProfile.objects.filter(company__isnull=False, **search_args) companys = CompanyProfile.objects.filter(**filter_company) employees, page_numbers = adjacent_paginator(employee_list, request.GET.get('page', 1)) # 导出 if export: book = xlwt.Workbook(encoding='utf-8') ws = book.add_sheet('保险管理信息') style = xlwt.XFStyle() font = xlwt.Font() font.name = 'SimSun' style.font = font x_count = 0 y_count = 0 ws.write(x_count, y_count, '姓名', style) y_count += 1 ws.write(x_count, y_count, '用工单位', style) y_count += 1 ws.write(x_count, y_count, '养老保险截止时间', style) y_count += 1 ws.write(x_count, y_count, '医疗保险截止时间', style) y_count += 1 ws.write(x_count, y_count, '生育保险截止时间', style) y_count += 1 ws.write(x_count, y_count, '工伤保险截止时间', style) y_count += 1 ws.write(x_count, y_count, '失业保险截止时间', style) y_count += 1 ws.write(x_count, y_count, '公积金截止时间', style) y_count += 1 x_count += 1 y_count = 0 for employee in employees: ws.write(x_count, y_count, employee.name, style) y_count += 1 ws.write(x_count, y_count, employee.company.name, style) y_count += 1 ws.write(x_count, y_count, str(employee.endowment_payment_end)[:10], style) y_count += 1 ws.write(x_count, y_count, str(employee.health_payment_end)[:10], style) y_count += 1 ws.write(x_count, y_count, str(employee.born_payment_end)[:10], style) y_count += 1 ws.write(x_count, y_count, str(employee.industrial_payment_end)[:10], style) y_count += 1 ws.write(x_count, y_count, str(employee.unemployed_payment_end)[:10], style) y_count += 1 ws.write(x_count, y_count, str(employee.reserved_payment_end)[:10], style) y_count = 0 x_count += 1 response = HttpResponse(mimetype='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=保险管理信息.xls' book.save(response) UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='User', modified_type=3, modified_id=None, action='工资导出', ).save() data = u'操作者=%s, ModifyTable=Contract, action=工资导出' % (request.user.username) INFO_LOG.info(data) return response return render(request, template_name, { 'employees': employees, 'page_numbers': page_numbers, 'companys': companys, 'name': name, 'id_no': id_no, 'company_id': int(company_id), })
def user_action(request, template_name='manager/action_log.html'): """ 用户行为记录""" user = request.user export = request.GET.get('export', None) action_list = UserAction.objects.all().order_by("-created") user_actions, page_numbers = adjacent_paginator(action_list, request.GET.get('page', 1)) if export: book = xlwt.Workbook(encoding='utf-8') ws = book.add_sheet('导出职员信息') style = xlwt.XFStyle() font = xlwt.Font() font.name = 'SimSun' style.font = font x_count = 0 y_count = 0 ws.write(x_count, y_count, '操作IP', style) y_count += 1 ws.write(x_count, y_count, '操作账号', style) y_count += 1 ws.write(x_count, y_count, '操作者姓名', style) y_count += 1 ws.write(x_count, y_count, '操作内容', style) y_count += 1 ws.write(x_count, y_count, '操作时间', style) y_count += 1 y_count = 0 x_count += 1 for action in action_list: ws.write(x_count, y_count, action.ip, style) y_count += 1 ws.write(x_count, y_count, action.user.username, style) y_count += 1 ws.write(x_count, y_count, action.user.account.name, style) y_count += 1 ws.write(x_count, y_count, "%s--%s" % (action.table_name, action.action), style) y_count += 1 ws.write(x_count, y_count, str(action.created)[:10], style) y_count += 1 x_count += 1 y_count = 0 response = HttpResponse(mimetype='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename=用户操作记录表.xls' book.save(response) UserAction( user=request.user, ip=request.META['REMOTE_ADDR'], table_name='用户行为信息表', modified_type=2, modified_id=None, action='导出', ).save() data = u'user=%s, Export_table=UserAction, action=导出' % (request.user.username) INFO_LOG.info(data) return response return render(request, template_name, { 'user': user, 'actions': user_actions, 'page_numbers': page_numbers, })