diff --git a/shop/admin.py b/shop/admin.py index 431b24c9..583dc0ea 100644 --- a/shop/admin.py +++ b/shop/admin.py @@ -45,6 +45,7 @@ class OrderAdmin(admin.ModelAdmin): 'camp', 'payment_method', 'paid', + 'cancelled', ] list_filter = [ diff --git a/shop/managers.py b/shop/managers.py index cd4f9a32..349cfe16 100644 --- a/shop/managers.py +++ b/shop/managers.py @@ -11,3 +11,21 @@ class ProductQuerySet(QuerySet): return self.filter( available_in__contains=DateTimeTZRange(now, None) ) + + +class OrderQuerySet(QuerySet): + + def not_cancelled(self): + return self.filter(cancelled=False) + + def open(self): + return self.filter(open__isnull=True) + + def paid(self): + return self.filter(paid=True) + + def unpaid(self): + return self.filter(paid=False) + + def cancelled(self): + return self.filter(cancelled=True) diff --git a/shop/migrations/0023_order_cancelled.py b/shop/migrations/0023_order_cancelled.py new file mode 100644 index 00000000..c858e833 --- /dev/null +++ b/shop/migrations/0023_order_cancelled.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.6 on 2016-06-01 08:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('shop', '0022_auto_20160530_2301'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='cancelled', + field=models.BooleanField(default=False), + ), + ] diff --git a/shop/models.py b/shop/models.py index ede52c19..4c942691 100644 --- a/shop/models.py +++ b/shop/models.py @@ -8,7 +8,7 @@ from django.utils.translation import ugettext_lazy as _ from django.utils import timezone from django.core.urlresolvers import reverse_lazy from utils.models import UUIDModel, CreatedUpdatedModel -from .managers import ProductQuerySet +from .managers import ProductQuerySet, OrderQuerySet import hashlib, io, base64, qrcode from decimal import Decimal from datetime import timedelta @@ -72,6 +72,10 @@ class Order(CreatedUpdatedModel): default=BLOCKCHAIN ) + cancelled = models.BooleanField(default=False) + + objects = OrderQuerySet.as_manager() + def __str__(self): return 'order id #%s' % self.pk @@ -160,6 +164,11 @@ class Order(CreatedUpdatedModel): else: return False + def mark_as_cancelled(self): + self.cancelled = True + self.open = None + self.save() + class ProductCategory(CreatedUpdatedModel, UUIDModel): class Meta: diff --git a/shop/templates/order_detail.html b/shop/templates/order_detail.html index 77a524bf..7adc87c2 100644 --- a/shop/templates/order_detail.html +++ b/shop/templates/order_detail.html @@ -6,7 +6,7 @@