Example #1
0
 def populate_database(self):
     record = Menu.query.first()
     if not record:
         new_record = Menu(name="Pasta")
         new_record2 = Menu(name="Burger")
         new_record3 = Menu(name="Salad")
         new_record4 = Menu(name="Risotto")
         new_record5 = Menu(name="Cookie")
         db.session.add(new_record)
         db.session.add(new_record2)
         db.session.add(new_record3)
         db.session.add(new_record4)
         db.session.add(new_record5)
         db.session.commit()
Example #2
0
 def createMenu(self, id = 1):
     with self.app.app_context():
         menu = Menu.query.get(id)
         if not menu:
             menu = Menu(category=MenuType.BREAKFAST)
             menu.save()
         return menu.id
Example #3
0
 def post(self):
     """Create a new menu item"""
     args = self.parser.parse_args()
     name = args.get("name", "")
     description = args.get("description", "")
     price = args.get("price", "")
     if empty(name) or empty(description) or empty(price):
         return {
             "message":
             "You have to specify all"
             " details of an item"
             " such as name, price, description"
         }, 403
     if not valid_name(name):
         return {"message": "Please specify a valid name for item"}, 403
     if not valid_price(price):
         return {
             "message": "Please specify a valid price"
             " for the item"
         }, 403
     if not valid_description(description):
         return {
             "message": "Please specify a valid description "
             "for the item"
         }
     menu_item = Menu(name, description, price)
     saved = menu_item.save()
     if saved:
         return {
             "message": "The menu item was successfully saved",
             "data": menu_item.json1
         }, 201
     return {"message": "There was problem saving the item. Try again"}, 403
Example #4
0
 def post(self):
     '''
     添加菜单
     '''
     args = parse_base.parse_args()
     pid = args.get('pid')
     name = args.get('name')
     url = args.get('url')
     icon = args.get('icon')
     sort = args.get('sort')
     _data = Menu.query.filter_by(name = name,is_del = '0').first()
     if _data:
         abort(RET.Forbidden,msg='菜单已存在')
     model_data = Menu()
     model_data.pid = pid
     model_data.name = name
     model_data.url = url
     model_data.icon = icon
     model_data.sort = sort
     model_data.last_editor = g.admin.username
     if model_data.add():
         data = {
                 'status':RET.Created,
                 'msg':'添加成功',
                 'data':model_data
         }
         return marshal(data,sing_fields)
     abort(RET.BadRequest,msg='添加失败,请重试')
Example #5
0
    def setUp(self):
        db.create_all()
        db.session.add(
            Place(name='Testname',
                  address="123 Test st.",
                  city="Englewood",
                  state="Florida",
                  zip_="34224",
                  website="http://fake.com",
                  phone="123-456-7899",
                  owner="Jeff Reiher",
                  yrs_open=1))

        db.session.add(
            Menu(name="burger",
                 course="dinner",
                 description="test description",
                 price="$1.00",
                 place_id=1))

        db.session.add(
            User(username="******",
                 email="*****@*****.**",
                 password="******",
                 avatar="picofjeff.jpg"))

        db.session.commit()
Example #6
0
def create(auth_name, path, level):
    if Menu.query.filter(or_(Menu.auth_name == auth_name)).first():
        return ValidationErrorResult(message='Menu已存在')
    menu = Menu(level=level, auth_name=auth_name, path=path)
    db.session.add(menu)
    db.session.flush()

    return jsonify(schemas.menu_schema.dump(menu)), 201
Example #7
0
    def menu_manipulation():

        auth_header = request.headers.get('Authorization')
        if auth_header:
            access_token = auth_header.split(" ")[1]

            if access_token:
                user_id = User.decode_token(access_token)
                if isinstance(user_id, int):
                    current_user = User.query.filter_by(id=user_id).first()
                    if current_user.caterer:
                        menu = Menu.query.order_by('menu.date').all()[-1]
                        if not menu:
                            abort(404)

                        if request.method == "DELETE":
                            menu.delete()
                            return {
                                "message":
                                "Todays menu has been deleted".format(menu.id)
                            }, 200
                        elif request.method == 'PUT':
                            menu_meals = request.data.get('meal_list', '')
                            date = request.data.get('date', '')
                            menu.delete()

                            if date == '':
                                date = datetime.datetime.now()
                            if menu_meals:
                                meals = [Meal.get(id=id) for id in menu_meals]
                                menu = Menu(date=date)
                                menu.add_meal_to_menu(meals)
                                return {
                                    'message':
                                    'The menu has successfully been updated',
                                    'menu': menu_meals
                                }, 200
                            return {'message': 'Please add meals to menu'}, 202
                            menu.save()
                    else:

                        response = {
                            'message':
                            'You are not authorized to perform these functions'
                        }
                        return make_response(jsonify(response)), 401

                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
        else:
            return {'message': 'Please input access token'}
