From 3b6b1aa5b668c8ed034fa504b67cd3842de22092 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 24 Sep 2021 18:09:24 -0400 Subject: [PATCH] Invoke handler for customer autocomplete when making new custorder --- .../static/js/tailbone.buefy.autocomplete.js | 5 +++- tailbone/templates/autocomplete.mako | 2 +- tailbone/templates/custorders/create.mako | 2 +- tailbone/views/custorders/orders.py | 24 ++++++++++++++++--- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/tailbone/static/js/tailbone.buefy.autocomplete.js b/tailbone/static/js/tailbone.buefy.autocomplete.js index 2b442416..eb36fa74 100644 --- a/tailbone/static/js/tailbone.buefy.autocomplete.js +++ b/tailbone/static/js/tailbone.buefy.autocomplete.js @@ -59,8 +59,11 @@ const TailboneAutocomplete = { }, getDisplayText() { + if (this.assignedLabel) { + return this.assignedLabel + } if (this.selected) { - return this.selected.label + return this.selected.display || this.selected.label } return "" }, diff --git a/tailbone/templates/autocomplete.mako b/tailbone/templates/autocomplete.mako index 05339e12..e7aad900 100644 --- a/tailbone/templates/autocomplete.mako +++ b/tailbone/templates/autocomplete.mako @@ -80,7 +80,7 @@ - {{ assignedLabel || selected.label }} (click to change) + {{ getDisplayText() }} (click to change) diff --git a/tailbone/templates/custorders/create.mako b/tailbone/templates/custorders/create.mako index 55797ed6..61df8552 100644 --- a/tailbone/templates/custorders/create.mako +++ b/tailbone/templates/custorders/create.mako @@ -113,7 +113,7 @@ v-model="customerUUID" placeholder="Enter name or phone number" :initial-label="customerDisplay" - serviceUrl="${url('customers.autocomplete')}" + serviceUrl="${url('{}.customer_autocomplete'.format(route_prefix))}" @input="customerChanged"> diff --git a/tailbone/views/custorders/orders.py b/tailbone/views/custorders/orders.py index 304ccc37..4553a19b 100644 --- a/tailbone/views/custorders/orders.py +++ b/tailbone/views/custorders/orders.py @@ -236,14 +236,14 @@ class CustomerOrderView(MasterView): if self.handler.has_custom_product_autocomplete: route_prefix = self.get_route_prefix() - autocomplete = '{}.product_autocomplete'.format(route_prefix) + product_autocomplete = '{}.product_autocomplete'.format(route_prefix) else: - autocomplete = 'products.autocomplete' + product_autocomplete = 'products.autocomplete' context = {'batch': batch, 'normalized_batch': self.normalize_batch(batch), 'order_items': items, - 'product_autocomplete_url': self.request.route_url(autocomplete)} + 'product_autocomplete_url': self.request.route_url(product_autocomplete)} return self.render_to_response(template, context) def get_current_batch(self): @@ -296,6 +296,15 @@ class CustomerOrderView(MasterView): url = self.request.route_url(route_prefix) return self.redirect(url) + def customer_autocomplete(self): + """ + Custom customer autocomplete logic, which invokes the handler. + """ + self.handler = self.get_batch_handler() + term = self.request.GET['term'] + return self.handler.customer_autocomplete(self.Session(), term, + user=self.request.user) + def get_customer_info(self, batch, data): uuid = data.get('uuid') if not uuid: @@ -583,6 +592,15 @@ class CustomerOrderView(MasterView): route_prefix = cls.get_route_prefix() url_prefix = cls.get_url_prefix() + # customer autocomplete + config.add_route('{}.customer_autocomplete'.format(route_prefix), + '{}/customer-autocomplete'.format(url_prefix), + request_method='GET') + config.add_view(cls, attr='customer_autocomplete', + route_name='{}.customer_autocomplete'.format(route_prefix), + renderer='json', + permission='customers.list') + # custom product autocomplete config.add_route('{}.product_autocomplete'.format(route_prefix), '{}/product-autocomplete'.format(url_prefix),