OrdersApp/orders_app/views.py.bk
Argyrios Deligiannidis af7c12dc85 SpitiGlykou
2022-06-26 23:37:10 +03:00

114 lines
4.0 KiB
Plaintext

from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.db import transaction
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import TemplateView, CreateView, FormView, DetailView, DeleteView, UpdateView
from django_addanother.views import CreatePopupMixin
from orders_app.forms import OrderForm, OrderLineFormSet
from orders_app.models import Order, Store, OrderProduct
class DashboardPageView(LoginRequiredMixin, TemplateView):
template_name = "diaxeirisi/Dashboard.Default.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["active_page"] = 'dashboard'
return context
class OrderDetailView(DetailView):
model = Order
template_name = 'orders/order_detail.html'
def get_context_data(self, **kwargs):
context = super(OrderDetailView, self).get_context_data(**kwargs)
return context
class OrderCreate(CreateView):
model = Order
template_name = 'orders/order_create.html'
form_class = OrderForm
success_url = None
def get_context_data(self, **kwargs):
data = super(OrderCreate, self).get_context_data(**kwargs)
if self.request.POST:
data['order_products'] = OrderLineFormSet(self.request.POST)
else:
data['order_products'] = OrderLineFormSet()
return data
#def post(self, request):
# for i in request:
# print(i)
def form_valid(self, form):
context = self.get_context_data()
order_products = context['order_products']
#print(order_products)
with transaction.atomic():
if order_products.is_valid():
self.object = form.save(commit=False)
self.object.save()
order_id = self.object
print('VALID')
print(order_id)
order_products.instance = self.object
#print(order_products.save(commit=False))
instances = order_products.save(commit=False)
print(instances)
for each in instances:
print(each.product)
print(each.amount)
a = OrderProduct(order=order_id, product=each.product, amount=each.amount, color1=each.color1, color2=each.color2, info=each.info)
a.save(force_insert=True)
return super(OrderCreate, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('orders_app:order_detail', kwargs={'pk': self.object.pk})
# @method_decorator(login_required)
# def dispatch(self, *args, **kwargs):
# return super(OrderCreate, self).dispatch(*args, **kwargs)
class OrderUpdate(UpdateView):
model = Order
form_class = OrderForm
template_name = 'orders/order_create.html'
def get_context_data(self, **kwargs):
data = super(OrderUpdate, self).get_context_data(**kwargs)
if self.request.POST:
data['order_products'] = OrderUpdate(self.request.POST, instance=self.object)
else:
data['order_products'] = OrderUpdate(instance=self.object)
return data
def form_valid(self, form):
context = self.get_context_data()
order_products = context['order_products']
with transaction.atomic():
self.object = form.save()
if order_products.is_valid():
order_products.instance = self.object
order_products.save()
return super(OrderUpdate, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('orders_app:order_detail', kwargs={'pk': self.object.pk})
# @method_decorator(login_required)
# def dispatch(self, *args, **kwargs):
# return super(OrderUpdate, self).dispatch(*args, **kwargs)
class OrderDelete(DeleteView):
model = Order
template_name = 'orders/confirm_delete.html'
success_url = reverse_lazy('orders_app:homepage')