def detail(request, year, month, day, slug): """ The weblog post detail page. """ posts = list(Post.by_slug()[(int(year), int(month), int(day), slug)]) post = posts[0] prev = list(Post.by_time(count=-1, startkey_docid=post.id, skip=1) [[post.published.isoformat() + 'Z']:]) next = list(Post.by_time(count=1, startkey_docid=post.id, skip=1) [[post.published.isoformat() + 'Z']:]) try: user = User.objects.get(email=post.author.email) except User.DoesNotExist: user = None comment_form = CommentForm(initial={ 'document_id': post.id, 'next': quote_plus(post.get_absolute_url()) }) context = { 'post': post, 'prev': prev, 'next': next, 'user': user, 'comment_form': comment_form } return render_to_response('blog/detail.html', context, context_instance=RequestContext(request))
def archive_year(request, year): """ The weblog archive page for a given year. """ posts = [] prev = next = None for year_time, lst in groupby(Post.by_year(descending=True), lambda x: x.published.year): if year_time == int(year): posts = list(lst) elif not posts: prev = year_time else: next = year_time break months = Post.all_months() context = { 'posts': posts, 'year': date(int(year), 1, 1), 'prev': prev and date(prev, 1, 1) or None, 'next': next and date(next, 1, 1) or None, 'months': months, } return render_to_response('blog/archive_year.html', context, context_instance=RequestContext(request))
def setUp(self): self.server = Server(settings.COUCHDB_SERVER) try: self.db = self.server.create('comfy_blog_test') except: self.db = self.server['comfy_blog_test'] self.post1 = Post(title=u"Hello, World!", slug=u"foo-bar", published=datetime(2008, 8, 8), author={'name': 'Myles Braithwaite', 'email': '*****@*****.**'}) self.post2 = Post(title=u"Hello, World!", published=datetime(2007, 7, 7)) self.post1.store() self.post2.store()
def redirect(request, document_id): # FIXME F**k I am an idiot need to figure out a way to make this better. # Maybe something like Django's Content Types where it will look up the model # within the `INSTALLED_APPS` or something. try: doc = Document.load(db, document_id) except: raise Http404 # Is it a Blog post? if doc.type == 'Post': from comfy.apps.blog.models import Post post = Post.load(db, doc.id) return HttpResponseRedirect(post.get_absolute_url()) # Is it a Flat page? elif doc.type == 'FlatPage': from comfy.apps.flatpages.models import FlatPage f = FlatPage.load(db, doc.id) return HttpResponseRedirect(f.get_absolute_url()) # Is it a Note? elif doc.type == 'Note': from comfy.apps.notes.models import Note note = Note.load(db, doc.id) return HttpResponseRedirect(note.get_absolute_url()) elif doc.type == 'Bookmark': from comfy.apps.bookmarks.models import Bookmark bookmark = Bookmark.load(db, doc.id) return HttpResponseRedirect(bookmark.get_absolute_url()) else: raise Http404
class PostTestCase(unittest.TestCase): def setUp(self): self.server = Server(settings.COUCHDB_SERVER) try: self.db = self.server.create('comfy_blog_test') except: self.db = self.server['comfy_blog_test'] self.post1 = Post(title=u"Hello, World!", slug=u"foo-bar", published=datetime(2008, 8, 8), author={'name': 'Myles Braithwaite', 'email': '*****@*****.**'}) self.post2 = Post(title=u"Hello, World!", published=datetime(2007, 7, 7)) self.post1.store() self.post2.store() def testURL(self): self.assertEquals(self.post1.get_absolute_url(), '/blog/2008/8/8/foo-bar/') self.assertEquals(self.post2.get_absolute_url(), '/blog/2007/7/7/hello-world/') def testSlugify(self): self.assertEquals(self.post2.slug, 'hello-world') #def testAddComment(self): # post = Post.load(self.db, self.post1.id) # coment = post.comments() # comment.author = {'name': u"Myles Braithwaite", 'email': "*****@*****.**", 'url': u"http://mylesbraithwaite.com/"} # comment.comment = u"Hello, World!" # comment.time = datetime.now() # comment.user_agent = u"Python Unit Test" # comment.ip_address = u"127.0.0.1" # comment.is_spam = False # post.store() # # TODO Still working on doing something here to see if the test actually worked. def tearDown(self): del self.server['comfy_blog_test']
def render_item(item, document_type=None, template_directory='items'): if document_type == 'Post': content_object = Post.load(db, item.id) elif document_type == 'Note': content_object = Note.load(db, item.id) elif document_type == 'Bookmark': content_object = Bookmark.load(db, item.id) else: content_object = None document_type = 'none' t = get_template('tumblelog/%s/%s.html' % (template_directory, document_type.lower())) return t.render(template.Context({ 'item': content_object }))
def archive_day(request, year, month, day): """ The weblog archive page for a given day. """ posts = [] prev = next = None for year_month_day, lst in groupby(Post.by_day(descending=True), lambda x: (x.published.year, x.published.month, x.published.day)): if year_month_day == (int(year), int(month), int(day)): posts = list(lst) elif not posts: prev = year_month_day else: next = year_month_day break context = { 'posts': posts, 'day': date(int(year), int(month), int(day)), 'prev': prev and date(prev[0], prev[1], prev[2]) or None, 'next': next and date(next[0], next[1], next[2]) or None } return render_to_response('blog/archive_day.html', context, context_instance=RequestContext(request))
def index(request, page=1): """ The weblog index page. """ post_list = list(Post.by_time(descending=True)) paginator = Paginator(post_list, 10) try: posts = paginator.page(page) except (EmptyPage, InvalidPage): posts = paginator.page(paginator.num_pages) context = { 'posts': posts.object_list, 'has_next': posts.has_next(), 'has_previous': posts.has_previous(), 'has_other_pages': posts.has_other_pages(), 'start_index': posts.start_index(), 'end_index': posts.end_index(), 'previous_page_number': posts.previous_page_number(), 'next_page_number': posts.next_page_number(), } return render_to_response('blog/index.html', context, context_instance=RequestContext(request))
def detail_feed_comments(request, year, month, day, slug): posts = list(Post.by_slug()[(int(year), int(month), int(day), slug)]) post = posts[0] return render_feed(request=request, url='by_post/%s' % post.id, feed_dict=feed_dict)
def post_add_edit(request, id=None): if id: post = Post.load(db, id) form = PostForm(initial={ 'title': post.title, 'slug': post.slug, 'body': post.body, 'published': post.published, 'tags': ', '.join(post.tags), 'allow_comments': post.allow_comments, 'allow_pings': post.allow_pings }) add = False else: post = None form = PostForm() add = True if request.method == 'POST': new_data = request.POST.copy() form = PostForm(new_data) if form.is_valid(): if add: # Adding a new Post post = Post() post.title = form.cleaned_data['title'] post.slug = form.cleaned_data['slug'] post.body = form.cleaned_data['body'] post.published = form.cleaned_data['published'] post.tags = form.cleaned_data['tags'] post.allow_comments = form.cleaned_data['allow_comments'] post.allow_pings = form.cleaned_data['allow_pings'] post.store() else: # Updating a new Post post = Post.load(db, id) post.title = form.cleaned_data['title'] post.slug = form.cleaned_data['slug'] post.body = form.cleaned_data['body'] post.published = form.cleaned_data['published'] post.tags = form.cleaned_data['tags'] post.allow_comments = form.cleaned_data['allow_comments'] post.allow_pings = form.cleaned_data['allow_pings'] post.store() return render_to_response('comfy_admin/blog/posts/post_add_edit.html', { 'title': u'%s %s' % (add and _('Add') or _('Edit'), _('page')), 'post': post, 'form': form, 'add': add, }, context_instance=RequestContext(request))
def post_list(request): posts = list(Post.by_time()) return render_to_response('comfy_admin/blog/posts/post_list.html', { 'posts': posts, }, context_instance=RequestContext(request))