예제 #1
0
 def add_mock_meals(self):
     """
     adds mock meals
     """
     meal = Meal(title='lorem meal',
                 price=10000,
                 description='lorem ipsum desc')
     meal.save()
     meal2 = Meal(title='Beef with rice',
                  price=1500,
                  description='lorem desc ipsum')
     meal2.save()
예제 #2
0
        def post(current_user, self):
            if not current_user.type_admin:
                response = jsonify(
                    {"message": "Not authorized to perform this function!"})
                response.status_code = 401
                return response

            m_name = request.json.get('m_name')
            category = request.json.get('category')
            price = request.json.get('price')

            if m_name is None or category is None\
              or price is None:
                response = jsonify({"message": "Missing argument!"})
                response.status_code = 400
                return response

            if not isinstance(price, float):
                response = jsonify(
                    {"message": "Price has to be a float number!"})
                response.status_code = 400
                return response

            meals = Meal.query.all()
            for meal in meals:
                if meal.m_name == m_name:
                    response = jsonify({"message": "Meal already exists!"})
                    response.status_code = 202
                    return response

            meal = Meal(m_name, category, price)
            meal.save()
            response = jsonify({"message": "Meal added"})
            response.status_code = 201
            return response
예제 #3
0
    def test_get_meals(self):
        u = push_dummy_user()
        push_dummy_list(u, 'TestyList')
        with self.test_client:
            self.login(u.username)
            rsp = self.test_client.get('/api/lists/1/meals')
            data = rsp.get_json()
            self.assertEqual(rsp.status, '200 OK')
            self.assertEqual(data, [{
                'id': 1,
                'name': 'Lunch'
            }, {
                'id': 2,
                'name': 'Dinner'
            }])

            list_ = List.query.first()
            db.session.add(Meal(list_id=list_.id, name='Test', order=2))
            db.session.commit()

            rsp = self.test_client.get('/api/lists/1/meals')
            data = rsp.get_json()
            self.assertEqual(rsp.status, '200 OK')
            self.assertEqual(data, [{
                'id': 1,
                'name': 'Lunch'
            }, {
                'id': 2,
                'name': 'Dinner'
            }, {
                'id': 3,
                'name': 'Test'
            }])
예제 #4
0
 def test_meal_repr(self):
     u = push_dummy_user()
     list_ = push_dummy_list(u, 'List')
     a = Meal(list_id=list_.id, name='Meal', order=0)
     db.session.add(a)
     db.session.commit()
     self.assertEqual(a.__repr__(), '<Meal Meal of List List>')
예제 #5
0
 def createMeal(self, id = 1):
     with self.app.app_context():
         meal = Meal.query.get(id)
         if not meal:
             meal = Meal(name='meal_{}'.format(id), img_path='#', cost=200)
             meal.save()
         return meal.id
예제 #6
0
def put_meals(list_id):
    req = request.get_json()
    if not req:
        raise APIError("application/json is required")
    if not isinstance(req, list):
        raise APIError("A list of meals is required")
    list_ = List.query.filter_by(id=list_id).first()
    meals = Meal.query.filter_by(list_id=list_.id).all()
    # verify integrity of received list
    verify_meals(req, meals)
    for meal in meals:
        if meal.id not in [i["id"] for i in req if "id" in i]:
            db.session.delete(meal)
    db.session.commit()
    meals = Meal.query.filter_by(list_id=list_.id).all()
    for index, req_meal in enumerate(req):
        if "id" in req_meal and req_meal["id"] in [i.id for i in meals]:
            meals_index = [i.id for i in meals].index(req_meal["id"])
            meals[meals_index].order = index
            meals[meals_index].name = req_meal["name"]
        else:
            new_meal = Meal(
                list_id=list_.id, name=req_meal["name"], order=index
            )
            db.session.add(new_meal)
    db.session.commit()
    json_obj = [meal.to_dict() for meal in list_.get_or_create_meals()]
    return jsonify(json_obj)
예제 #7
0
 def test_meal_to_dict(self):
     u = push_dummy_user()
     list_ = push_dummy_list(u, 'List')
     a = Meal(list_id=list_.id, name='Meal', order=0)
     db.session.add(a)
     db.session.commit()
     self.assertEqual(a.to_dict(), {'id': 1, 'name': 'Meal'})
