Пример #1
0
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),
        )
Пример #2
0
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))
Пример #3
0
    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()
Пример #6
0
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')