Skip to content

Commit

Permalink
Adding views for deleting and listing user blogs
Browse files Browse the repository at this point in the history
  • Loading branch information
matagus committed May 16, 2015
1 parent 2d16dc3 commit c37c733
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 4 deletions.
2 changes: 1 addition & 1 deletion planet/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
VERSION = (0, 8, 1, "f") # following PEP 386
VERSION = (0, 8, 2, "f") # following PEP 386

def get_version():
version = "%s.%s" % (VERSION[0], VERSION[1])
Expand Down
4 changes: 3 additions & 1 deletion planet/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from planet.feeds import PostFeed, AuthorFeed, AuthorTagFeed, TagFeed
from planet.settings import PLANET_CONFIG
from planet.sitemaps import planet_sitemaps_dict
from planet.views import FeedAddView
from planet.views import FeedAddView, BlogListByUserView, BlogDeleteView


if PLANET_CONFIG["LOGIN_REQUIRED_FOR_ADDING_FEED"]:
Expand All @@ -23,8 +23,10 @@


urlpatterns = patterns('planet.views',
url(r'^blogs/(?P<pk>\d+)/delete/$', login_required(BlogDeleteView.as_view()), name="planet_blog_delete"),
url(r'^blogs/(?P<blog_id>\d+)/(?P<slug>[a-zA-Z0-9_\-]+)/$', "blog_detail", name="planet_blog_detail"),
url(r'^blogs/(?P<blog_id>\d+)/$', "blog_detail"),
url(r'^blogs/my-blogs/$', login_required(BlogListByUserView.as_view()), name="planet_blog_list_by_user"),
url(r'^blogs/$', "blogs_list", name="planet_blog_list"),
url_add_feed_tuple,
url(r'^feeds/(?P<feed_id>\d+)/(?P<slug>[a-zA-Z0-9_\-]+)/tags/(?P<tag>.*)/$', "feed_detail", name="planet_by_tag_feed_detail"),
Expand Down
41 changes: 39 additions & 2 deletions planet/views.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse, reverse_lazy
from django.forms import ValidationError
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import CreateView
from django.views.generic import ListView
from django.views.generic.detail import SingleObjectMixin
from django.views.generic.edit import CreateView, DeleteView
from django.http import Http404

from planet.models import Blog, Feed, Author, Post
from planet.forms import SearchForm
Expand Down Expand Up @@ -264,3 +267,37 @@ def form_valid(self, form):
self.object = feed

return HttpResponseRedirect(reverse("planet_index"))


class BlogListByUserView(ListView):
template_name = 'planet/blogs/list_by_user.html'
model = Blog

def get_queryset(self):
return Blog.objects.filter(owner=self.request.user)


class OwnedObjectMixin(SingleObjectMixin):
"""
An object that needs to verify current user ownership
before allowing manipulation.
From https://github.com/PyAr/pyarweb/blob/b4095c5c1b474a207e45918683de400974f6a739/community/views.py#L43
"""

def get_object(self, *args, **kwargs):
obj = super(OwnedObjectMixin, self).get_object(*args, **kwargs)

try:
if not obj.owner == self.request.user:
raise Http404()
except AttributeError:
pass

return obj


class BlogDeleteView(DeleteView, OwnedObjectMixin):
template_name = 'planet/blogs/confirm_delete.html'
model = Blog
success_url = reverse_lazy('planet_blog_list_by_user')

0 comments on commit c37c733

Please sign in to comment.