Exemple #1
0
def new_menu(request):
    menu_form = Menu()
    categories_menu_formset = inlineformset_factory(
        Menu, MenuCategory,
        form=MenuCategoriesForm, extra=1
    )
    if request.method == 'POST':
        form = MenuForm(request.POST, instance=menu_form, prefix='main')
        formset = categories_menu_formset(request.POST,
                                          instance=menu_form,
                                          prefix='product')

        try:
            if form.is_valid() and formset.is_valid():
                novo_cardapio = form.save(commit=False)
                novo_cardapio.save()
                formset.save()
                messages.success(request, "Novo cardápio cadastrado.")
                return redirect('menu-list')
        except Exception as e:
            messages.warning(request, f'Ocorreu um erro ao atualizar: {e}')

    else:
        form = MenuForm(instance=menu_form, prefix='main')
        formset = categories_menu_formset(instance=menu_form, prefix='product')

    return render(request, 'menu/create.html', {'form': form,
                                                'formset': formset})
Exemple #2
0
    def post(self, request, *args, **kwargs):
        year = kwargs.get('year')
        month = kwargs.get('month')
        day = kwargs.get('day')
        date = year + "-" + month + "-" + day
        date = get_object_or_404(Date, date=date)

        rice_id = request.POST.get('rice')
        soup_id = request.POST.get('soup')
        side_dish_id_set = request.POST.getlist('side_dish')

        with transaction.atomic():
            meal = Meal.objects.create(
                date=date,
                meal_type=self.meal_type,
            )
            Menu.objects.create(
                meal=meal,
                food=Food.objects.get(pk=rice_id),
            )
            Menu.objects.create(
                meal=meal,
                food=Food.objects.get(pk=soup_id),
            )
            Menu.objects.bulk_create([
                Menu(meal_id=meal.id, food_id=side_dish_id)
                for side_dish_id in side_dish_id_set
            ])
        return redirect(
            reverse('date:detail',
                    kwargs={
                        'year': year,
                        'month': month,
                        'day': day,
                    }))
Exemple #3
0
    def handle(self, *args, **options):
        """
        Build menus from test_settings
        :param args:
        :param options:
        :return:
        """
        Entree.objects.all().delete()
        Menu.objects.all().delete()
        Otable.objects.all().delete()
        # Load Entrees
        for e in test_settings.ENTREES:
            new_entree = Entree()
            new_entree.name = e[0]
            new_entree.category = e[1]
            new_entree.configurations = e[2]
            new_entree.sides = e[3]
            new_entree.price = e[4]
            new_entree.save()
        entrees = Entree.objects.all()
        # load menus assign entries
        for m in test_settings.MENUS:
            new_menu = Menu()
            new_menu.name = m[0]
            new_menu.save()
            for e in m[1]:
                new_menu.entrees.add(entrees[e])

        # load tables
        for t in test_settings.TABLES:
            new_table = Otable()
            new_table.name = t
            new_table.save()
Exemple #4
0
    def setUp(self):
        self.client = Client()

        self.test_user1 = User.objects.create_user(username='******', password='******')
        self.test_user1.save()

        for i in range(50):
            self.menu1 = Menu()
            self.menu1.name = f'menu {i}'
            self.menu1.description = f'opis{i}'
            self.menu1.save()

        for i in range(50):
            self.dish1 = (Dish())
            self.dish1.name = f'danie {i}'
            self.dish1.description = f'opis {i}'
            self.dish1.price = i
            self.dish1.preparation_time = i + 12
            if i // 3 == 0:
                self.dish1.is_vege = True
            else:
                self.dish1.is_vege = False
            self.dish1.save()

        self.menu_queryset = Menu.objects.all()
        self.dish_queryset = Dish.objects.all()

        self.menu_queryset[0].dishes.set(self.dish_queryset)
