Exemplo n.º 1
0
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)
Exemplo n.º 3
0
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))