def images_add(request): if not request.user.is_authenticated(): return HttpResponseRedirect("/staff/login/") elif request.user.has_perm("images.add_image"): if request.method == "POST": form = ImageForm(request.POST, request.FILES) if form.is_valid(): # save new image new_image = Image(name=form.cleaned_data["name"]) if form.cleaned_data.get("caption"): new_image.caption = form.cleaned_data["caption"] if form.cleaned_data.get("credit"): new_image.credit = form.cleaned_data["credit"] new_image.image = form.cleaned_data["image"] new_image.save() return HttpResponseRedirect(reverse("images.views.images_add_to_markup", args=[new_image.id])) else: return render_to_response( "images/widget_add.html", {"form": form}, context_instance=RequestContext(request) ) else: form = ImageForm() return render_to_response( "images/widget_add.html", {"form": form}, context_instance=RequestContext(request) ) else: return render_to_response( "staff/access_denied.html", {"missing": "add photos to", "staffapp": "this entry"}, context_instance=RequestContext(request), )
def images_add(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/staff/login/') elif request.user.has_perm('images.add_image'): if request.method == 'POST': form = ImageForm(request.POST, request.FILES) if form.is_valid(): # save new image new_image = Image(name=form.cleaned_data['name']) if form.cleaned_data.get('caption'): new_image.caption = form.cleaned_data['caption'] if form.cleaned_data.get('credit'): new_image.credit = form.cleaned_data['credit'] new_image.image = form.cleaned_data['image'] new_image.save() return HttpResponseRedirect( reverse('images.views.images_add_to_markup', args=[new_image.id])) else: return render_to_response( 'images/widget_add.html', {'form': form}, context_instance=RequestContext(request)) else: form = ImageForm() return render_to_response('images/widget_add.html', {'form': form}, context_instance=RequestContext(request)) else: return render_to_response('staff/access_denied.html', { 'missing': 'add photos to', 'staffapp': 'this entry' }, context_instance=RequestContext(request))
def handle(self, *args, **options): for i in os.listdir(options['directory']): im = Image() path = options['directory'] + os.sep + i with open(path) as f: data = f.read() # obj.image is the ImageField im.image = i im.image.save(i, ContentFile(data)) im.save()
def upload_base64(self, request, *args, **kwargs): if request.user.is_verified: data = request.data extension = 'jpg' if 'image' in data: if len(data['image']) > 0: if re.compile('^data:image/jpeg;').match( data['image']) is not None: image_type = 'image/jpeg' extension = 'jpg' if re.compile('^data:image/png;').match( data['image']) is not None: image_type = 'image/png' extension = 'png' image_data = binascii.a2b_base64(data['image'].replace( 'data:' + image_type + ';base64,', '')) f = BytesIO(image_data) pil_image = PilImage.open(f) f.seek(0) # TODO: make them all jpegs average_color = average_image_color(pil_image) color = "rgb(%s,%s,%s)" % (average_color['R'], average_color['G'], average_color['B']) image = Image(width=pil_image.width, height=pil_image.height, created_by=request.user, modified_by=request.user, color=color) image.image = UploadedFile(file=f, name='%s.%s' % (image.id, extension), content_type=image_type, size=len(image_data)) image.save() f.close() return Response(ImageSerializer(image).data) raise NotFound()
def upload(self, request, *args, **kwargs): if request.user.is_verified and 'file' in request.data: data = request.data['file'] extension = 'jpg' if len(data) > 0: pil_image = PilImage.open(data) # TODO: Convert image to JPEG so color averaging doesnt blow up. average_color = average_image_color(pil_image) color = "rgb(%s,%s,%s)" % ( average_color['R'], average_color['G'], average_color['B']) image = Image(width=pil_image.width, height=pil_image.height, created_by=request.user, modified_by=request.user, color=color) data.name = '%s.%s' % (image.id, extension) image.image = data image.save() return Response(ImageSerializer(image).data) raise PermissionDenied()
def multiuploader(request): """ Main Multiuploader module. Parses data from jQuery plugin and makes database changes. """ """ CL Instead of using MultiuploaderImage as the model, need to use our own Image model. """ user = User.objects.filter(username=request.user)[0] 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[u'files[]'] 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') image = Image() image.filename = str(filename) image.image = file image.title = "" image.caption = "" image.owner = user 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+'/' except AttributeError: file_delete_url = 'multi_delete/' file_url = 'multi_image/' # file_url='image/1/edit' # becomes /upload/image/1/edit file_url = '/account/image/' + str(image.id) + '/edit' #generating json response array result = [] result.append({"name":filename, "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')