コード例 #1
0
ファイル: menu.py プロジェクト: lopatinsky/automation-gae
 def get(self):
     item_id = self.request.get_range('item_id')
     item = MenuItem.get_by_id(item_id)
     if not item:
         self.abort(400)
     status = self.STATUS_MAP[item.status]
     self.render('/menu/item_info.html', item=item, status=status)
コード例 #2
0
ファイル: menu.py プロジェクト: lopatinsky/automation-gae
 def get(self):
     category_id = self.request.get_range('category_id')
     category = MenuCategory.get_by_id(category_id)
     if not category:
         self.abort(400)
     product_id = self.request.get_range('item_id')
     product = MenuItem.get_by_id(product_id)
     if not product:
         self.abort(400)
     self.render('/menu/add_item.html', product=product, category=category)
コード例 #3
0
def delete_menu_item(restaurant_id, menu_item_id):
    restaurant = Restaurant.get_by_id(restaurant_id)
    menu_item = MenuItem.get_by_id(menu_item_id)
    if request.method == 'POST':
        menu_item.delete()
        flash('Menu item deleted')
        return redirect(
            url_for('single_restaurant', restaurant_id=restaurant.id))
    else:
        return render_template('delete-menu-item.html',
                               restaurant=restaurant,
                               menu_item=menu_item)
コード例 #4
0
def edit_menu_item(restaurant_id, menu_item_id):
    restaurant = Restaurant.get_by_id(restaurant_id)
    menu_item = MenuItem.get_by_id(menu_item_id)
    if request.method == 'POST':
        menu_item_name = request.form['menu_item_name']
        menu_item_description = request.form['menu_item_description']
        menu_item_price = request.form['menu_item_price']
        menu_item.update(name=menu_item_name,
                         description=menu_item_description,
                         price=menu_item_price)
        flash('Menu item edited')
        return redirect(
            url_for('single_restaurant', restaurant_id=restaurant_id))
    else:
        return render_template('edit-menu-item.html',
                               restaurant=restaurant,
                               menu_item=menu_item)
コード例 #5
0
def menu_items_table(start, end, venue_id=0):
    suited_menu_items = {}
    query = Order.query(Order.status == READY_ORDER,
                        Order.date_created >= start, Order.date_created < end)
    if venue_id != 0:
        query = query.filter(Order.venue_id == str(venue_id))
    for order in query.fetch():
        for item_detail in order.item_details:
            item_id = item_detail.item.id()
            if item_id in suited_menu_items:
                suited_menu_items[item_id].add_order()
            else:
                item = MenuItem.get_by_id(item_id)
                suited_menu_items[item_id] = ReportedMenuItem(
                    item_id, item.title, item.price / 100.0)
    return suited_menu_items, \
        sum(item.order_number for item in suited_menu_items.values()),\
        sum(item.order_number * item.price for item in suited_menu_items.values())
コード例 #6
0
ファイル: menu.py プロジェクト: lopatinsky/automation-gae
 def post(self):
     category_id = self.request.get_range('category_id')
     category = MenuCategory.get_by_id(category_id)
     if not category:
         self.abort(400)
     product_id = self.request.get_range('product_id')
     item = MenuItem.get_by_id(product_id)
     if not item:
         self.abort(400)
     item.title = self.request.get('title')
     item.description = self.request.get('description')
     if self.request.get('price'):
         price = float(self.request.get('price'))
         item.price = int(round(price * 100))
     else:
         item.price = 0
     item.kal = self.request.get_range('kal')
     if self.request.get('volume') and self.request.get('volume') != 'None':
         item.volume = float(self.request.get('volume'))
     else:
         item.volume = 0
     if self.request.get('weight') and self.request.get('weight') != 'None':
         item.weight = float(self.request.get('weight'))
     else:
         item.weight = 0
     item.picture = None
     item.cut_picture = None
     item.icon = None
     if self.request.get('image_file') or self.request.get('picture'):
         if self.request.get('image_file'):
             new_url = get_new_image_url('MenuItem', item.key.id(), image_data=str(self.request.get('image_file')))
             if new_url:
                 item.picture = new_url
         elif self.request.get('picture'):
             new_url = get_new_image_url('MenuItem', item.key.id(), url=self.request.get('picture'))
             if new_url:
                 item.picture = new_url
     if item.picture:
         item.icon = get_new_image_url('MenuItemIcon', item.key.id(), url=item.picture, size=ICON_SIZE)
     item.put()
     self.redirect('/company/menu/item/list?category_id=%s' % category_id)