예제 #8
0
class MealsCrud(Resource):
    method_decorators = [token_required]

    @swag_from('api-docs/add_meal.yml')
    def post(self, current_user):
        data = request.get_json()
        user_id = current_user["user_id"]
        if type(data['price']) == unicode:
            try:
                map(int, data['price'].split())
                return make_response(
                    jsonify({'message': "Please put in an integer"}), 401)
            except ValueError, IndexError:
                return make_response(
                    jsonify({'message': "Please put in an integer"}), 401)
        for meal in meals_db:
            if data['name'] == meal['details'].name:
                return make_response(
                    jsonify(
                        {'message':
                         "Meal option already exists, try another"}), 401)
        meal = Meal(data['name'], data['price'], user_id)
        meal_prof = {
            "details": meal,
            "meal_id": meal.generate_id(len(meals_db))
        }
        meals_db.append(meal_prof)
        return make_response(
            jsonify({'message': "Successfully added meal option"}), 201)
예제 #9
0
def create_default_meals():
    '''function to make users admin'''
    name = input('Enter name of the meal: ')
    while True:
        price = input('Enter price: ')
        try:
            price = int(price)
            break
        except:
            print('Price should be integer')
            continue

    description = input('Add a short description of the meal: ')
    while True:
        username = input('Enter name of caterer in charge of this meal: ')
        user = User.get(username=username)
        if isinstance(user, User):
            break
        else:
            print('User not available, please provide a valid username.')
            continue

    meal = Meal(name=name, price=price, description=description, default=True)
    meal.user_id = user.user_id
    meal.save()
    print('Meal successfully created as default.')
예제 #10
0
파일: routes.py 프로젝트: songokunr1/IBS
def create_meal():
    form_create_meal = CreateMeal()
    print(Activity.find_activities_by_x_category('cukier'))
    if form_create_meal.validate_on_submit():
        ing = {
            'carbs_ingredients': form_create_meal.carbs_ingredients.data,
            'meat_ingredients': form_create_meal.meat_ingredients.data,
            'ingredients': form_create_meal.ingredients.data,
            'warzywa_ingredients': form_create_meal.warzywa_ingredients.data,
        }
        print(ing, 'whole data with ingredients')
        meal_name = form_create_meal.meal_name.data
        ingredients = Meal.ingredients_for_meal(**ing)
        try:
            assert (Meal.query.filter_by(name=meal_name).first().name,
                    f' good, {meal_name} meal not exist in database')
            print(f'the {meal_name} is in the menu')
            return render_template('meal.html',
                                   form_create_meal=form_create_meal,
                                   ingredients=ingredients,
                                   meal_name=meal_name,
                                   in_menu=True)
        except AttributeError as e:
            new_meal = Meal(
                ingredients=ingredients['string_of_ingridients_ids'],
                name=meal_name)
            Meal.save_to_db(new_meal)
            flash(f'we added {new_meal.name} to the menu')
            return render_template('meal.html',
                                   form_create_meal=form_create_meal,
                                   ingredients=ingredients,
                                   meal_name=meal_name)
    return render_template('meal.html', form_create_meal=form_create_meal)
예제 #11
0
def meal(request):
    user = request.user
    meal_type = request.GET['meal_type']
    year = int(request.GET['date'].split('/')[2])
    month = int(request.GET['date'].split('/')[1])
    day = int(request.GET['date'].split('/')[0])
    date = datetime.date(year, month, day)
    day = user.day_set.filter(date=date).first()
    meal_set = day.meal_set
    meal = meal_set.meal_set.filter(meal_type=MealType.objects.filter(
        name=meal_type).first()).first()
    if meal is None:
        meal = Meal(meal_type=MealType.objects.filter(name=meal_type).first(),
                    meal_set=meal_set)
        meal.save()
    products = meal.mealproduct_set.all()
    context = {
        'meal_type': request.GET['meal_type'],
        'day': day,
        'meal': meal,
        'meal_set': meal_set,
        'date': request.GET['date'],
        'products': products
    }
    return render(request, 'meal.html', context)
예제 #12
0
 def put(self, meal_id):
     for meal in meals:
         if meal_id == meal.meal_id: 
             meal = json.loads(request.data)
             m = Meal(meal_id = meal.get('meal_id'), meal_name=meal.get('meal_name'), price=meal.get('price'),
             category=meal.get('category'))
             result = jsonify({"message": "meal has been modified"})
             result.status_code = 200
             return result
