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})
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, }))
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()
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)
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()
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
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
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)
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()
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)
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)
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)
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()
def setUp(self): # Menu's instance self.menu = Menu(pk=1) self.menu.save()
def test_string_representation(self): menu = Menu(title='Testowe Menu') self.assertEqual(str(menu), menu.title)