123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- from __future__ import absolute_import
- from django.contrib.auth.decorators import login_required
- from django.contrib.messages.views import SuccessMessageMixin
- from django.core.paginator import Paginator
- from django.core.urlresolvers import reverse, reverse_lazy
- from django.utils.decorators import method_decorator
- from django.views import generic
- from .forms import AuthorForm, ContactForm
- from .models import Artist, Author, Book, Page, BookSigning
- class CustomTemplateView(generic.TemplateView):
- template_name = 'generic_views/about.html'
- def get_context_data(self, **kwargs):
- context = super(CustomTemplateView, self).get_context_data(**kwargs)
- context.update({'key': 'value'})
- return context
- class ObjectDetail(generic.DetailView):
- template_name = 'generic_views/detail.html'
- def get_object(self):
- return {'foo': 'bar'}
- class ArtistDetail(generic.DetailView):
- queryset = Artist.objects.all()
- class AuthorDetail(generic.DetailView):
- queryset = Author.objects.all()
- class PageDetail(generic.DetailView):
- queryset = Page.objects.all()
- template_name_field = 'template'
- class DictList(generic.ListView):
- """A ListView that doesn't use a model."""
- queryset = [
- {'first': 'John', 'last': 'Lennon'},
- {'first': 'Yoko', 'last': 'Ono'}
- ]
- template_name = 'generic_views/list.html'
- class ArtistList(generic.ListView):
- template_name = 'generic_views/list.html'
- queryset = Artist.objects.all()
- class AuthorList(generic.ListView):
- queryset = Author.objects.all()
- class CustomPaginator(Paginator):
- def __init__(self, queryset, page_size, orphans=0, allow_empty_first_page=True):
- super(CustomPaginator, self).__init__(
- queryset,
- page_size,
- orphans=2,
- allow_empty_first_page=allow_empty_first_page)
- class AuthorListCustomPaginator(AuthorList):
- paginate_by = 5
- def get_paginator(self, queryset, page_size, orphans=0, allow_empty_first_page=True):
- return super(AuthorListCustomPaginator, self).get_paginator(
- queryset,
- page_size,
- orphans=2,
- allow_empty_first_page=allow_empty_first_page)
- class ContactView(generic.FormView):
- form_class = ContactForm
- success_url = reverse_lazy('authors_list')
- template_name = 'generic_views/form.html'
- class ArtistCreate(generic.CreateView):
- model = Artist
- class NaiveAuthorCreate(generic.CreateView):
- queryset = Author.objects.all()
- class AuthorCreate(generic.CreateView):
- model = Author
- success_url = '/list/authors/'
- class SpecializedAuthorCreate(generic.CreateView):
- model = Author
- form_class = AuthorForm
- template_name = 'generic_views/form.html'
- context_object_name = 'thingy'
- def get_success_url(self):
- return reverse('author_detail', args=[self.object.id,])
- class AuthorCreateRestricted(AuthorCreate):
- post = method_decorator(login_required)(AuthorCreate.post)
- class ArtistUpdate(generic.UpdateView):
- model = Artist
- class NaiveAuthorUpdate(generic.UpdateView):
- queryset = Author.objects.all()
- class AuthorUpdate(generic.UpdateView):
- model = Author
- success_url = '/list/authors/'
- class OneAuthorUpdate(generic.UpdateView):
- success_url = '/list/authors/'
- def get_object(self):
- return Author.objects.get(pk=1)
- class SpecializedAuthorUpdate(generic.UpdateView):
- model = Author
- form_class = AuthorForm
- template_name = 'generic_views/form.html'
- context_object_name = 'thingy'
- def get_success_url(self):
- return reverse('author_detail', args=[self.object.id,])
- class NaiveAuthorDelete(generic.DeleteView):
- queryset = Author.objects.all()
- class AuthorDelete(generic.DeleteView):
- model = Author
- success_url = '/list/authors/'
- class SpecializedAuthorDelete(generic.DeleteView):
- queryset = Author.objects.all()
- template_name = 'generic_views/confirm_delete.html'
- context_object_name = 'thingy'
- def get_success_url(self):
- return reverse('authors_list')
- class BookConfig(object):
- queryset = Book.objects.all()
- date_field = 'pubdate'
- class BookArchive(BookConfig, generic.ArchiveIndexView):
- pass
- class BookYearArchive(BookConfig, generic.YearArchiveView):
- pass
- class BookMonthArchive(BookConfig, generic.MonthArchiveView):
- pass
- class BookWeekArchive(BookConfig, generic.WeekArchiveView):
- pass
- class BookDayArchive(BookConfig, generic.DayArchiveView):
- pass
- class BookTodayArchive(BookConfig, generic.TodayArchiveView):
- pass
- class BookDetail(BookConfig, generic.DateDetailView):
- pass
- class AuthorGetQuerySetFormView(generic.edit.ModelFormMixin):
- def get_queryset(self):
- return Author.objects.all()
- class BookDetailGetObjectCustomQueryset(BookDetail):
- def get_object(self, queryset=None):
- return super(BookDetailGetObjectCustomQueryset,self).get_object(
- queryset=Book.objects.filter(pk=2))
- class CustomContextView(generic.detail.SingleObjectMixin, generic.View):
- model = Book
- object = Book(name='dummy')
- def get_object(self):
- return Book(name="dummy")
- def get_context_data(self, **kwargs):
- context = {'custom_key': 'custom_value'}
- context.update(kwargs)
- return super(CustomContextView, self).get_context_data(**context)
- def get_context_object_name(self, obj):
- return "test_name"
- class BookSigningConfig(object):
- model = BookSigning
- date_field = 'event_date'
- # use the same templates as for books
- def get_template_names(self):
- return ['generic_views/book%s.html' % self.template_name_suffix]
- class BookSigningArchive(BookSigningConfig, generic.ArchiveIndexView):
- pass
- class BookSigningYearArchive(BookSigningConfig, generic.YearArchiveView):
- pass
- class BookSigningMonthArchive(BookSigningConfig, generic.MonthArchiveView):
- pass
- class BookSigningWeekArchive(BookSigningConfig, generic.WeekArchiveView):
- pass
- class BookSigningDayArchive(BookSigningConfig, generic.DayArchiveView):
- pass
- class BookSigningTodayArchive(BookSigningConfig, generic.TodayArchiveView):
- pass
- class BookSigningDetail(BookSigningConfig, generic.DateDetailView):
- context_object_name = 'book'
- class NonModel(object):
- id = "non_model_1"
- _meta = None
- class NonModelDetail(generic.DetailView):
- template_name = 'generic_views/detail.html'
- model = NonModel
- def get_object(self, queryset=None):
- return NonModel()
|