Ejemplo n.º 1
0
def new_post():
    user = records.find_one({'_id': current_user._id})
    form = PostForm()
    if (user['role'] == 'author'):
        if form.validate_on_submit():
            mongo.db.post.insert({
                "author": user,
                "title": form.title.data,
                "date_posted": datetime.datetime.now(),
                "content": form.content.data
            })
            flash(f'Your post has been created!', 'success')
            return redirect(url_for('home'))
    else:
        abort(403)

    return render_template('create_post.html',
                           legend='New Post',
                           title='New Post',
                           form=form)
Ejemplo n.º 2
0
def update_post(_id):
    form = PostForm()
    post = mongo.db.post.find_one({'_id': ObjectId(_id)})
    user = records.find_one({'_id': current_user._id})
    if post['author']['username'] != user['username']:
        abort(403)
    if form.validate_on_submit():
        mongo.db.post.update_one(
            {'_id': ObjectId(_id)},
            {'$set': {
                "title": form.title.data,
                "content": form.content.data
            }})
        flash('Your post has been updated!', 'success')
        return redirect(url_for('post', _id=post['_id']))
    elif request.method == 'GET':
        form.title.data = post['title']
        form.content.data = post['content']
    return render_template('create_post.html',
                           title='Update Post',
                           legend='Update Post',
                           form=form,
                           post=post)
Ejemplo n.º 3
0
def edit_post(request, post_id=None):
    # Get the post
    post = None
    image_id = None
    if post_id:
        post = get_object_or_404(Post, id=post_id)
        if post.image:
            image_id = post.image.id
    if request.method == 'POST':  # If the form has been submitted...
        if post:
            postform = PostForm(request.POST,
                                request.FILES,
                                prefix='post',
                                instance=post)
        else:
            postform = PostForm(request.POST, request.FILES, prefix='post')
        # check that the image form has been completed (look for a file path)
        if request.FILES.has_key('image-image'):
            imageform = process_image_form(request, image_id=image_id)
        else:
            imageform = None
        if postform.is_valid():  # All validation rules pass
            post = postform.save(commit=False)
            if imageform:
                post.image = imageform.cleaned_data['image']
            else:
                post.image = None
            if not post_id:
                name = slugify(post.title)[:50]
                try:
                    Post.objects.get(name=name)
                    count = 0
                    while True:
                        count += 1
                        newname = name[:(50 - 1 -
                                         len(str(count)))] + '-' + str(count)
                        try:
                            Post.objects.get(name=newname)
                        except Post.DoesNotExist:
                            name = newname
                except Post.DoesNotExist:
                    pass
                post.name = name
                if not post.author:
                    post.author = request.user
            post.save()
            return HttpResponseRedirect(post.get_absolute_url())
    else:
        if not post_id:
            postform = PostForm(prefix='post')  # An unbound form
            imageform = ImageForm(initial=get_initial_data(request),
                                  prefix='image')  # An unbound form
        else:
            post = get_object_or_404(Post, id=post_id)
            postform = PostForm(instance=post, prefix='post')
            if not post.image:
                imageform = ImageForm(initial=get_initial_data(request),
                                      prefix='image')  # An unbound form
            else:
                imageform = ImageForm(post.image,
                                      initial=get_initial_data(request),
                                      prefix='image')
    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
    },
                              context_instance=RequestContext(request))