114 lines
4.0 KiB
Plaintext
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') |