예제 #13
0
def addItem(Club, week, day, mealCategory, name, descrip):

	#need to figure out a way to validate user later
	# if(mealCategory < 4 and User.checkIsAdmin()):
	# 	club_id = Club.id
	# 	newItem = Item(name=name, descrip=descrip)
		
	# 	menu_id = Menu.query.filter_by(club_id=club_id, week=week).first().id
	# 	dayMenu_id = DayMenu.query.filter_by(menu_id=menu_id, day=day).id
	# 	meal = Meal.query.filter_by(meanNum=mealCateogry, dayMenu_id=dayMenu_id)
	# 	meal.items.append(newItem)
	# 	db.session.add(newItem)
	# 	#db.session.add(meal)
	# 	db.session.commit()
	# 	print("added item")
	# else:
	# 	print("unable to add item")

		club_id = Club.id
		print("Club ID: {}".format(club_id))
		newItem = Item(name=name, descrip=descrip)
		
		menu_id = Menu.query.filter_by(club_id=club_id).first().id
		#if menu_id is None : #need to make a new meal for this week

		print("Menu ID: {}".format(menu_id))

		dayMenu_id = DayMenu.query.filter_by(menu_id=menu_id, day=day).first().id
		dayMenu_day = DayMenu.query.filter_by(menu_id=menu_id, day=day).first().day
		dayMenu_menu = DayMenu.query.filter_by(menu_id=menu_id, day=day).first().menu_id
		if dayMenu_id is None:
			newDay = DayMenu(day=day)
			week.dayMenus.append(newDay)


		print(dayMenu_id)


		meal = Meal.query.filter_by(mealNum=mealCategory, dayMenu_id=dayMenu_id).first()
		if meal is None:
			print("no known meal")
			newMeal = Meal(mealNum=mealCategory)
			print(DayMenu.query.get(dayMenu_id))
			DayMenu.query.filter_by(day= dayMenu_day,menu_id=dayMenu_menu).first().meals.append(newMeal)
			db.session.add(newMeal)
			#db.session.commit()
			meal = newMeal


		print(meal)
		db.session.add(newItem)
		meal.items.append(newItem)
		
		#db.session.add(meal)
		db.session.commit()
		print("added item")	
예제 #14
0
    def _format_meal(self, meal, order):
        meal_dict = {'category': meal[2].lower(),
                     'title': meal[0].lower(), 
                     'provider': PROVIDER_NAME,
                     'owner': self._user,
                     'quantity': meal[1]}

        meal_object = Meal(**meal_dict)
        meal_object.order_id = order.order_id
        return meal_object
예제 #15
0
    def post(self):
        meal = request.get_json()
        m = Meal(meal_id=meal.get('meal_id'), meal_name=meal.get('meal_name'), price=meal.get('price'),
        category=meal.get('category'))

        meals.append(m)

        result = jsonify({"message": "meal added"})
        result.status_code = 201
        return result
예제 #16
0
 def post(self):
     args = self.reqparse.parse_args()
     meal = Meal()
     meal.label = args['label']
     meal.total_quantity = args['total_quantity']
     meal.current_quantity = args['total_quantity']
     meal.time_of_day = args['time_of_day']
     db.session.add(meal)
     db.session.commit()
     return {'meal': marshal(meal, meal_fields)}, 201
예제 #17
0
 def setUp(self):
     super(TestMealsApiTestCase, self).setUp()
     self.admin_token, self.admin = self.login_admin('*****@*****.**')
     self.user_token, self.customer_user = self.login_test_user(
         '*****@*****.**')
     self.meal = Meal(title='lorem ipsum',
                      price=2000,
                      description='lorem ipsum',
                      catering=self.admin.catering)
     self.meal.save()
예제 #18
0
 def add_test_meal(self, user=None):
     """
     adds a test meal and returns id
     """
     meal = Meal(title='Beef with rice',
                 price=1500,
                 description='lorem desc ipsum')
     if user:
         meal.catering = user.catering
     meal.save()
     return meal
예제 #19
0
 def test_get_or_create_entries(self, mock_get_settings):
     mock_get_settings.return_value = ListSettings(
         start_day_of_week=-1, days_to_display=7)
     u = push_dummy_user()
     list_ = push_dummy_list(u, 'list_')
     day_1 = list_.get_or_create_days()[0]
     self.assertTrue(len(day_1.get_or_create_entries()) == 2)
     meal = Meal(name='test', list_id=list_.id, order=2)
     db.session.add(meal)
     db.session.commit()
     self.assertTrue(len(day_1.get_or_create_entries()) == 3)
예제 #20
0
def create_meals(meals):
    for meal in meals:
        new_meal = Meal()
        new_meal.title = meal['title']
        meal_category = Category.query.filter(
            Category.title == meal['category']).first()
        new_meal.category_id = meal_category.id
        new_meal.picture = meal['picture']
        new_meal.price = int(random.randint(186, 687))
        db.session.add(new_meal)
    db.session.commit()
    print_db_table(Meal)
예제 #21
0
def create_meal():
    data = request.get_json() or {}

    meal = Meal()

    if (meal.from_dict(data) == -1):
        return bad_request('must include all fields')
    else:
        db.session.add(meal)
        db.session.commit()
        response = jsonify(meal.to_dict())
        response.status_code = 201
        response.headers['Location'] = url_for('api.get_meal', id=meal.meal_id)
        return response
예제 #22
0
 def createMenuItem(self, id=1):
     with self.app.app_context():
         menu_item = MenuItem.query.get(id)
         if not menu_item:
             menu = Menu.query.get(1)
             if not menu:
                 menu = Menu(category=MenuType.BREAKFAST)
                 menu.save()
             meal_name = 'ugali'
             meal = Meal.query.filter_by(name=meal_name).first()
             if not meal:
                 meal = Meal(name=meal_name, img_path='#', cost=200)
                 meal.save()
             menu_item = MenuItem(menu_id=menu.id, meal_id=meal.id)
             menu_item.save()
         return menu_item.id
예제 #23
0
 def test_user_can_access_menu(self):
     """Test user can access the menu (GET request)."""
     date = datetime.utcnow().date()
     menu = Menu(date=date)
     meal = Meal(name='Beef', description='Saucy beef', price=10)
     meal.save()
     menu.add_meal_to_menu(meal)
     menu.save()
     result = self.login_user()
     self.assertEqual(200, result.status_code)
     access_token = json.loads(result.data.decode())['access_token']
     res = self.client().get('api/v1/menu/',
                             headers=dict(Authorization="Bearer " +
                                          access_token))
     self.assertEqual(res.status_code, 200)
     self.assertEqual('Here is the menu for today',
                      json.loads(res.data.decode('utf-8'))['message'])
예제 #24
0
 def test_get_or_create_meals(self):
     u = push_dummy_user()
     list_no_meals = push_dummy_list(u, 'List')
     list_with_meals = push_dummy_list(u, 'List (With Meals)')
     list_no_meals.get_or_create_meals()
     self.assertEqual([{'id': i.id, 'name': i.name, 'order': i.order}
                       for i in list_no_meals.meals],
                      [{'id': 2, 'name': 'Dinner', 'order': 1},
                       {'id': 1, 'name': 'Lunch', 'order': 0}])
     new_meal = Meal(list_id=list_with_meals.id, name='Mymeal', order=0)
     db.session.add(new_meal)
     db.session.commit()
     list_with_meals.get_or_create_meals()
     self.assertEqual(
         [{'id': i.id, 'name': i.name, 'order': i.order}
          for i in list_with_meals.meals],
         [{'id': 3, 'name': 'Mymeal', 'order': 0}])
예제 #25
0
def addToMeals():
    #add meal to Meal table
    userId = current_user.id
    form = MealForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate_on_submit():
        meal = Meal(name=form.data['name'],
                    cuisine=form.data['cuisine'],
                    recipe=form.data['recipe'])
        db.session.add(meal)
        db.session.commit()
        #connect the meal and the current user on the userMeals table
        new_meal = Meal.query.filter(Meal.name == form.data['name']).first()
        new_meal_dict = new_meal.to_dict()
        user_meal = UserMeal(user_id=userId, meal_id=new_meal_dict['id'])
        db.session.add(user_meal)
        db.session.commit()
        return meal.to_dict()
    return 'Hello'
예제 #26
0
def post_meals(list_id):
    req = request.get_json()
    if not req:
        raise APIError("application/json is required")
    if "name" not in req:
        raise APIError("name is required")
    list_ = List.query.filter_by(id=list_id).first()
    if Meal.query.filter_by(name=req["name"], list_id=list_.id).first():
        raise APIError(f'Meal {req["name"]} already exists')
    try:
        order = 1 + max(
            [i.order for i in Meal.query.filter_by(list_id=list_.id).all()]
        )
    except ValueError:
        order = 1
    meal = Meal(list_id=list_.id, name=req["name"], order=order)
    db.session.add(meal)
    db.session.commit()
    json_obj = [meal.to_dict() for meal in list_.get_or_create_meals()]
    return jsonify(json_obj), 201
