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

159 lines
5.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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, StoreForm, OrderLinesFormSet, CollectionTitleFormSet, CollectionForm
from orders_app.models import Order, Store, Collection
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 CreateOrder(LoginRequiredMixin, SuccessMessageMixin, TemplateView):
# model = Order
# success_url = '/dx'
# success_message = 'H Παραγγελία Καταχωρήθηκε.'
# template_name = "diaxeirisi/create_order.html"
# fields = [
# "customer",
## "order_date",
# "delivery_date",
# "store",
# "product"
# ]
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 CreateOrder(LoginRequiredMixin, SuccessMessageMixin, CreatePopupMixin, CreateView):
form_class = OrderForm
#success_url = '/dx'
success_url = None
success_message = 'H Παραγγελία Καταχωρήθηκε.'
template_name = 'orders/order_create.html'
def get_context_data(self, **kwargs):
data = super(CreateOrder, self).get_context_data(**kwargs)
if self.request.POST:
data['titles'] = OrderLinesFormSet(self.request.POST)
else:
data['titles'] = OrderLinesFormSet()
return data
def form_valid(self, form):
context = self.get_context_data()
titles = context['titles']
with transaction.atomic():
form.instance.created_by = self.request.user
self.object = form.save()
if titles.is_valid():
titles.instance = self.object
titles.save()
return super(CreateOrder, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('orders:collection_detail', kwargs={'pk': self.object.pk})
class CreateStore(LoginRequiredMixin, SuccessMessageMixin, FormView):
success_message = 'Το Κατάστημα Καταχωρήθηκε.'
template_name = "diaxeirisi/create_store.html"
form_class = StoreForm
class CollectionDetailView(DetailView):
model = Collection
template_name = 'orders/order_detail.html'
def get_context_data(self, **kwargs):
context = super(CollectionDetailView, self).get_context_data(**kwargs)
return context
class CollectionCreate(CreateView):
model = Collection
template_name = 'orders/order_create.html'
form_class = CollectionForm
success_url = None
def get_context_data(self, **kwargs):
data = super(CollectionCreate, self).get_context_data(**kwargs)
if self.request.POST:
data['titles'] = CollectionTitleFormSet(self.request.POST)
else:
data['titles'] = CollectionTitleFormSet()
return data
def form_valid(self, form):
context = self.get_context_data()
titles = context['titles']
with transaction.atomic():
form.instance.created_by = self.request.user
self.object = form.save()
if titles.is_valid():
titles.instance = self.object
titles.save()
return super(CollectionCreate, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('orders:collection_detail', kwargs={'pk': self.object.pk})
# @method_decorator(login_required)
# def dispatch(self, *args, **kwargs):
# return super(CollectionCreate, self).dispatch(*args, **kwargs)
class CollectionUpdate(UpdateView):
model = Collection
form_class = CollectionForm
template_name = 'orders/order_create.html'
def get_context_data(self, **kwargs):
data = super(CollectionUpdate, self).get_context_data(**kwargs)
if self.request.POST:
data['titles'] = CollectionTitleFormSet(self.request.POST, instance=self.object)
else:
data['titles'] = CollectionTitleFormSet(instance=self.object)
return data
def form_valid(self, form):
context = self.get_context_data()
titles = context['titles']
with transaction.atomic():
form.instance.created_by = self.request.user
self.object = form.save()
if titles.is_valid():
titles.instance = self.object
titles.save()
return super(CollectionUpdate, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('orders:collection_detail', kwargs={'pk': self.object.pk})
# @method_decorator(login_required)
# def dispatch(self, *args, **kwargs):
# return super(CollectionUpdate, self).dispatch(*args, **kwargs)
class CollectionDelete(DeleteView):
model = Collection
template_name = 'orders/confirm_delete.html'
success_url = reverse_lazy('orders:homepage')