views.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. from django.http import HttpResponseRedirect
  2. from django.shortcuts import render
  3. from .models import User, Company
  4. from .model_handler import CompanyHandler, UserHandler, MessageHandler, ModularEnablementHandler
  5. from django.contrib.auth.hashers import make_password, check_password
  6. from .func import get_file
  7. from BOM.model_handler import EcnSignOffHandler
  8. # Create your views here.
  9. def login(request):
  10. if request.method == 'GET':
  11. return render(request, template_name='info/login.html')
  12. if request.method == 'POST':
  13. user = UserHandler.login(email=request.POST.get('email').strip(), password=request.POST.get('password').strip())
  14. if user:
  15. request.session['user_id'] = user.id
  16. request.session['company_id'] = user.company.id
  17. # todo 检索用户权限
  18. if user.psw_change_required: # 默认密码,导入修改密码页面
  19. return HttpResponseRedirect('/home/user/password/')
  20. else:
  21. return HttpResponseRedirect('/home/')
  22. else:
  23. return render(request=request, template_name='info/directPage.html', context={'alertMsg': '登录失败', 'dirLink': '/'})
  24. def logout(request):
  25. request.session.flush()
  26. return HttpResponseRedirect('/')
  27. def home(request):
  28. if request.method == 'GET':
  29. user = UserHandler.get_by_id(request.session.get('user_id'))
  30. page_data = {}
  31. page_data['user'] = user
  32. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  33. if not user:
  34. return HttpResponseRedirect('/')
  35. company_enabled_modulars = ModularEnablementHandler.search_by_company(company)
  36. company_enabled_modulars_list = []
  37. for item in company_enabled_modulars:
  38. company_enabled_modulars_list.append(item.modular.name)
  39. page_data['modular_list'] = company_enabled_modulars_list # 返回模块清单
  40. if 'BOM_management' in company_enabled_modulars_list: # 当公司拥有BOM模块
  41. pending_ecn_qty = EcnSignOffHandler.my_pending_eco_count(user) # 检索待签核的ECO
  42. page_data['BOM'] = {'pending_ecn_qty': pending_ecn_qty}
  43. unread_message_qty = MessageHandler.unread_msg_count(user) # 检索用户未读信息
  44. page_data['info'] = {'unread_message_qty': unread_message_qty}
  45. return render(request, 'info/home.html', context=page_data)
  46. def register(request):
  47. if request.method == 'GET':
  48. return render(request, template_name='info/register.html')
  49. if request.method == 'POST':
  50. # 检测是否重复邮箱功能,如果存在就提示错误
  51. if UserHandler.check_exist_email(request.POST.get('email')):
  52. return render(request=request, template_name='info/directPage.html', context={'alertMsg': '邮箱已经使用过了', 'dirLink': '/register/'})
  53. user = User()
  54. company = Company()
  55. user.name = request.POST.get('name').strip()
  56. user.email = request.POST.get('email').strip()
  57. user.mobile = request.POST.get('mobile').strip()
  58. user.position = request.POST.get('position').strip()
  59. user.password = make_password(request.POST.get('password').strip())
  60. company.name = request.POST.get('company_name').strip()
  61. company.address = request.POST.get('company_address').strip()
  62. company.license_id = request.POST.get('company_license').strip()
  63. company.phone = user.mobile
  64. company.primary_contact_name = user.name
  65. company.primary_contact_mobile = user.mobile
  66. company.primary_contact_email = user.email
  67. company.save()
  68. user.company = company
  69. user.admin = True
  70. user.save()
  71. return render(request=request, template_name='info/directPage.html', context={'alertMsg': '注册成功', 'dirLink': '/'})
  72. def user_profile(request): # 用户资料修改
  73. if request.method == 'GET':
  74. user = UserHandler.get_by_id(request.session.get('user_id'))
  75. request.session['current_email'] = user.email
  76. return render(request, 'info/user_profile.html', {'user': user})
  77. if request.method == 'POST':
  78. new_email = request.POST.get('email').strip()
  79. if new_email != request.session['current_email']:
  80. # 检测是否重复邮箱功能,如果存在就提示错误
  81. if UserHandler.check_exist_email(new_email):
  82. return render(request=request, template_name='info/directPage.html', context={'alertMsg': '邮箱已经被占用', 'dirLink': '/home/user/profile/'})
  83. user = UserHandler.get_by_id(request.session.get('user_id'))
  84. user.name = request.POST.get('name').strip()
  85. user.email = new_email
  86. user.mobile = request.POST.get('mobile').strip()
  87. user.position = request.POST.get('position').strip()
  88. del request.session['current_email']
  89. user.save()
  90. return HttpResponseRedirect('/home/')
  91. def user_password(request): # 用户修改密码
  92. if request.method == 'GET':
  93. user = UserHandler.get_by_id(request.session.get('user_id'))
  94. return render(request, 'info/user_password.html')
  95. if request.method == 'POST':
  96. user = UserHandler.get_by_id(request.session.get('user_id'))
  97. if check_password(request.POST.get('current_pwd').strip(), user.password):
  98. user.password = make_password(request.POST.get('password').strip())
  99. user.save()
  100. return HttpResponseRedirect('/home/')
  101. else:
  102. return render(request=request, template_name='info/directPage.html', context={'alertMsg': '密码错误', 'dirLink': '/home/user/password/'})
  103. def get_upload_file(request):
  104. return get_file(request)