summaryrefslogtreecommitdiffstats
path: root/blog
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2011-10-17 01:34:04 +0200
committerGravatar Tom Willemsen2011-10-17 01:34:04 +0200
commit4b29603d79cc1f79c66786684f27ec9abfbaa825 (patch)
tree655c321b7ee3b0cc919ab3b7bf937b50fc13c69c /blog
downloaddotfiles-4b29603d79cc1f79c66786684f27ec9abfbaa825.tar.gz
dotfiles-4b29603d79cc1f79c66786684f27ec9abfbaa825.zip
Initial commit
Diffstat (limited to 'blog')
-rw-r--r--blog/__init__.py0
-rw-r--r--blog/admin.py4
-rw-r--r--blog/models.py33
-rw-r--r--blog/tests.py23
-rw-r--r--blog/urls.py9
-rw-r--r--blog/views.py55
6 files changed, 124 insertions, 0 deletions
diff --git a/blog/__init__.py b/blog/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/blog/__init__.py
diff --git a/blog/admin.py b/blog/admin.py
new file mode 100644
index 0000000..ca32d1f
--- /dev/null
+++ b/blog/admin.py
@@ -0,0 +1,4 @@
+from blog.models import Post
+from django.contrib import admin
+
+admin.site.register(Post)
diff --git a/blog/models.py b/blog/models.py
new file mode 100644
index 0000000..126ba57
--- /dev/null
+++ b/blog/models.py
@@ -0,0 +1,33 @@
+from django.db import models
+from main.models import Tag, Activity
+from django.db.models.signals import post_save, post_delete
+
+class Post(models.Model):
+ subject = models.CharField(max_length=500)
+ body = models.TextField()
+ tags = models.ManyToManyField(Tag, null=True, blank=True)
+ postdate = models.DateTimeField(auto_now=True)
+
+ def __unicode__(self):
+ return self.subject
+
+def post_saved_callback(sender, **kwargs):
+ if kwargs['created']:
+ acttype = 'add'
+ else:
+ acttype = 'edit'
+
+ a = Activity(actcategory='blog',
+ actdescription=kwargs["instance"].subject,
+ acttype = acttype,
+ objpk = kwargs["instance"].pk)
+ a.save()
+
+def post_deleted_callback(sender, **kwargs):
+ a = Activity(actcategory='blog',
+ actdescription=kwargs["instance"].subject,
+ acttype = 'delete')
+ a.save()
+
+post_save.connect(post_saved_callback, sender=Post)
+post_delete.connect(post_deleted_callback, sender=Post)
diff --git a/blog/tests.py b/blog/tests.py
new file mode 100644
index 0000000..2247054
--- /dev/null
+++ b/blog/tests.py
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
diff --git a/blog/urls.py b/blog/urls.py
new file mode 100644
index 0000000..c4137ed
--- /dev/null
+++ b/blog/urls.py
@@ -0,0 +1,9 @@
+from django.conf.urls.defaults import *
+
+urlpatterns = patterns('blog.views',
+ (r'^$', 'index'),
+ (r'^(?P<page>\d+)/$', 'index'),
+ (r'^post/(?P<post_id>\d+)/$', 'post'),
+ (r'^tags/$', 'tags'),
+ (r'^tag/(?P<tag_name>[\w_]+)/$', 'tag'),
+)
diff --git a/blog/views.py b/blog/views.py
new file mode 100644
index 0000000..06a4aba
--- /dev/null
+++ b/blog/views.py
@@ -0,0 +1,55 @@
+# Create your views here.
+from django.http import HttpResponse
+from django.shortcuts import render_to_response
+from django.template import Context, loader
+from django.views.generic.simple import direct_to_template
+from blog.models import Post, Tag
+
+def index(request, page=0):
+ item_count = 7
+
+ page = int(page)
+ start_num = (page * item_count)
+ end_num = start_num + item_count
+
+ post_list = Post.objects.all().order_by("-postdate")[start_num:end_num]
+
+ has_previous = page > 0
+ has_next = end_num < Post.objects.all().count()
+
+ c = {
+ 'postlist': post_list,
+ 'has_next': has_next,
+ 'has_previous': has_previous,
+ 'next_page': page + 1,
+ 'previous_page': page - 1
+ }
+
+ return direct_to_template(request, "blog/posts.html", c)
+
+def post(request, post_id):
+ post = Post.objects.filter(pk=post_id)
+ t = loader.get_template("blog/posts.html")
+ c = Context({
+ 'postlist': post,
+ })
+
+ return HttpResponse(t.render(c))
+
+def tags(request):
+ tag_list = Tag.objects.all()
+ t = loader.get_template("blog/tags.html")
+ c = Context({
+ 'taglist': tag_list,
+ })
+
+ return HttpResponse(t.render(c))
+
+def tag(request, tag_name):
+ post_list = Post.objects.filter(tags__name=tag_name)
+ t = loader.get_template("blog/posts.html")
+ c = Context({
+ 'postlist': post_list,
+ })
+
+ return HttpResponse(t.render(c))