Пример #1
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))
Пример #2
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))
Пример #3
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))