from django.http import HttpResponseRedirect from django.shortcuts import render from .models import User, Company from .model_handler import CompanyHandler, UserHandler, MessageHandler, ModularEnablementHandler from django.contrib.auth.hashers import make_password, check_password from .func import get_file from BOM.model_handler import EcnSignOffHandler # Create your views here. def login(request): if request.method == 'GET': return render(request, template_name='info/login.html') if request.method == 'POST': user = UserHandler.login(email=request.POST.get('email').strip(), password=request.POST.get('password').strip()) if user: request.session['user_id'] = user.id request.session['company_id'] = user.company.id # todo 检索用户权限 if user.psw_change_required: # 默认密码,导入修改密码页面 return HttpResponseRedirect('/home/user/password/') else: return HttpResponseRedirect('/home/') else: return render(request=request, template_name='info/directPage.html', context={'alertMsg': '登录失败', 'dirLink': '/'}) def logout(request): request.session.flush() return HttpResponseRedirect('/') def home(request): if request.method == 'GET': user = UserHandler.get_by_id(request.session.get('user_id')) page_data = {} page_data['user'] = user company = CompanyHandler.get_by_id(request.session.get('company_id')) if not user: return HttpResponseRedirect('/') company_enabled_modulars = ModularEnablementHandler.search_by_company(company) company_enabled_modulars_list = [] for item in company_enabled_modulars: company_enabled_modulars_list.append(item.modular.name) page_data['modular_list'] = company_enabled_modulars_list # 返回模块清单 if 'BOM_management' in company_enabled_modulars_list: # 当公司拥有BOM模块 pending_ecn_qty = EcnSignOffHandler.my_pending_eco_count(user) # 检索待签核的ECO page_data['BOM'] = {'pending_ecn_qty': pending_ecn_qty} unread_message_qty = MessageHandler.unread_msg_count(user) # 检索用户未读信息 page_data['info'] = {'unread_message_qty': unread_message_qty} return render(request, 'info/home.html', context=page_data) def register(request): if request.method == 'GET': return render(request, template_name='info/register.html') if request.method == 'POST': # 检测是否重复邮箱功能,如果存在就提示错误 if UserHandler.check_exist_email(request.POST.get('email')): return render(request=request, template_name='info/directPage.html', context={'alertMsg': '邮箱已经使用过了', 'dirLink': '/register/'}) user = User() company = Company() user.name = request.POST.get('name').strip() user.email = request.POST.get('email').strip() user.mobile = request.POST.get('mobile').strip() user.position = request.POST.get('position').strip() user.password = make_password(request.POST.get('password').strip()) company.name = request.POST.get('company_name').strip() company.address = request.POST.get('company_address').strip() company.license_id = request.POST.get('company_license').strip() company.phone = user.mobile company.primary_contact_name = user.name company.primary_contact_mobile = user.mobile company.primary_contact_email = user.email company.save() user.company = company user.admin = True user.save() return render(request=request, template_name='info/directPage.html', context={'alertMsg': '注册成功', 'dirLink': '/'}) def user_profile(request): # 用户资料修改 if request.method == 'GET': user = UserHandler.get_by_id(request.session.get('user_id')) request.session['current_email'] = user.email return render(request, 'info/user_profile.html', {'user': user}) if request.method == 'POST': new_email = request.POST.get('email').strip() if new_email != request.session['current_email']: # 检测是否重复邮箱功能,如果存在就提示错误 if UserHandler.check_exist_email(new_email): return render(request=request, template_name='info/directPage.html', context={'alertMsg': '邮箱已经被占用', 'dirLink': '/home/user/profile/'}) user = UserHandler.get_by_id(request.session.get('user_id')) user.name = request.POST.get('name').strip() user.email = new_email user.mobile = request.POST.get('mobile').strip() user.position = request.POST.get('position').strip() del request.session['current_email'] user.save() return HttpResponseRedirect('/home/') def user_password(request): # 用户修改密码 if request.method == 'GET': user = UserHandler.get_by_id(request.session.get('user_id')) return render(request, 'info/user_password.html') if request.method == 'POST': user = UserHandler.get_by_id(request.session.get('user_id')) if check_password(request.POST.get('current_pwd').strip(), user.password): user.password = make_password(request.POST.get('password').strip()) user.save() return HttpResponseRedirect('/home/') else: return render(request=request, template_name='info/directPage.html', context={'alertMsg': '密码错误', 'dirLink': '/home/user/password/'}) def get_upload_file(request): return get_file(request)