from django.views.generic import ListView from django.views.generic.detail import DetailView from django.contrib.syndication.views import Feed from django.urls import reverse from django.conf import settings from paypal.standard.forms import PayPalPaymentsForm from .models import Post, Topic, Book 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() if book.price_sale < book.price: price = book.price_sale else: price = book.price paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": price, "item_name": book.title, "invoice": "unique-invoice-id", "notify_url": "https://luxagraf.net/src/paypal/" + reverse('src:paypal-ipn'), "return_url": "https://luxagraf.net/src/thank-you", "cancel_return": "https://luxagraf.net/src/books/", } context['paypal_form'] = PayPalPaymentsForm(initial=paypal_dict) return context class SrcListView(ListView): template_name = "archives/src_home.html" def queryset(self): return Post.objects.filter(status__exact=1) class EntryDetailView(DetailView): model = Post 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 Post.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 Post.objects.filter(status__exact=1).order_by('-pub_date')[:10]