123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- from django.http import HttpResponse, HttpResponseRedirect
- from django.shortcuts import render
- import json
- import datetime
- from Niko import settings
- import os
- from PIL import Image
- class DateEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, datetime.datetime):
- return obj.strftime('%Y-%m-%d %H:%M:%S')
- elif isinstance(obj, datetime.date):
- return obj.strftime("%Y-%m-%d")
- else:
- return json.JSONEncoder.default(self, obj)
- def qs2json(querySet):
- qdict = []
- for i in querySet:
- qdict.append(i)
- qJson = {}
- qJson = json.dumps(qdict, cls=DateEncoder)
- print(qJson)
- return qJson
- def qs2dict(querySet):
- result = []
- for i in querySet:
- result.append(i)
- return result
- # 验证用户登录状态
- def checkLoginUser(request):
- try:
- request.session['loginID']
- request.session['loginUser']
- request.session['loginNickname']
- return True
- except Exception as e:
- print(e)
- return False
- # 获取session
- def getSession(request, session):
- try:
- sessionName = request.session[session]
- return sessionName
- except:
- return None
- # 检验session id的有效性
- def checkSession(request, session):
- try:
- sessionName = request.session[session]
- return True
- except:
- return False
- def checkGET(request, GET):
- try:
- result = request.GET[GET]
- return True
- except Exception as e:
- print(e)
- return False
- def checkPOST(request, GET):
- try:
- result = request.POST[GET]
- return True
- except:
- return False
- # 验证checkIn的组织者是否为登录的用户
- def checkCorrectO_ID(request, ID):
- checkSession(request, 'loginID')
- if ID != getSession(request, 'loginID'):
- return False
- else:
- return True
- # 上传文件
- def upload_file(request, filename, prefix, suffix='', sub_folder='user_upload', max_width=1200):
- try:
- file_name = request.FILES.get(filename)
- ext_file_name = get_ext(file_name)
- save_filename = str(prefix) + suffix + '.' + ext_file_name
- to_path = os.path.join(settings.BASE_DIR, 'checkIn', settings.MEDIA_STORAGE, sub_folder)
- to_file = os.path.join(to_path, save_filename)
- # to_path = to_path.replace('\\', '/')
- # to_file = to_file.replace('\\', '/')
- if not os.path.exists(to_path):
- os.makedirs(to_path)
- destination = open(to_file, 'wb+')
- for chunk in file_name.chunks():
- destination.write(chunk)
- destination.close()
- picture_resize(to_file, max_width)
- return save_filename
- except Exception as e:
- print(e)
- return None
- # 图片压缩
- # filename 文件名
- # max_width 最大宽度,自动计算高度
- def picture_resize(filename, max_width=1200):
- image = Image.open(filename)
- w, h = image.size
- if w > max_width: # 如果宽度大于预定值就缩小比例
- zoom = max_width / w
- resize_h = round(zoom * h)
- resize_image = image.resize((max_width, resize_h), Image.ANTIALIAS)
- resize_image.save(filename)
- # 获取文件扩展名
- def get_ext(filename):
- filename_2 = str(filename).split('.')
- return filename_2[-1]
|