def multiuploader(request): """ Main Multiuploader module. Parses data from jQuery plugin and makes database changes. """ if request.method == 'POST': log.info('received POST to main multiuploader view') if request.FILES == None: return HttpResponseBadRequest('Must have files attached!') #getting file data for farther manipulations file = request.FILES['file'] wrapped_file = UploadedFile(file) filename = wrapped_file.name file_size = wrapped_file.file.size log.info ('Got file: "%s"' % str(filename)) log.info('Content type: "$s" % file.content_type') print(file_size, file.content_type) if file_size > 3000000: result = [] result.append({"name":filename, "size":file_size, "error":"Die Datei ist zu groß."}) response_data = simplejson.dumps(result) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) if imghdr.what(file) == None: result = [] result.append({"name":filename, "size":file_size, "error":"Die Date muss ein Bild sein."}) response_data = simplejson.dumps(result) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) #writing file manually into model #because we don't need form of any type. image = MultiuploaderImage() image.filename=str(filename) image.caption = request.POST["caption[]"] hardware = get_object_or_404(Hardware, id=request.POST["hardwareid"]) if hardware.owner != request.user: return HttpResponse('fak u') image.hardware = hardware image.image=file image.key_data = image.key_generate image.save() log.info('File saving done') #getting thumbnail url using sorl-thumbnail if 'image' in file.content_type.lower(): im = get_thumbnail(image, "80x80", quality=50) thumb_url = im.url else: thumb_url = '' #settings imports try: file_delete_url = settings.MULTI_FILE_DELETE_URL+'/' file_url = settings.MULTI_IMAGE_URL+'/'+image.key_data+'/' except AttributeError: file_delete_url = '/upload/delete/' file_url = '/images/'+str(image.image) #generating json response array result = [] result.append({"name":filename, "caption":image.caption, "size":file_size, "url":file_url, "thumbnail_url":thumb_url, "delete_url":file_delete_url+str(image.pk), "delete_type":"POST",}) response_data = simplejson.dumps(result) #checking for json data type #big thanks to Guy Shapiro if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) else: #GET return HttpResponse('Only POST accepted')
def multiuploader(request): """ Main Multiuploader module. Parses data from jQuery plugin and makes database changes. """ if request.user.is_authenticated() == False: return HttpResponseBadRequest('Not authenticated') if request.method == 'GET': result = [] images = MultiuploaderImage.objects.filter(user=request.user) for image in images: wrapped_file = UploadedFile(image.image) result.append({"name":str(image.key_data), "size":wrapped_file.file.size, "url":settings.MEDIA_URL+image.image.name, "thumbnail_url":settings.MEDIA_URL+image.image.name, "delete_url": reverse('deleter', args=(image.id,)), "delete_type":"POST",}) response_data = simplejson.dumps(result) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) if request.method == 'POST': log.info('received POST to main multiuploader view') if request.FILES == None: return HttpResponseBadRequest('Must have files attached!') file = request.FILES.get('file') file.name = key_generate() + ".jpg" wrapped_file = UploadedFile(file) image = MultiuploaderImage() image.image = file image.key_data = file.name image.user = request.user image.save() result = [] result.append({"name":str(image.key_data), "size":wrapped_file.file.size, "url":settings.MEDIA_URL+image.image.name, "thumbnail_url":settings.MEDIA_URL+image.image.name, "delete_url":reverse('deleter', args=(image.id,)), "delete_type":"POST",}) response_data = simplejson.dumps(result) if "application/json" in request.META['HTTP_ACCEPT_ENCODING']: mimetype = 'application/json' else: mimetype = 'text/plain' return HttpResponse(response_data, mimetype=mimetype) else: return HttpResponse('Only POST\GET accepted')