def process_image_form(request, image_id=None): if request.method == 'POST': if not image_id: # form bound to the POST data form = ImageForm(request.POST, request.FILES, prefix='image') else: image = get_object_or_404(Image, id=image_id) form = ImageForm(request.POST, request.FILES, prefix='image', instance=image) if form.is_valid(): # All validation rules pass image = form.save(commit=False) if image: form.cleaned_data['image'] = image # Get the key if not image_id: key = get_first_available_label(Image, slugify(form.cleaned_data['title']), 'key') image.key = key if not image_id: if not request.user.is_authenticated(): raise ValidationError, 'User must be logged in' else: image.uploaded_by = request.user image.save() form.redirect_url = image.get_absolute_url() else: #unbound forms if not image_id: form = ImageForm(initial=get_initial_image_data(request), prefix='image') else: image = get_object_or_404(Image, id=image_id) form = ImageForm(prefix='image', instance=image) return form
def get_username(self): """ Construct the username out of the firstname and the lastname, """ from utils import get_first_available_label first = unidecode(self.cleaned_data['first_name']) last = unidecode(self.cleaned_data['last_name']) username = slugify('%s %s' % (first, last)).lower() #[:30].rstrip('-').lower() return get_first_available_label(model=User, start_name=username, field='username', iexact=True)
def edit_post(request, post_id=None): post = None image_id = None hasimage = False # If post_id specified we are editing an existing post. if post_id: post = get_object_or_404(Post, id=post_id) if not post.can_user_modify(request.user): raise PermissionDenied if post.image: image_id = post.image.id # If the form has been submitted... if request.method == 'POST': # Get a postform if post: postform = PostForm(request.user, request.POST, request.FILES, prefix='post', instance=post) else: postform = PostForm(request.user, request.POST, request.FILES, prefix='post') # Get any attached image if (post and post.image) or request.FILES.has_key('image-image'): imageform = process_image_form(request, image_id=image_id) else: imageform = None # All validation rules pass # Via the post form, this also ensures the listing specified is allowed # and prevents users from posting to lists they don't have permission for if postform.is_valid(): post = postform.save(commit=False) if imageform and imageform.is_valid(): post.image = imageform.cleaned_data['image'] else: post.image = None if not post_id: name = slugify(post.title)[:50] post.name = get_first_available_label(Post, name, 'name') if not post.author: post.author = request.user post.save() return HttpResponseRedirect(post.get_absolute_url()) else: if not post_id: # unbound forms postform = PostForm(request.user, prefix='post') imageform = ImageForm(initial=get_initial_image_data(request), prefix='image') else: postform = PostForm(request.user, instance=post, prefix='post') if not post.image: # unbound form imageform = ImageForm(initial=get_initial_image_data(request), prefix='image') else: imageform = ImageForm(instance=post.image, initial=get_initial_image_data(request), prefix='image') hasimage = True if post_id: action = reverse('edit-post', args=(), kwargs={'post_id': post.id}) else: action = reverse('new-post') return render_to_response('cms/edit_post.html', { 'postform': postform, 'imageform': imageform, 'required': REQUIRED_FIELDS, 'action': action, 'hasimage': hasimage}, context_instance=RequestContext(request))