Exemple #5
0
    def setUp(self):
        self.object1 = Menu()
        self.object1.name = 'menu 1'
        self.object1.description = 'desc 1'
        self.object1.save()

        self.queryset = Menu.objects.all()
 def setUp(self):
     self.user_subscribing_restaurant = User.objects.create_user(username='******', email='', password='******',
                                          address='서울시 서초구 서초2동 사랑의 교회')
     self.user_without_subscribing = User.objects.create_user(username='******', email='', password='******',
                                                              address='서울시 서초구 서초2동 사랑의 교회')
     self.restaurant_create_one_menu = Restaurant.objects.create(
         name='굽내치킨1', title='굽내치킨1-서초점',
         min_order_price=10000, delivery_charge=1000, estimated_delivery_time='20:00',
         operation_start_hour='11:00', operation_end_hour='20:00', )
     self.restaurant_update_menu = Restaurant.objects.create(
         name='굽내치킨2', title='굽내치킨2-서초점',
         min_order_price=10000, delivery_charge=1000, estimated_delivery_time='20:00',
         operation_start_hour='11:00', operation_end_hour='20:00', )
     self.restaurant_without_menu_alarm = Restaurant.objects.create(
         name='굽내치킨3', title='굽내치킨-서초점',
         min_order_price=10000, delivery_charge=1000, estimated_delivery_time='20:00',
         operation_start_hour='11:00', operation_end_hour='20:00', )
     self.user_subscribing_restaurant.subscribed_restaurants.set = self.restaurant_create_one_menu
     self.created_menu = Menu(
         restaurant=self.restaurant_create_one_menu,
         name='갈비천왕',
         detail='갈비 맛입니다.',
         price=20000,
         type='양념류',
         img='test.jpg',
     )
     self.created_menu.save()
Exemple #7
0
def _import_menu(path, label, icon, show, parent, *args, **kwargs):
    menu = Menu()
    menu.path = path
    menu.title = label
    menu.icon = icon
    menu.show = show
    menu.parent = parent
    menu.save()
    return menu
Exemple #8
0
def menu_create(request):
    menu = Menu()
    menu_form = MenuForm(request.POST, instance=menu)
    if menu_form.is_valid() and menu_form.has_changed() and request.POST:
        menu = menu_form.save()
        msg = pgettext_lazy('Dashboard message', 'Added menu %s') % (menu, )
        messages.success(request, msg)
        return redirect('dashboard:menu-index')
    ctx = {'form': menu_form, 'menu': menu}
    return TemplateResponse(request, 'dashboard/menu/form.html', ctx)
 def create_valid_menu(self, items, **kwargs):
     """items is a non-empty queryset of Item objects or a
     list of item PKs
     """
     menu = Menu(**VALID_MENU_DATA)
     for key, value in kwargs.items():
         setattr(menu, key, value)
     menu.save()  # can't add MTM relations to an object that isn't in DB
     menu.items = items
     menu.save()
     return menu
