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)
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)
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)
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)
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())
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)
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=(',', ':')))
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
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')
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)
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})