functions.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from django.http import HttpResponse, HttpResponseRedirect
  2. from django.shortcuts import render
  3. import json
  4. import datetime
  5. from Niko import settings
  6. import os
  7. from PIL import Image
  8. class DateEncoder(json.JSONEncoder):
  9. def default(self, obj):
  10. if isinstance(obj, datetime.datetime):
  11. return obj.strftime('%Y-%m-%d %H:%M:%S')
  12. elif isinstance(obj, datetime.date):
  13. return obj.strftime("%Y-%m-%d")
  14. else:
  15. return json.JSONEncoder.default(self, obj)
  16. def qs2json(querySet):
  17. qdict = []
  18. for i in querySet:
  19. qdict.append(i)
  20. qJson = {}
  21. qJson = json.dumps(qdict, cls=DateEncoder)
  22. print(qJson)
  23. return qJson
  24. def qs2dict(querySet):
  25. result = []
  26. for i in querySet:
  27. result.append(i)
  28. return result
  29. # 验证用户登录状态
  30. def checkLoginUser(request):
  31. try:
  32. request.session['loginID']
  33. request.session['loginUser']
  34. request.session['loginNickname']
  35. return True
  36. except Exception as e:
  37. print(e)
  38. return False
  39. # 获取session
  40. def getSession(request, session):
  41. try:
  42. sessionName = request.session[session]
  43. return sessionName
  44. except:
  45. return None
  46. # 检验session id的有效性
  47. def checkSession(request, session):
  48. try:
  49. sessionName = request.session[session]
  50. return True
  51. except:
  52. return False
  53. def checkGET(request, GET):
  54. try:
  55. result = request.GET[GET]
  56. return True
  57. except Exception as e:
  58. print(e)
  59. return False
  60. def checkPOST(request, GET):
  61. try:
  62. result = request.POST[GET]
  63. return True
  64. except:
  65. return False
  66. # 验证checkIn的组织者是否为登录的用户
  67. def checkCorrectO_ID(request, ID):
  68. checkSession(request, 'loginID')
  69. if ID != getSession(request, 'loginID'):
  70. return False
  71. else:
  72. return True
  73. # 上传文件
  74. def upload_file(request, filename, prefix, suffix='', sub_folder='user_upload', max_width=1200):
  75. try:
  76. file_name = request.FILES.get(filename)
  77. ext_file_name = get_ext(file_name)
  78. save_filename = str(prefix) + suffix + '.' + ext_file_name
  79. to_path = os.path.join(settings.BASE_DIR, 'checkIn', settings.MEDIA_STORAGE, sub_folder)
  80. to_file = os.path.join(to_path, save_filename)
  81. # to_path = to_path.replace('\\', '/')
  82. # to_file = to_file.replace('\\', '/')
  83. if not os.path.exists(to_path):
  84. os.makedirs(to_path)
  85. destination = open(to_file, 'wb+')
  86. for chunk in file_name.chunks():
  87. destination.write(chunk)
  88. destination.close()
  89. picture_resize(to_file, max_width)
  90. return save_filename
  91. except Exception as e:
  92. print(e)
  93. return None
  94. # 图片压缩
  95. # filename 文件名
  96. # max_width 最大宽度,自动计算高度
  97. def picture_resize(filename, max_width=1200):
  98. image = Image.open(filename)
  99. w, h = image.size
  100. if w > max_width: # 如果宽度大于预定值就缩小比例
  101. zoom = max_width / w
  102. resize_h = round(zoom * h)
  103. resize_image = image.resize((max_width, resize_h), Image.ANTIALIAS)
  104. resize_image.save(filename)
  105. # 获取文件扩展名
  106. def get_ext(filename):
  107. filename_2 = str(filename).split('.')
  108. return filename_2[-1]