Example #1
0
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')
Example #2
0
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')