Example #8
0
def post_new_menu(date_int):
    category = request.json['category']
    description = request.json['description']
    cycle = request.json['cycle']
    new_menu = Menu(date_int, category, description, cycle)
    db.session.add(new_menu)
    db.session.commit()
    menu_id = new_menu.menuid
    return str(menu_id)
Example #9
0
 def test_menu_item(self):
     test_name = "test"
     test_item = Menu(name=test_name)
     db.session.add(test_item)
     db.session.commit()
     response = self.app.get('/menu', follow_redirects=True)
     self.assertEqual(response.status_code, 200)
     #self.assertEqual(response.mimetype, 'application/json')
     body = response.data
     self.assertTrue('menu' in body)
Example #10
0
    def post(self):
        menu = request.get_json()
        m = Menu(meal_id=menu.get('meal_id'), meal_name=menu.get('meal_name'), price=menu.get('price'),
        category=menu.get('category'))

        menus.append(m)

        result = jsonify({"message": "meal added to menu"})
        result.status_code = 201
        return result
Example #11
0
    def menu():
        auth_header = request.headers.get('Authorization')
        if auth_header:
            access_token = auth_header.split(" ")[1]

            if access_token:
                user_id = User.decode_token(access_token)
                if isinstance(user_id, int):
                    current_user = User.query.filter_by(id=user_id).first()
                    if request.method == "POST":
                        if current_user.caterer:
                            menu_meals = request.data.get('meal_list', '')
                            date = request.data.get('date', '')
                            if date == '':
                                date = datetime.datetime.now()
                            if menu_meals:
                                meals = [Meal.get(id=id) for id in menu_meals]
                                menu = Menu(date=date)
                                menu.add_meal_to_menu(meals)
                                return {
                                    'message': 'Todays menu has been updated'
                                }, 201

                            return {'message': 'Please add meals to menu'}, 202

                        else:

                            response = {
                                'message':
                                'You are unauthorized to access this'
                            }
                            return make_response(jsonify(response)), 401

                    else:  # GET

                        menu = Menu.query.order_by('menu.date').all()[-1]
                        menu_meals = [item.make_dict() for item in menu.meals]
                        return {
                            'message': 'Here is the menu for today',
                            'menu': menu_meals
                        }, 200

                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
        else:
            return {'message': 'Please input access token'}
    def test_list_menus_range_ok_response(
            self, mock_menu_controller_pagination_meta,
            mock_meal_item_repo_get,
            mock_menu_repo_get_range_paginated_options,
            mock_meal_periods_has_value, mock_auth_get_location):
        '''Test list_menus_range OK response.
        '''
        # Arrange
        with self.app.app_context():
            mock_auth_get_location.return_value = 1
            mock_meal_periods_has_value.return_value = True
            mock_menu = Menu(date=datetime.now(),
                             meal_period='',
                             location_id=1,
                             main_meal_id=1,
                             allowed_side=1,
                             allowed_protein=1,
                             side_items='1,2',
                             protein_items='1,2',
                             vendor_engagement_id=1,
                             created_at=datetime.now(),
                             updated_at=datetime.now())
            mock_meal_item = MealItem(id=1,
                                      meal_type=1,
                                      name='',
                                      image='',
                                      location_id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now())
            mock_menu_repo_get_range_paginated_options.return_value.items = [
                mock_menu,
            ]

            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_period_start_date = '2019-01-01'
            mock_period_end_date = '2019-02-28'
            mock_menu_controller_pagination_meta.return_value = {
                'total_rows': 1,
                'total_pages': 1,
                'current_page': 1,
                'next_page': False,
                'prev_page': False
            }
            menu_controller = MenuController(self.request_context)

            # Act
            result = menu_controller.list_menus_range('lunch',
                                                      mock_period_start_date,
                                                      mock_period_end_date)

            # Assert
            assert result.status_code == 200
            assert result.get_json()['msg'] == 'OK'
Example #13
0
def new_menu_item(place_id):
    if request.method == "POST":
        new_menu = Menu(name=request.form["name"],
                        course=request.form["course"],
                        description=request.form["description"],
                        price=request.form["price"],
                        place_id=place_id,
                        user_id=current_user.id)
        db.session.add(new_menu)
        db.session.commit()
        flash("Just add a new menu item", "success")
        return redirect(url_for("home.show_menu", place_id=place_id))
    return render_template("new_menu.html", place_id=place_id)
    def test_delete_menu_already_deleted(self, mock_menu_repo_get):
        '''Test response on delete_menu when menu is already
        deleted.
        '''
        # Arrange
        with self.app.app_context():
            mock_menu_repo_get.return_value = Menu(is_deleted=True)
            menu_controller = MenuController(self.request_context)

            # Act
            result = menu_controller.delete_menu(1)

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'Menu has already been deleted'
Example #15
0
def save_menu(form):
    session = ORM.db()
    try:
        menu = Menu(game_id=form.id.data,
                    item=form.name.data,
                    url=form.url.data,
                    createdAt=dt())
        session.add(menu)
    except Exception as e:
        session.rollback()
    else:
        session.commit()
    finally:
        session.close()
    return
Example #16
0
    def post(self):

        try:
            form = request.get_json(force=True)
            # print(form)
            name = form.get('name')
            if name is None:
                ret = {'message': 'Menu name is required'}
                return Response(json.dumps(ret),
                                status=400,
                                mimetype='application/json')

            used = form.get('used')
            if used is None:
                used = 0
            try:
                used = int(used)
            except Exception as e:
                print(e)
                ret = {'message': ('Used must be 0 or 1,' ' 1 means in use')}
                return Response(json.dumps(ret),
                                status=400,
                                mimetype='application/json')

            if used != 0 and used != 1:
                ret = {'message': ('Used must be 0 or 1,' ' 1 means in use')}
                return Response(json.dumps(ret),
                                status=400,
                                mimetype='application/json')

            menu = Menu()
            menu.name = name
            menu.used = used
            menu.restId = 1
            menu.delete = False
            db.session.add(menu)
            db.session.commit()

            ret = {'message': 'Add a new menu successfully', 'id': menu.id}
            return Response(json.dumps(ret),
                            status=200,
                            mimetype='application/json')
        except Exception as e:
            print(e)
            ret = {'message': 'Internal Server Error'}
            return Response(json.dumps(ret),
                            status=500,
                            mimetype='application/json')
Example #17
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
    def test_delete_menu_successful(self, mock_menu_repo_get,
                                    mock_meal_repo_update):
        '''Test delete_menu success.
        '''
        with self.app.app_context():
            mock_menu_repo_get.return_value = Menu(is_deleted=False)
            mock_meal_repo_update.return_value = Mock()
            menu_controller = MenuController(self.request_context)

            # Act
            result = menu_controller.delete_menu(1)

            # Assert
            assert result.status_code == 200
            assert result.get_json()['msg'] == 'Menu deleted'
            assert result.get_json()['payload']['status'] == 'success'
Example #19
0
 def put(self, menu_id):
     """Update a menu item"""
     menu = Menu.find_by_id(meal_id=menu_id)
     if menu is None:
         return {
             "message":
             "The menu item with an id number %s doesn't"
             " exist" % menu_id
         }, 404
     args = self.parser.parse_args()
     name = args.get("name", "")
     description = args.get("description", "")
     price = args.get("price", "")
     if empty(name) or empty(description) or empty(price):
         return {
             "message":
             "You have to specify all"
             " details of an item"
             " such as name, price, description"
         }, 403
     if not valid_name(name):
         return {"message": "Please specify a valid name for item"}, 403
     if not valid_price(price):
         return {
             "message": "Please specify a valid price"
             " for the item"
         }, 403
     if not valid_description(description):
         return {
             "message": "Please specify a valid description "
             "for the item"
         }
     menu_item = Menu(name, description, 200)
     menu_item.id = menu.id
     updated = menu_item.update()
     if updated:
         return {
             "message": "The menu item was successfully updated",
             "menu_item": menu_item.json
         }, 200
     else:
         return {
             "message":
             "There was a problem updating the menu item"
             " maybe you provided a name already taken by"
             " another menu item"
         }, 400
Example #20
0
def admin_menu():
    form = MenuForm()
    menuItems = Menu.query.all()
    if request.method=='POST':
        file = form.m_img.data
        filename = file.filename
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        menu = Menu(
            m_title = form.m_title.data,
            m_price = form.m_price.data,
            m_content = form.m_content.data,
            m_img = filename
        )
        db.session.add(menu)
        db.session.commit()
        return redirect(url_for('admin_menu'))
    return loginCheck(render_template('admin/menu.html',form = form,menuItems=menuItems))
Example #21
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'])
    def test_list_menus_valid_meal_period_date(self,
                                               mock_menu_repo_get_meal_items,
                                               mock_meal_repo_get,
                                               mock_menu_repo_get_unpaginated,
                                               mock_auth_get_location,
                                               mock_meal_periods_has_value):
        '''Test list_menus response when the meal period or date is valid.
        '''
        # Arrange
        with self.app.app_context():
            mock_menu = Menu(date=datetime.now(),
                             meal_period='',
                             location_id=1,
                             main_meal_id=1,
                             allowed_side=1,
                             allowed_protein=1,
                             side_items='',
                             protein_items='',
                             vendor_engagement_id=1,
                             created_at=datetime.now(),
                             updated_at=datetime.now())
            mock_meal_item = MealItem(id=1,
                                      meal_type=1,
                                      name='',
                                      image='',
                                      location_id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now())
            mock_meal_periods_has_value.return_value = True
            mock_auth_get_location.return_value = 1
            mock_menu_repo_get_unpaginated.return_value = [
                mock_menu,
            ]
            mock_meal_repo_get.return_value = mock_meal_item
            mock_menu_repo_get_meal_items.return_value = []
            menu_controller = MenuController(self.request_context)

            # Act
            result = menu_controller.list_menus('lunch', '2019-02-01')

            # Assert
            assert result.status_code == 200
            assert result.get_json()['msg'] == 'OK'
Example #23
0
def addmenu():
    nam = []
    form = MenuForm()
    meal = Meal.query.all()
    for m in meal:
        nam.append(m.name)
        print(m.name)
    if request.method == 'POST':
        req = request.form
        mname = req['meal_name']
        type = req['meal_type']
        week = req['weekday']
        menu = Menu(meal_name=mname,
                    description=form.description.data,
                    type=type,
                    week_day=week)
        db.session.add(menu)
        db.session.commit()
        return redirect(url_for('result'))
    return render_template('addMenu.html', form=form, nam=nam)
Example #24
0
        def post(current_user, self, meal_id):
            if not current_user.type_admin:
                response = jsonify(
                    {"message": "Not authorized to perform this function!"})
                response.status_code = 401
                return response

            meal = Meal.query.filter_by(id=meal_id).first()

            if not meal:
                response = jsonify({"message": "Meal not available"})
                response.status_code = 404
                return response

            menus = Menu(meal.m_name, meal.category, meal.price)
            menus.save()

            response = jsonify({"message": "Meal added to menu"})
            response.status_code = 200
            return response
Example #25
0
	def post(self):
		parser = reqparse.RequestParser()
		parser.add_argument('name', required = True, 
			help = 'This can not be blank')
		parser.add_argument('description', type = str, 
			default = "")
		data = parser.parse_args()
		new_menu = Menu(
			name = data['name'],
			description = data['description']
		)
		try:
			new_menu.add_menu_to_db()
			return {
			    'message': 'Menu {} created successfully'.format(data['name'])
			}, 201
		except:
			return {
			    'message': 'Something went wrong.'
			}, 500
    def test_update_menu_ok_response(self, mock_meal_item_repo_get,
                                     mock_menu_repo_update, mock_menu_repo_get,
                                     mock_menu_controller_request_params):
        '''Test update_menu when the response is OK.
        '''
        # Arrange
        with self.app.app_context():
            mock_menu_controller_request_params.return_value = ('2019-01-01',
                                                                'lunch', 1, 1,
                                                                1, '1,1',
                                                                '1,2', 1)
            mock_menu = Menu(date=datetime.now(),
                             meal_period='',
                             location_id=1,
                             main_meal_id=1,
                             allowed_side=1,
                             allowed_protein=1,
                             side_items='1,2',
                             protein_items='1,2',
                             vendor_engagement_id=1,
                             created_at=datetime.now(),
                             updated_at=datetime.now())
            mock_meal_item = MealItem(id=1,
                                      meal_type=1,
                                      name='',
                                      image='',
                                      location_id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now())
            mock_menu_repo_get.return_value = mock_menu
            mock_menu_repo_update.return_value = mock_menu
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_menu_id = 1
            menu_controller = MenuController(self.request_context)

            # Act
            result = menu_controller.update_menu(mock_menu_id)

            # Assert
            assert result.status_code == 200
            assert result.get_json()['msg'] == 'OK'
Example #27
0
def menu_add():
    """添加菜单

    @@@
    #### args

    | args | nullable | type | remark |
    |--------|--------|--------|--------|
    |    menu_name    |    False    |    String   |    菜单昵称    |
    |    menu_path    |    True    |    String   |    菜单路径     |
    |    menu_icon    |    True    |    String   |    菜单图标类    |
    |    parent_id    |    True    |    Int   |    所属菜单    |
    #### return
    - ##### json
    > {"msg": "success", "code": 200}
    @@@
    """
    menu_name = request.form.get("menu_name")
    menu_path = request.form.get("menu_path") if request.form.get(
        "menu_path") else None
    menu_icon = request.form.get("menu_icon") if request.form.get(
        "menu_icon") else "icon"
    parent_id = request.form.get("parent_id") if request.form.get(
        "parent_id") else 0
    if menu_name is None:
        return jsonify({"status": 201, "msg": "菜单昵称不能为空"})
    elif Menu.query.filter_by(menu_name=menu_name).first() is not None:
        return jsonify({"status": 202, "msg": "菜单项已存在"})
    else:
        res = Menu(menu_name=menu_name,
                   menu_path=menu_path,
                   menu_icon=menu_icon,
                   parent_id=parent_id)
        db.session.add(res)
        db.session.commit()
        return jsonify({
            "username": res.menu_name,
            "status": 200,
            "msg": "添加成功"
        })
Example #28
0
def menu_create(icon, url, name, identifier, is_hide, is_hide_children, important, parent_id):
    try:
        new_menu = Menu()
        new_menu.icon = icon
        new_menu.url = url
        new_menu.name = name
        new_menu.identifier = identifier

        if is_hide == 1:
            new_menu.is_hide = True
        elif is_hide == 2:
            new_menu.is_hide = False
        else:
            raise Exception('is_hide_children information is incorrect, 1 is True, 2 is False')

        if is_hide_children == 1:
            new_menu.is_hide_children = True
        elif is_hide_children == 2:
            new_menu.is_hide_children = False
        else:
            raise Exception('is_hide_children information is incorrect, 1 is True, 2 is False')

        new_menu.important = important
        if parent_id:
            parent_menu = db.session.query(Menu).filter_by(id=parent_id).first()
            if parent_menu:
                new_menu.parent_id = parent_id
            else:
                new_menu.parent_id = 0
        else:
            new_menu.parent_id = 0

        db.session.add(new_menu)
        db.session.flush()
        db.session.commit()
        return new_menu.id
    except Exception as e:
        # print(e)
        raise Exception('Database operation exception')
    def test_update_menu_when_menu_is_deleted(
            self, mock_menu_repo_get, mock_menu_controller_request_params):
        '''Test update_menu when the menu is deleted.
        '''
        # Arrange
        with self.app.app_context():
            mock_deleted_menu = Menu(is_deleted=True)
            mock_menu_repo_get.return_value = mock_deleted_menu
            mock_menu_controller_request_params.return_value = (None, None,
                                                                None, None,
                                                                None, None,
                                                                None, None)
            mock_menu_id = 1
            menu_controller = MenuController(mock_menu_id)

            # Act
            result = menu_controller.update_menu(mock_menu_id)

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'This menu is ' \
                'already deleted'
Example #30
0
def menu_create(options=None):
    new_menu = Menu()
    new_menu.icon = options['icon']
    new_menu.url = options['url']
    new_menu.name = options['name']
    new_menu.identifier = options['identifier']

    if options['is_hide'] == 1:
        new_menu.is_hide = True
    elif options['is_hide'] == 2:
        new_menu.is_hide = False
    else:
        print('is_hide')
        return False

    if options['is_hide_children'] == 1:
        new_menu.is_hide_children = True
    elif options['is_hide_children'] == 2:
        new_menu.is_hide_children = False
    else:
        print('is_hide_children')
        return False

    # new_menu.is_hide = False
    # new_menu.is_hide_children = False
    new_menu.important = options['important']
    if options['parent_id']:
        parent_menu = db.session.query(Menu).filter_by(id=options['parent_id']).first()
        if parent_menu:
            new_menu.parent_id = options['parent_id']
        else:
            new_menu.parent_id = 0
    else:
        new_menu.parent_id = 0
    try:
        db.session.add(new_menu)
        db.session.commit()
    except Exception, e:
        return False