Expose new CORE member batch feature
This commit is contained in:
parent
456415b0fa
commit
6a86be1c13
|
@ -0,0 +1,47 @@
|
||||||
|
## -*- coding: utf-8; -*-
|
||||||
|
<%inherit file="/master/view_row.mako" />
|
||||||
|
<%namespace file="/corepos-util.mako" import="render_xref_helper" />
|
||||||
|
|
||||||
|
<%def name="object_helpers()">
|
||||||
|
${parent.object_helpers()}
|
||||||
|
${render_xref_helper()}
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
<%def name="field_diff_table()">
|
||||||
|
<table class="diff monospace dirty">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>field name</th>
|
||||||
|
<th>old value</th>
|
||||||
|
<th>new value</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
% for field in diff_fields:
|
||||||
|
<tr${' class="diff"' if diff_new_values[field] != diff_old_values[field] else ''|n}>
|
||||||
|
<td class="field">${field}</td>
|
||||||
|
<td class="value old-value">${repr(diff_old_values[field])}</td>
|
||||||
|
<td class="value new-value">${repr(diff_new_values[field])}</td>
|
||||||
|
</tr>
|
||||||
|
% endfor
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
<%def name="render_buefy_form()">
|
||||||
|
<div class="form">
|
||||||
|
<tailbone-form></tailbone-form>
|
||||||
|
<br />
|
||||||
|
${self.field_diff_table()}
|
||||||
|
</div>
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
<%def name="render_form()">
|
||||||
|
${parent.render_form()}
|
||||||
|
% if not use_buefy:
|
||||||
|
${self.field_diff_table()}
|
||||||
|
% endif
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
|
||||||
|
${parent.body()}
|
0
tailbone_corepos/views/batch/__init__.py
Normal file
0
tailbone_corepos/views/batch/__init__.py
Normal file
141
tailbone_corepos/views/batch/coremember.py
Normal file
141
tailbone_corepos/views/batch/coremember.py
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
# -*- coding: utf-8; -*-
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Rattail -- Retail Software Framework
|
||||||
|
# Copyright © 2010-2021 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 <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
"""
|
||||||
|
Views for CORE member batches
|
||||||
|
"""
|
||||||
|
|
||||||
|
from tailbone.views.batch import BatchMasterView
|
||||||
|
|
||||||
|
from rattail_corepos.db.model import CoreMemberBatch, CoreMemberBatchRow
|
||||||
|
from rattail_corepos.batch.coremember import CoreMemberBatchHandler
|
||||||
|
from rattail_corepos.config import core_office_url, core_office_customer_account_url
|
||||||
|
|
||||||
|
|
||||||
|
class CoreMemberBatchView(BatchMasterView):
|
||||||
|
"""
|
||||||
|
Master view for CORE member batches.
|
||||||
|
"""
|
||||||
|
model_class = CoreMemberBatch
|
||||||
|
model_row_class = CoreMemberBatchRow
|
||||||
|
batch_handler_class = CoreMemberBatchHandler
|
||||||
|
route_prefix = 'batch.coremember'
|
||||||
|
url_prefix = '/batch/corepos-member'
|
||||||
|
downloadable = True
|
||||||
|
rows_bulk_deletable = True
|
||||||
|
|
||||||
|
form_fields = [
|
||||||
|
'id',
|
||||||
|
'input_file',
|
||||||
|
'description',
|
||||||
|
'notes',
|
||||||
|
'params',
|
||||||
|
'created',
|
||||||
|
'created_by',
|
||||||
|
'rowcount',
|
||||||
|
'executed',
|
||||||
|
'executed_by',
|
||||||
|
]
|
||||||
|
|
||||||
|
row_labels = {
|
||||||
|
'email1': "Email",
|
||||||
|
'member_type_id': "Member Type",
|
||||||
|
}
|
||||||
|
|
||||||
|
row_grid_columns = [
|
||||||
|
'sequence',
|
||||||
|
'card_number',
|
||||||
|
'first_name',
|
||||||
|
'last_name',
|
||||||
|
'email1',
|
||||||
|
'phone',
|
||||||
|
'member_type_id',
|
||||||
|
'status_code',
|
||||||
|
]
|
||||||
|
|
||||||
|
row_form_fields = [
|
||||||
|
'sequence',
|
||||||
|
'card_number',
|
||||||
|
'status_code',
|
||||||
|
'status_text',
|
||||||
|
]
|
||||||
|
|
||||||
|
def configure_form(self, f):
|
||||||
|
super(CoreMemberBatchView, self).configure_form(f)
|
||||||
|
|
||||||
|
# input_file
|
||||||
|
if self.creating:
|
||||||
|
f.set_type('input_file', 'file')
|
||||||
|
else:
|
||||||
|
f.set_readonly('input_file')
|
||||||
|
f.set_renderer('input_file', self.render_downloadable_file)
|
||||||
|
|
||||||
|
def configure_row_grid(self, g):
|
||||||
|
super(CoreMemberBatchView, self).configure_row_grid(g)
|
||||||
|
|
||||||
|
g.set_link('card_number')
|
||||||
|
g.set_link('first_name')
|
||||||
|
g.set_link('last_name')
|
||||||
|
g.set_link('email1')
|
||||||
|
|
||||||
|
def row_grid_extra_class(self, row, i):
|
||||||
|
if row.status_code == row.STATUS_MEMBER_NOT_FOUND:
|
||||||
|
return 'warning'
|
||||||
|
if row.status_code in (row.STATUS_FIELDS_CHANGED,):
|
||||||
|
return 'notice'
|
||||||
|
|
||||||
|
def template_kwargs_view_row(self, **kwargs):
|
||||||
|
batch = kwargs['parent_instance']
|
||||||
|
row = kwargs['instance']
|
||||||
|
kwargs['batch'] = batch
|
||||||
|
kwargs['instance_title'] = batch.id_str
|
||||||
|
|
||||||
|
fields = list(self.handler.importing_fields)
|
||||||
|
|
||||||
|
kwargs['diff_fields'] = fields
|
||||||
|
kwargs['diff_old_values'] = dict([
|
||||||
|
(field, getattr(row, '{}_old'.format(field)))
|
||||||
|
for field in fields])
|
||||||
|
kwargs['diff_new_values'] = dict([
|
||||||
|
(field, getattr(row, field))
|
||||||
|
for field in fields])
|
||||||
|
|
||||||
|
# CORE Office URL
|
||||||
|
kwargs['core_office_url'] = None
|
||||||
|
if row.card_number:
|
||||||
|
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:
|
||||||
|
url = core_office_customer_account_url(self.rattail_config,
|
||||||
|
row.card_number,
|
||||||
|
office_url=office_url)
|
||||||
|
if url:
|
||||||
|
kwargs['core_office_url'] = url
|
||||||
|
else:
|
||||||
|
kwargs['core_office_why_no_url'] = "URL not defined for this object"
|
||||||
|
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
def includeme(config):
|
||||||
|
CoreMemberBatchView.defaults(config)
|
Loading…
Reference in a new issue