diff --git a/.DS_Store b/.DS_Store index c10ec4f..dc5052e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/EDMS/.vscode/settings.json b/EDMS/.vscode/settings.json new file mode 100644 index 0000000..4c1277d --- /dev/null +++ b/EDMS/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/Users/nourelgeziry/.local/share/virtualenvs/Equal_Distribution_maintainance-M-bcKwQz/bin/python" +} \ No newline at end of file diff --git a/EDMS/EDMS/__init__.py b/EDMS/EDMS/__init__.py index e69de29..6944829 100644 --- a/EDMS/EDMS/__init__.py +++ b/EDMS/EDMS/__init__.py @@ -0,0 +1,3 @@ +# This will make sure the app is always imported when + +__all__ = ('celery_app',) \ No newline at end of file diff --git a/EDMS/EDMS/settings.py b/EDMS/EDMS/settings.py index f52dfaa..e3e38f7 100644 --- a/EDMS/EDMS/settings.py +++ b/EDMS/EDMS/settings.py @@ -37,6 +37,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + + 'shoppingCart', ] @@ -83,6 +85,9 @@ DATABASES = { } + + + # Password validation # https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators @@ -128,4 +133,5 @@ STATICFILES_DIRS = [ ] -MEDIA_ROOT = BASE_DIR / 'static/images' \ No newline at end of file +MEDIA_ROOT = BASE_DIR / 'static/images' + diff --git a/EDMS/db.sqlite3 b/EDMS/db.sqlite3 index 93920bb..bb85142 100644 Binary files a/EDMS/db.sqlite3 and b/EDMS/db.sqlite3 differ diff --git a/EDMS/shoppingCart/migrations/0004_auto_20201016_1152.py b/EDMS/shoppingCart/migrations/0004_auto_20201016_1152.py new file mode 100644 index 0000000..7dd980f --- /dev/null +++ b/EDMS/shoppingCart/migrations/0004_auto_20201016_1152.py @@ -0,0 +1,25 @@ +# Generated by Django 3.1.2 on 2020-10-16 11:52 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0003_auto_20201012_1250'), + ] + + operations = [ + migrations.AddField( + model_name='orderitem', + name='date_created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='orderitem', + name='expired', + field=models.BooleanField(default=False), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0005_test.py b/EDMS/shoppingCart/migrations/0005_test.py new file mode 100644 index 0000000..645b4d2 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0005_test.py @@ -0,0 +1,20 @@ +# Generated by Django 3.1.2 on 2020-10-16 14:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0004_auto_20201016_1152'), + ] + + operations = [ + migrations.CreateModel( + name='Test', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=4)), + ], + ), + ] diff --git a/EDMS/shoppingCart/migrations/0006_auto_20201018_1229.py b/EDMS/shoppingCart/migrations/0006_auto_20201018_1229.py new file mode 100644 index 0000000..7277723 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0006_auto_20201018_1229.py @@ -0,0 +1,26 @@ +# Generated by Django 3.1.2 on 2020-10-18 12:29 + +import datetime +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0005_test'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='date_created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 12, 30, 18, 872950)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0007_auto_20201018_1316.py b/EDMS/shoppingCart/migrations/0007_auto_20201018_1316.py new file mode 100644 index 0000000..ba38b4a --- /dev/null +++ b/EDMS/shoppingCart/migrations/0007_auto_20201018_1316.py @@ -0,0 +1,28 @@ +# Generated by Django 3.1.2 on 2020-10-18 13:16 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0006_auto_20201018_1229'), + ] + + operations = [ + migrations.RemoveField( + model_name='orderitem', + name='expired', + ), + migrations.AddField( + model_name='order', + name='expired', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 13, 17, 6, 8469)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0008_auto_20201018_1342.py b/EDMS/shoppingCart/migrations/0008_auto_20201018_1342.py new file mode 100644 index 0000000..2862aec --- /dev/null +++ b/EDMS/shoppingCart/migrations/0008_auto_20201018_1342.py @@ -0,0 +1,29 @@ +# Generated by Django 3.1.2 on 2020-10-18 13:42 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0007_auto_20201018_1316'), + ] + + operations = [ + migrations.AddField( + model_name='orderitem', + name='expired', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='order', + name='date_created', + field=models.DateTimeField(verbose_name=datetime.datetime(2020, 10, 18, 13, 42, 9, 885618)), + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 13, 43, 9, 885636)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0009_auto_20201018_1354.py b/EDMS/shoppingCart/migrations/0009_auto_20201018_1354.py new file mode 100644 index 0000000..0e60faf --- /dev/null +++ b/EDMS/shoppingCart/migrations/0009_auto_20201018_1354.py @@ -0,0 +1,23 @@ +# Generated by Django 3.1.2 on 2020-10-18 13:54 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0008_auto_20201018_1342'), + ] + + operations = [ + migrations.RemoveField( + model_name='order', + name='date_created', + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 13, 55, 33, 184566)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0010_auto_20201018_1401.py b/EDMS/shoppingCart/migrations/0010_auto_20201018_1401.py new file mode 100644 index 0000000..5d6f795 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0010_auto_20201018_1401.py @@ -0,0 +1,22 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0009_auto_20201018_1354'), + ] + + operations = [ + migrations.RemoveField( + model_name='order', + name='complete', + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateField(), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0011_order_complete.py b/EDMS/shoppingCart/migrations/0011_order_complete.py new file mode 100644 index 0000000..c67ab7f --- /dev/null +++ b/EDMS/shoppingCart/migrations/0011_order_complete.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0010_auto_20201018_1401'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='complete', + field=models.BooleanField(default=False), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0012_auto_20201018_1430.py b/EDMS/shoppingCart/migrations/0012_auto_20201018_1430.py new file mode 100644 index 0000000..ae676dd --- /dev/null +++ b/EDMS/shoppingCart/migrations/0012_auto_20201018_1430.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:30 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0011_order_complete'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(verbose_name=datetime.date(2020, 10, 25)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0013_auto_20201018_1439.py b/EDMS/shoppingCart/migrations/0013_auto_20201018_1439.py new file mode 100644 index 0000000..e712115 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0013_auto_20201018_1439.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:39 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0012_auto_20201018_1430'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(null=True, verbose_name=datetime.date(2020, 10, 25)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0014_auto_20201018_1443.py b/EDMS/shoppingCart/migrations/0014_auto_20201018_1443.py new file mode 100644 index 0000000..f4aaeb4 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0014_auto_20201018_1443.py @@ -0,0 +1,21 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:43 + +import datetime +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0013_auto_20201018_1439'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name=datetime.date(2020, 10, 25)), + preserve_default=False, + ), + ] diff --git a/EDMS/shoppingCart/migrations/0015_auto_20201018_1448.py b/EDMS/shoppingCart/migrations/0015_auto_20201018_1448.py new file mode 100644 index 0000000..78ebe02 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0015_auto_20201018_1448.py @@ -0,0 +1,27 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:48 + +import datetime +from django.db import migrations, models +import django.utils.timezone +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0014_auto_20201018_1443'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='date_created', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name=datetime.datetime(2020, 10, 18, 14, 47, 51, 354484, tzinfo=utc)), + preserve_default=False, + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(verbose_name=datetime.datetime(2020, 10, 25, 14, 47, 51, 354511, tzinfo=utc)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0016_auto_20201018_1456.py b/EDMS/shoppingCart/migrations/0016_auto_20201018_1456.py new file mode 100644 index 0000000..04fe58a --- /dev/null +++ b/EDMS/shoppingCart/migrations/0016_auto_20201018_1456.py @@ -0,0 +1,27 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:56 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0015_auto_20201018_1448'), + ] + + operations = [ + migrations.RemoveField( + model_name='orderitem', + name='order', + ), + migrations.RemoveField( + model_name='orderitem', + name='product', + ), + migrations.DeleteModel( + name='Order', + ), + migrations.DeleteModel( + name='OrderItem', + ), + ] diff --git a/EDMS/shoppingCart/migrations/0017_order_orderitem.py b/EDMS/shoppingCart/migrations/0017_order_orderitem.py new file mode 100644 index 0000000..66c1195 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0017_order_orderitem.py @@ -0,0 +1,38 @@ +# Generated by Django 3.1.2 on 2020-10-18 14:57 + +import datetime +from django.db import migrations, models +import django.db.models.deletion +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0016_auto_20201018_1456'), + ] + + operations = [ + migrations.CreateModel( + name='Order', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date_created', models.DateTimeField(verbose_name=datetime.datetime(2020, 10, 18, 14, 57, 32, 274339, tzinfo=utc))), + ('expiry_date', models.DateTimeField(verbose_name=datetime.datetime(2020, 10, 25, 14, 57, 32, 274372, tzinfo=utc))), + ('expired', models.BooleanField(default=False)), + ('complete', models.BooleanField(default=False)), + ('customer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shoppingCart.customer')), + ], + ), + migrations.CreateModel( + name='OrderItem', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('quantity', models.IntegerField(blank=True, default=0, null=True)), + ('date_created', models.DateTimeField(auto_now_add=True)), + ('expired', models.BooleanField(default=False)), + ('order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shoppingCart.order')), + ('product', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shoppingCart.product')), + ], + ), + ] diff --git a/EDMS/shoppingCart/migrations/0018_auto_20201018_1522.py b/EDMS/shoppingCart/migrations/0018_auto_20201018_1522.py new file mode 100644 index 0000000..67f9b83 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0018_auto_20201018_1522.py @@ -0,0 +1,24 @@ +# Generated by Django 3.1.2 on 2020-10-18 15:22 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0017_order_orderitem'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='date_created', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 15, 22, 1, 700384)), + ), + migrations.AlterField( + model_name='order', + name='expiry_date', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 15, 24, 1, 700420)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0019_auto_20201018_1759.py b/EDMS/shoppingCart/migrations/0019_auto_20201018_1759.py new file mode 100644 index 0000000..95192db --- /dev/null +++ b/EDMS/shoppingCart/migrations/0019_auto_20201018_1759.py @@ -0,0 +1,31 @@ +# Generated by Django 3.1.2 on 2020-10-18 17:59 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0018_auto_20201018_1522'), + ] + + operations = [ + migrations.RemoveField( + model_name='order', + name='expiry_date', + ), + migrations.RemoveField( + model_name='orderitem', + name='date_created', + ), + migrations.RemoveField( + model_name='orderitem', + name='expired', + ), + migrations.AlterField( + model_name='order', + name='date_created', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 17, 59, 41, 21325)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0020_auto_20201018_2051.py b/EDMS/shoppingCart/migrations/0020_auto_20201018_2051.py new file mode 100644 index 0000000..87043e8 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0020_auto_20201018_2051.py @@ -0,0 +1,20 @@ +# Generated by Django 3.1.2 on 2020-10-18 20:51 + +import datetime +from django.db import migrations, models +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0019_auto_20201018_1759'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='date_created', + field=models.DateTimeField(default=datetime.datetime(2020, 10, 18, 20, 51, 23, 928323, tzinfo=utc)), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0021_auto_20201018_2056.py b/EDMS/shoppingCart/migrations/0021_auto_20201018_2056.py new file mode 100644 index 0000000..84dc0f8 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0021_auto_20201018_2056.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1.2 on 2020-10-18 20:56 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0020_auto_20201018_2051'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='date_created', + field=models.DateTimeField(default=django.utils.timezone.now), + ), + ] diff --git a/EDMS/shoppingCart/migrations/0022_auto_20201020_1443.py b/EDMS/shoppingCart/migrations/0022_auto_20201020_1443.py new file mode 100644 index 0000000..c34ce65 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0022_auto_20201020_1443.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.2 on 2020-10-20 14:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0021_auto_20201018_2056'), + ] + + operations = [ + migrations.RenameField( + model_name='order', + old_name='complete', + new_name='isDay', + ), + ] diff --git a/EDMS/shoppingCart/migrations/0023_merge_20201021_1457.py b/EDMS/shoppingCart/migrations/0023_merge_20201021_1457.py new file mode 100644 index 0000000..86bb2a8 --- /dev/null +++ b/EDMS/shoppingCart/migrations/0023_merge_20201021_1457.py @@ -0,0 +1,14 @@ +# Generated by Django 3.1.2 on 2020-10-21 14:57 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0022_auto_20201020_1443'), + ('shoppingCart', '0018_auto_20201020_1430'), + ] + + operations = [ + ] diff --git a/EDMS/shoppingCart/migrations/0024_auto_20201021_1501.py b/EDMS/shoppingCart/migrations/0024_auto_20201021_1501.py new file mode 100644 index 0000000..fc595fe --- /dev/null +++ b/EDMS/shoppingCart/migrations/0024_auto_20201021_1501.py @@ -0,0 +1,48 @@ +# Generated by Django 3.1.2 on 2020-10-21 15:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shoppingCart', '0023_merge_20201021_1457'), + ] + + operations = [ + migrations.AlterField( + model_name='delivery', + name='timeslot1', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot2', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot3', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot4', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot5', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot6', + field=models.CharField(default='Available', max_length=15, null=True), + ), + migrations.AlterField( + model_name='delivery', + name='timeslot7', + field=models.CharField(default='Available', max_length=15, null=True), + ), + ] diff --git a/EDMS/shoppingCart/models.py b/EDMS/shoppingCart/models.py index fef0ad0..2d2b98d 100644 --- a/EDMS/shoppingCart/models.py +++ b/EDMS/shoppingCart/models.py @@ -1,8 +1,15 @@ from django.db import models from django.contrib.auth.models import User +from datetime import datetime, timedelta +from django.utils import timezone + + # Create your models here. +class Test(models.Model): + name = models.CharField(max_length=4) + class Customer(models.Model): user = models.OneToOneField(User, on_delete =models.CASCADE, null=True, blank=True) name = models.CharField(max_length=200, null=True) @@ -21,8 +28,10 @@ class Product(models.Model): class Order(models.Model): customer = models.ForeignKey(Customer, on_delete = models.SET_NULL, blank=True, null=True) - complete = models.BooleanField(default=False, null=True, blank=True) - + date_created = models.DateTimeField(default = timezone.now) + expired = models.BooleanField(default=False) + isDay = models.BooleanField(default=False) + def __str__ (self): return str(self.id) @@ -30,6 +39,10 @@ class OrderItem(models.Model): product = models.ForeignKey(Product, on_delete=models.SET_NULL, blank=True, null=True) order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True) quantity = models.IntegerField(default=0, null=True, blank=True) + + def __str__(self): + return self.product.name + class DisabledID(models.Model): ID_Dis = models.CharField(max_length=200, null=True) @@ -37,13 +50,13 @@ class DisabledID(models.Model): return str(self.ID_Dis) class delivery(models.Model): - timeslot1 = models.CharField(max_length=200, null=True) - timeslot2 = models.CharField(max_length=200, null=True) - timeslot3 = models.CharField(max_length=200, null=True) - timeslot4 = models.CharField(max_length=200, null=True) - timeslot5 = models.CharField(max_length=200, null=True) - timeslot6 = models.CharField(max_length=200, null=True) - timeslot7 = models.CharField(max_length=200, null=True) + timeslot1 = models.CharField(max_length=15, null=True, default='Available') + timeslot2 = models.CharField(max_length=15, null=True, default='Available') + timeslot3 = models.CharField(max_length=15, null=True, default='Available') + timeslot4 = models.CharField(max_length=15, null=True, default='Available') + timeslot5 = models.CharField(max_length=15, null=True, default='Available') + timeslot6 = models.CharField(max_length=15, null=True, default='Available') + timeslot7 = models.CharField(max_length=15, null=True, default='Available') def __str__ (self): return str(self.id) diff --git a/EDMS/shoppingCart/templates/shoppingCart/main.html b/EDMS/shoppingCart/templates/shoppingCart/main.html index 73db15a..450dcde 100755 --- a/EDMS/shoppingCart/templates/shoppingCart/main.html +++ b/EDMS/shoppingCart/templates/shoppingCart/main.html @@ -1,24 +1,30 @@ -{%include 'shoppingCart/nav.html' %} -{%load static%} +{%include 'shoppingCart/nav.html' %} {%load static%} - -
-
-
-
-
-
- Baskets -
-
-
- Today's Basket -
    + +
    +
    +
    +
    +
    +
    + Baskets +
    +
    +
    + Today's Basket +
    @@ -47,7 +53,7 @@
    {{item.name}}
    -
    {% endfor%} @@ -66,10 +72,6 @@ - - - - diff --git a/EDMS/shoppingCart/urls.py b/EDMS/shoppingCart/urls.py index 87ba098..d9636ed 100644 --- a/EDMS/shoppingCart/urls.py +++ b/EDMS/shoppingCart/urls.py @@ -8,3 +8,4 @@ urlpatterns = [ path('delivery/', views.deliveries) ] + diff --git a/EDMS/shoppingCart/views.py b/EDMS/shoppingCart/views.py index 472db8d..0d3e28c 100644 --- a/EDMS/shoppingCart/views.py +++ b/EDMS/shoppingCart/views.py @@ -1,35 +1,92 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.views import View from .models import * # Create your views here. -from django.http.response import JsonResponse +from django.http.response import JsonResponse, HttpResponse import json from .forms import * from django.contrib import messages +import pytz # main page def main(request): + customer = Customer.objects.get(id=1) - order, created = Order.objects.get_or_create(customer=customer, complete= False) - customerOrderItem = order.orderitem_set.all() - products = Product.objects.all() + products = Product.objects.all() + + orderDay, created = Order.objects.get_or_create(customer=customer, isDay= True) + orderWeek, created = Order.objects.get_or_create(customer=customer, isDay= False) + + customerOrderItemDay = orderDay.orderitem_set.all() + customerOrderItemWeek = orderWeek.orderitem_set.all() + + #start time for order expiry + utc = pytz.UTC + print('Day order date_Created :' + str(orderDay.date_created)) + print('Week order date_Created :' + str(orderWeek.date_created)) + + day_expiry_time = timedelta(minutes=2) + print('Day expiry time' + str(day_expiry_time)) + + week_expiry_time = timedelta(minutes=6) + print('Week expiry time' + str(week_expiry_time)) + + day_expiry_date = orderDay.date_created + day_expiry_time + print('Day expiry_date:' + str(day_expiry_date)) + + week_expiry_date = orderWeek.date_created + week_expiry_time + print('Week expiry_date:' + str(week_expiry_date)) + + date_now = utc.localize(datetime.now()) + print('day now' + str(date_now)) + - context = {'customer':customer, 'order':order, 'customerOrderItem':customerOrderItem, 'products':products,} + #check if day expiry date is reached + if date_now >= day_expiry_date: + print('inside expiry loop') + orderDay.expired= True + orderDay.save() + + #check if week expiry date is reached + if date_now >= week_expiry_date: + orderWeek.expired= True + orderWeek.save() + + + #check if day order is expired + if orderDay.expired == True: + orderDay.delete() + return redirect('/') + for item in customerOrderItem: + item.delete() + Order.objects.create(customer=customer, isDay= True) + + #check if order is expired + if orderWeek.expired == True: + orderWeek.delete() + return redirect('/') + for item in customerOrderItem: + item.delete() + Order.objects.create(customer=customer, isDay= False) + + context = {'customer':customer, 'orderDay':orderDay, 'customerOrderItemDay':customerOrderItemDay, 'orderWeek':orderWeek, 'customerOrderItemWeek':customerOrderItemWeek ,'products':products} return render(request,'shoppingCart/main.html', context) #Delivery Page def deliveries(request): - timeslots = delivery.objects.all() + timeslots= delivery.objects.all() delivery1=timeslots[0] delivery2=timeslots[1] delivery3=timeslots[2] delivery4=timeslots[3] delivery5=timeslots[4] delivery6=timeslots[5] + delivery7=timeslots[6] - id_des = DisabledID.objects.get(id=5) + id_des = DisabledID.objects.get(id=1) form = idform @@ -54,27 +111,40 @@ def updateItem(request): customer = request.user.customer product = Product.objects.get(id=productId) - order, created = Order.objects.get_or_create(customer=customer,complete=False) - orderItem, created = OrderItem.objects.get_or_create(order=order, product=product) - - if orderItem.quantity >= 9 : - messages.error(request, 'You bought 9 ' + str(orderItem.product) +"'s this week already") + orderDay, created = Order.objects.get_or_create(customer=customer, isDay= True) + orderWeek, created = Order.objects.get_or_create(customer=customer, isDay= False) + orderItemDay, created = OrderItem.objects.get_or_create(order=orderDay, product=product) + orderItemWeek, created = OrderItem.objects.get_or_create(order=orderWeek, product=product) + + #make sure the quantity does not exceed 9 + + if action =='remove': + orderItemDay.quantity = (orderItemDay.quantity - 1) + orderItemWeek.quantity = (orderItemWeek.quantity - 1) + elif orderItemWeek.quantity >= 9 : + messages.error(request, 'You bought 9 ' + str(orderItemWeek.product) +"'s this week already") + exit + elif orderItemDay.quantity >= 4 : + messages.error(request, 'You bought 4 ' + str(orderItemDay.product) +"'s today already") exit elif action == 'add': - orderItem.quantity = (orderItem.quantity + 1) - elif action =='remove': - orderItem.quantity = (orderItem.quantity -1) + orderItemDay.quantity = (orderItemDay.quantity + 1) + orderItemWeek.quantity = (orderItemWeek.quantity + 1) + + orderItemDay.save() + orderItemWeek.save() - orderItem.save() - - if orderItem.quantity <= 0: - orderItem.delete() + if orderItemDay.quantity <= 0: + orderItemDay.delete() + if orderItemWeek.quantity <= 0: + orderItemWeek.delete() + print('ProductID__: ', productId, 'Action:',action) + return JsonResponse('item added', safe=False) - print('ProductID: ', productId, 'Action:',action) - return JsonResponse('item added', safe=False) + diff --git a/EDMS/static/js/cart.js b/EDMS/static/js/cart.js index ffdfa10..86dcaf3 100644 --- a/EDMS/static/js/cart.js +++ b/EDMS/static/js/cart.js @@ -1,4 +1,5 @@ -var updateButton = document.getElementsByClassName('add-btn') +var updateButton = document.getElementsByClassName('update-btn') + for (i = 0; i < updateButton.length; i++) { diff --git a/Pipfile b/Pipfile index 66f5798..e3bc28f 100644 --- a/Pipfile +++ b/Pipfile @@ -8,6 +8,8 @@ verify_ssl = true [packages] django = "*" pillow = "*" +django-crontab = "*" +celery = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 33c79b7..a146a7d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "27d0ce8ecd9e1d08f1468feb6747fd86011dc9b6f199b0b9d97c65a0779d174e" + "sha256": "d9d9a412445aee8a1e4ebb76250dda9d583b4ccd098608581d3a31152a3dfc3c" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,14 @@ ] }, "default": { + "amqp": { + "hashes": [ + "sha256:9881f8e6fe23e3db9faa6cfd8c05390213e1d1b95c0162bc50552cad75bffa5f", + "sha256:a8fb8151eb9d12204c9f1784c0da920476077609fa0a70f2468001e3a4258484" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.1" + }, "asgiref": { "hashes": [ "sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a", @@ -24,6 +32,42 @@ "markers": "python_version >= '3.5'", "version": "==3.2.10" }, + "billiard": { + "hashes": [ + "sha256:bff575450859a6e0fbc2f9877d9b715b0bbc07c3565bb7ed2280526a0cdf5ede", + "sha256:d91725ce6425f33a97dfa72fb6bfef0e47d4652acd98a032bd1a7fbf06d5fa6a" + ], + "version": "==3.6.3.0" + }, + "celery": { + "hashes": [ + "sha256:313930fddde703d8e37029a304bf91429cd11aeef63c57de6daca9d958e1f255", + "sha256:72138dc3887f68dc58e1a2397e477256f80f1894c69fa4337f8ed70be460375b" + ], + "index": "pypi", + "version": "==5.0.0" + }, + "click": { + "hashes": [ + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==7.1.2" + }, + "click-didyoumean": { + "hashes": [ + "sha256:112229485c9704ff51362fe34b2d4f0b12fc71cc20f6d2b3afabed4b8bfa6aeb" + ], + "version": "==0.0.3" + }, + "click-repl": { + "hashes": [ + "sha256:9c4c3d022789cae912aad8a3f5e1d7c2cdd016ee1225b5212ad3e8691563cda5", + "sha256:b9f29d52abc4d6059f8e276132a111ab8d94980afe6a5432b9d996544afa95d5" + ], + "version": "==0.1.6" + }, "django": { "hashes": [ "sha256:a2127ad0150ec6966655bedf15dbbff9697cc86d61653db2da1afa506c0b04cc", @@ -32,39 +76,63 @@ "index": "pypi", "version": "==3.1.2" }, + "django-crontab": { + "hashes": [ + "sha256:1201810a212460aaaa48eb6a766738740daf42c1a4f6aafecfb1525036929236" + ], + "index": "pypi", + "version": "==0.7.1" + }, + "kombu": { + "hashes": [ + "sha256:6dc509178ac4269b0e66ab4881f70a2035c33d3a622e20585f965986a5182006", + "sha256:f4965fba0a4718d47d470beeb5d6446e3357a62402b16c510b6a2f251e05ac3c" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.2" + }, "pillow": { "hashes": [ - "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f", - "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8", - "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad", - "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f", - "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae", - "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d", - "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5", - "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b", - "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8", - "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233", - "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6", - "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727", - "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f", - "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38", - "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4", - "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626", - "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d", - "sha256:9c87ef410a58dd54b92424ffd7e28fd2ec65d2f7fc02b76f5e9b2067e355ebf6", - "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6", - "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63", - "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f", - "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41", - "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1", - "sha256:e901964262a56d9ea3c2693df68bc9860b8bdda2b04768821e4c44ae797de117", - "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d", - "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9", - "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a", - "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce" + "sha256:04d984e45a0b9815f4b407e8aadb50f25fbb82a605d89db927376e94c3adf371", + "sha256:06e730451b70471c08b8a0ee7f18e7e1df310dba9c780bbfb730a13102b143db", + "sha256:1f59596af2b3d64a9e43f9d6509b7a51db744d0eecc23297617c604e6823c6ae", + "sha256:233513465a2f25fce537b965621866da3d1f02e15708f371dd4e19f0fb7b7711", + "sha256:2696f1a6402c1a42ed12c5cd8adfb4b381c32d41e35a34b8ee544309ef854172", + "sha256:2ca55a4443b463eec90528ac27be14d226b1c2b972178bc7d4d282ce89e47b6a", + "sha256:30615e9115f976e00a938a28c7152562e8cf8e221ddacf4446dd8b20c0d97333", + "sha256:3a77e7b9f8991b81d7be8e0b2deab05013cf3ebb24ac2b863d2979acb68c73dd", + "sha256:54667c8ab16658cc0b7d824d8706b440d4db8382a3561042758bdfd48ca99298", + "sha256:59304c67d12394815331eda95ec892bf54ad95e0aa7bc1ccd8e0a4a5a25d4bf3", + "sha256:594f2f25b7bcfd9542c41b9df156fb5104f19f5fcefa51b1447f1d9f64c9cc14", + "sha256:5b5dde5dcedc4e6f5a71d7654a3c6e189ced82e97d7896b1ca5a5c5e4e0e916f", + "sha256:6bcea85f93fb2c94a1bcd35704c348a929a7fb24a0ec0cc2b9fcbb0046b87176", + "sha256:718d7f0eb3351052023b33fe0f83fc9e3beeb7cbacbd0ff2b52524e2153e4598", + "sha256:7c4a7ee37027ca716f42726b6f9fc491c13c843c7af559e0767dfab1ae9682d4", + "sha256:87a855b64a9b692604f6339baa4f9913d06838df1b4ccf0cb899dd18f56ec03c", + "sha256:8c006d52365c0a6bb41a07f9c8f9f458ae8170e0af3b8c49bf7089347066b97b", + "sha256:8e29701229705615d3dcfc439c7c46f40f913e57c7fe322b1efc30d3f37d1287", + "sha256:9b5b41737853bc49943864d5980dfb401a09e78ddb471e71291810ccdeadd712", + "sha256:b04569ff215b85ce3e2954979d2d5e0bf84007e43ddcf84b632fc6bc18e07909", + "sha256:b731d45764349313bd956c07bdc1d43803bb0ad2b11354328a074e416c7d84bc", + "sha256:c12e33cb17e2e12049a49b77696ee479791a4e44e541fdc393ae043e1246389f", + "sha256:c41442c3814afeba1f6f16fd70cdf312a2c73c6dee8dc3ac8926bb115713ad1d", + "sha256:c4d743c5c91424965707c9c8edc58b7cb43c127dcaf191fbcd304e2082eef56a", + "sha256:d6766fd28f4f47cf93280a57e3dc6a9d11bdada1a6e9f019b8c62b12bbc86f6a", + "sha256:d904570afcdbec40eb6bdbe24cba8d95c0215a2c0cbbc9c16301045bc8504c1f", + "sha256:e674be2f349ea810e221b0113bd4491f53584ac848d5bcc3b62443cfa11d9c40", + "sha256:e6ac40f1a62a227eb00226eb64c9c82bc878a3ed700b5414d34c9be57be87e87", + "sha256:f5270369c799b4405ed47d45c88c09fbd7942fc9fb9891c0dabf0b8c751b625d" ], "index": "pypi", - "version": "==7.2.0" + "version": "==8.0.0" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:25c95d2ac813909f813c93fde734b6e44406d1477a9faef7c915ff37d39c0a8c", + "sha256:7debb9a521e0b1ee7d2fe96ee4bd60ef03c6492784de0547337ca4433e46aa63" + ], + "markers": "python_full_version >= '3.6.1'", + "version": "==3.0.8" }, "pytz": { "hashes": [ @@ -73,6 +141,14 @@ ], "version": "==2020.1" }, + "six": { + "hashes": [ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.15.0" + }, "sqlparse": { "hashes": [ "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0", @@ -80,6 +156,21 @@ ], "markers": "python_version >= '3.5'", "version": "==0.4.1" + }, + "vine": { + "hashes": [ + "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30", + "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.0" + }, + "wcwidth": { + "hashes": [ + "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", + "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + ], + "version": "==0.2.5" } }, "develop": {} diff --git a/README.md b/README.md index dc68c92..40f124c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # Equal-Distribution-maintenance-system Testing pipline CI Testing pipline CD +Testing merging