evorepo/news/views.py

73 lines
2.2 KiB
Python
Raw Normal View History

from django import forms
2008-06-27 13:50:01 -07:00
from django.contrib.auth.decorators import permission_required
from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.views.decorators.cache import never_cache
from django.views.generic import list_detail, create_update
import markdown
from main.models import News
def view(request, newsid):
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):
return list_detail.object_list(request,
News.objects.all().select_related('author').defer('content'),
template_name="news/list.html",
template_object_name="news")
class NewsForm(forms.ModelForm):
class Meta:
model = News
exclude=('id', 'author', 'postdate')
2008-07-30 09:59:09 -07:00
@permission_required('main.add_news')
@never_cache
def add(request):
if request.POST:
form = NewsForm(request.POST)
if form.is_valid():
newsitem = form.save(commit=False)
newsitem.author = request.user
newsitem.save()
return redirect(newsitem.get_absolute_url())
else:
form = NewsForm()
return render_to_response('news/add.html',
RequestContext(request, { 'form': form }))
2008-07-30 09:59:09 -07:00
@permission_required('main.delete_news')
@never_cache
def delete(request, newsid):
return create_update.delete_object(request,
News,
object_id=newsid,
post_delete_redirect='/news/',
template_name='news/delete.html',
template_object_name='news')
2008-07-30 09:59:09 -07:00
@permission_required('main.change_news')
@never_cache
def edit(request, newsid):
return create_update.update_object(request,
object_id=newsid,
form_class=NewsForm,
template_name="news/add.html")
@permission_required('main.change_news')
@never_cache
def preview(request):
markup = ''
if request.POST:
data = request.POST.get('data', '')
markup = markdown.markdown(data)
return HttpResponse(markup)
# vim: set ts=4 sw=4 et: