예제 #1
0
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))
예제 #2
0
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))
예제 #3
0
	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()
예제 #4
0
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
예제 #5
0
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']
예제 #6
0
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 }))
예제 #7
0
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))
예제 #8
0
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))
예제 #9
0
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)
예제 #10
0
파일: blog.py 프로젝트: myles-archive/comfy
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))
예제 #11
0
파일: blog.py 프로젝트: myles-archive/comfy
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))