SpitiGlykou

This commit is contained in:
Argyrios Deligiannidis
2022-06-26 23:37:10 +03:00
parent 0c944fc476
commit af7c12dc85
1998 changed files with 910295 additions and 0 deletions
View File
+55
View File
@@ -0,0 +1,55 @@
from django.contrib import admin
from .models import Order, Product, OrderProduct,Customer, Store
@admin.register(Store)
class StoreAdmin(admin.ModelAdmin):
list_display = ('name', 'address', 'telephone')
@admin.register(OrderProduct)
class OrderProductAdmin(admin.ModelAdmin):
def get_order_id(self, obj):
return obj.order.id
def get_product_name(self, obj):
return obj.product.name
list_display = ('get_order_id', 'get_product_name', 'info')
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name',)
@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin):
list_display = ('name', 'telephone', 'address')
class OrderInlines(admin.TabularInline):
model = OrderProduct
fk_name = "order"
extra = 1
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
def get_products(self, obj):
#return "\n".join(['{}:{} | '.format(p.name, p.amount) for p in obj.order_products.all()])
return "\n".join([str(p) for p in obj.order_products.all()])
def get_customer_name(self, obj):
return obj.customer.name
def get_customer_telephone(self, obj):
return obj.customer.telephone
get_customer_name.admin_order_field = 'customer_name' # Allows column order sorting
get_customer_name.short_description = 'Customer Name' # Renames column head
get_customer_telephone.admin_order_field = 'customer_telephone' # Allows column order sorting
get_customer_telephone.short_description = 'Customer Telephone' # Renames column head
list_display = ('id', 'get_customer_name', 'get_customer_telephone', 'order_date', 'delivery_date', 'store', 'get_products')
inlines = (OrderInlines,)
+5
View File
@@ -0,0 +1,5 @@
from django.apps import AppConfig
class OrdersAppConfig(AppConfig):
name = 'orders_app'
+21
View File
@@ -0,0 +1,21 @@
from crispy_forms.layout import LayoutObject, TEMPLATE_PACK
from django.shortcuts import render
from django.template.loader import render_to_string
###### Thanks!
###### https://stackoverflow.com/questions/15157262/django-crispy-forms-nesting-a-formset-within-a-form/22053952#22053952
class Formset(LayoutObject):
template = "orders/formset.html"
def __init__(self, formset_name_in_context, template=None):
self.formset_name_in_context = formset_name_in_context
self.fields = []
if template:
self.template = template
def render(self, form, form_style, context, template_pack=TEMPLATE_PACK):
formset = context[self.formset_name_in_context]
return render_to_string(self.template, {'formset': formset, 'current_view': context['request'].path})
+187
View File
@@ -0,0 +1,187 @@
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Fieldset, Div, HTML, ButtonHolder, Submit
from django import forms
from django.urls import reverse_lazy
from django.forms.models import inlineformset_factory
from django_addanother.widgets import AddAnotherWidgetWrapper
from orders_app.custom_layout_object import Formset
from orders_app.models import Order, OrderProduct, Customer, Product, Store
class CustomerForm(forms.ModelForm):
class Meta:
model = Customer
fields = ['name', 'address', 'telephone', 'email', 'social_media']
def __init__(self, *arg, **kwarg):
super(CustomerForm, self).__init__(*arg, **kwarg)
self.helper = FormHelper()
self.fields['name'].label = "Ονοματεπώνυμο"
self.fields['address'].label = "Διεύθυνση"
self.fields['telephone'].label = "Τηλέφωνο"
self.fields['email'].label = "email"
self.fields['social_media'].label = "Facebook/Instagram κτλ."
self.helper.layout = Layout(
Div(
Field('name'),
Field('address'),
Field('telephone'),
Field('email'),
Field('social_media'),
HTML("<br>"),
ButtonHolder(Submit('submit', 'Αποθήκευση')),
)
)
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ['name']
def __init__(self, *arg, **kwarg):
super(ProductForm, self).__init__(*arg, **kwarg)
self.helper = FormHelper()
self.fields['name'].label = "Τύπος Προϊόντος"
self.helper.layout = Layout(
Div(
Field('name'),
HTML("<br>"),
ButtonHolder(Submit('submit', 'Αποθήκευση')),
)
)
class StoreForm(forms.ModelForm):
class Meta:
model = Store
fields = ['name', 'address', 'telephone']
def __init__(self, *arg, **kwarg):
super(StoreForm, self).__init__(*arg, **kwarg)
self.helper = FormHelper()
self.fields['name'].label = "Όνομα"
self.fields['address'].label = "Διεύθυνση"
self.fields['telephone'].label = "Τηλέφωνο"
self.helper.layout = Layout(
Div(
Field('name'),
Field('address'),
Field('telephone'),
HTML("<br>"),
ButtonHolder(Submit('submit', 'Αποθήκευση')),
)
)
class OrderLine(forms.ModelForm):
class Meta:
model = OrderProduct
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(
forms.Select(attrs={'onchange': 'showFields(this);'}),
reverse_lazy('orders_app:product_create'),
),
'cake_color': forms.Select(attrs={'onchange': 'showOtherFields(this);'}),
'fyt_color': forms.Select(attrs={'onchange': 'showOtherFields(this);'}),
'engagement_cake_pcs': forms.Select(attrs={'onchange': 'showOtherFields(this);'}),
'cup_color': forms.Select(attrs={'onchange': 'showOtherFields(this);'}),
'candy_bar_decor': forms.Select(attrs={'onchange': 'showOtherFields(this);'}),
'info': forms.Textarea(attrs={'rows': 2, 'cols': 30}),
}
def __init__(self, *arg, **kwarg):
super(OrderLine, self).__init__(*arg, **kwarg)
self.empty_permitted = False
self.fields['product'].label = "Προϊόν"
self.fields['amount'].label = "Ποσότητα"
self.fields['cake_type'].label = "Τύπος"
self.fields['cake_type_num'].label = "Νούμερο"
self.fields['cake_color'].label = "Χρώμα"
self.fields['cake_color_other'].label = "Άλλο Χρώμα"
self.fields['fyt_color'].label = "Φυτιλάκι-Χρώμα"
self.fields['fyt_color_other'].label = "Φυτιλάκι-Χρώμα Άλλο"
self.fields['cake_flavor'].label = "Γεύση"
self.fields['cake_img'].label = "Φωτογραφία"
self.fields['cream_cake_3d'].label = "3D"
self.fields['cream_cake_height'].label = "Ύψος"
self.fields['cream_cake_img'].label = "Φωτογραφία"
self.fields['engagement_cake_type'].label = "Τύπος"
self.fields['engagement_cake_base'].label = "Βάση"
self.fields['engagement_cake_pcs'].label = "Τεμάχια"
self.fields['engagement_cake_pcs_other'].label = "Τεμάχια Άλλο"
self.fields['engagement_cake_glaze'].label = "Γλάσσο/Σαντιγύ"
self.fields['cup_flavor'].label = "Γεύση"
self.fields['cup_color'].label = "Χρώμα"
self.fields['cup_color_other'].label = "Άλλο Χρώμα"
self.fields['cup_type'].label = "Τύπος"
self.fields['candy_bar_type'].label = "Τύπος CandyBar"
self.fields['candy_bar_decor'].label = "Ντεκόρ CandyBar"
self.fields['candy_bar_decor_other'].label = "Ντεκόρ CandyBar Άλλο"
self.fields['candy_bar_wrap'].label = "Τύλιγμα CandyBar"
self.fields['info'].label = "Πληροφορίες"
OrderLineFormSet = inlineformset_factory(
Order, OrderProduct, form=OrderLine,
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'], extra=1, can_delete=True
)
OrderLineFormSetEdit = inlineformset_factory(
Order, OrderProduct, form=OrderLine,
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'], extra=0, can_delete=True
)
class OrderForm(forms.ModelForm):
class Meta:
model = Order
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'}),
'store': AddAnotherWidgetWrapper(
forms.Select,
reverse_lazy('orders_app:store_create'),
),
'order_info': forms.Textarea(attrs={'rows': 2, 'cols': 30}),
# 'info': forms.Textarea(attrs={'type': 'text', 'id': 'order_date', 'class': 'datepicker'}),
}
def __init__(self, *args, **kwargs):
super(OrderForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = 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'
self.helper.attrs['autocomplete'] = 'off'
self.fields['order_status'].label = "Κατάσταση Παραγγελίας"
self.fields['customer_name'].label = "Πελάτης"
self.fields['customer_telephone'].label = "Τηλέφωνο"
self.fields['customer_address'].label = "Διεύθυνση"
self.fields['customer_email'].label = "email"
self.fields['delivery'].label = "Παράδοση"
self.fields['delivery_date'].label = "Ημέρα Παράδοσης"
self.fields['store'].label = "Κατάστημα"
self.fields['order_info'].label = "Σχόλια Παραγγελίας"
self.helper.layout = Layout(
Div(
Field('order_status'),
Field('customer_name'),
Field('customer_address'),
Field('customer_telephone'),
Field('customer_email'),
Field('delivery'),
Field('delivery_date'),
Field('store'),
Field('order_info'),
HTML("<br>"),
Fieldset('Προϊόντα Παραγγελίας',
Formset('order_products')),
HTML("<br>"),
ButtonHolder(Submit('submit', 'Αποθήκευση')),
)
)
+90
View File
@@ -0,0 +1,90 @@
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Fieldset, Div, HTML, ButtonHolder, Submit
from .custom_layout_object import *
from django import forms
from django.contrib import admin
from django.urls import reverse_lazy
from django.forms.models import inlineformset_factory
from django_addanother.widgets import AddAnotherWidgetWrapper
from orders_app.custom_layout_object import Formset
from orders_app.models import Order, OrderProduct, CollectionTitle, Collection
class OrderForm(forms.ModelForm):
class Meta:
model = Order
exclude = ()
widgets = {
'store': AddAnotherWidgetWrapper(
forms.Select,
reverse_lazy('orders_app:create_store'),
),
}
def __init__(self, *args, **kwargs):
super(OrderForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = True
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-md-3 create-label'
self.helper.field_class = 'col-md-9'
self.helper.layout = Layout(
Div(
Field('subject'),
Field('owner'),
Fieldset('Add titles',
Formset('titles')),
Field('note'),
HTML("<br>"),
ButtonHolder(Submit('submit', 'save')),
)
)
class StoreForm(forms.ModelForm):
class Meta:
model = Order
fields = "__all__"
OrderLinesFormSet = inlineformset_factory(Order, OrderProduct, form=OrderForm, fields=['product', 'name'], extra=1, can_delete=True)
class CollectionTitleForm(forms.ModelForm):
class Meta:
model = CollectionTitle
exclude = ()
CollectionTitleFormSet = inlineformset_factory(
Collection, CollectionTitle, form=CollectionTitleForm,
fields=['name', 'language'], extra=1, can_delete=True
)
class CollectionForm(forms.ModelForm):
class Meta:
model = Collection
exclude = ['created_by', ]
def __init__(self, *args, **kwargs):
super(CollectionForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = True
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-md-3 create-label'
self.helper.field_class = 'col-md-9'
self.helper.layout = Layout(
Div(
Field('subject'),
Field('owner'),
Fieldset('Add titles',
Formset('titles')),
Field('note'),
HTML("<br>"),
ButtonHolder(Submit('submit', 'Save')),
)
)
+60
View File
@@ -0,0 +1,60 @@
# Generated by Django 3.1.7 on 2021-03-30 15:47
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Customer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
),
migrations.CreateModel(
name='Product',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
),
migrations.CreateModel(
name='ProductAttrs',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=300)),
('value', models.FloatField()),
],
),
migrations.CreateModel(
name='ProductType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=300)),
],
),
migrations.CreateModel(
name='Store',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('address', models.CharField(max_length=300)),
('telephone', phonenumber_field.modelfields.PhoneNumberField(max_length=128, region=None)),
],
),
migrations.CreateModel(
name='Order',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order_date', models.DateField()),
('delivery_date', models.DateField()),
('store', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders_app.store')),
],
),
]
@@ -0,0 +1,17 @@
# Generated by Django 3.1.7 on 2021-03-30 15:49
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0001_initial'),
]
operations = [
migrations.RenameModel(
old_name='ProductAttrs',
new_name='ProductAttr',
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-31 05:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0002_auto_20210330_1849'),
]
operations = [
migrations.AddField(
model_name='producttype',
name='attributes',
field=models.ManyToManyField(to='orders_app.ProductAttr'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-31 05:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0003_producttype_attributes'),
]
operations = [
migrations.AlterField(
model_name='productattr',
name='value',
field=models.CharField(max_length=30),
),
]
@@ -0,0 +1,101 @@
# Generated by Django 3.1.7 on 2021-03-31 07:06
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0004_auto_20210331_0826'),
]
operations = [
migrations.RemoveField(
model_name='productattr',
name='name',
),
migrations.RemoveField(
model_name='productattr',
name='value',
),
migrations.RemoveField(
model_name='producttype',
name='attributes',
),
migrations.AddField(
model_name='customer',
name='address',
field=models.CharField(default='AZ', max_length=300),
),
migrations.AddField(
model_name='customer',
name='facebook_instagram',
field=models.CharField(default='AZ', max_length=300),
),
migrations.AddField(
model_name='customer',
name='name',
field=models.CharField(default='AZ', max_length=300),
),
migrations.AddField(
model_name='customer',
name='telephone',
field=phonenumber_field.modelfields.PhoneNumberField(default='+306955242965', max_length=128, region=None),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='name',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='productattr',
name='amount',
field=models.FloatField(default=0.0),
),
migrations.AddField(
model_name='productattr',
name='attr1',
field=models.CharField(default='AZ', max_length=30),
),
migrations.AddField(
model_name='productattr',
name='attr2',
field=models.CharField(default='AZ', max_length=30),
),
migrations.AddField(
model_name='productattr',
name='attr_name',
field=models.CharField(default='AZ', max_length=30),
),
migrations.AddField(
model_name='productattr',
name='color',
field=models.CharField(default='AZ', max_length=30),
),
migrations.AddField(
model_name='productattr',
name='product',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.product'),
preserve_default=False,
),
migrations.AddField(
model_name='productattr',
name='product_type',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.producttype'),
preserve_default=False,
),
migrations.AddField(
model_name='producttype',
name='members',
field=models.ManyToManyField(through='orders_app.ProductAttr', to='orders_app.Product'),
),
migrations.AlterField(
model_name='producttype',
name='name',
field=models.CharField(default='AZ', max_length=300),
),
]
@@ -0,0 +1,60 @@
# Generated by Django 3.1.7 on 2021-03-31 07:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0005_auto_20210331_1006'),
]
operations = [
migrations.RemoveField(
model_name='productattr',
name='amount',
),
migrations.RemoveField(
model_name='productattr',
name='attr1',
),
migrations.RemoveField(
model_name='productattr',
name='attr2',
),
migrations.RemoveField(
model_name='productattr',
name='color',
),
migrations.AddField(
model_name='productattr',
name='attr_value',
field=models.CharField(default='0', max_length=30),
preserve_default=False,
),
migrations.AlterField(
model_name='customer',
name='address',
field=models.CharField(max_length=300),
),
migrations.AlterField(
model_name='customer',
name='facebook_instagram',
field=models.CharField(max_length=300),
),
migrations.AlterField(
model_name='customer',
name='name',
field=models.CharField(max_length=300),
),
migrations.AlterField(
model_name='productattr',
name='attr_name',
field=models.CharField(max_length=30),
),
migrations.AlterField(
model_name='producttype',
name='name',
field=models.CharField(max_length=300),
),
]
@@ -0,0 +1,25 @@
# Generated by Django 3.1.7 on 2021-03-31 07:14
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0006_auto_20210331_1009'),
]
operations = [
migrations.RemoveField(
model_name='productattr',
name='product',
),
migrations.RemoveField(
model_name='productattr',
name='product_type',
),
migrations.RemoveField(
model_name='producttype',
name='members',
),
]
@@ -0,0 +1,58 @@
# Generated by Django 3.1.7 on 2021-03-31 07:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0007_auto_20210331_1014'),
]
operations = [
migrations.RemoveField(
model_name='customer',
name='address',
),
migrations.RemoveField(
model_name='customer',
name='facebook_instagram',
),
migrations.RemoveField(
model_name='customer',
name='name',
),
migrations.RemoveField(
model_name='customer',
name='telephone',
),
migrations.RemoveField(
model_name='product',
name='name',
),
migrations.RemoveField(
model_name='productattr',
name='attr_name',
),
migrations.RemoveField(
model_name='productattr',
name='attr_value',
),
migrations.AddField(
model_name='productattr',
name='name',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='productattr',
name='value',
field=models.FloatField(default='0'),
preserve_default=False,
),
migrations.AddField(
model_name='producttype',
name='attributes',
field=models.ManyToManyField(to='orders_app.ProductAttr'),
),
]
@@ -0,0 +1,84 @@
# Generated by Django 3.1.7 on 2021-03-31 07:47
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0008_auto_20210331_1021'),
]
operations = [
migrations.RemoveField(
model_name='producttype',
name='attributes',
),
migrations.AddField(
model_name='customer',
name='address',
field=models.CharField(blank=True, max_length=300),
),
migrations.AddField(
model_name='customer',
name='name',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='customer',
name='social_media',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='customer',
name='telephone',
field=phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, region=None),
),
migrations.AddField(
model_name='product',
name='amount',
field=models.FloatField(default='0'),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='attr1',
field=models.IntegerField(blank=True, default='1'),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='color1',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='color2',
field=models.CharField(blank=True, max_length=300),
),
migrations.AddField(
model_name='product',
name='color3',
field=models.CharField(blank=True, max_length=300),
),
migrations.AddField(
model_name='product',
name='name',
field=models.CharField(default='qa', max_length=300),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='type',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.producttype'),
preserve_default=False,
),
migrations.DeleteModel(
name='ProductAttr',
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-31 07:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0009_auto_20210331_1047'),
]
operations = [
migrations.AddField(
model_name='order',
name='product',
field=models.ManyToManyField(to='orders_app.Product'),
),
]
@@ -0,0 +1,26 @@
# Generated by Django 3.1.7 on 2021-03-31 07:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0010_order_product'),
]
operations = [
migrations.RemoveField(
model_name='product',
name='name',
),
migrations.RemoveField(
model_name='product',
name='type',
),
migrations.AddField(
model_name='product',
name='type',
field=models.ManyToManyField(to='orders_app.ProductType'),
),
]
@@ -0,0 +1,46 @@
# Generated by Django 3.1.7 on 2021-03-31 07:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0011_auto_20210331_1052'),
]
operations = [
migrations.CreateModel(
name='ProductAttrs',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=300)),
],
),
migrations.RemoveField(
model_name='product',
name='attr1',
),
migrations.RemoveField(
model_name='product',
name='color1',
),
migrations.RemoveField(
model_name='product',
name='color2',
),
migrations.RemoveField(
model_name='product',
name='color3',
),
migrations.AlterField(
model_name='product',
name='amount',
field=models.FloatField(blank=True),
),
migrations.AddField(
model_name='producttype',
name='attr',
field=models.ManyToManyField(blank=True, to='orders_app.ProductAttrs'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-31 08:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0012_auto_20210331_1058'),
]
operations = [
migrations.AlterField(
model_name='producttype',
name='attr',
field=models.ManyToManyField(to='orders_app.ProductAttrs'),
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-03-31 08:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0013_auto_20210331_1100'),
]
operations = [
migrations.AddField(
model_name='productattrs',
name='value',
field=models.CharField(default='az', max_length=300),
preserve_default=False,
),
]
@@ -0,0 +1,80 @@
# Generated by Django 3.1.7 on 2021-03-31 08:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0014_productattrs_value'),
]
operations = [
migrations.RemoveField(
model_name='producttype',
name='attr',
),
migrations.AddField(
model_name='producttype',
name='attr1',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='attr2',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='attr3',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='attr4',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='color1',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='color2',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='producttype',
name='color3',
field=models.CharField(blank=True, max_length=128),
),
migrations.AlterField(
model_name='customer',
name='address',
field=models.CharField(blank=True, max_length=128),
),
migrations.AlterField(
model_name='customer',
name='name',
field=models.CharField(max_length=128),
),
migrations.AlterField(
model_name='customer',
name='social_media',
field=models.CharField(max_length=128),
),
migrations.AlterField(
model_name='producttype',
name='name',
field=models.CharField(max_length=128),
),
migrations.AlterField(
model_name='store',
name='address',
field=models.CharField(max_length=128),
),
migrations.DeleteModel(
name='ProductAttrs',
),
]
@@ -0,0 +1,24 @@
# Generated by Django 3.1.7 on 2021-03-31 08:07
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0015_auto_20210331_1105'),
]
operations = [
migrations.RemoveField(
model_name='product',
name='type',
),
migrations.AddField(
model_name='product',
name='type',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.producttype'),
preserve_default=False,
),
]
@@ -0,0 +1,20 @@
# Generated by Django 3.1.7 on 2021-03-31 08:09
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0016_auto_20210331_1107'),
]
operations = [
migrations.AddField(
model_name='order',
name='customer',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.customer'),
preserve_default=False,
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-03-31 08:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0017_order_customer'),
]
operations = [
migrations.AlterField(
model_name='customer',
name='social_media',
field=models.CharField(blank=True, max_length=128),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-03-31 08:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0018_auto_20210331_1110'),
]
operations = [
migrations.RemoveField(
model_name='product',
name='amount',
),
migrations.AddField(
model_name='order',
name='amount',
field=models.FloatField(blank=True, default='0'),
preserve_default=False,
),
]
@@ -0,0 +1,82 @@
# Generated by Django 3.1.7 on 2021-03-31 08:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0019_auto_20210331_1136'),
]
operations = [
migrations.RemoveField(
model_name='producttype',
name='attr1',
),
migrations.RemoveField(
model_name='producttype',
name='attr2',
),
migrations.RemoveField(
model_name='producttype',
name='attr3',
),
migrations.RemoveField(
model_name='producttype',
name='attr4',
),
migrations.RemoveField(
model_name='producttype',
name='color1',
),
migrations.RemoveField(
model_name='producttype',
name='color2',
),
migrations.RemoveField(
model_name='producttype',
name='color3',
),
migrations.AddField(
model_name='product',
name='attr1',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='attr2',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='attr3',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='attr4',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='color1',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='color2',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='color3',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='name',
field=models.CharField(default='Cale', max_length=128),
preserve_default=False,
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-03-31 08:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0020_auto_20210331_1154'),
]
operations = [
migrations.RemoveField(
model_name='order',
name='amount',
),
migrations.AddField(
model_name='product',
name='amount',
field=models.FloatField(blank=True, default='0'),
preserve_default=False,
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-03-31 09:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0021_auto_20210331_1159'),
]
operations = [
migrations.AddField(
model_name='store',
name='name',
field=models.CharField(default='Spiti 1', max_length=128),
preserve_default=False,
),
]
+79
View File
@@ -0,0 +1,79 @@
# Generated by Django 3.1.7 on 2021-04-01 08:32
from django.db import migrations, models
import django.db.models.deletion
import phonenumber_field.modelfields
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Customer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
('address', models.CharField(blank=True, max_length=128)),
('telephone', phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, region=None)),
('social_media', models.CharField(blank=True, max_length=128)),
],
),
migrations.CreateModel(
name='Order',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('order_id', models.CharField(max_length=32)),
('order_date', models.DateField()),
('delivery_date', models.DateField()),
('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders_app.customer')),
],
),
migrations.CreateModel(
name='Product',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
],
),
migrations.CreateModel(
name='Store',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
('address', models.CharField(max_length=128)),
('telephone', phonenumber_field.modelfields.PhoneNumberField(max_length=128, region=None)),
],
),
migrations.CreateModel(
name='OrderProduct',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
('amount', models.FloatField(blank=True)),
('color1', models.CharField(blank=True, max_length=128)),
('color2', models.CharField(blank=True, max_length=128)),
('color3', models.CharField(blank=True, max_length=128)),
('attr1', models.CharField(blank=True, max_length=128)),
('attr2', models.CharField(blank=True, max_length=128)),
('attr3', models.CharField(blank=True, max_length=128)),
('attr4', models.CharField(blank=True, max_length=128)),
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders_app.order')),
('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders_app.product')),
],
),
migrations.AddField(
model_name='order',
name='order_products',
field=models.ManyToManyField(related_name='_order_order_products_+', to='orders_app.OrderProduct'),
),
migrations.AddField(
model_name='order',
name='store',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders_app.store'),
),
]
@@ -0,0 +1,17 @@
# Generated by Django 3.1.7 on 2021-04-01 08:36
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='order',
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-04-01 08:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0002_remove_orderproduct_order'),
]
operations = [
migrations.AddField(
model_name='orderproduct',
name='name2',
field=models.CharField(default='az', max_length=128),
preserve_default=False,
),
]
@@ -0,0 +1,37 @@
# Generated by Django 3.1.7 on 2021-04-01 09:15
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0003_orderproduct_name2'),
]
operations = [
migrations.RenameField(
model_name='orderproduct',
old_name='type',
new_name='product',
),
migrations.RemoveField(
model_name='order',
name='order_id',
),
migrations.RemoveField(
model_name='order',
name='order_products',
),
migrations.RemoveField(
model_name='orderproduct',
name='name2',
),
migrations.AddField(
model_name='orderproduct',
name='order',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.order'),
preserve_default=False,
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-01 09:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0004_auto_20210401_1215'),
]
operations = [
migrations.AddField(
model_name='order',
name='order_products',
field=models.ManyToManyField(through='orders_app.OrderProduct', to='orders_app.Product'),
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-04-01 09:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0005_order_order_products'),
]
operations = [
migrations.AddField(
model_name='order',
name='order_id',
field=models.CharField(default='00000', max_length=32),
preserve_default=False,
),
]
@@ -0,0 +1,39 @@
# Generated by Django 3.1.7 on 2021-04-01 09:30
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0006_order_order_id'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='order',
),
migrations.RemoveField(
model_name='orderproduct',
name='product',
),
migrations.AddField(
model_name='product',
name='order',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.order'),
preserve_default=False,
),
migrations.AddField(
model_name='product',
name='product',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.orderproduct'),
preserve_default=False,
),
migrations.AlterField(
model_name='order',
name='order_products',
field=models.ManyToManyField(related_name='_order_order_products_+', through='orders_app.Product', to='orders_app.OrderProduct'),
),
]
@@ -0,0 +1,51 @@
# Generated by Django 3.1.7 on 2021-04-01 09:39
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0007_auto_20210401_1230'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='attr3',
),
migrations.RemoveField(
model_name='orderproduct',
name='attr4',
),
migrations.RemoveField(
model_name='orderproduct',
name='color3',
),
migrations.RemoveField(
model_name='product',
name='order',
),
migrations.RemoveField(
model_name='product',
name='product',
),
migrations.AddField(
model_name='orderproduct',
name='order',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.order'),
preserve_default=False,
),
migrations.AddField(
model_name='orderproduct',
name='product',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.product'),
preserve_default=False,
),
migrations.AlterField(
model_name='order',
name='order_products',
field=models.ManyToManyField(related_name='_order_order_products_+', through='orders_app.OrderProduct', to='orders_app.Product'),
),
]
@@ -0,0 +1,35 @@
# Generated by Django 3.1.7 on 2021-04-02 05:48
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('orders_app', '0008_auto_20210401_1239'),
]
operations = [
migrations.CreateModel(
name='Collection',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('subject', models.CharField(blank=True, max_length=300)),
('owner', models.CharField(blank=True, max_length=300)),
('note', models.TextField(blank=True)),
('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='collections', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='CollectionTitle',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=500, verbose_name='Title')),
('language', models.CharField(max_length=3)),
('collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='has_titles', to='orders_app.collection')),
],
),
]
@@ -0,0 +1,26 @@
# Generated by Django 3.1.7 on 2021-04-02 08:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0009_collection_collectiontitle'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='attr1',
),
migrations.RemoveField(
model_name='orderproduct',
name='attr2',
),
migrations.AddField(
model_name='orderproduct',
name='info',
field=models.CharField(blank=True, max_length=512),
),
]
@@ -0,0 +1,26 @@
# Generated by Django 3.1.7 on 2021-04-02 08:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0010_auto_20210402_1137'),
]
operations = [
migrations.RenameField(
model_name='orderproduct',
old_name='color1',
new_name='color',
),
migrations.RemoveField(
model_name='orderproduct',
name='color2',
),
migrations.RemoveField(
model_name='orderproduct',
name='name',
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-02 10:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0011_auto_20210402_1139'),
]
operations = [
migrations.AddField(
model_name='orderproduct',
name='color2',
field=models.CharField(blank=True, max_length=128),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-02 10:22
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0012_orderproduct_color2'),
]
operations = [
migrations.RenameField(
model_name='orderproduct',
old_name='color',
new_name='color1',
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-02 10:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0013_auto_20210402_1322'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='amount',
field=models.FloatField(),
),
]
@@ -0,0 +1,32 @@
# Generated by Django 3.1.7 on 2021-04-02 11:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0014_auto_20210402_1323'),
]
operations = [
migrations.RemoveField(
model_name='collectiontitle',
name='collection',
),
migrations.RemoveField(
model_name='order',
name='order_id',
),
migrations.AlterField(
model_name='order',
name='order_products',
field=models.ManyToManyField(blank=True, related_name='_order_order_products_+', through='orders_app.OrderProduct', to='orders_app.Product'),
),
migrations.DeleteModel(
name='Collection',
),
migrations.DeleteModel(
name='CollectionTitle',
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-02 11:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0015_auto_20210402_1425'),
]
operations = [
migrations.AlterField(
model_name='order',
name='order_products',
field=models.ManyToManyField(related_name='_order_order_products_+', through='orders_app.OrderProduct', to='orders_app.Product'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-02 12:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0016_auto_20210402_1459'),
]
operations = [
migrations.AlterField(
model_name='order',
name='order_products',
field=models.ManyToManyField(blank=True, related_name='_order_order_products_+', through='orders_app.OrderProduct', to='orders_app.Product'),
),
]
@@ -0,0 +1,24 @@
# Generated by Django 3.1.7 on 2021-04-02 17:42
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0017_auto_20210402_1512'),
]
operations = [
migrations.RemoveField(
model_name='order',
name='order_products',
),
migrations.AddField(
model_name='orderproduct',
name='customer',
field=models.ForeignKey(default='1', on_delete=django.db.models.deletion.CASCADE, to='orders_app.customer'),
preserve_default=False,
),
]
@@ -0,0 +1,22 @@
# Generated by Django 3.1.7 on 2021-04-02 17:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0018_auto_20210402_2042'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='customer',
),
migrations.AddField(
model_name='order',
name='order_products',
field=models.ManyToManyField(blank=True, related_name='_order_order_products_+', through='orders_app.OrderProduct', to='orders_app.Product'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-03 08:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0019_auto_20210402_2045'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='amount',
field=models.FloatField(blank=True),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-04-03 11:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0020_auto_20210403_1105'),
]
operations = [
migrations.AddField(
model_name='order',
name='status',
field=models.CharField(choices=[('ΝΕΑ', 'ΝΕΑ'), ('ΕΠΕ', 'ΕΠΕ'), ('ΕΤΜ', 'ΕΤΟΙΜΗ')], default='ΝΕΑ', max_length=3),
),
migrations.AlterField(
model_name='order',
name='order_date',
field=models.DateTimeField(auto_now_add=True),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-04-03 11:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0021_auto_20210403_1429'),
]
operations = [
migrations.AlterField(
model_name='order',
name='delivery_date',
field=models.DateTimeField(),
),
migrations.AlterField(
model_name='order',
name='status',
field=models.CharField(choices=[('ΝΕΑ', 'ΝΕΑ'), ('ΕΠΕ', 'ΥΠΟ ΕΠΕΞΕΡΓΑΣΙΑ'), ('ΕΤΜ', 'ΕΤΟΙΜΗ')], default='ΝΕΑ', max_length=3),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-03 11:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0022_auto_20210403_1433'),
]
operations = [
migrations.AlterField(
model_name='order',
name='delivery_date',
field=models.DateField(),
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-04-04 05:40
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0023_auto_20210403_1437'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='amount',
field=models.FloatField(validators=[django.core.validators.MinValueValidator(0.01), django.core.validators.MaxValueValidator(999)]),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-04 10:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0024_auto_20210404_0840'),
]
operations = [
migrations.AlterField(
model_name='order',
name='status',
field=models.CharField(choices=[('ΝΕΑ', 'ΝΕΑ'), ('ΕΠΕ', 'ΥΠΟ ΕΠΕΞΕΡΓΑΣΙΑ'), ('ΕΤΜ', 'ΕΤΟΙΜΗ')], max_length=3),
),
]
@@ -0,0 +1,22 @@
# Generated by Django 3.1.7 on 2021-04-04 10:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0025_auto_20210404_1313'),
]
operations = [
migrations.RemoveField(
model_name='order',
name='status',
),
migrations.AddField(
model_name='order',
name='order_status',
field=models.CharField(choices=[('ΝΕΑ', 'ΝΕΑ'), ('ΕΠΕ', 'ΥΠΟ ΕΠΕΞΕΡΓΑΣΙΑ'), ('ΕΤΜ', 'ΕΤΟΙΜΗ')], default='ΝΕΑ', max_length=3),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-05 07:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0026_auto_20210404_1320'),
]
operations = [
migrations.AddField(
model_name='order',
name='order_info',
field=models.CharField(blank=True, max_length=512),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-05 07:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0027_order_order_info'),
]
operations = [
migrations.AddField(
model_name='customer',
name='email',
field=models.CharField(blank=True, max_length=128),
),
]
@@ -0,0 +1,24 @@
# Generated by Django 3.1.7 on 2021-04-28 06:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0028_customer_email'),
]
operations = [
migrations.AddField(
model_name='product',
name='flavor',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='product',
name='type',
field=models.CharField(choices=[('ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ', 'ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ'), ('ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ - ΖΑΧΑΡΟΠΑΣΤΑ', 'ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ - ΖΑΧΑΡΟΠΑΣΤΑ'), ('ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ', 'ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ'), ('ΒΑΠΤΙΣΗ', 'ΒΑΠΤΙΣΗ'), ('CANDY BAR', 'CANDY BAR'), ('ΔΙΑΦΟΡΑ', 'ΒΑΠΤΙΣΗ')], default=1, max_length=45),
preserve_default=False,
),
]
@@ -0,0 +1,31 @@
# Generated by Django 3.1.7 on 2021-04-28 08:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0029_auto_20210428_0925'),
]
operations = [
migrations.RemoveField(
model_name='product',
name='flavor',
),
migrations.RemoveField(
model_name='product',
name='type',
),
migrations.AddField(
model_name='orderproduct',
name='flavor',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='orderproduct',
name='type',
field=models.CharField(blank=True, choices=[('ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ', 'ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ'), ('ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ - ΖΑΧΑΡΟΠΑΣΤΑ', 'ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ - ΖΑΧΑΡΟΠΑΣΤΑ'), ('ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ', 'ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ'), ('ΒΑΠΤΙΣΗ', 'ΒΑΠΤΙΣΗ'), ('CANDY BAR', 'CANDY BAR'), ('ΔΙΑΦΟΡΑ', 'ΒΑΠΤΙΣΗ')], max_length=45),
),
]
@@ -0,0 +1,52 @@
# Generated by Django 3.1.7 on 2021-04-28 09:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0030_auto_20210428_1156'),
]
operations = [
migrations.RenameField(
model_name='orderproduct',
old_name='flavor',
new_name='cake_color_other',
),
migrations.RemoveField(
model_name='orderproduct',
name='type',
),
migrations.AddField(
model_name='orderproduct',
name='cake_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cake_flavor',
field=models.CharField(blank=True, choices=[('Ανάμεικτη', 'Ανάμεικτη '), ('Αγριοκέρασο', 'Αγριοκέρασο'), ('Ανάμεικτη Αγριοκέρασο', 'Ανάμεικτη Αγριοκέρασο'), ('Μπισκότο', 'Μπισκότο'), ('Oreo', 'Oreo'), ('Kinder', 'Kinder'), ('Σοκολάτα Φράουλα', 'Σοκολάτα Φράουλα'), ('Ferrero', 'Ferrero'), ('Nutella', 'Nutella'), ('Σοκολάτα Μπισκότο', 'Σοκολάτα Μπισκότο'), ('Λεμονί', 'Λεμονί'), ('Μπανάνα', 'Μπανάνα '), ('Σοκολατίνα', 'Σοκολατίνα'), ('Τιραμισού', 'Τιραμισού'), ('Φράουλα Κρέμα', 'Φράουλα Κρέμα'), ('Δούκισσα μπισκότο', 'Δούκισσα μπισκότο'), ('Καραμέλα', 'Καραμέλα'), ('Ανάμεικτη Σαμπάνια', 'Ανάμεικτη Σαμπάνια'), ('Γιαούρτι Ανανάς', 'Γιαούρτι Ανανάς ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cake_type',
field=models.CharField(blank=True, choices=[('ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ', 'ΤΟΥΡΤΕΣ ΓΕΝΕΘΛΙΩΝ'), ('ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ-ΖΑΧΑΡΟΠΑΣΤΑ', 'ΤΟΥΡΤΕΣ ΒΟΥΤΗΡΟΚΡΕΜΑ-ΖΑΧΑΡΟΠΑΣΤΑ'), ('ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ', 'ΤΟΥΡΤΕΣ ΓΑΜΟΥ-ΑΡΡΑΒΩΝΑ'), ('ΒΑΠΤΙΣΗ', 'ΒΑΠΤΙΣΗ'), ('CANDY BAR', 'CANDY BAR'), ('ΔΙΑΦΟΡΑ', 'ΒΑΠΤΙΣΗ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cup_flavor',
field=models.CharField(blank=True, choices=[('Προφιτερόλ', 'Προφιτερόλ'), ('Εκμέκ', 'Εκμέκ'), ('Banoffee', 'Banoffee'), ('Τιραμισού Brownies', 'Τιραμισού Brownies'), ('Τσιζκεικ', 'Τσιζκεικ'), ('Lemon pie', 'Lemon pie'), ('Φερρέρο Brownies', 'Φερρέρο Brownies'), ('Μους Brownies', 'Μους Brownies'), ('Lila Pause', 'Lila Pause')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='fyt_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='fyt_color_other',
field=models.CharField(blank=True, max_length=128),
),
]
@@ -0,0 +1,96 @@
# Generated by Django 3.1.7 on 2021-04-28 12:15
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0031_auto_20210428_1251'),
]
operations = [
migrations.AddField(
model_name='orderproduct',
name='candy_bar_decor',
field=models.CharField(blank=True, choices=[('ΔΙΑΚΟΣΜΗΣΗ', 'ΔΙΑΚΟΣΜΗΣΗ'), ('ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ', 'ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ'), ('ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ', 'ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ'), ('ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ', 'ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='candy_bar_decor_other',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='orderproduct',
name='candy_bar_wrap',
field=models.CharField(blank=True, choices=[('ΤΥΛΙΓΜΕΝΑ', 'ΤΥΛΙΓΜΕΝΑ'), ('ΑΤΥΛΙΧΤΑ', 'ΑΤΥΛΙΧΤΑ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cream_cake_3d',
field=models.CharField(blank=True, choices=[('ΝΑΙ', 'ΝΑΙ'), ('ΟΧΙ', 'ΟΧΙ')], default='ΟΧΙ', max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cream_cake_height',
field=models.FloatField(blank=True, default=1, max_length=128),
preserve_default=False,
),
migrations.AddField(
model_name='orderproduct',
name='cup_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='cup_color_other',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='orderproduct',
name='cup_type',
field=models.CharField(blank=True, choices=[('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'), ('ΤΕΤΡΑΓΩΝΟ ', 'ΤΕΤΡΑΓΩΝΟ '), ('ΣΤΡΟΓΓΥΛΟ', 'ΣΤΡΟΓΓΥΛΟ'), ('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='delivery',
field=models.CharField(blank=True, choices=[('ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', 'ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ'), ('ΑΠΟΣΤΟΛΗ', 'ΑΠΟΣΤΟΛΗ')], default='ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='engagement_cake_base',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='orderproduct',
name='engagement_cake_glaze',
field=models.CharField(blank=True, choices=[('ΓΛΑΣΣΟ', 'ΓΛΑΣΣΟ'), ('ΣΑΝΤΙΓΥ', 'ΣΑΝΤΙΓΥ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='engagement_cake_pcs_other',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='orderproduct',
name='engagement_cake_piecies',
field=models.CharField(blank=True, choices=[('ΑΤΟΜΙΚΑ', 'ΑΤΟΜΙΚΑ'), ('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'), ('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='engagement_cake_type',
field=models.CharField(blank=True, choices=[('ΑΡΡΑΒΩΝΑΣ', 'ΑΡΡΑΒΩΝΑΣ'), ('ΓΑΜΟΣ', 'ΓΑΜΟΣ')], max_length=45),
),
migrations.AddField(
model_name='orderproduct',
name='store_pickup',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='orders_app.store'),
preserve_default=False,
),
migrations.AlterField(
model_name='orderproduct',
name='cake_type',
field=models.CharField(blank=True, choices=[('KARDASIS', 'KARDASIS'), ('PAN DÉCOR', 'PAN DÉCOR')], max_length=45),
),
]
@@ -0,0 +1,26 @@
# Generated by Django 3.1.7 on 2021-04-30 12:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0032_auto_20210428_1515'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='color1',
),
migrations.RemoveField(
model_name='orderproduct',
name='color2',
),
migrations.AddField(
model_name='orderproduct',
name='candy_bar_type',
field=models.CharField(blank=True, choices=[('Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας'), ('Cup cakes με ζαχαρόπαστα και εκτύπωση', 'Cup cakes με ζαχαρόπαστα και εκτύπωση'), ('Cup cakes με χρωματιστή βουτυρόκρεμα', 'Cup cakes με χρωματιστή βουτυρόκρεμα'), ('Donuts με χρωματιστό γλάσσο', 'Donuts με χρωματιστό γλάσσο'), ('Pop cakes ', 'Pop cakes '), ('Μπισκότα με επικάλυψη ζαχαρόπαστας ', 'Μπισκότα με επικάλυψη ζαχαρόπαστας '), ('Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας'), ('Μπισκότα με επικάλυψη χρωματιστής σοκολάτας', 'Μπισκότα με επικάλυψη χρωματιστής σοκολάτας'), ('Μπισκότα σε σχήμα', 'Μπισκότα σε σχήμα'), ('Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση ', 'Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση '), ('Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα', 'Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα'), ('Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα ', 'Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα '), ('Μπολ με πολύχρωμα Marshmallows', 'Μπολ με πολύχρωμα Marshmallows'), ('Μπολ με κουφέτα ', 'Μπολ με κουφέτα '), ('Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)', 'Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)'), ('Μπολ με πολύχρωμους μπεζέδες', 'Μπολ με πολύχρωμους μπεζέδες'), ('Γλειφιτζούρια spiral (ροζ, γαλάζια)', 'Γλειφιτζούρια spiral (ροζ, γαλάζια)')], max_length=61),
),
]
@@ -0,0 +1,28 @@
# Generated by Django 3.1.7 on 2021-04-30 15:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0033_auto_20210430_1557'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AlterField(
model_name='orderproduct',
name='cup_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
migrations.AlterField(
model_name='orderproduct',
name='fyt_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45),
),
]
@@ -0,0 +1,19 @@
# Generated by Django 3.1.7 on 2021-04-30 17:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0034_auto_20210430_1856'),
]
operations = [
migrations.AddField(
model_name='orderproduct',
name='cake_type_num',
field=models.FloatField(blank=True, default=11, max_length=128),
preserve_default=False,
),
]
@@ -0,0 +1,36 @@
# Generated by Django 3.1.7 on 2021-04-30 18:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0035_orderproduct_cake_type_num'),
]
operations = [
migrations.RemoveField(
model_name='orderproduct',
name='delivery',
),
migrations.RemoveField(
model_name='orderproduct',
name='store_pickup',
),
migrations.AddField(
model_name='order',
name='delivery',
field=models.CharField(blank=True, choices=[('ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', 'ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ'), ('ΑΠΟΣΤΟΛΗ', 'ΑΠΟΣΤΟΛΗ')], default='ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', max_length=45),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_type_num',
field=models.FloatField(blank=True, default='0', max_length=128),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_height',
field=models.FloatField(blank=True, default='0', max_length=128),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-04-30 19:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0036_auto_20210430_2154'),
]
operations = [
migrations.AlterField(
model_name='order',
name='delivery',
field=models.CharField(choices=[('ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', 'ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ'), ('ΑΠΟΣΤΟΛΗ', 'ΑΠΟΣΤΟΛΗ')], default='ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', max_length=45),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_height',
field=models.FloatField(default='0', max_length=128),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-30 19:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0037_auto_20210430_2219'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_height',
field=models.FloatField(blank=True, default='0', max_length=128, null=True),
),
]
@@ -0,0 +1,118 @@
# Generated by Django 3.1.7 on 2021-04-30 19:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0038_auto_20210430_2222'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_color_other',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_flavor',
field=models.CharField(blank=True, choices=[('Ανάμεικτη', 'Ανάμεικτη '), ('Αγριοκέρασο', 'Αγριοκέρασο'), ('Ανάμεικτη Αγριοκέρασο', 'Ανάμεικτη Αγριοκέρασο'), ('Μπισκότο', 'Μπισκότο'), ('Oreo', 'Oreo'), ('Kinder', 'Kinder'), ('Σοκολάτα Φράουλα', 'Σοκολάτα Φράουλα'), ('Ferrero', 'Ferrero'), ('Nutella', 'Nutella'), ('Σοκολάτα Μπισκότο', 'Σοκολάτα Μπισκότο'), ('Λεμονί', 'Λεμονί'), ('Μπανάνα', 'Μπανάνα '), ('Σοκολατίνα', 'Σοκολατίνα'), ('Τιραμισού', 'Τιραμισού'), ('Φράουλα Κρέμα', 'Φράουλα Κρέμα'), ('Δούκισσα μπισκότο', 'Δούκισσα μπισκότο'), ('Καραμέλα', 'Καραμέλα'), ('Ανάμεικτη Σαμπάνια', 'Ανάμεικτη Σαμπάνια'), ('Γιαούρτι Ανανάς', 'Γιαούρτι Ανανάς ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_type',
field=models.CharField(blank=True, choices=[('KARDASIS', 'KARDASIS'), ('PAN DÉCOR', 'PAN DÉCOR')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_type_num',
field=models.FloatField(blank=True, default='0', max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='candy_bar_decor',
field=models.CharField(blank=True, choices=[('ΔΙΑΚΟΣΜΗΣΗ', 'ΔΙΑΚΟΣΜΗΣΗ'), ('ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ', 'ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ'), ('ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ', 'ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ'), ('ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ', 'ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='candy_bar_decor_other',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='candy_bar_type',
field=models.CharField(blank=True, choices=[('Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας'), ('Cup cakes με ζαχαρόπαστα και εκτύπωση', 'Cup cakes με ζαχαρόπαστα και εκτύπωση'), ('Cup cakes με χρωματιστή βουτυρόκρεμα', 'Cup cakes με χρωματιστή βουτυρόκρεμα'), ('Donuts με χρωματιστό γλάσσο', 'Donuts με χρωματιστό γλάσσο'), ('Pop cakes ', 'Pop cakes '), ('Μπισκότα με επικάλυψη ζαχαρόπαστας ', 'Μπισκότα με επικάλυψη ζαχαρόπαστας '), ('Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας'), ('Μπισκότα με επικάλυψη χρωματιστής σοκολάτας', 'Μπισκότα με επικάλυψη χρωματιστής σοκολάτας'), ('Μπισκότα σε σχήμα', 'Μπισκότα σε σχήμα'), ('Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση ', 'Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση '), ('Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα', 'Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα'), ('Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα ', 'Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα '), ('Μπολ με πολύχρωμα Marshmallows', 'Μπολ με πολύχρωμα Marshmallows'), ('Μπολ με κουφέτα ', 'Μπολ με κουφέτα '), ('Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)', 'Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)'), ('Μπολ με πολύχρωμους μπεζέδες', 'Μπολ με πολύχρωμους μπεζέδες'), ('Γλειφιτζούρια spiral (ροζ, γαλάζια)', 'Γλειφιτζούρια spiral (ροζ, γαλάζια)')], max_length=61, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='candy_bar_wrap',
field=models.CharField(blank=True, choices=[('ΤΥΛΙΓΜΕΝΑ', 'ΤΥΛΙΓΜΕΝΑ'), ('ΑΤΥΛΙΧΤΑ', 'ΑΤΥΛΙΧΤΑ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cup_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cup_color_other',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cup_flavor',
field=models.CharField(blank=True, choices=[('Προφιτερόλ', 'Προφιτερόλ'), ('Εκμέκ', 'Εκμέκ'), ('Banoffee', 'Banoffee'), ('Τιραμισού Brownies', 'Τιραμισού Brownies'), ('Τσιζκεικ', 'Τσιζκεικ'), ('Lemon pie', 'Lemon pie'), ('Φερρέρο Brownies', 'Φερρέρο Brownies'), ('Μους Brownies', 'Μους Brownies'), ('Lila Pause', 'Lila Pause')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cup_type',
field=models.CharField(blank=True, choices=[('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'), ('ΤΕΤΡΑΓΩΝΟ ', 'ΤΕΤΡΑΓΩΝΟ '), ('ΣΤΡΟΓΓΥΛΟ', 'ΣΤΡΟΓΓΥΛΟ'), ('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='engagement_cake_base',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='engagement_cake_glaze',
field=models.CharField(blank=True, choices=[('ΓΛΑΣΣΟ', 'ΓΛΑΣΣΟ'), ('ΣΑΝΤΙΓΥ', 'ΣΑΝΤΙΓΥ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='engagement_cake_pcs_other',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='engagement_cake_piecies',
field=models.CharField(blank=True, choices=[('ΑΤΟΜΙΚΑ', 'ΑΤΟΜΙΚΑ'), ('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'), ('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='engagement_cake_type',
field=models.CharField(blank=True, choices=[('ΑΡΡΑΒΩΝΑΣ', 'ΑΡΡΑΒΩΝΑΣ'), ('ΓΑΜΟΣ', 'ΓΑΜΟΣ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='fyt_color',
field=models.CharField(blank=True, choices=[('ΛΕΥΚΟ', 'ΛΕΥΚΟ'), ('ΡΟΖ', 'ΡΟΖ'), ('ΣΙΕΛ', 'ΣΙΕΛ'), ('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'), ('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'), ('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'), ('ΜΠΛΕ', 'ΜΠΛΕ'), ('ΜΑΥΡΟ', 'ΜΑΥΡΟ'), ('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'), ('ΚΑΦΕ', 'ΚΑΦΕ'), ('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'), ('ΛΙΛΑ', 'ΛΙΛΑ'), ('ΦΟΥΞ', 'ΦΟΥΞ'), ('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'), ('ΆΛΛΟ', 'ΆΛΛΟ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='fyt_color_other',
field=models.CharField(blank=True, max_length=128, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='info',
field=models.CharField(blank=True, max_length=512, null=True),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-30 19:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0039_auto_20210430_2225'),
]
operations = [
migrations.RenameField(
model_name='orderproduct',
old_name='engagement_cake_piecies',
new_name='engagement_cake_pcs',
),
]
@@ -0,0 +1,20 @@
# Generated by Django 3.1.7 on 2021-04-30 20:17
import datetime
from django.db import migrations, models
from django.utils.timezone import utc
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0040_auto_20210430_2235'),
]
operations = [
migrations.AlterField(
model_name='order',
name='order_date',
field=models.DateTimeField(default=datetime.datetime(2021, 4, 30, 20, 17, 31, 522831, tzinfo=utc)),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 3.1.7 on 2021-04-30 20:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0041_auto_20210430_2317'),
]
operations = [
migrations.AlterField(
model_name='order',
name='order_date',
field=models.DateTimeField(auto_now_add=True),
),
]
@@ -0,0 +1,25 @@
# Generated by Django 3.1.7 on 2021-04-30 21:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0042_auto_20210430_2323'),
]
operations = [
migrations.AddField(
model_name='orderproduct',
name='cake_img',
field=models.ImageField(default=1, upload_to='uploaded_images/'),
preserve_default=False,
),
migrations.AddField(
model_name='orderproduct',
name='cream_cake_img',
field=models.ImageField(default=1, upload_to='uploaded_images/'),
preserve_default=False,
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-04-30 21:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0043_auto_20210501_0000'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_img',
field=models.ImageField(blank=True, null=True, upload_to='uploaded_images/'),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_img',
field=models.ImageField(blank=True, null=True, upload_to='uploaded_images/'),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-04-30 21:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0044_auto_20210501_0006'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_img',
field=models.ImageField(blank=True, null=True, upload_to=''),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_img',
field=models.ImageField(blank=True, null=True, upload_to=''),
),
]
@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-05-01 04:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0045_auto_20210501_0032'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_img',
field=models.ImageField(blank=True, null=True, upload_to='media/'),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_img',
field=models.ImageField(blank=True, null=True, upload_to='media/'),
),
]
@@ -0,0 +1,28 @@
# Generated by Django 3.1.7 on 2021-05-01 09:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0046_auto_20210501_0754'),
]
operations = [
migrations.AlterField(
model_name='orderproduct',
name='cake_img',
field=models.ImageField(blank=True, null=True, upload_to=''),
),
migrations.AlterField(
model_name='orderproduct',
name='cake_type',
field=models.CharField(blank=True, choices=[('KARDASIS', 'KARDASIS'), ('PAN DÉCOR', 'PAN DÉCOR'), ('ΦΩΤΟΓΡΑΦΙΑ', 'ΦΩΤΟΓΡΑΦΙΑ')], max_length=45, null=True),
),
migrations.AlterField(
model_name='orderproduct',
name='cream_cake_img',
field=models.ImageField(blank=True, null=True, upload_to=''),
),
]
@@ -0,0 +1,44 @@
# Generated by Django 3.1.7 on 2021-05-27 14:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders_app', '0047_auto_20210501_1203'),
]
operations = [
migrations.RemoveField(
model_name='order',
name='customer',
),
migrations.AddField(
model_name='order',
name='customer_address',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='order',
name='customer_email',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='order',
name='customer_name',
field=models.CharField(default=1, max_length=128),
preserve_default=False,
),
migrations.AddField(
model_name='order',
name='customer_social_media',
field=models.CharField(blank=True, max_length=128),
),
migrations.AddField(
model_name='order',
name='customer_telephone',
field=models.CharField(default=1, max_length=128),
preserve_default=False,
),
]
View File
+228
View File
@@ -0,0 +1,228 @@
from django.contrib.auth.models import User
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)
telephone = PhoneNumberField()
def __str__(self):
return f'{self.name}-{self.address}'
class Product(models.Model):
name = models.CharField(max_length=128)
# photo
def __str__(self):
return f'{self.name}'
class Customer(models.Model):
name = models.CharField(max_length=128)
address = models.CharField(max_length=128, blank=True)
telephone = PhoneNumberField(blank=True)
email = models.CharField(max_length=128, blank=True)
social_media = models.CharField(max_length=128, blank=True)
def __str__(self):
return f'{self.name}:{self.telephone}'
class Order(models.Model):
STATUS_OPTIONS = (
('ΝΕΑ', 'ΝΕΑ'),
('ΕΠΕ', 'ΥΠΟ ΕΠΕΞΕΡΓΑΣΙΑ'),
('ΕΤΜ', 'ΕΤΟΙΜΗ'),
)
DELIVERY_OPTIONS = (
('ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ', 'ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ'),
('ΑΠΟΣΤΟΛΗ', 'ΑΠΟΣΤΟΛΗ'),
)
order_status = models.CharField(max_length=3, choices=STATUS_OPTIONS, default="ΝΕΑ")
customer_name = models.CharField(max_length=128)
customer_address = models.CharField(max_length=128, blank=True)
customer_telephone = models.CharField(max_length=128)
customer_email = models.CharField(max_length=128, blank=True)
customer_social_media = models.CharField(max_length=128, blank=True)
#customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
order_date = models.DateTimeField(auto_now_add=True)
delivery_date = models.DateField()
delivery = models.CharField(max_length=45, choices=DELIVERY_OPTIONS, default="ΠΑΡΑΛΑΒΗ ΑΠΟ ΚΑΤΑΣΤΗΜΑ")
store = models.ForeignKey(Store, on_delete=models.CASCADE)
order_products = models.ManyToManyField('Product', through='OrderProduct', related_name='+', blank=True)
order_info = models.CharField(max_length=512, blank=True)
def __str__(self):
return f'{self.id}:{self.customer_name, self.customer_telephone}, {self.store}, {self.order_date.strftime("%d/%m/%Y %H:%M")}, {self.delivery_date.strftime("%d/%m/%Y")}'
class OrderProduct(models.Model):
CAKE_TYPES = (
('KARDASIS', 'KARDASIS'),
('PAN DÉCOR', 'PAN DÉCOR'),
('ΦΩΤΟΓΡΑΦΙΑ', 'ΦΩΤΟΓΡΑΦΙΑ'),
)
COLOR_OPTIONS = (
('ΛΕΥΚΟ', 'ΛΕΥΚΟ'),
('ΡΟΖ', 'ΡΟΖ'),
('ΣΙΕΛ', 'ΣΙΕΛ'),
('ΚΙΤΡΙΝΟ', 'ΚΙΤΡΙΝΟ'),
('ΠΡΑΣΙΝΟ', 'ΠΡΑΣΙΝΟ'),
('ΚΟΚΚΙΝΟ', 'ΚΟΚΚΙΝΟ'),
('ΜΠΛΕ', 'ΜΠΛΕ'),
('ΜΑΥΡΟ', 'ΜΑΥΡΟ'),
('ΣΕΡΑΝΟ', 'ΣΕΡΑΝΟ'),
('ΚΑΦΕ', 'ΚΑΦΕ'),
('ΒΕΡΑΜΑΝ', 'ΒΕΡΑΜΑΝ'),
('ΛΙΛΑ', 'ΛΙΛΑ'),
('ΦΟΥΞ', 'ΦΟΥΞ'),
('ΔΙΑΦΑΝΟ', 'ΔΙΑΦΑΝΟ'),
('ΆΛΛΟ', 'ΆΛΛΟ'),
)
CAKE_FLAVORS = (
('Ανάμεικτη', 'Ανάμεικτη '),
('Αγριοκέρασο', 'Αγριοκέρασο'),
('Ανάμεικτη Αγριοκέρασο', 'Ανάμεικτη Αγριοκέρασο'),
('Μπισκότο', 'Μπισκότο'),
('Oreo', 'Oreo'),
('Kinder', 'Kinder'),
('Σοκολάτα Φράουλα', 'Σοκολάτα Φράουλα'),
('Ferrero', 'Ferrero'),
('Nutella', 'Nutella'),
('Σοκολάτα Μπισκότο', 'Σοκολάτα Μπισκότο'),
('Λεμονί', 'Λεμονί'),
('Μπανάνα', 'Μπανάνα '),
('Σοκολατίνα', 'Σοκολατίνα'),
('Τιραμισού', 'Τιραμισού'),
('Φράουλα Κρέμα', 'Φράουλα Κρέμα'),
('Δούκισσα μπισκότο', 'Δούκισσα μπισκότο'),
('Καραμέλα', 'Καραμέλα'),
('Ανάμεικτη Σαμπάνια', 'Ανάμεικτη Σαμπάνια'),
('Γιαούρτι Ανανάς', 'Γιαούρτι Ανανάς '),
)
CUP_FLAVORS = (
('Προφιτερόλ', 'Προφιτερόλ'),
('Εκμέκ', 'Εκμέκ'),
('Banoffee', 'Banoffee'),
('Τιραμισού Brownies', 'Τιραμισού Brownies'),
('Τσιζκεικ', 'Τσιζκεικ'),
('Lemon pie', 'Lemon pie'),
('Φερρέρο Brownies', 'Φερρέρο Brownies'),
('Μους Brownies', 'Μους Brownies'),
('Lila Pause', 'Lila Pause'),
)
CUP_TYPES = (
('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'),
('ΤΕΤΡΑΓΩΝΟ ', 'ΤΕΤΡΑΓΩΝΟ '),
('ΣΤΡΟΓΓΥΛΟ', 'ΣΤΡΟΓΓΥΛΟ'),
('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'),
)
CANDY_BAR_TYPE = (
('Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Cup cake με επικάλυψη και διακοσμητικά ζαχαρόπαστας'),
('Cup cakes με ζαχαρόπαστα και εκτύπωση', 'Cup cakes με ζαχαρόπαστα και εκτύπωση'),
('Cup cakes με χρωματιστή βουτυρόκρεμα', 'Cup cakes με χρωματιστή βουτυρόκρεμα'),
('Donuts με χρωματιστό γλάσσο', 'Donuts με χρωματιστό γλάσσο'),
('Pop cakes ', 'Pop cakes '),
('Μπισκότα με επικάλυψη ζαχαρόπαστας ', 'Μπισκότα με επικάλυψη ζαχαρόπαστας '),
('Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας', 'Μπισκότα με επικάλυψη και διακοσμητικά ζαχαρόπαστας'),
('Μπισκότα με επικάλυψη χρωματιστής σοκολάτας', 'Μπισκότα με επικάλυψη χρωματιστής σοκολάτας'),
('Μπισκότα σε σχήμα', 'Μπισκότα σε σχήμα'),
('Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση ', 'Στρόγγυλα μπισκότα με επικάλυψη ζαχαρόπαστας και εκτύπωση '),
('Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα', 'Χωνάκι παγωτού με πολύχρωμα ζαχαρωτά τυλιγμένα σε ζελατίνα'),
('Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα ', 'Μπεζεδάκια πολύχρωμα γεμιστά με κρέμα '),
('Μπολ με πολύχρωμα Marshmallows', 'Μπολ με πολύχρωμα Marshmallows'),
('Μπολ με κουφέτα ', 'Μπολ με κουφέτα '),
('Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)', 'Μπολ με μίνι σοκολάτες (Twix, Bueno, Derby, Lacta, Σοκοφρέτα)'),
('Μπολ με πολύχρωμους μπεζέδες', 'Μπολ με πολύχρωμους μπεζέδες'),
('Γλειφιτζούρια spiral (ροζ, γαλάζια)', 'Γλειφιτζούρια spiral (ροζ, γαλάζια)'),
)
CANDY_BAR_DECOR = (
('ΔΙΑΚΟΣΜΗΣΗ', 'ΔΙΑΚΟΣΜΗΣΗ'),
('ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ', 'ΠΟΛΥΧΡΩΜΗ ΤΡΟΥΦΑ'),
('ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ', 'ΧΡΩΜΑΤΙΣΤΗ ΤΡΟΥΦΑ'),
('ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ', 'ΓΡΑΜΜΕΣ ΣΟΚΟΛΑΤΑΣ'),
('ΆΛΛΟ', 'ΆΛΛΟ'),
)
CANDY_BAR_WRAP = (
('ΤΥΛΙΓΜΕΝΑ', 'ΤΥΛΙΓΜΕΝΑ'),
('ΑΤΥΛΙΧΤΑ', 'ΑΤΥΛΙΧΤΑ'),
)
CREAM_3D = (
('ΝΑΙ', 'ΝΑΙ'),
('ΟΧΙ', 'ΟΧΙ'),
)
ENGAMENT_TYPE = (
('ΑΡΡΑΒΩΝΑΣ', 'ΑΡΡΑΒΩΝΑΣ'),
('ΓΑΜΟΣ', 'ΓΑΜΟΣ'),
)
ENGAMENT_CAKE_PIECES = (
('ΑΤΟΜΙΚΑ', 'ΑΤΟΜΙΚΑ'),
('ΚΥΠΕΛΛΟ', 'ΚΥΠΕΛΛΟ'),
('ΣΦΗΝΑΚΙ', 'ΣΦΗΝΑΚΙ'),
('ΆΛΛΟ', 'ΆΛΛΟ'),
)
ENGAMENT_CAKE_GLAZE = (
('ΓΛΑΣΣΟ', 'ΓΛΑΣΣΟ'),
('ΣΑΝΤΙΓΥ', 'ΣΑΝΤΙΓΥ'),
)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
amount = models.FloatField(validators=[MinValueValidator(0.01), MaxValueValidator(999)])
#az = 'ΚΙΛΑ ΓΕΥΣΗ 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)
cake_color_other = models.CharField(max_length=128, blank=True, null=True)
fyt_color = models.CharField(max_length=45, choices=COLOR_OPTIONS, blank=True, null=True)
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 = 'ΜΕΓΕΘΟΣ ΥΨΟΣ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
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 = 'ΓΑΜΟΣ ΒΑΣΗ ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΠΑΡΑΤΗΡΗΣΕΙΣ'
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 = 'ΤΕΜΑΧΙΑ ΓΕΥΣΗ ΚΥΠΕΛΛΟ ΧΡΩΜΑ ΤΕΜΑΧΙΑ ΧΡΩΜΑ ΔΙΑΚΟΣΜΗΣΗ ΤΥΛΙΓΜΕΝΑ ΠΑΡΑΤΗΡΗΣΕΙΣ'
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)
cup_type = models.CharField(max_length=45, choices=CUP_TYPES, blank=True, null=True)
candy_bar_type = models.CharField(max_length=61, choices=CANDY_BAR_TYPE, blank=True, null=True)
candy_bar_decor = models.CharField(max_length=45, choices=CANDY_BAR_DECOR, blank=True, null=True)
candy_bar_decor_other = models.CharField(max_length=128, blank=True, null=True)
candy_bar_wrap = models.CharField(max_length=45, choices=CANDY_BAR_WRAP, blank=True, null=True)
info = models.CharField(max_length=512, blank=True, null=True)
def __str__(self):
return f'{self.product}'
+56
View File
@@ -0,0 +1,56 @@
from django.contrib.auth.models import User
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)
telephone = PhoneNumberField()
def __str__(self):
return f'{self.name} - {self.address}'
class Product(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return f'{self.name}'
class Customer(models.Model):
name = models.CharField(max_length=128)
address = models.CharField(max_length=128, blank=True)
telephone = PhoneNumberField(blank=True)
social_media = models.CharField(max_length=128, blank=True)
def __str__(self):
return f'{self.name}:{self.telephone}'
class Order(models.Model):
#order_id = models.CharField(max_length=32)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
order_date = models.DateField()
delivery_date = models.DateField()
store = models.ForeignKey(Store, on_delete=models.CASCADE)
order_products = models.ManyToManyField('Product', through='OrderProduct', related_name='+', blank=True)
def __str__(self):
return f'{self.id}:{self.customer.name}, {self.store}, {self.order_date}, {self.delivery_date}'
class OrderProduct(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
#type = models.ForeignKey(Product, on_delete=models.CASCADE)
#name = models.CharField(max_length=128)
amount = models.FloatField()
color1 = models.CharField(max_length=128, blank=True)
color2 = models.CharField(max_length=128, blank=True)
info = models.CharField(max_length=512, blank=True)
def __str__(self):
return f'{self.product}'
+19
View File
@@ -0,0 +1,19 @@
from django import forms
from popup_field.views import PopupCRUDViewSet
from .models import *
class StoreForm(forms.ModelForm):
class Meta:
model = Store
fields = ['name', 'address', 'telephone']
class StorePopupCRUDViewSet(PopupCRUDViewSet):
model = Store
form_class = StoreForm
template_name_create = 'popup/create.html'
template_name_update = 'popup/update.html'
+250
View File
@@ -0,0 +1,250 @@
/**
* jQuery Formset 1.5-pre
* @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
* @requires jQuery 1.2.6 or later
*
* Copyright (c) 2009, Stanislaus Madueke
* All rights reserved.
*
* Licensed under the New BSD License
* See: http://www.opensource.org/licenses/bsd-license.php
*/
;(function($) {
$.fn.formset = function(opts)
{
var options = $.extend({}, $.fn.formset.defaults, opts),
flatExtraClasses = options.extraClasses.join(' '),
totalForms = $('#id_' + options.prefix + '-TOTAL_FORMS'),
maxForms = $('#id_' + options.prefix + '-MAX_NUM_FORMS'),
minForms = $('#id_' + options.prefix + '-MIN_NUM_FORMS'),
childElementSelector = 'input,select,textarea,label,div',
$$ = $(this),
applyExtraClasses = function(row, ndx) {
if (options.extraClasses) {
row.removeClass(flatExtraClasses);
row.addClass(options.extraClasses[ndx % options.extraClasses.length]);
}
},
updateElementIndex = function(elem, prefix, ndx) {
var idRegex = new RegExp(prefix + '-(\\d+|__prefix__)-'),
replacement = prefix + '-' + ndx + '-';
if (elem.attr("for")) elem.attr("for", elem.attr("for").replace(idRegex, replacement));
if (elem.attr('id')) elem.attr('id', elem.attr('id').replace(idRegex, replacement));
if (elem.attr('name')) elem.attr('name', elem.attr('name').replace(idRegex, replacement));
},
hasChildElements = function(row) {
return row.find(childElementSelector).length > 0;
},
showAddButton = function() {
return maxForms.length == 0 || // For Django versions pre 1.2
(maxForms.val() == '' || (maxForms.val() - totalForms.val() > 0));
},
/**
* Indicates whether delete link(s) can be displayed - when total forms > min forms
*/
showDeleteLinks = function() {
return minForms.length == 0 || // For Django versions pre 1.7
(minForms.val() == '' || (totalForms.val() - minForms.val() > 0));
},
insertDeleteLink = function(row) {
var delCssSelector = $.trim(options.deleteCssClass).replace(/\s+/g, '.'),
addCssSelector = $.trim(options.addCssClass).replace(/\s+/g, '.');
var delButtonHTML = '<a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText +'</a>';
if (options.deleteContainerClass) {
// If we have a specific container for the remove button,
// place it as the last child of that container:
row.find('[class*="' + options.deleteContainerClass + '"]').append(delButtonHTML);
} else if (row.is('TR')) {
// If the forms are laid out in table rows, insert
// the remove button into the last table cell:
row.children(':last').append(delButtonHTML);
} else if (row.is('UL') || row.is('OL')) {
// If they're laid out as an ordered/unordered list,
// insert an <li> after the last list item:
row.append('<li>' + delButtonHTML + '</li>');
} else {
// Otherwise, just insert the remove button as the
// last child element of the form's container:
row.append(delButtonHTML);
}
// Check if we're under the minimum number of forms - not to display delete link at rendering
if (!showDeleteLinks()){
row.find('a.' + delCssSelector).hide();
}
row.find('a.' + delCssSelector).click(function() {
var row = $(this).parents('.' + options.formCssClass),
del = row.find('input:hidden[id $= "-DELETE"]'),
buttonRow = row.siblings("a." + addCssSelector + ', .' + options.formCssClass + '-add'),
forms;
if (del.length) {
// We're dealing with an inline formset.
// Rather than remove this form from the DOM, we'll mark it as deleted
// and hide it, then let Django handle the deleting:
del.val('on');
row.hide();
forms = $('.' + options.formCssClass).not(':hidden');
totalForms.val(forms.length);
} else {
row.remove();
// Update the TOTAL_FORMS count:
forms = $('.' + options.formCssClass).not('.formset-custom-template');
totalForms.val(forms.length);
}
for (var i=0, formCount=forms.length; i<formCount; i++) {
// Apply `extraClasses` to form rows so they're nicely alternating:
applyExtraClasses(forms.eq(i), i);
if (!del.length) {
// Also update names and IDs for all child controls (if this isn't
// a delete-able inline formset) so they remain in sequence:
forms.eq(i).find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, i);
});
}
}
// Check if we've reached the minimum number of forms - hide all delete link(s)
if (!showDeleteLinks()){
$('a.' + delCssSelector).each(function(){$(this).hide();});
}
// Check if we need to show the add button:
if (buttonRow.is(':hidden') && showAddButton()) buttonRow.show();
// If a post-delete callback was provided, call it with the deleted form:
if (options.removed) options.removed(row);
return false;
});
};
$$.each(function(i) {
var row = $(this),
del = row.find('input:checkbox[id $= "-DELETE"]');
if (del.length) {
// If you specify "can_delete = True" when creating an inline formset,
// Django adds a checkbox to each form in the formset.
// Replace the default checkbox with a hidden field:
if (del.is(':checked')) {
// If an inline formset containing deleted forms fails validation, make sure
// we keep the forms hidden (thanks for the bug report and suggested fix Mike)
del.before('<input type="hidden" name="' + del.attr('name') +'" id="' + del.attr('id') +'" value="on" />');
row.hide();
} else {
del.before('<input type="hidden" name="' + del.attr('name') +'" id="' + del.attr('id') +'" />');
}
// Hide any labels associated with the DELETE checkbox:
$('label[for="' + del.attr('id') + '"]').hide();
del.remove();
}
if (hasChildElements(row)) {
row.addClass(options.formCssClass);
if (row.is(':visible')) {
insertDeleteLink(row);
applyExtraClasses(row, i);
}
}
});
if ($$.length) {
var hideAddButton = !showAddButton(),
addButton, template;
if (options.formTemplate) {
// If a form template was specified, we'll clone it to generate new form instances:
template = (options.formTemplate instanceof $) ? options.formTemplate : $(options.formTemplate);
template.removeAttr('id').addClass(options.formCssClass + ' formset-custom-template');
template.find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, '__prefix__');
});
insertDeleteLink(template);
} else {
// Otherwise, use the last form in the formset; this works much better if you've got
// extra (>= 1) forms (thnaks to justhamade for pointing this out):
if (options.hideLastAddForm) $('.' + options.formCssClass + ':last').hide();
template = $('.' + options.formCssClass + ':last').clone(true).removeAttr('id');
template.find('input:hidden[id $= "-DELETE"]').remove();
// Clear all cloned fields, except those the user wants to keep (thanks to brunogola for the suggestion):
template.find(childElementSelector).not(options.keepFieldValues).each(function() {
var elem = $(this);
// If this is a checkbox or radiobutton, uncheck it.
// This fixes Issue 1, reported by Wilson.Andrew.J:
if (elem.is('input:checkbox') || elem.is('input:radio')) {
elem.attr('checked', false);
} else {
elem.val('');
}
});
}
// FIXME: Perhaps using $.data would be a better idea?
options.formTemplate = template;
var addButtonHTML = '<a class="' + options.addCssClass + '" href="javascript:void(0)">' + options.addText + '</a>';
if (options.addContainerClass) {
// If we have a specific container for the "add" button,
// place it as the last child of that container:
var addContainer = $('[class*="' + options.addContainerClass + '"');
addContainer.append(addButtonHTML);
addButton = addContainer.find('[class="' + options.addCssClass + '"]');
} else if ($$.is('TR')) {
// If forms are laid out as table rows, insert the
// "add" button in a new table row:
var numCols = $$.eq(0).children().length, // This is a bit of an assumption :|
buttonRow = $('<tr><td colspan="' + numCols + '">' + addButtonHTML + '</tr>').addClass(options.formCssClass + '-add');
$$.parent().append(buttonRow);
addButton = buttonRow.find('a');
} else {
// Otherwise, insert it immediately after the last form:
$$.filter(':last').after(addButtonHTML);
addButton = $$.filter(':last').next();
}
if (hideAddButton) addButton.hide();
addButton.click(function() {
var formCount = parseInt(totalForms.val()),
row = options.formTemplate.clone(true).removeClass('formset-custom-template'),
buttonRow = $($(this).parents('tr.' + options.formCssClass + '-add').get(0) || this),
delCssSelector = $.trim(options.deleteCssClass).replace(/\s+/g, '.');
applyExtraClasses(row, formCount);
row.insertBefore(buttonRow).show();
row.find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, formCount);
});
totalForms.val(formCount + 1);
// Check if we're above the minimum allowed number of forms -> show all delete link(s)
if (showDeleteLinks()){
$('a.' + delCssSelector).each(function(){$(this).show();});
}
// Check if we've exceeded the maximum allowed number of forms:
if (!showAddButton()) buttonRow.hide();
// If a post-add callback was supplied, call it with the added form:
if (options.added) options.added(row);
return false;
});
}
return $$;
};
/* Setup plugin defaults */
$.fn.formset.defaults = {
prefix: 'form', // The form prefix for your django formset
formTemplate: null, // The jQuery selection cloned to generate new form instances
addText: 'add another', // Text for the add link
deleteText: 'remove', // Text for the delete link
addContainerClass: null, // Container CSS class for the add link
deleteContainerClass: null, // Container CSS class for the delete link
addCssClass: 'add-row', // CSS class applied to the add link
deleteCssClass: 'delete-row', // CSS class applied to the delete link
formCssClass: 'dynamic-form', // CSS class applied to each form in a formset
extraClasses: [], // Additional CSS classes, which will be applied to each form in turn
keepFieldValues: '', // jQuery selector for fields whose values should be kept when the form is cloned
added: null, // Function called each time a new form is added
removed: null, // Function called each time a form is deleted
hideLastAddForm: false // When set to true, hide last empty add form (becomes visible when clicking on add button)
};
})(jQuery);
+235
View File
@@ -0,0 +1,235 @@
/**
* jQuery Formset 1.5-pre
* @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
* @requires jQuery 1.2.6 or later
*
* Copyright (c) 2009, Stanislaus Madueke
* All rights reserved.
*
* Licensed under the New BSD License
* See: http://www.opensource.org/licenses/bsd-license.php
*/
;(function($) {
$.fn.formset = function(opts)
{
var options = $.extend({}, $.fn.formset.defaults, opts),
flatExtraClasses = options.extraClasses.join(' '),
totalForms = $('#id_' + options.prefix + '-TOTAL_FORMS'),
maxForms = $('#id_' + options.prefix + '-MAX_NUM_FORMS'),
minForms = $('#id_' + options.prefix + '-MIN_NUM_FORMS'),
childElementSelector = 'input,select,textarea,label,div',
$$ = $(this),
applyExtraClasses = function(row, ndx) {
if (options.extraClasses) {
row.removeClass(flatExtraClasses);
row.addClass(options.extraClasses[ndx % options.extraClasses.length]);
}
},
updateElementIndex = function(elem, prefix, ndx) {
var idRegex = new RegExp(prefix + '-(\\d+|__prefix__)-'),
replacement = prefix + '-' + ndx + '-';
if (elem.attr("for")) elem.attr("for", elem.attr("for").replace(idRegex, replacement));
if (elem.attr('id')) elem.attr('id', elem.attr('id').replace(idRegex, replacement));
if (elem.attr('name')) elem.attr('name', elem.attr('name').replace(idRegex, replacement));
},
hasChildElements = function(row) {
return row.find(childElementSelector).length > 0;
},
showAddButton = function() {
return maxForms.length == 0 || // For Django versions pre 1.2
(maxForms.val() == '' || (maxForms.val() - totalForms.val() > 0));
},
/**
* Indicates whether delete link(s) can be displayed - when total forms > min forms
*/
showDeleteLinks = function() {
return minForms.length == 0 || // For Django versions pre 1.7
(minForms.val() == '' || (totalForms.val() - minForms.val() > 0));
},
insertDeleteLink = function(row) {
var delCssSelector = $.trim(options.deleteCssClass).replace(/\s+/g, '.'),
addCssSelector = $.trim(options.addCssClass).replace(/\s+/g, '.');
var delButtonHTML = '<a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText +'</a>';
if (options.deleteContainerClass) {
// If we have a specific container for the remove button,
// place it as the last child of that container:
row.find('[class*="' + options.deleteContainerClass + '"]').append(delButtonHTML);
} else if (row.is('TR')) {
// If the forms are laid out in table rows, insert
// the remove button into the last table cell:
row.children(':last').append(delButtonHTML);
} else if (row.is('UL') || row.is('OL')) {
// If they're laid out as an ordered/unordered list,
// insert an <li> after the last list item:
row.append('<li>' + delButtonHTML + '</li>');
} else {
// Otherwise, just insert the remove button as the
// last child element of the form's container:
row.append(delButtonHTML);
}
// Check if we're under the minimum number of forms - not to display delete link at rendering
if (!showDeleteLinks()){
row.find('a.' + delCssSelector).hide();
}
row.find('a.' + delCssSelector).click(function() {
var row = $(this).parents('.' + options.formCssClass),
del = row.find('input:hidden[id $= "-DELETE"]'),
buttonRow = row.siblings("a." + addCssSelector + ', .' + options.formCssClass + '-add'),
forms;
if (del.length) {
// We're dealing with an inline formset.
// Rather than remove this form from the DOM, we'll mark it as deleted
// and hide it, then let Django handle the deleting:
del.val('on');
row.hide();
forms = $('.' + options.formCssClass).not(':hidden');
totalForms.val(forms.length);
} else {
row.remove();
// Update the TOTAL_FORMS count:
forms = $('.' + options.formCssClass).not('.formset-custom-template');
totalForms.val(forms.length);
}
for (var i=0, formCount=forms.length; i<formCount; i++) {
// Apply `extraClasses` to form rows so they're nicely alternating:
applyExtraClasses(forms.eq(i), i);
if (!del.length) {
// Also update names and IDs for all child controls (if this isn't
// a delete-able inline formset) so they remain in sequence:
forms.eq(i).find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, i);
});
}
}
// Check if we've reached the minimum number of forms - hide all delete link(s)
if (!showDeleteLinks()){
$('a.' + delCssSelector).each(function(){$(this).hide();});
}
// Check if we need to show the add button:
if (buttonRow.is(':hidden') && showAddButton()) buttonRow.show();
// If a post-delete callback was provided, call it with the deleted form:
if (options.removed) options.removed(row);
return false;
});
};
$$.each(function(i) {
var row = $(this),
del = row.find('input:checkbox[id $= "-DELETE"]');
if (hasChildElements(row)) {
row.addClass(options.formCssClass);
if (row.is(':visible')) {
insertDeleteLink(row);
applyExtraClasses(row, i);
}
}
});
if ($$.length) {
var hideAddButton = !showAddButton(),
addButton, template;
if (options.formTemplate) {
// If a form template was specified, we'll clone it to generate new form instances:
template = (options.formTemplate instanceof $) ? options.formTemplate : $(options.formTemplate);
template.removeAttr('id').addClass(options.formCssClass + ' formset-custom-template');
template.find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, '__prefix__');
});
insertDeleteLink(template);
} else {
// Otherwise, use the last form in the formset; this works much better if you've got
// extra (>= 1) forms (thnaks to justhamade for pointing this out):
if (options.hideLastAddForm) $('.' + options.formCssClass + ':last').hide();
template = $('.' + options.formCssClass + ':last').clone(true).removeAttr('id');
template.find('input:hidden[id $= "-DELETE"]').remove();
// Clear all cloned fields, except those the user wants to keep (thanks to brunogola for the suggestion):
template.find(childElementSelector).not(options.keepFieldValues).each(function() {
var elem = $(this);
// If this is a checkbox or radiobutton, uncheck it.
// This fixes Issue 1, reported by Wilson.Andrew.J:
if (elem.is('input:checkbox') || elem.is('input:radio')) {
elem.attr('checked', false);
} else {
elem.val('');
}
});
}
// FIXME: Perhaps using $.data would be a better idea?
options.formTemplate = template;
var addButtonHTML = '<a class="' + options.addCssClass + '" href="javascript:void(0)">' + options.addText + '</a>';
if (options.addContainerClass) {
// If we have a specific container for the "add" button,
// place it as the last child of that container:
var addContainer = $('[class*="' + options.addContainerClass + '"');
addContainer.append(addButtonHTML);
addButton = addContainer.find('[class="' + options.addCssClass + '"]');
} else if ($$.is('TR')) {
// If forms are laid out as table rows, insert the
// "add" button in a new table row:
var numCols = $$.eq(0).children().length, // This is a bit of an assumption :|
buttonRow = $('<tr><td colspan="' + numCols + '">' + addButtonHTML + '</tr>').addClass(options.formCssClass + '-add');
$$.parent().append(buttonRow);
addButton = buttonRow.find('a');
} else {
// Otherwise, insert it immediately after the last form:
$$.filter(':last').after(addButtonHTML);
addButton = $$.filter(':last').next();
}
if (hideAddButton) addButton.hide();
addButton.click(function() {
var formCount = parseInt(totalForms.val()),
row = options.formTemplate.clone(true).removeClass('formset-custom-template'),
buttonRow = $($(this).parents('tr.' + options.formCssClass + '-add').get(0) || this),
delCssSelector = $.trim(options.deleteCssClass).replace(/\s+/g, '.');
applyExtraClasses(row, formCount);
row.insertBefore(buttonRow).show();
row.find(childElementSelector).each(function() {
updateElementIndex($(this), options.prefix, formCount);
});
totalForms.val(formCount + 1);
// Check if we're above the minimum allowed number of forms -> show all delete link(s)
if (showDeleteLinks()){
$('a.' + delCssSelector).each(function(){$(this).show();});
}
// Check if we've exceeded the maximum allowed number of forms:
if (!showAddButton()) buttonRow.hide();
// If a post-add callback was supplied, call it with the added form:
if (options.added) options.added(row);
return false;
});
}
return $$;
};
/* Setup plugin defaults */
$.fn.formset.defaults = {
prefix: 'form', // The form prefix for your django formset
formTemplate: null, // The jQuery selection cloned to generate new form instances
addText: 'add another', // Text for the add link
deleteText: 'remove', // Text for the delete link
addContainerClass: null, // Container CSS class for the add link
deleteContainerClass: null, // Container CSS class for the delete link
addCssClass: 'add-row', // CSS class applied to the add link
deleteCssClass: 'delete-row', // CSS class applied to the delete link
formCssClass: 'dynamic-form', // CSS class applied to each form in a formset
extraClasses: [], // Additional CSS classes, which will be applied to each form in turn
keepFieldValues: '', // jQuery selector for fields whose values should be kept when the form is cloned
added: null, // Function called each time a new form is added
removed: null, // Function called each time a form is deleted
hideLastAddForm: false // When set to true, hide last empty add form (becomes visible when clicking on add button)
};
})(jQuery);
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More