예제 #1
0
class ModelTestCase(TestCase):
    def setUp(self):
        self.customer_name = 'Test Name'
        self.customer_address = 'Test Address'
        self.customer = Customer(customer_name=self.customer_name,
                                 customer_address=self.customer_address)

        self.pizza_size = True
        self.pizza_flavor = 'Surprise'
        self.pizza = Pizza(pizza_size=self.pizza_size,
                           pizza_flavor=self.pizza_flavor)

        self.order = Order(customer=self.customer, pizza=self.pizza)

    def test_model_create_order(self):
        old_count = Customer.objects.count()
        self.customer.save()
        new_count = Customer.objects.count()
        self.assertNotEqual(old_count, new_count)

        old_count = Pizza.objects.count()
        self.pizza.save()
        new_count = Pizza.objects.count()
        self.assertNotEqual(old_count, new_count)

        old_count = Order.objects.count()
        self.order = Order(customer=Customer.objects.latest('customer_id'),
                           pizza=Pizza.objects.latest('pizza_id'))
        self.order.save()
        new_count = Order.objects.count()
        self.assertNotEqual(old_count, new_count)
예제 #2
0
def orderSicilian_view(request):
    size = request.POST["size"]
    topping1 = request.POST["topping1"]
    topping2 = request.POST["topping2"]
    topping3 = request.POST["topping3"]
    topping4 = request.POST["topping4"]
    topping5 = request.POST["topping5"]
    pizza = Pizza(type="Sicilian", topping1=topping1, topping2=topping2, topping3=topping3, topping4=topping4, topping5=topping5, size=size)
    pizza.save()
    return render(request, "orders/pizza.html")
예제 #3
0
    def setUp(self):
        self.customer_name = 'Test Name'
        self.customer_address = 'Test Address'
        self.customer = Customer(customer_name=self.customer_name,
                                 customer_address=self.customer_address)

        self.pizza_size = True
        self.pizza_flavor = 'Surprise'
        self.pizza = Pizza(pizza_size=self.pizza_size,
                           pizza_flavor=self.pizza_flavor)

        self.order = Order(customer=self.customer, pizza=self.pizza)
예제 #4
0
def add_order(request):
    if request.POST.get('name') and request.POST.get('address') and request.POST.get('size')\
            and request.POST.get('flavor'):
        #   create customer
        customer_name = request.POST.get('name')
        customer_address = request.POST.get('address')
        customer = Customer(customer_name=customer_name,
                            customer_address=customer_address)
        customer.save()
        #   create pizza
        pizza_size = request.POST.get('size')
        pizza_flavor = request.POST.get('flavor')
        pizza = Pizza(pizza_size=pizza_size, pizza_flavor=pizza_flavor)
        pizza.save()
        #   create order
        c = Customer.objects.latest('customer_id')
        p = Pizza.objects.latest('pizza_id')
        order = Order(pizza=p, customer=c)
        order.save()
        return render(request, 'orders/order_completed.html')
    return render(request, 'orders/place_order.html')
예제 #5
0
 def setUp(self):
     # create pizzas
     self.pizza_regular = Pizza(name='Margherita')
     self.pizza_regular.save()
     self.pizza_medium = Pizza(name='Cheese & Corn',
                               size='medium',
                               type='veg')
     self.pizza_medium.save()
     self.pizza_large = Pizza(name='Chicken delight',
                              size='medium',
                              type='non-veg')
     self.pizza_large.save()
     self.customer = Customer(customer_name='Madhuri',
                              customer_address='Ecity Bangalore',
                              customer_phone='9483917071')
     self.customer.save()
     self.delivered_order = Order.objects.create(ordered_by=self.customer,
                                                 status='delivered')
     self.delivered_order.pizza_list.add(self.pizza_medium)
     self.delivered_order.save()
import os
import csv

from orders.models import Pizza

f = open("../csv2/pizza.csv")
reader = csv.reader(f)