Exemple #10
0
def submit_menu(request):
    if not (request.user.is_authenticated and check_if_steward(request.user)):
        return HttpResponseRedirect(reverse('menu:index'))

    days_to_num = {
        "Sunday Brunch": 0,
        "Sunday Dinner": 0,
        "Monday Dinner": 1,
        "Tuesday Dinner": 2,
        "Wednesday Dinner": 3,
        "Thursday Dinner": 4
    }

    d = dict(request.POST.iterlists())
    start_date = datetime.strptime(request.POST.get('start_date'),
                                   "%Y-%m-%d").date()

    Menu.objects.filter(start_date=start_date).delete()

    menu = Menu(start_date=start_date,
                servings=request.POST.get("serving_size"),
                notes=request.POST.get("notes"))
    menu.save()

    for key, item in d.items():
        if "day" in key:
            day_num = key.split("_")[1]
            meal_key = "item_" + day_num

            recipes = d[
                meal_key]  #list of all recipe names corresponding to that meal in the menu
            meal = Meal(menu=menu,
                        date=start_date +
                        timedelta(days_to_num[request.POST.get(key)]),
                        meal_name=request.POST.get(key))
            meal.save()

            # add automatic lateplates
            for auto_plate in AutoLatePlate.objects.all():
                if str(request.POST.get(key)) in str(auto_plate.days):
                    user = User.objects.filter(
                        username=auto_plate.username).first()
                    l = LatePlate(meal=meal, name=getLatePlateText(user))
                    l.save()

            # add recipes
            for r in recipes:
                recipe = Recipe.objects.filter(recipe_name=r).first()
                meal.recipes.add(recipe)

    return HttpResponseRedirect(reverse('menu:index'))
    def test_menu_model_save_filter(self):
        """
        Ensure that menus can be created.
        """
        breakfest_menu = Menu()
        lunch_menu = Menu()
        dinner_menu = Menu()

        breakfest_menu.name = 'Breakfest'
        lunch_menu.name = 'Lunch'
        dinner_menu.name = 'Dinner'

        breakfest_menu.save()
        lunch_menu.save()
        dinner_menu.save()

        breakfest_menu = Menu.objects.filter(name='Breakfest')
        lunch_menu = Menu.objects.filter(name='Lunch')
        dinner_menu = Menu.objects.filter(name='Dinner')

        self.assertEqual(len(breakfest_menu), 1)
        self.assertEqual(len(lunch_menu), 1)
        self.assertEqual(len(dinner_menu), 1)
Exemple #12
0
    def setUp(self):
        self.dish = Dish()

        self.dish.name = 'test name'
        self.dish.description = 'test description'
        self.dish.price = 10
        self.dish.preparation_time = 20
        self.dish.is_vege = False
        self.dish.save()

        self.menu1 = Menu()
        self.menu1.name = 'Test menu1'
        self.menu1.description = 'test desc'
        self.menu1.save()

        self.menu2 = Menu()
        self.menu2.name = 'Test menu2'
        self.menu2.description = 'test desc'
        self.menu1.save()

        self.test_user1 = User.objects.create_user(username='******',
                                                   password='******')
        self.test_user1.save()
Exemple #13
0
    def update_side_dish_id_set(self, new_side_dish_id_set):
        cur_side_dish_id_set = self.side_dish_set.values_list('id', flat=True)

        insert_side_dish_id_set = list(
            set(new_side_dish_id_set) - set(cur_side_dish_id_set))
        delete_side_dish_id_set = list(
            set(cur_side_dish_id_set) - set(new_side_dish_id_set))

        if insert_side_dish_id_set:
            Menu.objects.bulk_create([
                Menu(food_id=side_dish_id, meal_id=self.id)
                for side_dish_id in insert_side_dish_id_set
            ])
        if delete_side_dish_id_set:
            self.menu_set.filter(food_id__in=delete_side_dish_id_set).delete()
    def setUp(self):
        """create an instance in the database"""
        self.ingredient = Ingredient.objects.create(name="Pepperoni")
        self.item = Item(
            name="Pizza",
            description="Round and delicious",
            chef=user,
        )
        self.item.save()
        self.item.ingredients.add(self.ingredient)

        self.menu = Menu(season="YearLong",
                         expiration_date=timezone.now() +
                         timezone.timedelta(days=1))
        self.menu.save()
        self.menu.items.add(self.item)
Exemple #15
0
    def setUp(self):
        """create an instance in the database"""
        self.ingredient = Ingredient.objects.create(name="lskdjflkjfd")
        self.item = Item(
            name="LKJklsjd",
            description="LKSJdlfkjsldfjsd",
            chef=user,
        )
        self.item.save()
        self.item.ingredients.add(self.ingredient)

        self.menu = Menu(season="asdfasdfadsfadsf",
                         expiration_date=timezone.now() +
                         timezone.timedelta(days=1))
        self.menu.save()
        self.menu.items.add(self.item)