コード例 #7
0
ファイル: menu.py プロジェクト: lopatinsky/automation-gae
 def post(self):
     category_id = self.request.get_range('category_id')
     category = MenuCategory.get_by_id(category_id)
     if not category:
         self.abort(400)
     product_id = self.request.get_range('product_id')
     product = MenuItem.get_by_id(product_id)
     if not product:
         self.abort(400)
     next_ = category.get_next(product)
     if not next_:
         self.abort(400)
     _swap_sequence_numbers(product, next_)
     product.put()
     next_.put()
     self.response.headers["Content-Type"] = "application/json"
     self.response.write(json.dumps({
         'success': True,
         'product_id': product.key.id(),
         'next_id': next_.key.id()
     }, separators=(',', ':')))
コード例 #8
0
 def _process_item_dict(item_dict, gift=False):
     item_obj = copy.copy(MenuItem.get_by_id(int(item_dict['id'])))
     item_obj.amount = item_dict['quantity']
     item_obj.total_float_price = item_obj.float_price * item_obj.amount
     item_obj.modifiers = []
     item_obj.is_gift = gift
     for modifier_dict in item_dict['single_modifiers']:
         modifier = SingleModifier.get_by_id(int(modifier_dict['id']))
         modifier.amount = modifier_dict['quantity']
         modifier.total_float_price = modifier.float_price * modifier.amount
         item_obj.total_float_price += modifier.total_float_price * item_obj.amount
         item_obj.modifiers.append(modifier)
     for modifier_dict in item_dict['group_modifiers']:
         modifier = GroupModifier.get_by_id(int(modifier_dict['id']))
         choice = modifier.get_choice_by_id(int(modifier_dict['choice']))
         choice.amount = modifier_dict['quantity']
         choice.total_float_price = choice.float_price * choice.amount
         item_obj.total_float_price += choice.total_float_price * item_obj.amount
         item_obj.modifiers.append(choice)
     if gift:
         item_obj.total_float_price = 0.0
     return item_obj
コード例 #9
0
 def post(self):
     item_id = self.request.get('product_id')
     choice_ids = []
     if item_id:
         item = MenuItem.get_by_id(int(item_id))
         for modifier in item.group_modifiers:
             modifier = modifier.get()
             choice_id = self.request.get_range(
                 'modifier_%s_%s' % (item.key.id(), modifier.key.id()))
             if choice_id:
                 choice = modifier.get_choice_by_id(choice_id)
                 if choice:
                     choice_ids.append(choice_id)
     else:
         item = None
     promo_id = self.request.get_range('promo_id')
     promo = Promo.get_by_id(promo_id)
     if not promo:
         self.abort(400)
     feature_type = self.request.get_range('feature_type')
     if feature_type not in FEATURES_TYPES:
         self.abort(400)
     number = self.request.get_range('number')
     feature = None
     if feature_type == OUTCOME:
         if len(promo.outcomes) <= number:
             self.abort(400)
         feature = promo.outcomes[number]
     elif feature_type == CONDITION:
         if len(promo.conditions) <= number:
             self.abort(400)
         feature = promo.conditions[number]
     if item:
         feature.item_details.item = item.key
         feature.item_details.group_choice_ids = choice_ids
     else:
         feature.item_details.item = None
     promo.put()
     self.redirect('/company/promos/list')
コード例 #10
0
def single_menu_item_JSON(restaurant_id, menu_item_id):
    menu_item = MenuItem.get_by_id(menu_item_id)
    return jsonify(menu_item=menu_item.serialize)