예제 #27
0
def addmeal():
    form = MealForm()
    #if request.method == 'POST':

    if form.validate_on_submit():
        file = request.files['img']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            im = Image.open(file)
            #rgb_im = im.convert('RGB')

            fullname = 'app/static/' + form.name.data + '.png'
            im.save(fullname)
            #file.save(fullname)
        meal = Meal(name=form.name.data,
                    description=form.description.data,
                    price=form.price.data,
                    img=fullname)
        db.session.add(meal)
        db.session.commit()
        return redirect(url_for('result'))

    return render_template('addMeal.html', form=form)
예제 #28
0
from unittest import TestCase
from app.models import db, connect_db, User, Trip, Meal, Ingredient, TripMeal
from datetime import datetime
from flask import json
os.environ['DATABASE_URL'] = "postgresql:///food_planner_test"
from app.api_requests import get_nutrition_data

db.drop_all()
db.create_all()

app.config['WTF_CSRF_ENABLED'] = False

# seed the test database with some meals

# breakfast
b1 = Meal(title="Oatmeal", type_="breakfast")

oats = Ingredient.create_ingredient(get_nutrition_data(368739))
b1.ingredients.append(oats)

raisins = Ingredient.create_ingredient(get_nutrition_data(408107))
b1.ingredients.append(raisins)

sugar = Ingredient.create_ingredient(get_nutrition_data(519364))
b1.ingredients.append(sugar)

# lunch
l1 = Meal(title="Pita and Hummus", type_="lunch")

pita = Ingredient.create_ingredient(get_nutrition_data(384233))
l1.ingredients.append(pita)
예제 #29
0
파일: __init__.py 프로젝트: bevkololi/BAM
    def meals():
        auth_header = request.headers.get('Authorization')
        access_token = auth_header.split(" ")[1]

        if access_token:
            user_id = User.decode_token(access_token)
            if not isinstance(user_id, str):
                if request.method == "POST":
                    current_user = User.query.filter_by(id=user_id).first()
                    if current_user.caterer:
                        name = str(request.data.get('name', ''))
                        description = str(request.data.get('description', ''))
                        price = str(request.data.get('price', ''))
                        if price:
                            int(price)
                        else:
                            return {"message": "Price should be a number"}
                        if name:
                            meal = Meal(name=name,
                                        description=description,
                                        price=price)
                            meal.save()
                            response = jsonify({
                                'message': 'Meal created successfully',
                                'id': meal.id,
                                'name': meal.name,
                                'description': meal.description,
                                'price': meal.price
                            })
                            response.status_code = 201
                            return response

                        else:
                            return jsonify({
                                'message':
                                'Please input the name of the meal'
                            })

                    else:
                        response = jsonify(
                            {"message": "You are unauthorized to access this"})
                        response.status_code = 401
                        return response

                else:
                    current_user = User.query.filter_by(id=user_id).first()
                    if current_user.caterer:
                        meals = Meal.get_all()
                        results = []

                        for meal in meals:
                            obj = {
                                'id': meal.id,
                                'name': meal.name,
                                'description': meal.description,
                                'price': meal.price
                            }
                            results.append(obj)

                        return make_response(jsonify(results)), 200
                    else:
                        return jsonify({
                            'message':
                            'You are not authorized to access this'
                        })

            else:
                # user is not legit, so the payload is an error message
                message = user_id
                response = {'message': message}
                return make_response(jsonify(response)), 401

        else:
            response = {'message': 'Please input access token'}
            return make_response(jsonify(response)), 401
예제 #30
0
db.drop_all()
db.create_all()

u = User(first_name="guest",
         last_name="guest",
         username="******",
         email="*****@*****.**",
         password="******",
         guest=True)

db.session.add(u)
db.session.commit()

# breakfast
b1 = Meal(title="Oatmeal", type_="Breakfast", user_id=u.id, public=True)

db.session.add(b1)
db.session.commit()

oats = Ingredient.create_ingredient(get_nutrition_data(368739))
b1.ingredients.append(oats)

raisins = Ingredient.create_ingredient(get_nutrition_data(408107))
b1.ingredients.append(raisins)

sugar = Ingredient.create_ingredient(get_nutrition_data(519364))
b1.ingredients.append(sugar)

b2 = Meal(title="Granola", type_="Breakfast", user_id=u.id, public=True)