from django.conf import settings from django.shortcuts import render, redirect, get_object_or_404 from django.views.decorators.http import require_POST from django.views.decorators.csrf import csrf_exempt from django.contrib.auth.decorators import login_required from django.contrib import auth from django.views.generic import ListView from django.utils.translation import ugettext_lazy as _ from cart.models import Buying from core.views import ProtectedListView from .cart import Cart from .forms import CartAddProductForm # from discount.layout import DiscountApllyForm # @csrf_exempt # @require_POST # @login_required(login_url='accounts_ext:accounts_ext') # def CartAdd(request): # cart = Cart(request) # form = CartAddProductForm(request.POST) # if form.is_valid(): # cd = form.cleaned_data # if int(cd['quantity']) < 1 or int(cd['quantity']) > 1000: # return redirect(request.META.get('HTTP_REFERER')) # offer = get_object_or_404(Offer, slug=cd['product_slug']) # cart.add(offer=offer, price_per_itom=cd['price_per_itom'], quantity=cd['quantity'], # update_quantity=cd['update']) # request.session.pop('points', None) # return redirect('cart:CartDetail') # # @csrf_exempt # @login_required(login_url='accounts_ext:accounts_ext') # def CartRemove(request, offer_slug): # cart = Cart(request) # # offer = get_object_or_404(Offer, slug=offer_slug) # cart.remove(offer_slug) # request.session.pop('points', None) # return redirect('cart:CartDetail') # # @csrf_exempt # @login_required(login_url='accounts_ext:accounts_ext') # def CartDetail(request): # user = auth.get_user(request) # cart = Cart(request) # for item in cart: # item['update_quantity_form'] = CartAddProductForm( # initial={ # 'quantity': item['quantity'], # 'product_slug': item['offer'].slug, # 'price_per_itom': item['price'], # 'update': True # }) # # discount_apply_form = DiscountApllyForm() # return render(request, 'cart/detail.html', {'username': user.username}) # # 'discount_apply_form': discount_apply_form}) class CartView(ProtectedListView): model = Buying paginate_by = settings.DEFAULT_PAGE_AMOUNT context_object_name = 'cart_items' template_name = 'cart/cart.html' ordering = '-create_at' title = _('Корзина') def get_queryset(self): qs = super().get_queryset() return qs.filter(user=self.request.user) def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(object_list=object_list, **kwargs) context['title'] = self.title return context class BuyingsHistory(ProtectedListView): model = Buying paginate_by = settings.DEFAULT_PAGE_AMOUNT context_object_name = 'bought_item_list' ordering = '-create_at' template_name = 'cart/bought_history.html' title = _('История покупок') def get_queryset(self): qs = super().get_queryset() return qs.filter(user=self.request.user) def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(object_list=object_list, **kwargs) context['title'] = self.title return context