func.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from Info.models import Company, User, Message
  2. from .model_handler import UserHandler, CompanyHandler
  3. from django.conf import settings
  4. from datetime import datetime
  5. import os
  6. from django.http import FileResponse
  7. def is_login(request):
  8. if request.session.get('user_id') and request.session.get('company_id'):
  9. user = UserHandler.get_by_id(request.session.get('user_id'))
  10. if user.company.id == request.session.get('company_id'):
  11. return True
  12. else:
  13. return False
  14. else:
  15. return False
  16. def is_admin(request):
  17. user = UserHandler.get_by_id(request.session.get('user_id'))
  18. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  19. if not user.admin or user.company != company:
  20. return False
  21. else:
  22. return True
  23. def file_upload(request, group: list):
  24. # group 参数表示上传文件的分类,会体现在上传的文件夹
  25. result = {'code':1, 'target_file_path':None, 'target_file_name':None, 'result':'fail'}
  26. target_dir = settings.BASE_DIR.parent
  27. target_file_path = '/upload/'
  28. for g in group:
  29. target_file_path += g
  30. target_file_path += '/'
  31. user = UserHandler.get_by_id(request.session.get('user_id'))
  32. company = CompanyHandler.get_by_id(request.session.get('company_id'))
  33. target_file_path = target_file_path + str(company.id) + '/'
  34. target_file_path = target_file_path + str(user.id) + '/'
  35. target_file_path = target_file_path + datetime.now().strftime('%Y%m%d_%H%M%S') + '/'
  36. target_dir = str(target_dir).replace('\\', '/') + target_file_path
  37. target_file_name = request.FILES['files'].name
  38. if not os.path.isdir(target_dir):
  39. os.makedirs(target_dir)
  40. result = {'code':1, 'target_file_path':target_file_path, 'target_file_name':target_file_name, 'result':'fail'}
  41. try:
  42. destination = open(target_dir+target_file_name, 'wb+')
  43. for chunk in request.FILES['files'].chunks():
  44. destination.write(chunk)
  45. destination.close()
  46. result['code'] = 0
  47. result['result'] = 'pass'
  48. except:
  49. pass
  50. return result
  51. def get_file(request):
  52. target_dir = settings.BASE_DIR.parent
  53. target_file_path = request.get_full_path()
  54. target_file = str(target_dir).replace('\\', '/') + target_file_path
  55. return FileResponse(open(target_file, 'rb'), as_attachment=True)
  56. def delete_file(url):
  57. target_dir = settings.BASE_DIR.parent
  58. target_file = str(target_dir).replace('\\', '/') + url
  59. if os.path.exists(target_file):
  60. os.remove(target_file)
  61. return True
  62. else:
  63. return False
  64. def file_host(request):
  65. return request.get_host() + '/upload/'
  66. def send_message(from_user:User, to_user:User, title:str, content:str = None):
  67. # 未来可能扩展出短信,微信等多个功能
  68. message = Message()
  69. if from_user:
  70. message.user_from = from_user
  71. message.user_to = to_user
  72. # message.company = company
  73. message.title = title
  74. if content:
  75. message.body = content
  76. message.save()