You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wish/wishlist/views.py

42 lines
1.3 KiB
Python

from django.shortcuts import render, get_object_or_404
from django.contrib.auth import get_user_model
import wishlist.models as m
import django.views.generic as dv
class WishedItemView(dv.DetailView):
model = m.WishedItem
template_name = 'wishlist/item.html'
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['page_title'] = f"Item: {ctx['object']}"
return ctx
class UserWishLists(dv.ListView):
model = m.WishList
template_name = 'wishlist/userwishlists.html'
def get_queryset(self):
qs = super().get_queryset()
return qs.filter(owner__username=self.kwargs['loginname'])
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
user = get_object_or_404(get_user_model(), username=self.kwargs['loginname'])
ctx['page_title'] = f"{user}'s wishlists"
return ctx
class WishListView(dv.ListView):
model = m.WishedItem
template_name = 'wishlist/wishlist.html'
def get_queryset(self):
qs = super().get_queryset()
return qs.filter(wishlists__slug__in=[self.kwargs["slug"]])
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['wishlist'] = get_object_or_404(m.WishList, slug=self.kwargs['slug'])
ctx['page_title'] = f"Wishlist: {ctx['wishlist']}"
return ctx