for st, top, si, pr in reader:
    t = Pizza(style=st, size=si, topping=top, price=pr)
    t.save()
예제 #7
0
class TestApi(APITestCase):
    def setUp(self):
        # create pizzas
        self.pizza_regular = Pizza(name='Margherita')
        self.pizza_regular.save()
        self.pizza_medium = Pizza(name='Cheese & Corn',
                                  size='medium',
                                  type='veg')
        self.pizza_medium.save()
        self.pizza_large = Pizza(name='Chicken delight',
                                 size='medium',
                                 type='non-veg')
        self.pizza_large.save()
        self.customer = Customer(customer_name='Madhuri',
                                 customer_address='Ecity Bangalore',
                                 customer_phone='9483917071')
        self.customer.save()
        self.delivered_order = Order.objects.create(ordered_by=self.customer,
                                                    status='delivered')
        self.delivered_order.pizza_list.add(self.pizza_medium)
        self.delivered_order.save()

    def test_order_creation(self):
        response = self.client.post(reverse('orders-list'), {
            'ordered_by': {
                'customer_name': "Shashank",
                "customer_address": "HSR Layout Bangalore",
                "customer_phone": "9535441964"
            },
            "pizza_list": [{
                "id": self.pizza_regular.id
            }, {
                "id": self.pizza_medium.id
            }],
        },
                                    format='json')

        # assert a created status code was returned
        self.assertEqual(201, response.status_code)

    def test_retrieve_order(self):
        response = self.client.post(reverse('orders-list'), {
            'ordered_by': {
                'customer_name': "Shashank",
                "customer_address": "HSR Layout Bangalore",
                "customer_phone": "9535441964"
            },
            "pizza_list": [{
                "id": self.pizza_medium.id
            }],
        },
                                    format='json')

        response = self.client.get(reverse('orders-list'), format='json')
        self.assertEqual(len(response.data['results']),
                         Order.objects.all().count())

    def test_updating_order_from_customer_end(self):
        order = Order.objects.create(ordered_by=self.customer, )
        order.pizza_list.add(self.pizza_regular)
        order.save()
        response = self.client.put(reverse(
            'orders-detail', kwargs={'pk': order.id}), {
                'ordered_by': {
                    'id': self.customer.id
                },
                'status':
                "confirmed",
                "pizza_list": [{
                    "id": self.pizza_regular.id,
                    "action": "remove"
                }, {
                    "id": self.pizza_large.id,
                    "action": "add"
                }],
            },
                                   format="json")
        # check info returned has the update
        self.assertEqual(self.pizza_large.id,
                         response.data['pizza_list'][0]['id'])

    def test_updating_order_from_restuarant_end(self):
        order = Order.objects.create(ordered_by=self.customer, )
        order.pizza_list.add(self.pizza_regular, self.pizza_medium)
        order.save()
        url = reverse('orders-detail', kwargs={'pk': order.id})
        data = {
            "status": "out_for_delivery",
            "ordered_by": {
                'id': self.customer.id
            },
            "pizza_list": order.get_pizza_list_base_action()
        }
        response = self.client.put(url, data, format="json")
        order.refresh_from_db()
        self.assertEqual(response.data['status'], order.status)

    def test_status_change_when_order_out_for_delivery(self):
        '''
        Adding pizza when order is out for delivery
        :return:
        '''
        order = Order.objects.create(ordered_by=self.customer, )
        order.pizza_list.add(self.pizza_medium)
        order.status = 'out_for_delivery'
        order.save()
        response = self.client.put(reverse(
            'orders-detail', kwargs={'pk': order.id}), {
                "pizza_list": [{
                    "id": self.pizza_regular.id,
                    "action": "add"
                }, {
                    "id": self.pizza_large.id,
                    "action": "add"
                }],
                "status":
                'out_for_delivery',
                'ordered_by': {
                    'id': self.customer.id
                }
            },
                                   format="json")
        self.assertEqual(400, response.status_code)

    def test_change_order_status_when_delivered(self):
        response = self.client.put(
            reverse('orders-detail', kwargs={'pk': self.delivered_order.id}), {
                'status': 'confirmed',
                "ordered_by": {
                    'id': self.customer.id
                },
                "pizza_list":
                self.delivered_order.get_pizza_list_base_action()
            },
            format="json")
        self.assertEqual(400, response.status_code)

    def test_remove_order(self):
        order = Order.objects.all().last()
        self.client.delete(reverse('orders-detail',
                                   kwargs={'pk': self.delivered_order.id}),
                           format='json')
        # check status
        order.refresh_from_db()
        self.assertEqual('cancelled', order.status)
