From dbb8c23a81361b2bdd1128c997c8ce74a0cb4bd7 Mon Sep 17 00:00:00 2001 From: luxagraf Date: Fri, 6 Nov 2015 23:09:56 -0500 Subject: refactored src to use new build system with CBVs --- app/src/views.py | 89 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 10 deletions(-) (limited to 'app/src/views.py') diff --git a/app/src/views.py b/app/src/views.py index ceba079..95ddafa 100644 --- a/app/src/views.py +++ b/app/src/views.py @@ -1,15 +1,84 @@ -from django.shortcuts import render_to_response, get_object_or_404 -from django.template import RequestContext -from .models import Entry, Topic +from django.views.generic import ListView +from django.views.generic.detail import DetailView +from django.contrib.syndication.views import Feed +from django.core.urlresolvers import reverse +from django.conf import settings +from paypal.standard.forms import PayPalPaymentsForm -def topic(request, slug): - obj = get_object_or_404(Topic, slug__exact=slug) - qs = Entry.objects.filter(topics__slug=slug).order_by('-pub_date') - return render_to_response('archives/src_home.html', {'object_list': qs, 'topic':obj}, context_instance=RequestContext(request)) +from .models import Entry, Topic, Book -def detail(request, slug): - obj = get_object_or_404(Entry, slug__exact=slug) - return render_to_response('details/src_entry.html', {'object': obj}, context_instance=RequestContext(request)) +class BookListView(ListView): + template_name = "archives/src_books.html" + def queryset(self): + return Book.objects.filter(status__exact=1) + + +class BookDetailView(DetailView): + model = Book + + def get_template_names(self): + book = self.get_object() + return [book.template_name] + + def get_context_data(self, **kwargs): + # Call the base implementation first to get a context + context = super(BookDetailView, self).get_context_data(**kwargs) + book = self.get_object() + paypal_dict = { + "business": settings.PAYPAL_RECEIVER_EMAIL, + "amount": book.price, + "item_name": book.title, + "invoice": "unique-invoice-id", + "notify_url": "https://www.example.com" + reverse('src:paypal-ipn'), + "return_url": "https://www.example.com/your-return-location/", + "cancel_return": "https://www.example.com/your-cancel-location/", + } + context['paypal_form'] = PayPalPaymentsForm(initial=paypal_dict) + return context + + +class SrcListView(ListView): + template_name = "archives/src_home.html" + + def queryset(self): + return Entry.objects.filter(status__exact=1) + + +class EntryDetailView(DetailView): + model = Entry + template_name = "details/src_entry.html" + slug_field = "slug" + + +class EntryDetailViewTXT(EntryDetailView): + template_name = "details/entry.txt" + + +class EntryDetailViewAMP(EntryDetailView): + template_name = "details/src_entry.amp" + + +class TopicListView(ListView): + template_name = 'archives/src_home.html' + + def queryset(self): + return Entry.objects.filter(topics__slug=self.kwargs['slug']) + + def get_context_data(self, **kwargs): + # Call the base implementation first to get a context + context = super(TopicListView, self).get_context_data(**kwargs) + context['topic'] = Topic.objects.get(slug__exact=self.kwargs['slug']) + return context + + +class SrcRSSFeedView(Feed): + title = "luxagraf:src Code and Technology" + link = "/src/" + description = "Latest postings to luxagraf.net/src" + description_template = 'feeds/blog_description.html' + + def items(self): + return Entry.objects.filter(status__exact=1).order_by('-pub_date')[:10] -- cgit v1.2.3-70-g09d2