Some aesthetic improvements for vendor catalog batch

hopefully they're improvements...
This commit is contained in:
Lance Edgar 2022-01-07 15:03:56 -06:00
parent f89dc88c0e
commit ab61778d35
5 changed files with 124 additions and 17 deletions

View file

@ -0,0 +1,13 @@
## -*- coding: utf-8; -*-
<%inherit file="/master/view_row.mako" />
<%def name="render_buefy_form()">
<div class="form">
<tailbone-form></tailbone-form>
<br />
${catalog_entry_diff.render_html()}
</div>
</%def>
${parent.body()}

View file

@ -351,6 +351,58 @@
</div>
</%def>
<%def name="render_row_grid_tools()">
${parent.render_row_grid_tools()}
% if use_buefy and master.rows_bulk_deletable and not batch.executed and master.has_perm('delete_rows'):
<b-button type="is-danger"
@click="deleteResultsInit()"
icon-pack="fas"
icon-left="trash">
Delete Results
</b-button>
<b-modal has-modal-card
:active.sync="deleteResultsShowDialog">
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Delete Results</p>
</header>
<section class="modal-card-body">
<p class="block">
This batch has
<span class="has-text-weight-bold">${batch.rowcount}</span>
total rows.
</p>
<p class="block">
Your current filters have returned
<span class="has-text-weight-bold">{{ total }}</span>
results.
</p>
<p class="block">
Would you like to
<span class="has-text-danger has-text-weight-bold">
delete all {{ total }}
</span>
results?
</p>
</section>
<footer class="modal-card-foot">
<b-button @click="deleteResultsShowDialog = false">
Cancel
</b-button>
<once-button type="is-danger"
tag="a" href="${url('{}.delete_rows'.format(route_prefix), uuid=batch.uuid)}"
icon-left="trash"
text="Delete Results">
</once-button>
</footer>
</div>
</b-modal>
% endif
</%def>
<%def name="modify_this_page_vars()">
${parent.modify_this_page_vars()}
<script type="text/javascript">
@ -395,6 +447,17 @@
}
% endif
% if master.rows_bulk_deletable and not batch.executed and master.has_perm('delete_rows'):
${rows_grid.component_studly}Data.deleteResultsShowDialog = false
${rows_grid.component_studly}.methods.deleteResultsInit = function() {
this.deleteResultsShowDialog = true
}
% endif
</script>
</%def>

View file

@ -71,16 +71,32 @@
% if master.touchable and request.has_perm('{}.touch'.format(permission_prefix)):
<li>${h.link_to("\"Touch\" this {}".format(model_title), url('{}.touch'.format(route_prefix), uuid=instance.uuid))}</li>
% endif
% if master.has_rows and master.rows_downloadable_csv and request.has_perm('{}.row_results_csv'.format(permission_prefix)):
<li>${h.link_to("Download row results as CSV", url('{}.row_results_csv'.format(route_prefix), uuid=instance.uuid))}</li>
% if not use_buefy and master.has_rows and master.rows_downloadable_csv and master.has_perm('row_results_csv'):
<li>${h.link_to("Download row results as CSV", master.get_action_url('row_results_csv', instance))}</li>
% endif
% if master.has_rows and master.rows_downloadable_xlsx and master.has_perm('row_results_xlsx'):
% if not use_buefy and master.has_rows and master.rows_downloadable_xlsx and master.has_perm('row_results_xlsx'):
<li>${h.link_to("Download row results as XLSX", master.get_action_url('row_results_xlsx', instance))}</li>
% endif
</%def>
<%def name="render_row_grid_tools()">
${rows_grid_tools}
% if use_buefy:
% if master.rows_downloadable_xlsx and master.has_perm('row_results_xlsx'):
<b-button tag="a" href="${master.get_action_url('row_results_xlsx', instance)}"
icon-pack="fas"
icon-left="download">
Download Results XLSX
</b-button>
% endif
% if master.rows_downloadable_csv and master.has_perm('row_results_csv'):
<b-button tag="a" href="${master.get_action_url('row_results_csv', instance)}"
icon-pack="fas"
icon-left="download">
Download Results CSV
</b-button>
% endif
% endif
</%def>
<%def name="render_this_page()">

View file

@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2021 Lance Edgar
# Copyright © 2010-2022 Lance Edgar
#
# This file is part of Rattail.
#
@ -686,6 +686,8 @@ class BatchMasterView(MasterView):
return HTML.tag('p', c=[link])
def make_batch_row_grid_tools(self, batch):
if self.get_use_buefy():
return
if self.rows_bulk_deletable and not batch.executed and self.request.has_perm('{}.delete_rows'.format(self.get_permission_prefix())):
url = self.request.route_url('{}.delete_rows'.format(self.get_route_prefix()), uuid=batch.uuid)
return HTML.tag('p', c=[tags.link_to("Delete all rows matching current search", url)])

View file

@ -40,6 +40,7 @@ from webhelpers2.html import tags
from tailbone import forms
from tailbone.db import Session
from tailbone.views.batch import FileBatchMasterView
from tailbone.diffs import Diff
log = logging.getLogger(__name__)
@ -76,11 +77,12 @@ class VendorCatalogView(FileBatchMasterView):
form_fields = [
'id',
'description',
'vendor',
'filename',
'parser_key',
'vendor',
'future',
'effective',
'description',
'notes',
'created',
'created_by',
@ -114,16 +116,6 @@ class VendorCatalogView(FileBatchMasterView):
'description',
'size',
'is_preferred_vendor',
'old_vendor_code',
'vendor_code',
'old_case_size',
'case_size',
'old_case_cost',
'case_cost',
'case_cost_diff',
'old_unit_cost',
'unit_cost',
'unit_cost_diff',
'suggested_retail',
'starts',
'ends',
@ -131,6 +123,8 @@ class VendorCatalogView(FileBatchMasterView):
'discount_ends',
'discount_amount',
'discount_percent',
'case_cost_diff',
'unit_cost_diff',
'status_code',
'status_text',
]
@ -228,7 +222,7 @@ class VendorCatalogView(FileBatchMasterView):
# starts
if not batch.future:
g.hide_column('starts')
g.remove('starts')
g.set_type('old_unit_cost', 'currency')
g.set_type('unit_cost', 'currency')
@ -262,6 +256,25 @@ class VendorCatalogView(FileBatchMasterView):
f.set_type('upc', 'gpc')
f.set_type('discount_percent', 'percent')
def template_kwargs_view_row(self, **kwargs):
row = kwargs['instance']
batch = row.batch
fields = [
'vendor_code',
'case_size',
'case_cost',
'unit_cost',
]
old_data = dict([(field, getattr(row, 'old_{}'.format(field)))
for field in fields])
new_data = dict([(field, getattr(row, field))
for field in fields])
kwargs['catalog_entry_diff'] = Diff(old_data, new_data, fields=fields,
monospace=True)
return kwargs
def template_kwargs_create(self, **kwargs):
parsers = self.get_parsers()
for parser in parsers: