From 712fd29f6af7c044a658e03ea87012b3c7c19f2f Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 19 Mar 2018 12:24:05 +0100 Subject: [PATCH] Start work on live orders menu --- strings.py | 14 ++++++++++++-- worker.py | 19 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/strings.py b/strings.py index f5a372c..a64f630 100644 --- a/strings.py +++ b/strings.py @@ -60,6 +60,10 @@ conversation_confirm_cart = "Il tuo carrello contiene questi prodotti:\n" \ "Totale: {total_cost}\n" \ "Procedere?" +# Conversation: the user activated the live orders mode +conversation_live_orders_start = "Hai avviato la modalità Ordini Live!\n" \ + "Per interrompere il flusso di ordini, manda un qualsiasi messaggio in chat." + # Notification: the conversation has expired conversation_expired = "🕐 Il bot non ha ricevuto messaggi per un po' di tempo, quindi ha chiuso la conversazione.\n" \ "Per riavviarne una nuova, invia il comando /start." @@ -176,6 +180,12 @@ success_product_edited = "✅ Il prodotto è stato aggiunto/modificato con succe # Success: product has been added/edited to the database success_product_deleted = "✅ Il prodotto è stato eliminato con successo!" +# Order: set as complete +order_complete = "✅ Completa" + +# Order: set as refunded +order_refund = "✴️ Rimborsa" + # Success: order has been created success_order_created = "✅ L'ordine è stato inviato con successo!" @@ -196,7 +206,7 @@ error_payment_amount_under_min = "⚠️ Il minimo di fondi che possono essere a error_invoice_expired = "⚠️ Questo pagamento è scaduto ed è stato annullato. Se vuoi ancora aggiungere fondi, usa l'opzione Aggiungi fondi del menu." # Error: a product with that name already exists -error_duplicate_name = "️⚠ Esiste già un prodotto con questo nome." +error_duplicate_name = "️⚠️ Esiste già un prodotto con questo nome." # Error: not enough credit to order -error_not_enough_credit = "⚠ Non hai credito sufficiente per effettuare l'ordine." +error_not_enough_credit = "⚠️ Non hai credito sufficiente per effettuare l'ordine." diff --git a/worker.py b/worker.py index 54d54ea..cd6658a 100644 --- a/worker.py +++ b/worker.py @@ -42,6 +42,8 @@ class ChatWorker(threading.Thread): self.queue = queuem.Queue() # The current active invoice payload; reject all invoices with a different payload self.invoice_payload = None + # Listening mode flag: if set, display the received orders in real time + self.listening_mode = False def run(self): """The conversation code.""" @@ -379,7 +381,8 @@ class ChatWorker(threading.Thread): self.bot.send_message(admin.user_id, f"{strings.notification_order_placed.format(order=order.get_text(self.session))}") def __order_status(self): - raise NotImplementedError() + """Display the status of the sent orders.""" + pass def __add_credit_menu(self): """Add more credit to the account.""" @@ -681,7 +684,19 @@ class ChatWorker(threading.Thread): self.bot.send_message(self.chat.id, strings.success_product_deleted) def __orders_menu(self): - raise NotImplementedError() + """Display a live flow of orders.""" + # Send a small intro message on the Live Orders mode + self.bot.send_message(self.chat.id, strings.conversation_live_orders_start) + # Create the order keyboard + order_keyboard = telegram.InlineKeyboardMarkup([[telegram.InlineKeyboardButton(strings.order_complete)], + [telegram.InlineKeyboardButton(strings.order_refund)]]) + # Display the past pending orders + orders = self.session.query(db.Order).filter(db.Order.delivery_date == None).all() + # Create a message for every one of them + for order in orders: + # Send the created message + self.bot.send_message(self.chat.id, order.get_text(session=self.session), reply_markup=order_keyboard) + def __graceful_stop(self): """Handle the graceful stop of the thread."""