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