72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
import json
|
|
|
|
from django.http import Http404, HttpResponse, HttpResponseBadRequest
|
|
from django.conf import settings
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.template.loader import render_to_string
|
|
from django.contrib.auth.decorators import permission_required
|
|
|
|
from .files import save_upload, is_file_image
|
|
from .controllers import FilePath, ImagePath
|
|
|
|
# @permission_required('files_widget.can_upload_files')
|
|
def upload(request):
|
|
if not request.method == 'POST':
|
|
raise Http404
|
|
|
|
# if request.is_ajax():
|
|
# # the file is stored raw in the request
|
|
# upload = request
|
|
# is_raw = True
|
|
# # AJAX Upload will pass the filename in the querystring if it is the "advanced" ajax upload
|
|
# try:
|
|
# filename = request.GET['files[0]']
|
|
# except KeyError:
|
|
# return HttpResponseBadRequest(json.dumps({
|
|
# 'success': False,
|
|
# 'message': 'Error while uploading file',
|
|
# }))
|
|
# not an ajax upload, so it was the "basic" iframe version with submission via form
|
|
# else:
|
|
is_raw = False
|
|
try:
|
|
upload = next(iter(request.FILES.values()))
|
|
except StopIteration:
|
|
return HttpResponseBadRequest(json.dumps({
|
|
'success': False,
|
|
'message': 'Error while uploading file.',
|
|
}))
|
|
filename = upload.name
|
|
|
|
path_to_file = save_upload(upload, filename, is_raw, request.user)
|
|
MEDIA_URL = settings.MEDIA_URL
|
|
|
|
if 'preview_size' in request.POST:
|
|
preview_size = request.POST['preview_size']
|
|
else:
|
|
preview_size = '64'
|
|
|
|
if not is_file_image(f'{settings.MEDIA_ROOT}{path_to_file}'):
|
|
thumbnailPath = f'{settings.STATIC_URL}files_widget/img/file-icons/file_icon.png'
|
|
else:
|
|
thumbnailPath = render_to_string('files_widget/includes/thumbnail.html', locals())
|
|
|
|
return HttpResponse(json.dumps({
|
|
'success': True,
|
|
'imagePath': path_to_file,
|
|
'thumbnailPath': thumbnailPath,
|
|
}))
|
|
|
|
# @permission_required('files_widget.can_upload_files')
|
|
def thumbnail_url(request):
|
|
try:
|
|
if not 'img' in request.GET or not 'preview_size' in request.GET:
|
|
raise Http404
|
|
|
|
thumbnail_url = ImagePath(request.GET['img']).thumbnail(request.GET['preview_size']).url
|
|
|
|
except:
|
|
thumbnail_url = 'files_widget/static/files_widget/img/file-icons/file_icon.png'
|
|
|
|
return HttpResponse(thumbnail_url)
|