Add basic "pending product" support for new custorder batch
This commit is contained in:
parent
408bffb775
commit
c0db03bc28
13 changed files with 844 additions and 234 deletions
|
@ -157,6 +157,8 @@ class MasterView(View):
|
|||
|
||||
labels = {'uuid': "UUID"}
|
||||
|
||||
product_key_fields = {}
|
||||
|
||||
# ROW-RELATED ATTRS FOLLOW:
|
||||
|
||||
has_rows = False
|
||||
|
@ -449,6 +451,8 @@ class MasterView(View):
|
|||
grid.hide_column('local_only')
|
||||
grid.remove_filter('local_only')
|
||||
|
||||
self.configure_column_product_key(grid)
|
||||
|
||||
def grid_extra_class(self, obj, i):
|
||||
"""
|
||||
Returns string of extra class(es) for the table row corresponding to
|
||||
|
@ -541,6 +545,8 @@ class MasterView(View):
|
|||
# super(MasterView, self).configure_row_grid(grid)
|
||||
self.set_row_labels(grid)
|
||||
|
||||
self.configure_column_product_key(grid)
|
||||
|
||||
def row_grid_extra_class(self, obj, i):
|
||||
"""
|
||||
Returns string of extra class(es) for the table row corresponding to
|
||||
|
@ -753,6 +759,7 @@ class MasterView(View):
|
|||
if obj.emails:
|
||||
return obj.emails[0].address
|
||||
|
||||
# TODO: deprecate / remove this
|
||||
def render_product_key_value(self, obj, field=None):
|
||||
"""
|
||||
Render the "canonical" product key value for the given object.
|
||||
|
@ -764,6 +771,15 @@ class MasterView(View):
|
|||
return obj.upc.pretty() if obj.upc else ''
|
||||
return getattr(obj, product_key)
|
||||
|
||||
def render_upc(self, obj, field):
|
||||
"""
|
||||
Render a :class:`~rattail:rattail.gpc.GPC` field.
|
||||
"""
|
||||
value = getattr(obj, field)
|
||||
if value:
|
||||
app = self.rattail_config.get_app()
|
||||
return app.render_gpc(value)
|
||||
|
||||
def render_store(self, obj, field):
|
||||
store = getattr(obj, field)
|
||||
if store:
|
||||
|
@ -779,6 +795,14 @@ class MasterView(View):
|
|||
url = self.request.route_url('products.view', uuid=product.uuid)
|
||||
return tags.link_to(text, url)
|
||||
|
||||
def render_pending_product(self, obj, field):
|
||||
pending = getattr(obj, field)
|
||||
if not pending:
|
||||
return
|
||||
text = six.text_type(pending)
|
||||
url = self.request.route_url('pending_products.view', uuid=pending.uuid)
|
||||
return tags.link_to(text, url)
|
||||
|
||||
def render_vendor(self, obj, field):
|
||||
vendor = getattr(obj, field)
|
||||
if not vendor:
|
||||
|
@ -1567,6 +1591,8 @@ class MasterView(View):
|
|||
return self.render_to_response('delete', {
|
||||
'instance': instance,
|
||||
'instance_title': instance_title,
|
||||
'instance_editable': self.editable_instance(instance),
|
||||
'instance_deletable': self.deletable_instance(instance),
|
||||
'form': form})
|
||||
|
||||
def bulk_delete(self):
|
||||
|
@ -3676,6 +3702,8 @@ class MasterView(View):
|
|||
"""
|
||||
self.configure_common_form(form)
|
||||
|
||||
self.configure_field_product_key(form)
|
||||
|
||||
def validate_form(self, form):
|
||||
if form.validate(newstyle=True):
|
||||
self.form_deserialized = form.validated
|
||||
|
@ -4107,12 +4135,33 @@ class MasterView(View):
|
|||
|
||||
self.set_row_labels(form)
|
||||
|
||||
self.configure_field_product_key(form)
|
||||
|
||||
def validate_row_form(self, form):
|
||||
if form.validate(newstyle=True):
|
||||
self.form_deserialized = form.validated
|
||||
return True
|
||||
return False
|
||||
|
||||
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)
|
||||
g.replace('_product_key_', field)
|
||||
g.set_label(field, self.rattail_config.product_key_title(key))
|
||||
g.set_link(field)
|
||||
if key == '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)
|
||||
f.replace('_product_key_', field)
|
||||
f.set_label(field, self.rattail_config.product_key_title(key))
|
||||
if key == 'upc':
|
||||
f.set_renderer(field, self.render_upc)
|
||||
|
||||
def get_row_action_url(self, action, row, **kwargs):
|
||||
"""
|
||||
Generate a URL for the given action on the given row.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue