示例#1
0
    def post(self):
        #data = parser.parse_args()
        data = request.get_json(force=True)
        #pdb.set_trace()
        customer = UserDao.get_user_by_id(data['user_id'])
        if customer != None:
            if service.hash_password_verify(data['user_password'],
                                            customer.password, customer.id):
                login_user(customer)
                identity_changed.send(current_app._get_current_object(),
                                      identity=Identity(customer.id))

                return {
                    'URL':
                    "/users/%d/%d/menu" %
                    (int(customer.id), data['restaurant_id'])
                }, 200
            else:
                return {'message': 'login error'}, 400
        else:
            #加密密码,可用service.hash_password_verify(password, hash_password, account)认证
            password = service.hash_password(data['user_password'],
                                             data['user_id'])
            UserDao.add_user(data['user_id'], password)
            DaoHelper.commit(db)

            customer = UserDao.get_user_by_id(data['user_id'])
            login_user(customer)
            identity_changed.send(current_app._get_current_object(),
                                  identity=Identity(customer.id))
            return {
                'URL':
                "/users/%d/%d/menu" %
                (int(data['user_id']), data['restaurant_id'])
            }, 200
示例#2
0
    def put(self, restaurant_id, food_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        food = FoodDao.get_food_by_id(food_id)
        #pdb.set_trace()
        if food == None:
            #由于传进来的json是数组形式来存储数据的,所以需要index来检索
            food = data['foods'][0]
            FoodDao.add_food(food['name'], food['price'], food['food_type'],
                             food['description'], food['image'],
                             service.str2bool(food['available']),
                             food['restaurant_id'])
            food_id = FoodDao.get_food_by_name(food['name']).id
        else:
            #food['available'] = service.str2bool(food['available'])
            #keys, values = service.get_keys_values(data['foods'][0])
            dict = data['foods'][0]
            dict['available'] = service.str2bool(dict['available'])
            FoodDao.update_food(int(food_id), dict)
        #pdb.set_trace()
        DaoHelper.commit(db)
        return {
            "URL":
            "/restaurants/%d/menu/%d" % (int(restaurant_id), int(food_id))
        }, 200
示例#3
0
    def post(self, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        #foods是一个list类型,里面的元素是food_item的json
        foods = data['foods']
        for i in range(len(foods)):
            food = FoodDao.get_food_by_name(foods[i]['name'])
            #如果提交的food的信息数据库里面有相同id,则更新它
            #pdb.set_trace()
            if food != None:
                foods[i]['available'] = service.str2bool(foods[i]['available'])
                #keys, values = service.get_keys_values(foods[i])
                FoodDao.update_food(food.id, foods[i])
            #如果没有则创建
            else:
                FoodDao.add_food(foods[i]['name'], foods[i]['price'],
                                 foods[i]['food_type'],
                                 foods[i]['description'], foods[i]['image'],
                                 service.str2bool(foods[i]['available']),
                                 foods[i]['restaurant_id'])
        DaoHelper.commit(db)
        food = FoodDao.get_food_by_name(foods[0]['name'])
        return {
            'URL': "/restaurants/%d/menu/%d" % (food.restaurant_id, food.id)
        }, 200
示例#4
0
    def put(self, restaurant_id, order_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        order_items = data['order_items']
        #先把我们当前URL的order id的order_item选出来
        #然后再从中选择出name相同的部分,不是None则更新,None则创建
        for i in range(len(order_items)):
            for exist_item in OrderItemDao.get_order_items(int(order_id)):
                if order_items[i]['name'] == exist_item.name:
                    order_item = exist_item
                    break
            #如果提交的order_item的信息数据库里面有相同id,则更新它
            if order_item != None:
                #keys, values = service.get_keys_values(order_items[i])
                #pdb.set_trace()
                OrderItemDao.update_order_item(order_item.id, order_items[i])
            #如果没有则创建
            else:
                OrderItemDao.add_order_item(order_items[i]['number'],
                                            order_items[i]['name'],
                                            order_items[i]['description'],
                                            order_items[i]['image'],
                                            order_items[i]['price'],
                                            int(order_id))
        DaoHelper.commit(db)
        return {
            "URL":
            "/restaurants/%d/orders/%d" % (int(restaurant_id), int(order_id))
        }, 200
示例#5
0
    def put(self, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        data = request.get_json(force=True)
        #由于登录时会将餐厅的id POST到数据库中,所以一定可以得到restaurant
        restaurant = RestaurantDao.get_restaurant_by_id(restaurant_id)
        #用于update restaurant数据库的字典
        dict = {}
        #pdb.set_trace()
        for key, value in restaurant.__json__().items():
            #由于需要先登录才可以进行以下操作,所以可以确认restaurant_id是必定存在的
            if (key == 'id'):
                continue
            #当数据库中的数据是None时,无论data中对应的数据是否为None都更新
            if (value == None):
                dict[key] = data[key]
            #虽然数据库中的数据不是None,但是data中对应的数据存在,所以更新
            elif (data[key] != None):
                dict[key] = data[key]
            #数据库中的数据不是None,且data中对应的数据时None,则用回原来的数据
            else:
                dict[key] = value
        #keys, values = service.get_keys_values(dict)
        RestaurantDao.update_restaurant(restaurant_id, dict)
        DaoHelper.commit(db)
        return 204
示例#6
0
 def post(self):
     #data = parser.parse_args()
     data = request.get_json(force=True)
     admin = UserDao.get_user_by_id(data['restaurant_admin_id'])
     restaurant = RestaurantDao.get_restaurant_by_id(data['restaurant_id'])
     #如果管理员已经存在于数据库,则返回400,不存在就添加到数据库
     if admin != None:
         return {"message": "This administrator already exists"}, 400
     password = service.hash_password(data['restaurant_admin_password'],
                                      data['restaurant_admin_id'])
     UserDao.add_user(data['restaurant_admin_id'], password)
     #如果餐厅的ID不存在,则创建一个
     if restaurant == None:
         RestaurantDao.add_restaurant(data['restaurant_id'],
                                      data['restaurant_admin_id'])
     else:
         #更新餐厅的资料
         #key = ['id', 'name', 'information', 'user_id']
         #value = [data['restaurant_id'], data['restaurant_name'], data['restaurant_information'], data['restaurant_admin_id']]
         dictionary = {}
         dictionary['id'] = data['restaurant_id']
         dictionary['name'] = data['restaurant_name']
         dictionary['information'] = data['restaurant_information']
         dictionary['user_id'] = data['restaurant_admin_id']
         RestaurantDao.update_restaurant(data['restaurant_id'], dictionary)
     #将所有的修改从ORM添加到实体数据库中
     DaoHelper.commit(db)
     return {'URL': '/restaurants/%d/menu' % (data['restaurant_id'])}, 200
示例#7
0
    def post(self, restaurant_id, user_id):
        identityPermission = Permission(UserNeed(user_id))
        if not identityPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        order = data['orders'][0]
        order['status'] = "new"
        order_items = data['order_items']
        today = datetime.datetime.now()
        #将request里面的json key转化为数据库model的key
        '''
        for i in order_items:
            temp_item['id'] = i['order_history_item_id']
            temp_item['number'] = i['number']
            temp_item['name'] = i['name']
            temp_item['description'] = i['description']
            temp_item['image'] = i['image']
            temp_item['price'] = i['price']
            temp_item['order_history_id'] = i['order_history_id']
            items.append(temp_item.copy())
        order_items = items
        '''
        #用户自身的订单记录
        OrderHistoryDao.add_order_history(today, order['desk_number'],
                                          order['total_price'],
                                          order['restaurant_id'],
                                          order['user_id'], order_items)
        #同时要发送到餐厅的订单记录
        OrderDao.add_order(today, order['desk_number'], order['total_price'],
                           order['status'], order['restaurant_id'],
                           order_items)
        DaoHelper.commit(db)
        return 204
示例#8
0
    def delete(self, food_id, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        if FoodDao.get_food_by_id(food_id) != None:
            FoodDao.del_food(food_id)
            DaoHelper.commit(db)
            return 204
        else:
            return {
                "message": "The food %d is not in the menu" % (food_id)
            }, 400
示例#9
0
    def delete(self, order_id, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        if OrderDao.get_order(int(order_id)) != None:
            OrderDao.del_order(int(order_id))
            DaoHelper.commit(db)
            return 204
        else:
            return {
                "message": "The order %d is not in the order" % (int(order_id))
            }, 400
示例#10
0
    def delete(self, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        #pdb.set_trace()
        if OrderDao.get_order(data['order_id']) == None:
            return {
                "message": "No such order %d exists" % (data['order_id'])
            }, 400
        else:
            OrderDao.del_order(data['order_id'])
            DaoHelper.commit(db)
            return 204
示例#11
0
    def delete(self, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        if FoodDao.get_food_by_id(data['foods'][0]['food_id']) != None:
            FoodDao.del_food(data['foods'][0]['food_id'])
            DaoHelper.commit(db)
            return 204
        else:
            return {
                "message":
                "The food %d is not in the menu" %
                (data['foods'][0]['food_id'])
            }, 400
示例#12
0
    def post(self, restaurant_id):
        ownerPermission = ModRestaurantPermission(restaurant_id)
        if not ownerPermission.can():
            abort(403)

        #data = parser.parse_args()
        data = request.get_json(force=True)
        #orders是list类型的,里面的元素是orderItem
        order_items = data['order_items']
        order = data['orders'][0]
        order['status'] = "new"
        #订单的日期,year-month-day
        today = datetime.datetime.now()
        #转化成string形式
        #date = str(today)
        '''
        temp_item = {}
        items = []
        for i in order_items:
            temp_item['number'] = i['number']
            temp_item['name'] = i['name']
            temp_item['description'] = i['description']
            temp_item['image'] = i['image']
            temp_item['price'] = i['price']
            items.append(temp_item.copy())
        order_items = items
        '''
        OrderDao.add_order(today, order['desk_number'], order['total_price'],
                           order['status'], order['restaurant_id'],
                           order_items)
        DaoHelper.commit(db)
        #获得刚刚添加的订单被数据库分配的id
        #pdb.set_trace()
        order_id = OrderDao.get_restaurant_orders(restaurant_id)[-1].id
        return {
            "URL": "/restaurants/%d/orders/%d" % (int(restaurant_id), order_id)
        }, 200