From a00f85e1332ca973cec807693e383accd9cdc864 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Sun, 5 Oct 2008 21:06:00 -0400 Subject: port news to django 1.0 using generic views --- main/models.py | 4 +- news/views.py | 93 ++++++++++++++-------------------------------- templates/news/add.html | 9 +---- templates/news/delete.html | 11 +++--- templates/news/list.html | 2 +- 5 files changed, 39 insertions(+), 80 deletions(-) diff --git a/main/models.py b/main/models.py index f988996..a2753bc 100644 --- a/main/models.py +++ b/main/models.py @@ -1,6 +1,7 @@ from django.db import models from django.db.models import Q from django.contrib.auth.models import User +from archweb_dev.main.middleware import get_user import re ########################### @@ -135,7 +136,8 @@ class Donor(models.Model): class News(models.Model): id = models.AutoField(primary_key=True) - author = models.ForeignKey(User, related_name='news_author') + author = models.ForeignKey(User, related_name='news_author', + default=get_user) postdate = models.DateField(auto_now_add=True) title = models.CharField(max_length=255) content = models.TextField() diff --git a/news/views.py b/news/views.py index 05b5a38..6fa0d2b 100644 --- a/news/views.py +++ b/news/views.py @@ -1,85 +1,48 @@ -from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django import forms +from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.contrib.auth.decorators import permission_required -from django.contrib.auth.models import User -from django import forms from archweb_dev.main.utils import render_response from archweb_dev.main.models import News -from datetime import date + +from django.views.generic import list_detail, create_update def view(request, newsid): - news = get_object_or_404(News, id=newsid) - return render_response(request, 'news/view.html', {'news':news}) + return list_detail.object_detail(request, News.objects.all(), newsid, + template_name="news/view.html", + template_object_name='news') +#TODO: May as well use a date-based list here sometime def list(request): - news = News.objects.order_by('-postdate', '-id') - return render_response(request, 'news/list.html', {'news':news}) + return list_detail.object_list(request, News.objects.all(), + template_name="news/list.html", + template_object_name="news") + +class NewsForm(forms.ModelForm): + class Meta: + model = News + exclude=('id', 'author', 'postdate') @permission_required('main.add_news') def add(request): - try: - m = User.objects.get(username=request.user.username) - except User.DoesNotExist: - return render_response(request, 'error_page.html', - {'errmsg': 'Cannot find a maintainer record for you! No posting allowed.'}) - - manipulator = News.AddManipulator() - if request.POST: - data = request.POST.copy() - # add in the author ID - data['author'] = m.id - errors = manipulator.get_validation_errors(data) - if not errors: - manipulator.do_html2python(data) - manipulator.save(data) - return HttpResponseRedirect('/news/') - else: - errors = {} - data = {} - - form = forms.FormWrapper(manipulator, data, errors) - return render_response(request, 'news/add.html', {'form': form}) + return create_update.create_object(request, + form_class=NewsForm, + template_name='news/add.html') @permission_required('main.delete_news') def delete(request, newsid): - news = get_object_or_404(News, id=newsid) - #if news.author.id != request.user.id: - # return render_response(request, 'error_page.html', {'errmsg': 'You do not own this news item'}) - if request.POST: - news.delete() - return HttpResponseRedirect('/news/') - return render_response(request, 'news/delete.html') + return create_update.delete_object(request, + News, + object_id=newsid, + post_delete_redirect='/news/', + template_name='news/delete.html', + template_object_name='news') @permission_required('main.change_news') def edit(request, newsid): - try: - m = User.objects.get(username=request.user.username) - except User.DoesNotExist: - return render_response(request, 'error_page.html', - {'errmsg': 'Cannot find a maintainer record for you! No posting allowed.'}) - try: - manipulator = News.ChangeManipulator(newsid) - except News.DoesNotExist: - raise Http404 - - news = manipulator.original_object -# if news.author != m: -# return render_response(request, 'error_page.html', {'errmsg': 'You do not own this news item'}) - if request.POST: - data = request.POST.copy() - # add in the author ID - data['author'] = news.author.id - errors = manipulator.get_validation_errors(data) - if not errors: - manipulator.do_html2python(data) - manipulator.save(data) - return HttpResponseRedirect('/news/') - else: - errors = {} - data = news.__dict__ - - form = forms.FormWrapper(manipulator, data, errors) - return render_response(request, 'news/add.html', {'form': form, 'news':news}) + return create_update.update_object(request, object_id=newsid, + form_class=NewsForm, + template_name="news/add.html") # vim: set ts=4 sw=4 et: diff --git a/templates/news/add.html b/templates/news/add.html index 702d7ab..80fccc3 100644 --- a/templates/news/add.html +++ b/templates/news/add.html @@ -2,20 +2,15 @@ {% block content %}
- {% if news %} + {% if form.instance.id %}

Edit News

{% else %}

Add News

{% endif %}
+ {{form}} - - - - - - diff --git a/templates/news/delete.html b/templates/news/delete.html index 7ac5e25..0f48f8b 100644 --- a/templates/news/delete.html +++ b/templates/news/delete.html @@ -4,13 +4,12 @@

Confirm Delete


+ You are about to delete the news item '{{news}}'. +

+ Are you sure? +

-
Title:{{ form.title }}
Content:{{ form.content }}
- - - - -
Are You Sure?   
+    
{% endblock %} diff --git a/templates/news/list.html b/templates/news/list.html index 8627766..0edaae1 100644 --- a/templates/news/list.html +++ b/templates/news/list.html @@ -9,7 +9,7 @@ {% endif %}

News Updates

- {% for item in news %} + {% for item in news_list %} -- cgit v1.2.3-24-g4f1b
{{ item.postdate }} {{ item.title }}