Skip to content
Permalink
Browse files
Adding refresh basket functionality
  • Loading branch information
Nour Elgeziry authored and Nour Elgeziry committed Oct 16, 2020
1 parent 7cfe6d5 commit 1577a6fca69226fd594edbae75cecbe682bc7746
Show file tree
Hide file tree
Showing 10 changed files with 106 additions and 33 deletions.
@@ -38,6 +38,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'shoppingCart',
'django_crontab',

]

@@ -82,6 +83,10 @@ DATABASES = {
}
}

#cron job
CRONJOBS = [
('*/1 * * * *', 'shoppingCart.cron.expired_order_items')
]

# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
BIN +0 Bytes (100%) EDMS/db.sqlite3
Binary file not shown.
@@ -5,4 +5,4 @@ from .models import *
admin.site.register(Customer)
admin.site.register(Product)
admin.site.register(Order)
admin.site.register(OrderItem)
admin.site.register(OrderItem)
@@ -0,0 +1,19 @@
from .models import OrderItem
from datetime import timedelta,datetime

def expired_order_items():
#get time now
time_now = datetime.now()
#querry order items with expired set to false
qs = OrderItem.objects.filter(expired=False)

#for items in qs:
for item in qs:
#set expiry date = orderitem .date created + timedelta(minutes=2)
expiry_date = item.date_created + timedelta(minutes=2)
#check if time now < expiry date:
if time_now >= expiry_date:
#set expired field to true
item.expired = True
# delete order item
item.delete()
@@ -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),
),
]
@@ -1,6 +1,7 @@
from django.db import models
from django.contrib.auth.models import User


# Create your models here.

class Customer(models.Model):
@@ -22,6 +23,7 @@ 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)


def __str__ (self):
return str(self.id)
@@ -30,7 +32,13 @@ 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)
date_created = models.DateTimeField(auto_now_add=True)
expired = models.BooleanField(default=False)

def __str__(self):
return self.product.name





@@ -7,3 +7,4 @@ urlpatterns = [
path('updateItem/', views.updateItem, name="updateItem"),
]


@@ -29,18 +29,24 @@ def updateItem(request):
order, created = Order.objects.get_or_create(customer=customer,complete=False)
orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)

#query order that did not expire
#querry orderitems in the order
#make sure the quantity does not exceed 9

if orderItem.quantity >= 9 :
messages.error(request, 'You bought 9 ' + str(orderItem.product) +"'s this week already")
exit
elif action == 'add':
orderItem.quantity = (orderItem.quantity + 1)
elif action =='remove':
orderItem.quantity = (orderItem.quantity -1)
orderItem.quantity = (orderItem.quantity - 1)

orderItem.save()

if orderItem.quantity <= 0:
orderItem.delete()

print('ProductID: ', productId, 'Action:',action)
return JsonResponse('item added', safe=False)
return JsonResponse('item added', safe=False)


@@ -8,6 +8,7 @@ verify_ssl = true
[packages]
django = "*"
pillow = "*"
django-crontab = "*"

[requires]
python_version = "3.8"

Some generated files are not rendered by default. Learn more.

0 comments on commit 1577a6f

Please sign in to comment.