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))
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))
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))