コード例 #11
0
    def post(self):
        venue = self.venue_or_error
        if not venue:
            return self.send_error(u'Нет связки с точкой')
        stop_list = json.loads(self.request.get('stop_list'))
        for item_id in stop_list.get('stopped'):
            item = MenuItem.get_by_id(int(item_id))
            if not item:
                return self.send_error(u'Продукт не найден')
            if item.status != STATUS_AVAILABLE:
                return self.send_error(
                    u'Продукт %s не имеет статуса доступен' % item.title)
            if venue.key in item.restrictions:
                return self.send_error(
                    u'Продукт %s недоступен в данном заведении' % item.title)
            if item.key in venue.stop_lists:
                return self.send_error(u'Продукт %s уже в стоп-листе' %
                                       item.title)
            venue.stop_lists.append(item.key)
        for item_id in stop_list.get('recovered'):
            item = MenuItem.get_by_id(int(item_id))
            if not item:
                return self.send_error(u'Продукт не найден')
            if item.status != STATUS_AVAILABLE:
                return self.send_error(
                    u'Продукт %s не имеет статуса доступен' % item.title)
            if venue.key in item.restrictions:
                return self.send_error(
                    u'Продукт %s недоступен в данном заведении' % item.title)
            if item.key not in venue.stop_lists:
                return self.send_error(
                    u'Продукт %s не находится в стоп-листе' % item.title)
            venue.stop_lists.remove(item.key)
        for single_modifier_id in stop_list.get('stopped_single_modifiers'):
            item = SingleModifier.get_by_id(int(single_modifier_id))
            if not item:
                return self.send_error(u'Одиночный модификатор не найден')
            if item.key in venue.single_modifiers_stop_list:
                return self.send_error(
                    u'Одиночный модификатор %s уже в стоп-листе' % item.title)
            venue.single_modifiers_stop_list.append(item.key)
        for single_modifier_id in stop_list.get('recovered_single_modifiers'):
            item = SingleModifier.get_by_id(int(single_modifier_id))
            if not item:
                return self.send_error(u'Одиночный модификатор не найден')
            if item.key not in venue.single_modifiers_stop_list:
                return self.send_error(
                    u'Одиночный модификатор %s не находится в стоп-листе' %
                    item.title)
            venue.single_modifiers_stop_list.remove(item.key)
        for group_choice_id in stop_list.get('stopped_group_choices'):
            item = GroupModifierChoice.query(
                GroupModifierChoice.choice_id == int(group_choice_id)).get()
            if not item:
                return self.send_error(
                    u'Выбор группового модификатора не найден')
            if item.key in venue.group_choice_modifier_stop_list:
                return self.send_error(
                    u'Выбор группового модификатора %s уже в стоп-листе' %
                    item.title)
            venue.group_choice_modifier_stop_list.append(item.key)
        for group_choice_id in stop_list.get('recovered_group_choices'):
            item = GroupModifierChoice.query(
                GroupModifierChoice.choice_id == int(group_choice_id)).get()
            if not item:
                return self.send_error(
                    u'Выбор группового модификатора не найден')
            if item.key not in venue.group_choice_modifier_stop_list:
                return self.send_error(
                    u'Выбор группового модификатора %s не находится в стоп-листе'
                    % item.title)
            venue.group_choice_modifier_stop_list.remove(item.key)

        for group_choice_id_with_item_id in stop_list.get(
                'stopped_group_choices_with_item_id'):
            group_choice_id = int(
                group_choice_id_with_item_id.get('choice_id'))
            item_id = group_choice_id_with_item_id.get('item_id')
            modifier = GroupModifier.get_modifier_by_choice(group_choice_id)
            item = MenuItem.get_by_id(int(item_id))
            if not modifier:
                return self.send_error(
                    u'Выбор группового модификатора не найден')
            if not item:
                return self.send_error(u"Продукт не найден")
            if modifier.key not in item.group_modifiers:
                return self.send_error(
                    u"Продукт не связан с этим групповым модификатором")
            if group_choice_id in item.stop_list_group_choices:
                return self.send_error(
                    u'Выбор группового модификатора %s уже в стоп-листе' %
                    item.title)
            item.stop_list_group_choices.append(group_choice_id)
            item.put()
        for group_choice_id_with_item_id in stop_list.get(
                'recovered_group_choices_with_item_id'):
            group_choice_id = int(
                group_choice_id_with_item_id.get('choice_id'))
            item_id = group_choice_id_with_item_id.get('item_id')
            modifier = GroupModifier.get_modifier_by_choice(group_choice_id)
            item = MenuItem.get_by_id(int(item_id))
            if not modifier:
                return self.send_error(
                    u'Выбор группового модификатора не найден')
            if not item:
                return self.send_error(u"Продукт не найден")
            if modifier.key not in item.group_modifiers:
                return self.send_error(
                    u"Продукт не связан с этим групповым модификатором")
            if group_choice_id not in item.stop_list_group_choices:
                return self.send_error(
                    u'Выбор группового модификатора %s не в стоп-листе' %
                    item.title)
            item.stop_list_group_choices.remove(group_choice_id)
            item.put()
        venue.put()
        self.render_json({'success': True})