root/branches/pluggable-contents/common/views.py

Revision 58, 2.8 kB (checked in by nobu, 9 months ago)
  • Djangoのリビジョン7378に対応。
Line 
1 # vim: encoding=utf-8 :
2
3 from django.conf import settings
4 from django.core.urlresolvers import reverse
5 from django.http import HttpResponse, Http404
6 from django.template import loader, RequestContext
7 from django.utils.translation import ugettext_lazy as _
8
9 from blog.models import Entry
10 from common.models import FlatPage
11
12 DEFAULT_TEMPLATE = 'flatpages/default.html'
13
14
15 def sitemap(request):
16     """
17     Show sitemap.xml
18     """
19     entries = Entry.objects.filter(is_published__exact=True)\
20                            .filter(is_active__exact=True)\
21                            .order_by('-updated_at')
22     flatpages = FlatPage.objects.filter(is_published__exact=True)\
23                                 .filter(is_active__exact=True)\
24                                 .order_by('-updated_at')
25     c = RequestContext(request, {
26         'entries': entries,
27         'flatpages': flatpages,
28     })
29     t = loader.get_template('sitemap.xml')
30     return HttpResponse(t.render(c), mimetype='text/xml; charset=utf-8')
31
32
33 def flatpage(request, url):
34     """
35     Show flatpage.
36     """
37     if not url.startswith('/'):
38         url = "/" + url
39     queryset = FlatPage.objects.filter(url__exact=url)\
40                                .filter(is_active__exact=True)
41     try:
42         if request.user.is_authenticated():
43             obj = queryset.get()
44         else:
45             obj = queryset.get(is_published__exact=True)
46     except FlatPage.DoesNotExist:
47         raise Http404
48     if obj.template_name:
49         t = loader.select_template((obj.template_name, DEFAULT_TEMPLATE))
50     else:
51         t = loader.get_template(DEFAULT_TEMPLATE)
52     c = RequestContext(request, {'obj': obj})
53     return HttpResponse(t.render(c))
54
55
56 def page_not_found(request):
57     """
58     Handling error 404.
59     """
60     referer = request.META.get('HTTP_REFERER')
61     description = _(u"The requested URL %(path)s was not found.") % {'path': request.path}
62     c = RequestContext(request, {
63         'description': description,
64         'referer': referer or reverse('top_page'),
65         'title': _(u"Not found"),
66         'top_page': reverse('top_page'),
67     })
68     t = loader.get_template('error.html')
69     return HttpResponse(t.render(c), status=404)
70
71
72 def server_error(request):
73     """
74     Handling Error 500.                                                                 
75     """
76     referer = request.META.get('HTTP_REFERER')                                               
77     c = RequestContext(request, { 
78         'description': _(u"The server encountered an internal server error."),       
79         'referer': referer or reverse('top_page'),                               
80         'title': _(u"Internal server error"),
81         'top_page': reverse('top_page'),
82     })
83     t = loader.get_template('error.html')
84     return HttpResponse(t.render(c), status=500)
Note: See TracBrowser for help on using the browser.