Exemplo n.º 1
0
 def _get_trader(self, trader_id):
     """
     enter in current order and display form for work with it
     :param trader_id:
     :return TraderUser:
     """
     trader_user = TraderUser(trader_id=trader_id)
     trader_user.load_current(db=self.BD)
     return trader_user
Exemplo n.º 2
0
 def _add_trader(self, message):
     """
     add new user with role 'Trader'
     """
     user = User(chat_id=message.chat.id, role=config.Role.Trader)
     trader_id = self.BD.save_element(user)
     trader_user = TraderUser(trader_id=trader_id,
                              user_name=message.from_user.first_name)
     trader_user.save(self.BD)
     self.bot.send_message(message.chat.id,
                           'Приятной работы',
                           reply_markup=self.keybords.start_menu())
Exemplo n.º 3
0
 def pressed_btn_client(self, call, code):
     """
     add client to order
     :param data:
     :return:
     """
     trader = TraderUser(code['t'])
     trader.load_order(db=self.BD, order_id=code['o'])
     trader.order.set_client(client_id=code['c'])
     # calculate cost of delivery
     delivery_cost = trader.order.delivery_cost(db=self.BD)
     trader.order.save(db=self.BD)
     self.bot.answer_callback_query(
         call.id, 'Стоимость доставки {} рублей'.format(delivery_cost))
Exemplo n.º 4
0
 def _get_current_trader(self, message):
     """
     get current trader
     :param message:
     :return: TraderUser
     """
     user = self.BD.get_user(chat_id=message.chat.id)
     return TraderUser(user.id, message.from_user.first_name)
Exemplo n.º 5
0
 def pressed_btn_product(self, call, code):
     """
     обрабатывает входящие запросы на нажатие кнопок товара inline
     """
     trader = TraderUser(code['t'])
     if code['o'] is None:
         trader.order.save(self.BD)
     else:
         trader.load_order(db=self.BD, order_id=code['o'])
     if trader.add_item(db=self.BD, product_id=code['p']):
         product = self.BD.select_single_product(code['p'])
         self.bot.answer_callback_query(call.id,
                                        MESSAGES['product_order'].format(
                                            product.name, product.title,
                                            product.price,
                                            product.quantity),
                                        show_alert=True)
     else:
         self.bot.answer_callback_query(call.id,
                                        'Недостаточно товаров на складе',
                                        show_alert=True)
Exemplo n.º 6
0
 def orders_info_menu(self, trader_user: TraderUser):
     """
     create inline-menu of trader's orders
     :param trader_user:
     :return: markup
     """
     orders = trader_user.get_orders(self.BD)
     self.markup = InlineKeyboardMarkup(row_width=1)
     if len(orders):
         for order in orders:
             # dump a data to json string
             # keys & values are: 'm' - menu: 'o' - orders (choose one order to work with)
             #                    't' - trader id
             #                    'o' - current order id
             data = json.dumps(
                 {
                     'm': 'o',
                     't': trader_user.id,
                     'o': order.id
                 },
                 separators=(',', ':'))
             self.markup.add(self.set_inline_btn(str(order), data))
         return self.markup