From dbde3cbfbe23adaab2b8acc79953ac6a1278401c Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 14 Mar 2020 19:49:38 -0500 Subject: [PATCH] Add jump buttons to view product, vendor in CORE Office hopefully can use the same pattern for anything else that comes up --- tailbone_corepos/templates/corepos-util.mako | 18 ++++++ tailbone_corepos/templates/products/view.mako | 11 ++++ tailbone_corepos/templates/vendors/view.mako | 11 ++++ tailbone_corepos/views/products.py | 56 +++++++++++++++++++ tailbone_corepos/views/vendors.py | 49 ++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 tailbone_corepos/templates/corepos-util.mako create mode 100644 tailbone_corepos/templates/products/view.mako create mode 100644 tailbone_corepos/templates/vendors/view.mako create mode 100644 tailbone_corepos/views/products.py diff --git a/tailbone_corepos/templates/corepos-util.mako b/tailbone_corepos/templates/corepos-util.mako new file mode 100644 index 0000000..b258751 --- /dev/null +++ b/tailbone_corepos/templates/corepos-util.mako @@ -0,0 +1,18 @@ +## -*- coding: utf-8; -*- + +<%def name="render_xref_helper()"> +
+

Cross-Reference

+
+ + View in CORE Office + +
+
+ diff --git a/tailbone_corepos/templates/products/view.mako b/tailbone_corepos/templates/products/view.mako new file mode 100644 index 0000000..3cae920 --- /dev/null +++ b/tailbone_corepos/templates/products/view.mako @@ -0,0 +1,11 @@ +## -*- coding: utf-8; -*- +<%inherit file="tailbone:templates/products/view.mako" /> +<%namespace file="/corepos-util.mako" import="render_xref_helper" /> + +<%def name="object_helpers()"> + ${parent.object_helpers()} + ${render_xref_helper()} + + + +${parent.body()} diff --git a/tailbone_corepos/templates/vendors/view.mako b/tailbone_corepos/templates/vendors/view.mako new file mode 100644 index 0000000..1602fb1 --- /dev/null +++ b/tailbone_corepos/templates/vendors/view.mako @@ -0,0 +1,11 @@ +## -*- coding: utf-8; -*- +<%inherit file="/master/view.mako" /> +<%namespace file="/corepos-util.mako" import="render_xref_helper" /> + +<%def name="object_helpers()"> + ${parent.object_helpers()} + ${render_xref_helper()} + + + +${parent.body()} diff --git a/tailbone_corepos/views/products.py b/tailbone_corepos/views/products.py new file mode 100644 index 0000000..a3a40a8 --- /dev/null +++ b/tailbone_corepos/views/products.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8; -*- +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2020 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# Rattail. If not, see . +# +################################################################################ +""" +Product Views +""" + +from rattail_corepos.config import core_office_url + +from tailbone.views import products as base + + +class ProductView(base.ProductsView): + """ + Master view for the Product class. + """ + + def template_kwargs_view(self, **kwargs): + """ + Supplements the default logic as follows: + + Adds the URL for viewing the product within CORE Office, or else the + reason for lack of such a URL. + """ + kwargs = super(ProductView, self).template_kwargs_view(**kwargs) + product = kwargs['instance'] + + # CORE Office URL + kwargs['core_office_url'] = None + office_url = core_office_url(self.rattail_config) + if not office_url: + kwargs['core_office_why_no_url'] = "CORE Office URL is not configured" + else: + kwargs['core_office_url'] = '{}/item/ItemEditorPage.php?searchupc={}'.format( + office_url, product.item_id) + + return kwargs diff --git a/tailbone_corepos/views/vendors.py b/tailbone_corepos/views/vendors.py index d75ad5a..ea28dc7 100644 --- a/tailbone_corepos/views/vendors.py +++ b/tailbone_corepos/views/vendors.py @@ -1,8 +1,30 @@ # -*- coding: utf-8; -*- +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2019 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# Rattail. If not, see . +# +################################################################################ """ Vendor views """ +from rattail_corepos.config import core_office_url from rattail_corepos.corepos.util import get_max_existing_vendor_id from tailbone.views import vendors as base @@ -56,3 +78,30 @@ class VendorView(base.VendorsView): vendor.special_discount = 0 return vendor + + def template_kwargs_view(self, **kwargs): + """ + Supplements the default logic as follows: + + Adds the URL for viewing the vendor within CORE Office, or else the + reason for lack of such a URL. + """ + # invoke default/parent logic, if it exists + parent = super(VendorView, self) + if hasattr(parent, 'template_kwargs_view'): + kwargs = parent.template_kwargs_view(**kwargs) + + vendor = kwargs['instance'] + + # CORE Office URL + kwargs['core_office_url'] = None + office_url = core_office_url(self.rattail_config) + if not office_url: + kwargs['core_office_why_no_url'] = "CORE Office URL is not configured" + elif not vendor.corepos_id: + kwargs['core_office_why_no_url'] = "Vendor has no CORE-POS ID" + else: + kwargs['core_office_url'] = '{}/item/vendors/VendorIndexPage.php?vid={}'.format( + office_url, vendor.corepos_id) + + return kwargs