Exemple #16
0
    def test_adding_dish_to_menu_view(self):
        test_menu = Menu()
        test_menu.name = 'Test menu'
        test_menu.description = 'Test description'
        test_menu.save()

        test_menu_queryset = Menu.objects.get(pk=test_menu.pk)

        self.client.login(username='******', password='******')
        url = reverse('add_dish_to_menu', args=[test_menu_queryset.pk])
        response = self.client.post(url, {'dish_pk': '5'})

        test_menu_queryset = Menu.objects.get(pk=test_menu.pk)

        self.assertEquals(response.status_code, 302)
        self.assertEquals(test_menu_queryset.dishes_count, 1)
        self.assertEquals(test_menu_queryset.dishes.count(), 1)
Exemple #17
0
    def create(self, validated_data):

        try:
            with transaction.atomic():
                instance = Menu(start_date=validated_data['start_date'],
                                end_date=validated_data['end_date'],
                                user_id=validated_data['user_id'])
                instance.save()
                meals_ids = validated_data.get('meals_ids', [])
                for m_id in meals_ids:
                    instance.meals.add(m_id)
                return instance

        except Exception as exc:
            #raise serializers.ValidationError({"non_field_errors":[str(exc)]})
            raise serializers.ValidationError(
                {"non_field_errors": ['Database Error']})
    def test_entree_model(self):
        """
        Ensure that entrees can be created and assigned to menus.
        """
        mex1 = Entree()
        mex2 = Entree()
        mex3 = Entree()

        us1 = Entree()
        us2 = Entree()
        us3 = Entree()

        mex1.name = 'Taco'
        mex1.configurations = 'chicken beef'
        mex2.name = 'Burrito'
        mex2.configurations = 'chicken beef'
        mex3.name = 'Tortilla Soup'
        mex1.category = 'Mexican'
        mex2.category = 'Mexican'
        mex3.category = 'Mexican'

        us1.name = 'Hot Dog'
        us1.configurations = 'white wholewheat'
        us1.sides = 'fries onion-ring'
        us2.name = 'Hamburger'
        us2.configurations = 'rare well'
        us2.sides = 'fries onion-ring'
        us3.name = 'Grilled Cheese'
        us2.configurations = 'american swiss brie'
        us1.category = 'American'
        us2.category = 'American'
        us3.category = 'American'

        mex1.price = 1.99
        mex2.price = 2.99
        mex3.price = 4.99
        mex1.save()
        mex2.save()
        mex3.save()
        us1.price = 1.99
        us2.price = 2.99
        us3.price = 3.99
        us1.save()
        us2.save()
        us3.save()

        # assign to menus


        breakfest_menu = Menu()
        lunch_menu = Menu()
        dinner_menu = Menu()

        breakfest_menu.name = 'Breakfest'
        lunch_menu.name = 'Lunch'
        dinner_menu.name = 'Dinner'


        breakfest_menu.save()
        lunch_menu.save()
        dinner_menu.save()

        breakfest_menu.entrees.add(mex1)
        breakfest_menu.entrees.add(us2)
        lunch_menu.entrees.add(mex3)
        lunch_menu.entrees.add(us1)
        dinner_menu.entrees.add(mex2)
        dinner_menu.entrees.add(us3)

        breakfest_entrees =  breakfest_menu.entrees.all()
        self.assertEqual('Hamburger', breakfest_entrees[0].name)
        now = dt.now()
        # test model signals that update update_at
        self.assertEqual(now.year, us1.updated_at.year)
        self.assertEqual(now.month, us1.updated_at.month)
        self.assertEqual(now.day, us1.updated_at.day)
        self.assertEqual(now.year, dinner_menu.updated_at.year)
        self.assertEqual(now.month, dinner_menu.updated_at.month)
        self.assertEqual(now.day, dinner_menu.updated_at.day)

        Entree.objects.all().delete()
        Menu.objects.all().delete()
Exemple #19
0
 def setUp(self):
     # Menu's instance
     self.menu = Menu(pk=1)
     self.menu.save()
Exemple #20
0
 def test_string_representation(self):
     menu = Menu(title='Testowe Menu')
     self.assertEqual(str(menu), menu.title)