Example #1
0
    def post(self, request, *args, **kwargs):
        # Ajax POST for file uploads
        if request.is_ajax():
            custom_post = QueryDict('temp_hash=%s' % request.POST.get('temp_hash'))
            file_form = PhotoUploadForm(request.POST, request.FILES)
            print(request.POST)
            print(request.FILES)

            if file_form.is_valid():
                # file_form.save()
                response = {'file': []}
                for photo in request.FILES.getlist('file'):
                    # Create a new entry in our database
                    new_image = Photo(image=photo,
                                      temp_hash=request.POST.get('temp_hash'))
                    # Save the image using the model's ImageField settings
                    new_image.save()
                    response['file'].append({
                        'name': '%s' % new_image.id,
                        'size': '%d' % request.FILES.__sizeof__(),
                        'url': '%s' % new_image.image.url,
                        'thumbnailUrl': '%s' % new_image.image.url,
                        'deleteUrl': '\/image\/delete\/%s' % new_image.id,
                        "deleteType": 'DELETE'
                    })

                # return HttpResponse('{"status":"success"}', content_type='application/json')
                return JsonResponse(response)
            # return HttpResponse('{"status":"error: %s"}' % file_form.errors, content_type='application/json')
            return JsonResponse({'response': file_form.errors, })

        return super(MultiAttachmentMixin, self).post(request, *args, **kwargs)
Example #2
0
def editphotoset(request, id):
    photo_form = PhotoUploadForm()
    photoset = get_object_or_404(PhotoSet, id = id)
    photoset_form = PhotoSetForm (instance = photoset)

    if request.method == 'POST':
        if request.POST['action'] == 'addphoto':
            photo_form = PhotoUploadForm(request.user, request.POST, request.FILES)
            if photo_form.is_valid():
                photo = photo_form.save()
                photo.member = request.user
                photo.photoset.add(photoset)
                photo.save()

        elif request.POST['action'] == 'editphotoset':
            photoset_form = PhotoSetForm(request.user, request.POST, instance = photoset)
            if photoset_form.is_valid():
                photoset = photoset_form.save(commit = False)
                
                photoset.save()
                
                redirect_to = "/photos/photoset/%i" % photoset.pk
                return HttpResponseRedirect(redirect_to)



    return render_to_response('photos/editphotoset.html', {'photo_form': photo_form,
                                                            'photoset_form': photoset_form,
                                                            
                                                            'photoset': photoset},
                                                            context_instance = RequestContext(request))
Example #3
0
 def post(self, request, format=None):
     form = PhotoUploadForm(request.POST, request.FILES)
     if form.is_valid():
         request_file = request.FILES['file']
         try:
             service = PhotoService(request_file, request.user)
             if service.photo_exists():
                 raise IntegrityError
             photo = service.store_and_save_photos()
         except IntegrityError:
             return HttpResponse(status=409)
     serializer = PhotoSerializer(photo)
     return Response(serializer.data)
Example #4
0
def add_to_photoset(request, id):
    photoset = get_object_or_404(PhotoSet, pk = id)
    photoset_form = PhotoSetForm()
    if request.method == 'POST':
        photo_form = PhotoUploadForm(request.user, request.POST, request.FILES)
        if photo_form.is_valid():
            photo = photo_form.save(commit = False)
            photo.photoset.add(photoset)
            photo.save()
            return HttpResponseRedirect('/photos/edit/photoset/%s/' % photoset.pk)
    else:
        photo_form = PhotoUploadForm()
    return render_to_response('photos/editphotoset.html', {'photoset_form': photoset_form,
                                                            'photo_form': photo_form,
                                                            'photoset': photoset},
                                                            context_instance = RequestContext(request))
Example #5
0
def make(request, slug=None):
    product = get_object_or_404(Product, slug=slug)

    if request.method == "POST":
        print(request.POST)
        print(request.FILES)

        images_count = Photo.objects.filter(temp_hash=request.POST.get('temp_hash')).count()
        if images_count == product.image_total:
            return JsonResponse({'status': 'Total de imagenes cargadas!'})
        else:

            form = PhotoUploadForm(request.POST, request.FILES or None)
            if form.is_valid():
                response = {'file': []}

                photo = request.FILES.get('file')
                # [...] Process the file. Resize it, create thumbnails, etc.
                # Get an instance of picture model (defined below)
                new_image = Photo(image=photo, temp_hash=request.POST.get('temp_hash'))
                # Save the image using the model's ImageField settings
                new_image.save()

                response['file'].append({
                    'name': '%s' % new_image.id,
                    'size': '%d' % request.FILES.__sizeof__(),
                    'url': '%s' % new_image.image.url,
                    'thumbnailUrl': '%s' % new_image.image.url,
                    'deleteUrl': '\/image\/delete\/%s' % new_image.id,
                    "deleteType": 'DELETE'
                })

                # return HttpResponse('{"status":"success"}', content_type='application/json')
                return JsonResponse(response)
            # return HttpResponse('{"status":"error: %s"}' % file_form.errors, content_type='application/json')
            return JsonResponse({'response': form.errors, })

    # uploaded_images = []  # product variation
    # if request.method == "POST":
    #     try:
    #         response = {'files': []}
    #         for photo in request.FILES.getlist('photos'):
    #             # Create a new entry in our database
    #             new_image = Photo(image_field=photo)
    #             # new_image.cart_item = cart_item
    #             # Save the image using the model's ImageField settings
    #             new_image.save()
    #             # Save output for return as JSON
    #             response['files'].append({
    #                 'name': '%s' % new_image.id,
    #                 'size': '%d' % request.FILES.__sizeof__(),
    #                 'url': '%s' % new_image.image_field.url,
    #                 'thumbnailUrl': '%s' % new_image.image_field.url,
    #                 'deleteUrl': '\/image\/delete\/%s' % new_image.id,
    #                 "deleteType": 'DELETE'
    #             })
    #             uploaded_images.append(new_image)
    #     except:
    #         pass
    #     print(len(uploaded_images))
    #     if len(uploaded_images) > 0:
    #         cart_item.photo_set.add(*uploaded_images)
    #
    #     # cart_item.save()
    #     # success message
    #     context = {
    #         'product': product,
    #         'photos': uploaded_images,
    #     }
    #
    #     return render(request, "photos/upload.html", context)
    #     # return JsonResponse(response)
    #     # return HttpResponseRedirect(reverse('cart'))

    # error message
    instagram_images = get_instagram_images(user=request.user)
    form = PhotoUploadForm()
    context = {
        'upload_form': form,
        'product': product,
        'class_name': form.__class__.__name__,
        'images': instagram_images,
    }

    return render(request, "photos/upload2.html", context)
Example #6
0
def photos_batch_add(request, photoset_id=0):
    """
    params: request, photoset_id
    returns: HttpResponse

    on flash request:
        photoset_id is passed via request.POST
        and received as type unicode; i convert to type integer
    on http request:
        photoset_id is passed via url
    """
    import uuid
    from perms.object_perms import ObjectPermission


    # photoset permission required to add photos
    if not has_perm(request.user,'photos.add_photoset'):
        raise Http403

    if request.method == 'POST':
        for field_name in request.FILES:
            uploaded_file = request.FILES[field_name]

            # use file to create title; remove extension
            filename, extension = os.path.splitext(uploaded_file.name)
            request.POST.update({'title': filename, })

            # clean filename; alphanumeric with dashes
            filename = re.sub(r'[^a-zA-Z0-9._]+', '-', filename)

            # truncate; make unique; append extension
            request.FILES[field_name].name = \
                filename[:70] + '-' + unicode(uuid.uuid1())[:5] + extension

            # photoset_id set in swfupload
            photoset_id = int(request.POST["photoset_id"])

            request.POST.update({
                'owner': request.user.id,
                'owner_username': unicode(request.user),
                'creator_username': unicode(request.user),
                'status': True,
                'status_detail': 'active',
            })
            photo_form = PhotoUploadForm(request.POST, request.FILES, user=request.user)

            if photo_form.is_valid():
                # save photo
                photo = photo_form.save(commit=False)
                photo.creator = request.user
                photo.member = request.user
                photo.safetylevel = 3
                photo.allow_anonymous_view = True

                # update all permissions and save the model
                photo = update_perms_and_save(request, photo_form, photo)

                EventLog.objects.log(**{
                    'event_id' : 990100,
                    'event_data': '%s (%d) added by %s' % (photo._meta.object_name, photo.pk, request.user),
                    'description': '%s added' % photo._meta.object_name,
                    'user': request.user,
                    'request': request,
                    'instance': photo,
                }) 

                # add to photo set if photo set is specified
                if photoset_id:
                    photo_set = get_object_or_404(PhotoSet, id=photoset_id)
                    photo_set.image_set.add(photo)

                privacy = get_privacy_settings(photo_set)

                # photo privacy = album privacy
                for k, v in privacy.items():
                    setattr(photo, k, v)

                photo.save()  # real time search index hooked to save method

                print 'i waited'

                # photo group perms = album group perms
                group_perms = photo_set.perms.filter(group__isnull=False).values_list('group','codename')
                group_perms = tuple([(unicode(g), c.split('_')[0]) for g, c in group_perms ])
                ObjectPermission.objects.assign_group(group_perms, photo)

                # serialize queryset
                data = serializers.serialize("json", Image.objects.filter(id=photo.id))
    
                # returning a response of "ok" (flash likes this)
                # response is for flash, not humans
                return HttpResponse(data, mimetype="text/plain")
            else:
                return HttpResponse("photo is not valid", mimetype="text/plain")

    else:
        if not photoset_id:
            HttpResponseRedirect(reverse('photoset_latest'))

        photo_set = get_object_or_404(PhotoSet, id=photoset_id)

        # show the upload UI
        return render_to_response('photos/batch-add.html', {
            "photoset_id":photoset_id,
            "photo_set": photo_set,
            "csrf_token": csrf_get_token(request)
             },
            context_instance=RequestContext(request))