From 5269aaa610aceb60be46966e348f47273ed5b14f Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 20 Jan 2021 21:52:12 -0600 Subject: [PATCH] Refactor some things, per patterns learned w/ woocommerce --- tailbone_corepos/templates/corepos-util.mako | 22 ++++++----- tailbone_corepos/templates/products/view.mako | 17 ++++++++- tailbone_corepos/views/products.py | 37 ++++++++++++++----- 3 files changed, 56 insertions(+), 20 deletions(-) diff --git a/tailbone_corepos/templates/corepos-util.mako b/tailbone_corepos/templates/corepos-util.mako index b258751..961d175 100644 --- a/tailbone_corepos/templates/corepos-util.mako +++ b/tailbone_corepos/templates/corepos-util.mako @@ -1,18 +1,22 @@ ## -*- coding: utf-8; -*- +<%def name="render_xref_button()"> + + View in CORE Office + + + <%def name="render_xref_helper()">

Cross-Reference

- - View in CORE Office - + ${self.render_xref_button()}
diff --git a/tailbone_corepos/templates/products/view.mako b/tailbone_corepos/templates/products/view.mako index dda4626..fb3ddec 100644 --- a/tailbone_corepos/templates/products/view.mako +++ b/tailbone_corepos/templates/products/view.mako @@ -1,13 +1,26 @@ ## -*- coding: utf-8; -*- <%inherit file="tailbone:templates/products/view.mako" /> -<%namespace file="/corepos-util.mako" import="render_xref_helper" /> +<%namespace name="corepos" file="/corepos-util.mako" /> <%def name="object_helpers()"> ${parent.object_helpers()} - ${render_xref_helper()} + ${self.render_xref_helper()} + + +<%def name="render_xref_helper()"> + ${corepos.render_xref_helper()} + + +<%def name="render_xref_button()"> + ${corepos.render_xref_button()} <%def name="extra_main_fields(form)"> + ${parent.extra_main_fields(form)} + ${self.extra_main_fields_corepos(form)} + + +<%def name="extra_main_fields_corepos(form)"> ${form.render_field_readonly('corepos_id')} diff --git a/tailbone_corepos/views/products.py b/tailbone_corepos/views/products.py index 5f08a39..2eefc70 100644 --- a/tailbone_corepos/views/products.py +++ b/tailbone_corepos/views/products.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2020 Lance Edgar +# Copyright © 2010-2021 Lance Edgar # # This file is part of Rattail. # @@ -40,23 +40,35 @@ class ProductView(base.ProductsView): @property def form_fields(self): fields = super(ProductView, self).form_fields - return fields + [ + return self.corepos_add_form_fields(fields) + + def corepos_add_form_fields(self, fields): + fields.extend([ 'corepos_id', - ] + ]) + return fields def query(self, session): query = super(ProductView, self).query(session) + return self.corepos_modify_query(query) + + def corepos_modify_query(self, query): model = self.rattail_config.get_model() return query.outerjoin(model.CoreProduct) def configure_grid(self, g): super(ProductView, self).configure_grid(g) + self.corepos_configure_grid(g) + + def corepos_configure_grid(self, g): model = self.rattail_config.get_model() g.set_filter('corepos_id', model.CoreProduct.corepos_id) def configure_form(self, f): super(ProductView, self).configure_form(f) + self.corepos_configure_form(f) + def corepos_configure_form(self, f): f.set_required('corepos_id', False) if self.creating: f.remove('corepos_id') @@ -65,28 +77,35 @@ class ProductView(base.ProductsView): if data is None: data = form.validated product = super(ProductView, self).objectify(form, data) + return self.corepos_objectify(product) + def corepos_objectify(self, product): # remove the corepos extension record outright, if we just lost the ID if product._corepos and not product.corepos_id: self.Session.delete(product._corepos) self.Session.flush() - return product def get_version_child_classes(self): + classes = super(ProductView, self).get_version_child_classes() + return self.corepos_add_version_classes(classes) + + def corepos_add_version_classes(self, classes): model = self.rattail_config.get_model() - return super(ProductView, self).get_version_child_classes() + [ + classes.extend([ model.CoreProduct, - ] + ]) + return classes def template_kwargs_view(self, **kwargs): - """ - Supplements the default logic as follows: + kwargs = super(ProductView, self).template_kwargs_view(**kwargs) + return self.corepos_template_kwargs_view(**kwargs) + def corepos_template_kwargs_view(self, **kwargs): + """ 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