Add support for "configured customer/member key"

also improve product key support, same patterns
This commit is contained in:
Lance Edgar 2023-06-06 11:06:16 -05:00
parent 9b59b44609
commit 0d97ff2936
7 changed files with 224 additions and 39 deletions

View file

@ -163,6 +163,8 @@ class MasterView(View):
labels = {'uuid': "UUID"}
customer_key_fields = {}
member_key_fields = {}
product_key_fields = {}
# ROW-RELATED ATTRS FOLLOW:
@ -463,6 +465,8 @@ class MasterView(View):
grid.remove('local_only')
grid.remove_filter('local_only')
self.configure_column_customer_key(grid)
self.configure_column_member_key(grid)
self.configure_column_product_key(grid)
for supp in self.iter_view_supplements():
@ -561,6 +565,8 @@ class MasterView(View):
# super(MasterView, self).configure_row_grid(grid)
self.set_row_labels(grid)
self.configure_column_customer_key(grid)
self.configure_column_member_key(grid)
self.configure_column_product_key(grid)
def row_grid_extra_class(self, obj, i):
@ -2407,8 +2413,14 @@ class MasterView(View):
'quickie': None,
}
key = self.rattail_config.product_key()
context['product_key_field'] = self.product_key_fields.get(key, key)
context['customer_key_field'] = self.get_customer_key_field()
context['customer_key_label'] = self.get_customer_key_label()
context['member_key_field'] = self.get_member_key_field()
context['member_key_label'] = self.get_member_key_label()
context['product_key_field'] = self.get_product_key_field()
context['product_key_label'] = self.get_product_key_label()
if self.expose_quickie_search:
context['quickie'] = self.get_quickie_context()
@ -4131,6 +4143,8 @@ class MasterView(View):
"""
self.configure_common_form(form)
self.configure_field_customer_key(form)
self.configure_field_member_key(form)
self.configure_field_product_key(form)
for supp in self.iter_view_supplements():
@ -4596,6 +4610,8 @@ class MasterView(View):
self.set_row_labels(form)
self.configure_field_customer_key(form)
self.configure_field_member_key(form)
self.configure_field_product_key(form)
def validate_row_form(self, form):
@ -4604,23 +4620,77 @@ class MasterView(View):
return True
return False
def get_customer_key_field(self):
app = self.get_rattail_app()
key = app.get_customer_key_field()
return self.customer_key_fields.get(key, key)
def get_customer_key_label(self):
app = self.get_rattail_app()
field = self.get_customer_key_field()
return app.get_customer_key_label(field=field)
def configure_column_customer_key(self, g):
if '_customer_key_' in g.columns:
field = self.get_customer_key_field()
g.replace('_customer_key_', field)
g.set_label(field, self.get_customer_key_label())
g.set_link(field)
def configure_field_customer_key(self, f):
if '_customer_key_' in f:
field = self.get_customer_key_field()
f.replace('_customer_key_', field)
f.set_label(field, self.get_customer_key_label())
def get_member_key_field(self):
app = self.get_rattail_app()
key = app.get_member_key_field()
return self.member_key_fields.get(key, key)
def get_member_key_label(self):
app = self.get_rattail_app()
field = self.get_member_key_field()
return app.get_member_key_label(field=field)
def configure_column_member_key(self, g):
if '_member_key_' in g.columns:
field = self.get_member_key_field()
g.replace('_member_key_', field)
g.set_label(field, self.get_member_key_label())
g.set_link(field)
def configure_field_member_key(self, f):
if '_member_key_' in f:
field = self.get_member_key_field()
f.replace('_member_key_', field)
f.set_label(field, self.get_member_key_label())
def get_product_key_field(self):
app = self.get_rattail_app()
key = app.get_product_key_field()
return self.product_key_fields.get(key, key)
def get_product_key_label(self):
app = self.get_rattail_app()
field = self.get_product_key_field()
return app.get_product_key_label(field=field)
def configure_column_product_key(self, g):
if '_product_key_' in g.columns:
key = self.rattail_config.product_key()
field = self.product_key_fields.get(key, key)
field = self.get_product_key_field()
g.replace('_product_key_', field)
g.set_label(field, self.rattail_config.product_key_title(key))
g.set_label(field, self.get_product_key_label())
g.set_link(field)
if key == 'upc':
if field == 'upc':
g.set_renderer(field, self.render_upc)
def configure_field_product_key(self, f):
if '_product_key_' in f:
key = self.rattail_config.product_key()
field = self.product_key_fields.get(key, key)
field = self.get_product_key_field()
f.replace('_product_key_', field)
f.set_label(field, self.rattail_config.product_key_title(key))
if key == 'upc':
f.set_label(field, self.get_product_key_label())
if field == 'upc':
f.set_renderer(field, self.render_upc)
def get_row_action_url(self, action, row, **kwargs):