Fix inline product forms POST, Add limits to default page, add all orders menu entry and GET option, fix imported modules
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
+51
-6
@@ -1,5 +1,5 @@
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, Field, Fieldset, Div, HTML, ButtonHolder, Submit
|
||||
from crispy_forms.layout import Layout, Field, Fieldset, Div, Row, HTML, ButtonHolder, Submit
|
||||
from django import forms
|
||||
from django.urls import reverse_lazy
|
||||
from django.forms.models import inlineformset_factory
|
||||
@@ -8,6 +8,11 @@ from django_addanother.widgets import AddAnotherWidgetWrapper
|
||||
from orders_app.custom_layout_object import Formset
|
||||
from orders_app.models import Order, OrderProduct, Customer, Product, Store
|
||||
|
||||
from .models import *
|
||||
from .custom_layout_object import Formset
|
||||
|
||||
import re
|
||||
|
||||
|
||||
class CustomerForm(forms.ModelForm):
|
||||
class Meta:
|
||||
@@ -78,6 +83,7 @@ class StoreForm(forms.ModelForm):
|
||||
class OrderLine(forms.ModelForm):
|
||||
class Meta:
|
||||
model = OrderProduct
|
||||
exclude = ()
|
||||
fields = ['id', 'order', 'product', 'amount', 'cake_type', 'cake_type_num', 'cake_color', 'cake_color_other', 'fyt_color', 'fyt_color_other', 'cake_flavor', 'cake_img', 'cream_cake_3d', 'cream_cake_height', 'cream_cake_img', 'engagement_cake_type', 'engagement_cake_base', 'engagement_cake_pcs', 'engagement_cake_pcs_other', 'engagement_cake_glaze', 'cup_flavor', 'cup_color', 'cup_color_other', 'cup_type', 'candy_bar_type', 'candy_bar_decor', 'candy_bar_decor_other', 'candy_bar_wrap', 'info']
|
||||
widgets = {
|
||||
'product': AddAnotherWidgetWrapper(
|
||||
@@ -92,9 +98,13 @@ class OrderLine(forms.ModelForm):
|
||||
'info': forms.Textarea(attrs={'rows': 2, 'cols': 30}),
|
||||
}
|
||||
|
||||
def __init__(self, *arg, **kwarg):
|
||||
super(OrderLine, self).__init__(*arg, **kwarg)
|
||||
self.empty_permitted = False
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
formtag_prefix = re.sub('-[0-9]+$', '', kwargs.get('prefix', ''))
|
||||
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_tag = False
|
||||
self.fields['product'].label = "Προϊόν"
|
||||
self.fields['amount'].label = "Ποσότητα"
|
||||
self.fields['cake_type'].label = "Τύπος"
|
||||
@@ -122,6 +132,40 @@ class OrderLine(forms.ModelForm):
|
||||
self.fields['candy_bar_decor_other'].label = "Ντεκόρ CandyBar Άλλο"
|
||||
self.fields['candy_bar_wrap'].label = "Τύλιγμα CandyBar"
|
||||
self.fields['info'].label = "Πληροφορίες"
|
||||
self.helper.layout = Layout(
|
||||
Row(
|
||||
Field('product'),
|
||||
Field('amount'),
|
||||
Field('cake_type'),
|
||||
Field('cake_type_num'),
|
||||
Field('cake_color'),
|
||||
Field('cake_color_other'),
|
||||
Field('fyt_color'),
|
||||
Field('fyt_color_other'),
|
||||
Field('cake_flavor'),
|
||||
Field('cake_img'),
|
||||
Field('cream_cake_3d'),
|
||||
Field('cream_cake_height'),
|
||||
Field('cream_cake_img'),
|
||||
Field('engagement_cake_type'),
|
||||
Field('engagement_cake_base'),
|
||||
Field('engagement_cake_pcs'),
|
||||
Field('engagement_cake_pcs_other'),
|
||||
Field('engagement_cake_glaze'),
|
||||
Field('cup_flavor'),
|
||||
Field('cup_color'),
|
||||
Field('cup_color_other'),
|
||||
Field('cup_type'),
|
||||
Field('candy_bar_type'),
|
||||
Field('candy_bar_decor'),
|
||||
Field('candy_bar_decor_other'),
|
||||
Field('candy_bar_wrap'),
|
||||
Field('info'),
|
||||
Field('DELETE'),
|
||||
css_class='formset_row-{}'.format(formtag_prefix)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
OrderLineFormSet = inlineformset_factory(
|
||||
@@ -138,6 +182,7 @@ OrderLineFormSetEdit = inlineformset_factory(
|
||||
class OrderForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Order
|
||||
exclude = ()
|
||||
fields = ['order_status', 'customer_name', 'customer_address', 'customer_telephone', 'customer_email', 'delivery', 'delivery_date', 'store', 'order_info', 'order_products']
|
||||
widgets = {
|
||||
'delivery_date': forms.DateInput(attrs={'type': 'text', 'id': 'delivery_date', 'class': 'datepicker'}),
|
||||
@@ -150,10 +195,10 @@ class OrderForm(forms.ModelForm):
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(OrderForm, self).__init__(*args, **kwargs)
|
||||
super(OrderForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_tag = True
|
||||
self.helper.render_hidden_fields = True
|
||||
#self.helper.render_hidden_fields = True
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-md-3 create-label'
|
||||
self.helper.field_class = 'col-md-9'
|
||||
|
||||
@@ -3,7 +3,6 @@ from django.core.validators import MinValueValidator, MaxValueValidator
|
||||
from django.db import models
|
||||
from phonenumber_field.modelfields import PhoneNumberField
|
||||
|
||||
|
||||
class Store(models.Model):
|
||||
name = models.CharField(max_length=128)
|
||||
address = models.CharField(max_length=128)
|
||||
@@ -190,7 +189,7 @@ class OrderProduct(models.Model):
|
||||
product = models.ForeignKey(Product, on_delete=models.CASCADE)
|
||||
amount = models.FloatField(validators=[MinValueValidator(0.01), MaxValueValidator(999)])
|
||||
|
||||
#az = 'ΚΙΛΑ ΓΕΥΣΗ KARDASIS Νο ΧΡΩΜΑ ΦΥΤΙΛΑΚΙ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
#vars = 'ΚΙΛΑ ΓΕΥΣΗ KARDASIS Νο ΧΡΩΜΑ ΦΥΤΙΛΑΚΙ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
cake_type = models.CharField(max_length=45, choices=CAKE_TYPES, blank=True, null=True)
|
||||
cake_type_num = models.FloatField(max_length=128, default="0", blank=True, null=True)
|
||||
cake_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
|
||||
@@ -199,19 +198,19 @@ class OrderProduct(models.Model):
|
||||
fyt_color_other = models.CharField(max_length=128, blank=True, null=True)
|
||||
cake_flavor = models.CharField(max_length=45, choices=CAKE_FLAVORS, blank=True, null=True)
|
||||
cake_img = models.ImageField(blank=True, null=True)
|
||||
#az = 'ΜΕΓΕΘΟΣ ΥΨΟΣ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
#vars = 'ΜΕΓΕΘΟΣ ΥΨΟΣ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
cream_cake_3d = models.CharField(max_length=45, choices=CREAM_3D, default="ΟΧΙ", blank=True)
|
||||
cream_cake_height = models.FloatField(max_length=128, default="0", blank=True, null=True)
|
||||
cream_cake_img = models.ImageField(blank=True, null=True)
|
||||
|
||||
#az = 'ΓΑΜΟΣ ΒΑΣΗ ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
#vars = 'ΓΑΜΟΣ ΒΑΣΗ ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
engagement_cake_type = models.CharField(max_length=45, choices=ENGAMENT_TYPE, blank=True, null=True)
|
||||
engagement_cake_base = models.CharField(max_length=128, blank=True, null=True)
|
||||
engagement_cake_pcs = models.CharField(max_length=45, choices=ENGAMENT_CAKE_PIECES, blank=True, null=True)
|
||||
engagement_cake_pcs_other = models.CharField(max_length=128, blank=True, null=True)
|
||||
engagement_cake_glaze = models.CharField(max_length=45, choices=ENGAMENT_CAKE_GLAZE, blank=True, null=True)
|
||||
|
||||
#az = 'ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΚΥΠΕΛΛΟ ΧΡΩΜΑ ΤΕΜΑΧΙΑ ΧΡΩΜΑ ΔΙΑΚΟΣΜΗΣΗ ΤΥΛΙΓΜΕΝΑ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
#vars = 'ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΚΥΠΕΛΛΟ ΧΡΩΜΑ ΤΕΜΑΧΙΑ ΧΡΩΜΑ ΔΙΑΚΟΣΜΗΣΗ ΤΥΛΙΓΜΕΝΑ ΠΑΡΑΤΗΡΗΣΕΙΣ'
|
||||
cup_flavor = models.CharField(max_length=45, choices=CUP_FLAVORS, blank=True, null=True)
|
||||
cup_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
|
||||
cup_color_other = models.CharField(max_length=128, blank=True, null=True)
|
||||
|
||||
@@ -7,6 +7,9 @@ sp1!glk2
|
||||
spiti3
|
||||
sp4$glku3
|
||||
|
||||
spiti4
|
||||
sp5%glku4
|
||||
|
||||
pronorth
|
||||
pro1!north123!@#
|
||||
|
||||
|
||||
+57
-20
@@ -15,6 +15,10 @@ from reportlab.pdfbase import pdfmetrics
|
||||
from reportlab.pdfbase.ttfonts import TTFont
|
||||
from reportlab.pdfgen import canvas
|
||||
from textwrap import wrap
|
||||
from .models import *
|
||||
from .forms import *
|
||||
from django.views.generic.edit import CreateView, UpdateView
|
||||
from django.db import transaction
|
||||
|
||||
|
||||
from orders_app.forms import OrderForm, OrderLineFormSet, CustomerForm, ProductForm, StoreForm,\
|
||||
@@ -267,17 +271,39 @@ class PrintView(View):
|
||||
|
||||
class DashboardPageView(LoginRequiredMixin, TemplateView):
|
||||
template_name = "diaxeirisi/Dashboard.Default.html"
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
time_delta = datetime.today() - timedelta(days=30)
|
||||
|
||||
time_delta = datetime.today() - timedelta(days=90)
|
||||
try:
|
||||
all_orders = self.request.GET['all_orders']
|
||||
except KeyError:
|
||||
all_orders = False
|
||||
if self.request.user.id == 3:
|
||||
context["DB_Objects"] = Order.objects.filter(store=1).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
if all_orders:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=3).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=3).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
elif self.request.user.id == 4:
|
||||
context["DB_Objects"] = Order.objects.filter(store=2).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
if all_orders:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=4).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=4).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
elif self.request.user.id == 5:
|
||||
context["DB_Objects"] = Order.objects.filter(store=3).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
if all_orders:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=5).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=5).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
elif self.request.user.id == 6:
|
||||
if all_orders:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=6).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=6).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
elif self.request.user.id == 7:
|
||||
if all_orders:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=7).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(store_id=7).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
else:
|
||||
context["DB_Objects"] = Order.objects.filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
context["active_page"] = 'dashboard'
|
||||
@@ -297,24 +323,32 @@ class ProductPageView(LoginRequiredMixin, TemplateView):
|
||||
|
||||
class OrderProductsPageView(LoginRequiredMixin, TemplateView):
|
||||
template_name = "diaxeirisi/Dashboard.OrderProducts.html"
|
||||
time_delta = datetime.today() - timedelta(days=30)
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
print(self.request.user.id)
|
||||
if self.request.user.id == 3:
|
||||
order_ids = Order.objects.filter(store=1).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
order_ids = Order.objects.filter(store_id=3).order_by('-id')[:200]
|
||||
order_ids = list(answer.id for answer in order_ids)
|
||||
context["DB_Objects"] = OrderProduct.objects.filter(order_id__in=order_ids)
|
||||
elif self.request.user.id == 4:
|
||||
order_ids = Order.objects.filter(store=2).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
order_ids = Order.objects.filter(store_id=4).order_by('-id')[:200]
|
||||
order_ids = list(answer.id for answer in order_ids)
|
||||
context["DB_Objects"] = OrderProduct.objects.filter(order_id__in=order_ids)
|
||||
elif self.request.user.id == 5:
|
||||
order_ids = Order.objects.filter(store=3).filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
order_ids = Order.objects.filter(store_id=5).order_by('-id')[:200]
|
||||
order_ids = list(answer.id for answer in order_ids)
|
||||
context["DB_Objects"] = OrderProduct.objects.filter(order_id__in=order_ids)
|
||||
elif self.request.user.id == 6:
|
||||
order_ids = Order.objects.filter(store_id=6).order_by('-id')[:200]
|
||||
order_ids = list(answer.id for answer in order_ids)
|
||||
context["DB_Objects"] = OrderProduct.objects.filter(order_id__in=order_ids)
|
||||
elif self.request.user.id == 7:
|
||||
order_ids = Order.objects.filter(store_id=7).order_by('-id')[:200]
|
||||
order_ids = list(answer.id for answer in order_ids)
|
||||
context["DB_Objects"] = OrderProduct.objects.filter(order_id__in=order_ids)
|
||||
else:
|
||||
context["DB_Objects"] = OrderProduct.objects.all().filter(order_date__gte=time_delta).order_by('id').reverse()
|
||||
context["DB_Objects"] = OrderProduct.objects.all().order_by('-id')[:200]
|
||||
context["active_page"] = 'products'
|
||||
return context
|
||||
|
||||
@@ -449,6 +483,7 @@ class OrderUpdate(UpdateView):
|
||||
form_class = OrderForm
|
||||
template_name = 'orders/order_create.html'
|
||||
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('orders_app:order_update', kwargs={'pk': self.object.pk})
|
||||
|
||||
@@ -458,25 +493,27 @@ class OrderUpdate(UpdateView):
|
||||
def get_order_id(self):
|
||||
return self.kwargs['pk']
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(OrderUpdate, self).get_context_data(**kwargs)
|
||||
|
||||
def get_context_data(self, *args, **kwargs):
|
||||
data = super(OrderUpdate, self).get_context_data(**kwargs)
|
||||
if self.request.POST:
|
||||
context['order_products'] = OrderLineFormSetEdit(self.request.POST, self.request.FILES, instance=self.object)
|
||||
data['order_products'] = OrderLineFormSetEdit(self.request.POST, instance=self.object)
|
||||
else:
|
||||
context['order_products'] = OrderLineFormSetEdit(instance=self.object)
|
||||
return context
|
||||
data['order_products'] = OrderLineFormSetEdit(instance=self.object)
|
||||
return data
|
||||
|
||||
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
order_data = Order.objects.get(id=self.get_order_id())
|
||||
#order_line_data = OrderProduct.objects.filter(order=self.get_order_id())
|
||||
form = OrderForm(self.request.POST, self.request.FILES, instance=order_data) #, initial={model_to_dict(order_data)}
|
||||
order_products = OrderLineFormSetEdit(self.request.POST, self.request.FILES, instance=form.instance)
|
||||
|
||||
if form.is_valid() and order_products.is_valid():
|
||||
form.save()
|
||||
for inline_form in order_products:
|
||||
if not inline_form.cleaned_data['DELETE']:
|
||||
inline_form.save()
|
||||
|
||||
inline_form.save()
|
||||
messages.success(self.request, "Η παραγγελία αποθηκευτηκέ")
|
||||
return HttpResponseRedirect(request.META['HTTP_REFERER'])
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user