summaryrefslogtreecommitdiffstats
path: root/news
diff options
context:
space:
mode:
Diffstat (limited to 'news')
-rw-r--r--news/__init__.py0
-rw-r--r--news/admin.py5
-rw-r--r--news/models.py17
-rw-r--r--news/tests.py16
-rw-r--r--news/urls.py11
-rw-r--r--news/views.py33
6 files changed, 82 insertions, 0 deletions
diff --git a/news/__init__.py b/news/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/news/__init__.py
diff --git a/news/admin.py b/news/admin.py
new file mode 100644
index 0000000..95a693a
--- /dev/null
+++ b/news/admin.py
@@ -0,0 +1,5 @@
+from news.models import News, Comment
+from django.contrib import admin
+
+admin.site.register(News)
+admin.site.register(Comment)
diff --git a/news/models.py b/news/models.py
new file mode 100644
index 0000000..fb9acc5
--- /dev/null
+++ b/news/models.py
@@ -0,0 +1,17 @@
+from django.db import models
+from django.contrib.auth.models import User
+
+class News(models.Model):
+ text = models.TextField()
+ title = models.CharField(max_length=300)
+ date = models.DateTimeField(auto_now_add=True)
+ author = models.ForeignKey(User)
+
+ def __unicode__(self):
+ return u'{} - {}'.format(self.title, self.date)
+
+class Comment(models.Model):
+ text = models.TextField()
+ author = models.ForeignKey(User)
+ date = models.DateTimeField(auto_now_add=True)
+ news = models.ForeignKey(News)
diff --git a/news/tests.py b/news/tests.py
new file mode 100644
index 0000000..501deb7
--- /dev/null
+++ b/news/tests.py
@@ -0,0 +1,16 @@
+"""
+This file demonstrates writing tests using the unittest module. These will pass
+when you run "manage.py test".
+
+Replace this 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.assertEqual(1 + 1, 2)
diff --git a/news/urls.py b/news/urls.py
new file mode 100644
index 0000000..efd91b4
--- /dev/null
+++ b/news/urls.py
@@ -0,0 +1,11 @@
+from django.conf.urls.defaults import *
+from news.views import NewsList, NewsView
+from django.core.urlresolvers import reverse
+
+urlpatterns = patterns(
+ 'news.views',
+ url(r'^$', NewsList.as_view() ),
+ url(r'^post/$', 'post'),
+ url(r'^list/page(?P<page>[0-9]+)/$', NewsList.as_view() ),
+ url(r'^details/id/(?P<pk>[0-9]+)/$', NewsView.as_view(), name='news-details' ),
+)
diff --git a/news/views.py b/news/views.py
new file mode 100644
index 0000000..8256b8d
--- /dev/null
+++ b/news/views.py
@@ -0,0 +1,33 @@
+from django.shortcuts import render_to_response, redirect
+from django.forms import ModelForm
+from news.models import News
+from django.views.generic import ListView, DetailView
+from django.db.models import Count
+from django.http import HttpResponseRedirect
+
+class NewsForm(ModelForm):
+ class Meta:
+ model = News
+
+class NewsList(ListView):
+ model = News
+ paginate_by= 5
+ queryset = News.objects.annotate(Count('comment')).select_related('author__username')
+ context_object_name = 'news_list'
+
+class NewsView(DetailView):
+ model = News
+ context_object_name='news'
+
+def post(request):
+ if request.method == 'POST':
+ form = NewsForm(request.POST)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect('')
+ else:
+ form = NewsForm()
+
+ return render_to_response('news/post.html', {
+ 'form': form,
+ })