diff options
| author | Thibaut Horel <thibaut.horel@gmail.com> | 2012-02-17 09:39:46 -0800 |
|---|---|---|
| committer | Thibaut Horel <thibaut.horel@gmail.com> | 2012-02-17 09:39:46 -0800 |
| commit | d6655d4957b9e1654d1bfe262d093120def254ee (patch) | |
| tree | effe7dcb8f771f2c026fff9d067fb74c4ca84a56 /news | |
| download | famille-django-master.tar.gz | |
Diffstat (limited to 'news')
| -rw-r--r-- | news/__init__.py | 0 | ||||
| -rw-r--r-- | news/admin.py | 5 | ||||
| -rw-r--r-- | news/models.py | 17 | ||||
| -rw-r--r-- | news/tests.py | 16 | ||||
| -rw-r--r-- | news/urls.py | 11 | ||||
| -rw-r--r-- | news/views.py | 33 |
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, + }) |