예제 #8
0
    # Sicilian Small (2,1)
    (2, 1, 0, Decimal("24.45")),
    (2, 1, 1, Decimal("26.45")),
    (2, 1, 2, Decimal("28.45")),
    (2, 1, 3, Decimal("29.45")),
    (2, 1, 5, Decimal("30.45")),
    # Sicilian Large (2,2)
    (2, 2, 0, Decimal("38.70")),
    (2, 2, 1, Decimal("40.70")),
    (2, 2, 2, Decimal("42.70")),
    (2, 2, 3, Decimal("44.70")),
    (2, 2, 5, Decimal("45.70")),
)
for item in PIZZAS:
    f = Pizza(name=PizzaName.objects.get(pk=item[0]),
              size=Size.objects.get(pk=item[1]),
              toppings_count=item[2],
              price=item[3])
    f.save()

# SubName
SUBNAMES = (
    ("Cheese",
     "Cupidatat consectetur an offendit ut admodum eram sed pariatur consectetur."
     ),
    ("Italian", "Quae ubi excepteur ne quem, et ne summis proident."),
    ("Ham + Cheese", "Amet aut occaecat ut sunt aut e fugiat excepteur."),
    ("Meatball", "Fore ut iudicem ubi aute, quamquam a tamen laboris."),
    ("Tuna", "Ea summis fabulas occaecat ad magna commodo praesentibus."),
    ("Turkey", "Quo iis exquisitaque, fore id fabulas ut quorum."),
    ("Chicken Parmigiana", "Commodo ne anim hic in fore nisi hic fabulas."),
    ("Eggplant Parmigiana",
예제 #9
0
THREE_TOPPINGS = []

for i, top1 in enumerate(Pizza.TOPPING_CODES):
     for j, top2 in enumerate(Pizza.TOPPING_CODES):
         if j >= i:
             for k, top3 in enumerate(Pizza.TOPPING_CODES):
                 if k >= j:
                     THREE_TOPPINGS.append(top1 + top2 + top3)

ALL_TOPS = [''] + Pizza.TOPPING_CODES + TWO_TOPPINGS + THREE_TOPPINGS

for top in ALL_TOPS:
     for size in ['S', 'L']:
         for p_type in ['R', 'Si']:
             f = Pizza(pizza_type=p_type,pizza_top=top)
             f.size = size
             f.save()

for size in ['S', 'L']:
      for p_type in ['R', 'Si']:
          f = Pizza(pizza_type=p_type,pizza_top='Spec')
          f.size = size
          f.save()

### Add everything to MenuItem

for class0 in [Salad, Pasta, DinnerPlatter, Sub1, Sub2, Pizza]:
    for item in class0.objects.all():
        f = MenuItem(name=item, price=item.price())
        f.save()
def add_default_pizza():
    ''' add default items in database '''
    pizza = Pizza(name="Cheese",
                  size=BaseItem.SMALL,
                  price=12.70,
                  crust=Pizza.REGULAR,
                  max_toppings=0)
    pizza.save()

    pizza = Pizza(name="Cheese",
                  size=BaseItem.LARGE,
                  price=17.95,
                  crust=Pizza.REGULAR,
                  max_toppings=0)
    pizza.save()

    pizza = Pizza(name="1 topping",
                  size=BaseItem.SMALL,
                  price=13.70,
                  crust=Pizza.REGULAR,
                  max_toppings=1)
    pizza.save()

    pizza = Pizza(name="1 topping",
                  size=BaseItem.LARGE,
                  price=19.95,
                  crust=Pizza.REGULAR,
                  max_toppings=1)
    pizza.save()

    pizza = Pizza(name="2 topping",
                  size=BaseItem.SMALL,
                  price=15.20,
                  crust=Pizza.REGULAR,
                  max_toppings=2)
    pizza.save()

    pizza = Pizza(name="2 topping",
                  size=BaseItem.LARGE,
                  price=21.95,
                  crust=Pizza.REGULAR,
                  max_toppings=2)
    pizza.save()

    pizza = Pizza(name="3 topping",
                  size=BaseItem.SMALL,
                  price=16.20,
                  crust=Pizza.REGULAR,
                  max_toppings=3)
    pizza.save()

    pizza = Pizza(name="3 topping",
                  size=BaseItem.LARGE,
                  price=23.95,
                  crust=Pizza.REGULAR,
                  max_toppings=3)
    pizza.save()

    pizza = Pizza(name="Special",
                  size=BaseItem.SMALL,
                  price=17.75,
                  crust=Pizza.REGULAR,
                  max_toppings=5)
    pizza.save()

    pizza = Pizza(name="Special",
                  size=BaseItem.LARGE,
                  price=25.95,
                  crust=Pizza.REGULAR,
                  max_toppings=5)
    pizza.save()

    pizza = Pizza(name="Cheese",
                  size=BaseItem.SMALL,
                  price=24.45,
                  crust=Pizza.SICILIAN,
                  max_toppings=0)
    pizza.save()

    pizza = Pizza(name="Cheese",
                  size=BaseItem.LARGE,
                  price=38.70,
                  crust=Pizza.SICILIAN,
                  max_toppings=0)
    pizza.save()

    pizza = Pizza(name="1 topping",
                  size=BaseItem.SMALL,
                  price=26.45,
                  crust=Pizza.SICILIAN,
                  max_toppings=1)
    pizza.save()

    pizza = Pizza(name="1 topping",
                  size=BaseItem.LARGE,
                  price=40.70,
                  crust=Pizza.SICILIAN,
                  max_toppings=1)
    pizza.save()

    pizza = Pizza(name="2 topping",
                  size=BaseItem.SMALL,
                  price=28.45,
                  crust=Pizza.SICILIAN,
                  max_toppings=2)
    pizza.save()

    pizza = Pizza(name="2 topping",
                  size=BaseItem.LARGE,
                  price=42.70,
                  crust=Pizza.SICILIAN,
                  max_toppings=2)
    pizza.save()

    pizza = Pizza(name="3 topping",
                  size=BaseItem.SMALL,
                  price=29.45,
                  crust=Pizza.SICILIAN,
                  max_toppings=3)
    pizza.save()

    pizza = Pizza(name="3 topping",
                  size=BaseItem.LARGE,
                  price=44.70,
                  crust=Pizza.SICILIAN,
                  max_toppings=3)
    pizza.save()

    pizza = Pizza(name="Special",
                  size=BaseItem.SMALL,
                  price=30.45,
                  crust=Pizza.SICILIAN,
                  max_toppings=5)
    pizza.save()

    pizza = Pizza(name="Special",
                  size=BaseItem.LARGE,
                  price=45.70,
                  crust=Pizza.SICILIAN,
                  max_toppings=5)
    pizza.save()
예제 #11
0
import csv
from orders.models import Pizza
from orders.models import Topping

f = open('data.txt', 'r')
for line in f:
    line = line.split(',')
    product = Pizza()
    product.product = line[0]
    product.tipe = line[1]
    product.size = line[2]
    product.price = float(line[3])  #data is missing from file
    product.save()

f.close()

f = open('data1.txt', 'r')
for line in f:
    line = line.split(',')
    print(line)
    product = Topping()
    product.product = line[0]
    product.tipo = line[1]
    product.save()

f.close()
 def test_string_representation(self):
     '''
     test pizza's string representation
     '''
     pizza = Pizza(name="Margherita")
     self.assertEqual(str("Margherita"), pizza.name)
예제 #13
0
def create_order(request):
    if not request.user.is_authenticated:

        return render(request, "login.html", {"message": None})
    else:
        order_pending = Order.objects.filter(user=request.user).filter(
            status=ACTIVE).exists()
        context = {
            "user":
            request.user,
            "address":
            request.user.customer.address,
            "city":
            request.user.customer.city,
            "state":
            request.user.customer.state,
            "zip_code":
            request.user.customer.zip_code,
            "first":
            request.user.first_name,
            "last":
            request.user.last_name,
            "sizes":
            Pizza_Size.objects.all(),
            "toppings":
            Topping.objects.all(),
            "styles":
            Pizza_Style.objects.all(),
            "types":
            Pizza_Topping_Type.objects.all(),
            "order_pending":
            order_pending,
            "order":
            Order.objects.filter(user=request.user).filter(
                status=ACTIVE).first(),
            "logged_in":
            True
        }

        if request.method == 'POST':
            if 'Cancel' in request.POST:
                the_order = Order.objects.filter(user=request.user).filter(
                    status=ACTIVE).first()
                the_order.delete()

                return render(request, "menu.html", context)
            elif 'Update' in request.POST:
                current_items = request.POST.getlist('lineitems')
                quantity_items = request.POST.getlist('quantity')

                the_order = Order.objects.filter(user=request.user).filter(
                    status=ACTIVE).first()

                updated_order = Order(user=request.user, status='A')
                updated_order.save()

                for i in range(0, len(quantity_items)):
                    pizza = the_order.contents.all()[i]
                    pizza.quantity = quantity_items[i]
                    pizza.save()

                the_order.total = total(
                    Order.objects.filter(user=request.user).filter(
                        status=ACTIVE).first().contents.all())
                the_order.save()

                return render(request, "cart.html", context)
            elif 'Order' in request.POST:
                the_order = Order.objects.filter(user=request.user).filter(
                    status=ACTIVE).first()
                the_order.status = SUBMITTED
                the_order.save()

                return render(request, "confirmation.html", context)
            else:
                p_size = Pizza_Size.objects.get(size=request.POST.get("size"))
                p_style = Pizza_Style.objects.get(
                    style=request.POST.get("style"))
                p_number_of_toppings = Pizza_Topping_Type.objects.get(
                    value=request.POST.get("number_of_toppings"))
                p_toppings = request.POST.getlist('toppings')
                p_quantity = request.POST.get("quantity")
                p_type = get_object_or_404(Pizza_Type,
                                           size=p_size,
                                           style=p_style,
                                           topping_type=p_number_of_toppings)
                p = Pizza(pizza_type=p_type, quantity=p_quantity)
                p.save()

                for t in p_toppings:
                    topping = get_object_or_404(Topping, name=t)
                    p.toppings.add(topping)

                p_username = request.user
                customer = Customer.objects.get(user=p_username)

                the_order = Order.objects.filter(user=request.user).filter(
                    status=ACTIVE).first()

                if the_order == None:
                    the_order = Order(user=request.user,
                                      status=ACTIVE,
                                      total=p_type.price)
                    the_order.save()
                    the_order.contents.add(p)
                    the_order.total = total(
                        Order.objects.filter(user=request.user).filter(
                            status=ACTIVE).first().contents.all())
                    the_order.save()
                else:
                    the_order.contents.add(p)
                    the_order.total = total(
                        Order.objects.filter(user=request.user).filter(
                            status=ACTIVE).first().contents.all())
                    the_order.save()
                context['order'] = Order.objects.filter(
                    user=request.user).filter(status=ACTIVE).first()

                return render(request, "cart.html", context)
        else:
            return render(request, "create_order.html", context)