Refactor vendor catalog batch views to use master3
This commit is contained in:
parent
34e81dc50a
commit
19cd6336f9
|
@ -13,37 +13,37 @@
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
if ($('#VendorCatalog--parser_key option:first').is(':selected')) {
|
if ($('select[name="parser_key"] option:first').is(':selected')) {
|
||||||
$('#VendorCatalog--vendor_uuid-container').hide();
|
$('.vendor_uuid .autocomplete-container').hide();
|
||||||
} else {
|
} else {
|
||||||
$('#VendorCatalog--vendor_uuid').val('');
|
$('.vendor_uuid input[name="vendor_uuid"]').val('');
|
||||||
$('#VendorCatalog--vendor_uuid-display').hide();
|
$('.vendor_uuid .autocomplete-display').hide();
|
||||||
$('#VendorCatalog--vendor_uuid-display button').show();
|
$('.vendor_uuid .autocomplete-display button').show();
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').val('');
|
$('.vendor_uuid .autocomplete-textbox').val('');
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').show();
|
$('.vendor_uuid .autocomplete-textbox').show();
|
||||||
$('#VendorCatalog--vendor_uuid-container').show();
|
$('.vendor_uuid .autocomplete-container').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#VendorCatalog--parser_key').change(function() {
|
$('select[name="parser_key"]').on('selectmenuchange', function() {
|
||||||
if ($(this).find('option:first').is(':selected')) {
|
if ($(this).find('option:first').is(':selected')) {
|
||||||
$('#VendorCatalog--vendor_uuid-container').hide();
|
$('.vendor_uuid .autocomplete-container').hide();
|
||||||
} else {
|
} else {
|
||||||
var vendor = vendormap[$(this).val()];
|
var vendor = vendormap[$(this).val()];
|
||||||
if (vendor) {
|
if (vendor) {
|
||||||
$('#VendorCatalog--vendor_uuid').val(vendor.uuid);
|
$('.vendor_uuid input[name="vendor_uuid"]').val(vendor.uuid);
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').hide();
|
$('.vendor_uuid .autocomplete-textbox').hide();
|
||||||
$('#VendorCatalog--vendor_uuid-display span:first').text(vendor.name);
|
$('.vendor_uuid .autocomplete-display span:first').text(vendor.name);
|
||||||
$('#VendorCatalog--vendor_uuid-display button').hide();
|
$('.vendor_uuid .autocomplete-display button').hide();
|
||||||
$('#VendorCatalog--vendor_uuid-display').show();
|
$('.vendor_uuid .autocomplete-display').show();
|
||||||
$('#VendorCatalog--vendor_uuid-container').show();
|
$('.vendor_uuid .autocomplete-container').show();
|
||||||
} else {
|
} else {
|
||||||
$('#VendorCatalog--vendor_uuid').val('');
|
$('.vendor_uuid input[name="vendor_uuid"]').val('');
|
||||||
$('#VendorCatalog--vendor_uuid-display').hide();
|
$('.vendor_uuid .autocomplete-display').hide();
|
||||||
$('#VendorCatalog--vendor_uuid-display button').show();
|
$('.vendor_uuid .autocomplete-display button').show();
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').val('');
|
$('.vendor_uuid .autocomplete-textbox').val('');
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').show();
|
$('.vendor_uuid .autocomplete-textbox').show();
|
||||||
$('#VendorCatalog--vendor_uuid-container').show();
|
$('.vendor_uuid .autocomplete-container').show();
|
||||||
$('#VendorCatalog--vendor_uuid-textbox').focus();
|
$('.vendor_uuid .autocomplete-textbox').focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
95
tailbone/views/vendors/catalogs.py
vendored
95
tailbone/views/vendors/catalogs.py
vendored
|
@ -1,8 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8; -*-
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2017 Lance Edgar
|
# Copyright © 2010-2018 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -28,14 +28,18 @@ from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from rattail.db import model, api
|
from rattail.db import model, api
|
||||||
from rattail.vendors.catalogs import iter_catalog_parsers
|
from rattail.vendors.catalogs import iter_catalog_parsers
|
||||||
|
|
||||||
import formalchemy
|
import colander
|
||||||
|
from deform import widget as dfwidget
|
||||||
|
from webhelpers2.html import tags
|
||||||
|
|
||||||
from tailbone import forms
|
from tailbone import forms2 as forms
|
||||||
from tailbone.db import Session
|
from tailbone.db import Session
|
||||||
from tailbone.views.batch import FileBatchMasterView2 as FileBatchMasterView
|
from tailbone.views.batch import FileBatchMasterView3 as FileBatchMasterView
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
@ -62,6 +66,17 @@ class VendorCatalogsView(FileBatchMasterView):
|
||||||
'executed',
|
'executed',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
form_fields = [
|
||||||
|
'vendor',
|
||||||
|
'filename',
|
||||||
|
'effective',
|
||||||
|
'created',
|
||||||
|
'created_by',
|
||||||
|
'executed',
|
||||||
|
'executed_by',
|
||||||
|
'rowcount',
|
||||||
|
]
|
||||||
|
|
||||||
row_grid_columns = [
|
row_grid_columns = [
|
||||||
'sequence',
|
'sequence',
|
||||||
'upc',
|
'upc',
|
||||||
|
@ -90,34 +105,54 @@ class VendorCatalogsView(FileBatchMasterView):
|
||||||
def get_instance_title(self, batch):
|
def get_instance_title(self, batch):
|
||||||
return unicode(batch.vendor)
|
return unicode(batch.vendor)
|
||||||
|
|
||||||
def configure_fieldset(self, fs):
|
def configure_form(self, f):
|
||||||
fs.vendor.set(renderer=forms.renderers.VendorFieldRenderer)
|
super(VendorCatalogsView, self).configure_form(f)
|
||||||
fs.filename.set(label="Catalog File")
|
|
||||||
|
# vendor
|
||||||
|
f.set_renderer('vendor', self.render_vendor)
|
||||||
|
if self.creating:
|
||||||
|
f.replace('vendor', 'vendor_uuid')
|
||||||
|
f.set_node('vendor_uuid', colander.String())
|
||||||
|
vendor_display = ""
|
||||||
|
if self.request.method == 'POST':
|
||||||
|
if self.request.POST.get('vendor_uuid'):
|
||||||
|
vendor = self.Session.query(model.Vendor).get(self.request.POST['vendor_uuid'])
|
||||||
|
if vendor:
|
||||||
|
vendor_display = six.text_type(vendor)
|
||||||
|
vendors_url = self.request.route_url('vendors.autocomplete')
|
||||||
|
f.set_widget('vendor_uuid', forms.widgets.JQueryAutocompleteWidget(
|
||||||
|
field_display=vendor_display, service_url=vendors_url))
|
||||||
|
f.set_label('vendor_uuid', "Vendor")
|
||||||
|
else:
|
||||||
|
f.set_readonly('vendor')
|
||||||
|
|
||||||
|
# filename
|
||||||
|
f.set_label('filename', "Catalog File")
|
||||||
|
|
||||||
if self.creating:
|
if self.creating:
|
||||||
parser_options = [(p.display, p.key) for p in self.get_parsers()]
|
|
||||||
parser_options.insert(0, ("(please choose)", ''))
|
|
||||||
fs.parser_key.set(renderer=formalchemy.fields.SelectFieldRenderer,
|
|
||||||
options=parser_options, label="File Type")
|
|
||||||
fs.configure(
|
|
||||||
include=[
|
|
||||||
fs.filename,
|
|
||||||
fs.parser_key,
|
|
||||||
fs.vendor,
|
|
||||||
])
|
|
||||||
|
|
||||||
else:
|
f.set_fields([
|
||||||
fs.configure(
|
'filename',
|
||||||
include=[
|
'parser_key',
|
||||||
fs.vendor.readonly(),
|
'vendor_uuid',
|
||||||
fs.filename,
|
])
|
||||||
fs.effective.readonly(),
|
|
||||||
fs.created,
|
parser_values = [(p.key, p.display) for p in self.get_parsers()]
|
||||||
fs.created_by,
|
parser_values.insert(0, ('', "(please choose)"))
|
||||||
fs.executed,
|
f.set_widget('parser_key', dfwidget.SelectWidget(values=parser_values))
|
||||||
fs.executed_by,
|
f.set_label('parser_key', "File Type")
|
||||||
fs.rowcount,
|
|
||||||
])
|
# effective
|
||||||
|
if not self.creating:
|
||||||
|
f.set_readonly('effective')
|
||||||
|
|
||||||
|
def render_vendor(self, batch, field):
|
||||||
|
vendor = batch.vendor
|
||||||
|
if not vendor:
|
||||||
|
return ""
|
||||||
|
text = "({}) {}".format(vendor.id, vendor.name)
|
||||||
|
url = self.request.route_url('vendors.view', uuid=vendor.uuid)
|
||||||
|
return tags.link_to(text, url)
|
||||||
|
|
||||||
def get_batch_kwargs(self, batch):
|
def get_batch_kwargs(self, batch):
|
||||||
kwargs = super(VendorCatalogsView, self).get_batch_kwargs(batch)
|
kwargs = super(VendorCatalogsView, self).get_batch_kwargs(batch)
|
||||||
|
|
Loading…
Reference in a new issue