Skip to content

Commit

Permalink
Delete posts via front-end
Browse files Browse the repository at this point in the history
* View (and url) for deleting posts
* Refinements for PostForm to accept user on __init__ and set author by it
  • Loading branch information
davelowe committed Nov 1, 2011
1 parent 5ca642b commit 65f3305
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 18 deletions.
12 changes: 7 additions & 5 deletions biblion/forms.py
Expand Up @@ -40,8 +40,8 @@ class PostForm(forms.ModelForm):
)
publish = forms.BooleanField(
required = False,
help_text = u"Checking this will publish this articles on the site",
)
help_text = u"Checking this will publish this article on the site",
)

if can_tweet():
tweet = forms.BooleanField(
Expand All @@ -51,18 +51,21 @@ class PostForm(forms.ModelForm):

class Meta:
model = Post
exclude = ("author",)

def __init__(self, *args, **kwargs):

blog = kwargs.pop("blog")
user = kwargs.pop("user")
if "section" in kwargs:
section = kwargs.pop("section")
else:
section = None

super(PostForm, self).__init__(*args, **kwargs)

self.fields["author"].initial = user
self.fields["author"].widget = forms.HiddenInput()

self.fields["section"].initial = section
if not blog.sections.count():
del self.fields["section"]
Expand All @@ -83,7 +86,7 @@ def __init__(self, *args, **kwargs):
# from latest revision maybe?
self.fields["publish"].initial = bool(post.published)

def save(self, user):
def save(self):
post = super(PostForm, self).save(commit=False)

if post.pk is None:
Expand All @@ -99,7 +102,6 @@ def save(self, user):
post.teaser_html = render_func(self.cleaned_data["teaser"])
post.content_html = render_func(self.cleaned_data["content"])
post.updated = datetime.now()
post.author = user
post.save()

r = Revision()
Expand Down
1 change: 1 addition & 0 deletions biblion/urls.py
Expand Up @@ -12,4 +12,5 @@
url(r"^(?P<slug>[-\w]+)/$", "biblion.views.blog_section_list", name="blog_section"),
url(r"post/add/$", "biblion.views.blog_post_add", name="blog_post_add"),
url(r"^post/(?P<post_pk>\d+)/edit/$", "biblion.views.blog_post_edit", name="blog_post_edit"),
url(r"^post/(?P<post_pk>\d+)/delete/$", "biblion.views.blog_post_delete", name="blog_post_delete"),
)
41 changes: 28 additions & 13 deletions biblion/views.py
Expand Up @@ -38,7 +38,7 @@ class BlogCreate(CreateView):
form_class = BlogForm


def blog_post_add(request, blog_slug, **kwargs):
def blog_post_add(request, blog_slug, post_form=PostForm, **kwargs):

blog = get_object_or_404(Blog, slug=blog_slug)
if "slug" in kwargs:
Expand All @@ -47,17 +47,17 @@ def blog_post_add(request, blog_slug, **kwargs):
section = None

if request.method == "POST":
form = PostForm(request.POST, blog=blog, section=section)
form = post_form(request.POST, blog=blog, section=section, user=request.user)
if form.is_valid():
post = form.save(request.user)
post = form.save()

if request.POST.get("next"):
return HttpResponseRedirect(request.POST["next"])

return HttpResponseRedirect("../%d" % post.pk)
return HttpResponseRedirect(post.get_absolute_url())

else:
form = PostForm(blog=blog, section=section)
form = post_form(blog=blog, section=section, user=request.user)

image_form = ImageForm()

Expand All @@ -67,7 +67,7 @@ def blog_post_add(request, blog_slug, **kwargs):
}, context_instance=RequestContext(request))


def blog_post_edit(request, blog_slug, post_pk, **kwargs):
def blog_post_edit(request, blog_slug, post_pk, post_form=PostForm, **kwargs):

blog = get_object_or_404(Blog, slug=blog_slug)
if "slug" in kwargs:
Expand All @@ -78,17 +78,18 @@ def blog_post_edit(request, blog_slug, post_pk, **kwargs):
post = get_object_or_404(blog.posts, pk=post_pk)

if request.method == "POST":
form = PostForm(request.POST, instance=post, blog=blog, section=section)

form = post_form(request.POST, instance=post, blog=blog, section=section, user=request.user)
if form.is_valid():
post = form.save(request.user)
post = form.save()

if request.POST.get("next"):
return HttpResponseRedirect(request.POST["next"])

return HttpResponseRedirect(post.get_absolute_url())

else:
form = PostForm(instance=post, blog=blog, section=section)
form = post_form(instance=post, blog=blog, section=section, user=request.user)

image_form = ImageForm()

Expand All @@ -99,6 +100,22 @@ def blog_post_edit(request, blog_slug, post_pk, **kwargs):
}, context_instance=RequestContext(request))


def blog_post_delete(request, blog_slug, post_pk, **kwargs):

blog = get_object_or_404(Blog, slug=blog_slug)

post = get_object_or_404(blog.posts, pk=post_pk)

if request.method == "POST":
post.delete()

return HttpResponseRedirect(request.POST.get("next") or "/")

return render_to_response("biblion/blog_post_delete.html", {
"post": post,
}, context_instance=RequestContext(request))


def blog_image_upload(request, **kwargs):

if request.method == "POST":
Expand Down Expand Up @@ -139,10 +156,8 @@ def blog_post_detail(request, **kwargs):
blog = get_object_or_404(Blog, slug=kwargs["blog_slug"])

if "post_pk" in kwargs:
if request.user.is_authenticated() and request.user.is_staff:
queryset = blog.posts.all()
post = get_object_or_404(queryset, pk=kwargs["post_pk"])
else:
post = get_object_or_404(blog.posts, pk=kwargs["post_pk"])
if not (request.user.is_authenticated() and request.user.is_staff) and post.author != request.user:
raise Http404()
else:
queryset = blog.posts.current()
Expand Down

0 comments on commit 65f3305

Please sign in to comment.