Remove all deprecated use_buefy logic

also remove some static files no longer used, etc.
This commit is contained in:
Lance Edgar 2023-02-03 12:05:17 -06:00
parent 01e5eee981
commit 9faaea881d
112 changed files with 2079 additions and 7039 deletions

View file

@ -24,14 +24,11 @@
Views for 'receiving' (purchasing) batches
"""
from __future__ import unicode_literals, absolute_import
import os
import re
import decimal
import logging
import six
import humanize
import sqlalchemy as sa
@ -302,13 +299,11 @@ class ReceivingBatchView(PurchasingBatchView):
# okay, at this point we need the user to select a vendor and workflow
self.creating = True
use_buefy = self.get_use_buefy()
context = {}
# form to accept user choice of vendor/workflow
schema = NewReceivingBatch().bind(valid_workflows=valid_workflows)
form = forms.Form(schema=schema, request=self.request,
use_buefy=use_buefy)
form = forms.Form(schema=schema, request=self.request)
# configure vendor field
app = self.get_rattail_app()
@ -325,10 +320,7 @@ class ReceivingBatchView(PurchasingBatchView):
vendors = sorted(vendors.values(), key=lambda v: v.name)
vendor_values = [(vendor.uuid, vendor_handler.render_vendor(vendor))
for vendor in vendors]
if use_buefy:
form.set_widget('vendor', dfwidget.SelectWidget(values=vendor_values))
else:
form.set_widget('vendor', forms.widgets.JQuerySelectWidget(values=vendor_values))
form.set_widget('vendor', dfwidget.SelectWidget(values=vendor_values))
else:
# user may choose *any* available vendor
use_dropdown = vendor_handler.choice_uses_dropdown()
@ -338,10 +330,7 @@ class ReceivingBatchView(PurchasingBatchView):
.all()
vendor_values = [(vendor.uuid, "({}) {}".format(vendor.id, vendor.name))
for vendor in vendors]
if use_buefy:
form.set_widget('vendor', dfwidget.SelectWidget(values=vendor_values))
else:
form.set_widget('vendor', forms.widgets.JQuerySelectWidget(values=vendor_values))
form.set_widget('vendor', dfwidget.SelectWidget(values=vendor_values))
if len(vendors) == 1:
form.set_default('vendor', vendors[0].uuid)
else:
@ -350,7 +339,7 @@ class ReceivingBatchView(PurchasingBatchView):
if self.request.POST.get('vendor'):
vendor = self.Session.query(model.Vendor).get(self.request.POST['vendor'])
if vendor:
vendor_display = six.text_type(vendor)
vendor_display = str(vendor)
vendors_url = self.request.route_url('vendors.autocomplete')
form.set_widget('vendor', forms.widgets.JQueryAutocompleteWidget(
field_display=vendor_display, service_url=vendors_url))
@ -359,12 +348,8 @@ class ReceivingBatchView(PurchasingBatchView):
# configure workflow field
values = [(workflow['workflow_key'], workflow['display'])
for workflow in workflows]
if use_buefy:
form.set_widget('workflow',
dfwidget.SelectWidget(values=values))
else:
form.set_widget('workflow',
forms.widgets.JQuerySelectWidget(values=values))
form.set_widget('workflow',
dfwidget.SelectWidget(values=values))
if len(workflows) == 1:
form.set_default('workflow', workflows[0]['workflow_key'])
@ -427,7 +412,6 @@ class ReceivingBatchView(PurchasingBatchView):
allow_truck_dump = self.batch_handler.allow_truck_dump_receiving()
workflow = self.request.matchdict.get('workflow_key')
route_prefix = self.get_route_prefix()
use_buefy = self.get_use_buefy()
# tweak some things if we are in "step 2" of creating new batch
if self.creating and workflow:
@ -437,7 +421,7 @@ class ReceivingBatchView(PurchasingBatchView):
self.request.matchdict['vendor_uuid'])
assert vendor
f.set_readonly('vendor_uuid')
f.set_default('vendor_uuid', six.text_type(vendor))
f.set_default('vendor_uuid', str(vendor))
# cancel should take us back to choosing a workflow
f.cancel_url = self.request.route_url('{}.create'.format(route_prefix))
@ -532,15 +516,14 @@ class ReceivingBatchView(PurchasingBatchView):
# purchase
if (self.creating and workflow in ('from_po', 'from_po_with_invoice')
and self.purchase_order_fieldname == 'purchase'):
if use_buefy:
f.replace('purchase', 'purchase_uuid')
purchases = self.batch_handler.get_eligible_purchases(
vendor, self.enum.PURCHASE_BATCH_MODE_RECEIVING)
values = [(p.uuid, self.batch_handler.render_eligible_purchase(p))
for p in purchases]
f.set_widget('purchase_uuid', dfwidget.SelectWidget(values=values))
f.set_label('purchase_uuid', "Purchase Order")
f.set_required('purchase_uuid')
f.replace('purchase', 'purchase_uuid')
purchases = self.batch_handler.get_eligible_purchases(
vendor, self.enum.PURCHASE_BATCH_MODE_RECEIVING)
values = [(p.uuid, self.batch_handler.render_eligible_purchase(p))
for p in purchases]
f.set_widget('purchase_uuid', dfwidget.SelectWidget(values=values))
f.set_label('purchase_uuid', "Purchase Order")
f.set_required('purchase_uuid')
elif self.creating or not batch.purchase:
f.remove_field('purchase')
@ -774,26 +757,18 @@ class ReceivingBatchView(PurchasingBatchView):
def template_kwargs_view(self, **kwargs):
kwargs = super(ReceivingBatchView, self).template_kwargs_view(**kwargs)
batch = kwargs['instance']
use_buefy = self.get_use_buefy()
if self.handler.has_purchase_order(batch) and self.handler.has_invoice_file(batch):
breakdown = self.make_po_vs_invoice_breakdown(batch)
factory = self.get_grid_factory()
if use_buefy:
g = factory('batch_po_vs_invoice_breakdown', [],
columns=['title', 'count'])
g.set_click_handler('title', "autoFilterPoVsInvoice(props.row)")
kwargs['po_vs_invoice_breakdown_data'] = breakdown
kwargs['po_vs_invoice_breakdown_grid'] = HTML.literal(
g.render_buefy_table_element(data_prop='poVsInvoiceBreakdownData',
empty_labels=True))
else:
kwargs['po_vs_invoice_breakdown_grid'] = factory(
'batch_po_vs_invoice_breakdown',
data=breakdown,
columns=['title', 'count'])
g = factory('batch_po_vs_invoice_breakdown', [],
columns=['title', 'count'])
g.set_click_handler('title', "autoFilterPoVsInvoice(props.row)")
kwargs['po_vs_invoice_breakdown_data'] = breakdown
kwargs['po_vs_invoice_breakdown_grid'] = HTML.literal(
g.render_buefy_table_element(data_prop='poVsInvoiceBreakdownData',
empty_labels=True))
kwargs['allow_edit_catalog_unit_cost'] = self.allow_edit_catalog_unit_cost(batch)
kwargs['allow_edit_invoice_unit_cost'] = self.allow_edit_invoice_unit_cost(batch)
@ -807,7 +782,7 @@ class ReceivingBatchView(PurchasingBatchView):
credits_data.append({
'uuid': credit.uuid,
'credit_type': credit.credit_type,
'expiration_date': six.text_type(credit.expiration_date) if credit.expiration_date else None,
'expiration_date': str(credit.expiration_date) if credit.expiration_date else None,
'cases_shorted': app.render_quantity(credit.cases_shorted),
'units_shorted': app.render_quantity(credit.units_shorted),
'shorted': app.render_cases_units(credit.cases_shorted,
@ -822,7 +797,6 @@ class ReceivingBatchView(PurchasingBatchView):
def template_kwargs_view_row(self, **kwargs):
kwargs = super(ReceivingBatchView, self).template_kwargs_view_row(**kwargs)
use_buefy = self.get_use_buefy()
app = self.get_rattail_app()
products_handler = app.get_products_handler()
row = kwargs['instance']
@ -834,18 +808,17 @@ class ReceivingBatchView(PurchasingBatchView):
elif row.upc:
kwargs['image_url'] = products_handler.get_image_url(upc=row.upc)
if use_buefy:
kwargs['row_context'] = self.get_context_row(row)
kwargs['row_context'] = self.get_context_row(row)
modes = list(POSSIBLE_RECEIVING_MODES)
types = list(POSSIBLE_CREDIT_TYPES)
if not self.batch_handler.allow_expired_credits():
if 'expired' in modes:
modes.remove('expired')
if 'expired' in types:
types.remove('expired')
kwargs['possible_receiving_modes'] = modes
kwargs['possible_credit_types'] = types
modes = list(POSSIBLE_RECEIVING_MODES)
types = list(POSSIBLE_CREDIT_TYPES)
if not self.batch_handler.allow_expired_credits():
if 'expired' in modes:
modes.remove('expired')
if 'expired' in types:
types.remove('expired')
kwargs['possible_receiving_modes'] = modes
kwargs['possible_credit_types'] = types
return kwargs
@ -962,7 +935,7 @@ class ReceivingBatchView(PurchasingBatchView):
def render_truck_dump_parent(self, batch, field):
truck_dump = self.get_instance()
text = six.text_type(truck_dump)
text = str(truck_dump)
url = self.request.route_url('receiving.view', uuid=truck_dump.uuid)
return tags.link_to(text, url)
@ -992,7 +965,6 @@ class ReceivingBatchView(PurchasingBatchView):
def configure_row_grid(self, g):
super(ReceivingBatchView, self).configure_row_grid(g)
use_buefy = self.get_use_buefy()
batch = self.get_instance()
# vendor_code
@ -1003,13 +975,13 @@ class ReceivingBatchView(PurchasingBatchView):
if (self.handler.has_purchase_order(batch)
or self.handler.has_invoice_file(batch)):
g.remove('catalog_unit_cost')
elif use_buefy and self.allow_edit_catalog_unit_cost(batch):
elif self.allow_edit_catalog_unit_cost(batch):
g.set_raw_renderer('catalog_unit_cost', self.render_catalog_unit_cost)
g.set_click_handler('catalog_unit_cost',
'catalogUnitCostClicked(props.row)')
# invoice_unit_cost
if use_buefy and self.allow_edit_invoice_unit_cost(batch):
if self.allow_edit_invoice_unit_cost(batch):
g.set_raw_renderer('invoice_unit_cost', self.render_invoice_unit_cost)
g.set_click_handler('invoice_unit_cost',
'invoiceUnitCostClicked(props.row)')
@ -1102,7 +1074,7 @@ class ReceivingBatchView(PurchasingBatchView):
def get_row_instance_title(self, row):
if row.product:
return six.text_type(row.product)
return str(row.product)
if row.upc:
return row.upc.pretty()
return super(ReceivingBatchView, self).get_row_instance_title(row)
@ -1119,8 +1091,7 @@ class ReceivingBatchView(PurchasingBatchView):
# first make grid like normal
g = super(ReceivingBatchView, self).make_row_credits_grid(row)
if (self.get_use_buefy()
and self.has_perm('edit_row')
if (self.has_perm('edit_row')
and self.row_editable(row)):
# add the Un-Declare action
@ -1153,56 +1124,52 @@ class ReceivingBatchView(PurchasingBatchView):
# simply invoke this method and return the result. however we're not
# there yet...for now it's only tested for desktop
self.viewing = True
use_buefy = self.get_use_buefy()
row = self.get_row_instance()
# things are a bit different now w/ buefy support..
if use_buefy:
# don't even bother showing this page if that's all the
# request was about
if self.request.method == 'GET':
return self.redirect(self.get_row_action_url('view', row))
# don't even bother showing this page if that's all the
# request was about
if self.request.method == 'GET':
return self.redirect(self.get_row_action_url('view', row))
# make sure edit is allowed
if not (self.has_perm('edit_row') and self.row_editable(row)):
raise self.forbidden()
# make sure edit is allowed
if not (self.has_perm('edit_row') and self.row_editable(row)):
raise self.forbidden()
# check for JSON POST, which is submitted via AJAX from
# the "view row" page
if self.request.method == 'POST' and not self.request.POST:
data = self.request.json_body
kwargs = dict(data)
# check for JSON POST, which is submitted via AJAX from
# the "view row" page
if self.request.method == 'POST' and not self.request.POST:
data = self.request.json_body
kwargs = dict(data)
# TODO: for some reason quantities can come through as strings?
cases = kwargs['quantity']['cases']
if cases is not None:
if cases == '':
cases = None
else:
cases = decimal.Decimal(cases)
kwargs['cases'] = cases
units = kwargs['quantity']['units']
if units is not None:
if units == '':
units = None
else:
units = decimal.Decimal(units)
kwargs['units'] = units
del kwargs['quantity']
# TODO: for some reason quantities can come through as strings?
cases = kwargs['quantity']['cases']
if cases is not None:
if cases == '':
cases = None
else:
cases = decimal.Decimal(cases)
kwargs['cases'] = cases
units = kwargs['quantity']['units']
if units is not None:
if units == '':
units = None
else:
units = decimal.Decimal(units)
kwargs['units'] = units
del kwargs['quantity']
# handler takes care of the receiving logic for us
try:
self.batch_handler.receive_row(row, **kwargs)
# handler takes care of the receiving logic for us
try:
self.batch_handler.receive_row(row, **kwargs)
except Exception as error:
return self.json_response({'error': str(error)})
except Exception as error:
return self.json_response({'error': six.text_type(error)})
self.Session.flush()
self.Session.refresh(row)
return self.json_response({
'ok': True,
'row': self.get_context_row(row)})
self.Session.flush()
self.Session.refresh(row)
return self.json_response({
'ok': True,
'row': self.get_context_row(row)})
batch = row.batch
permission_prefix = self.get_permission_prefix()
@ -1226,15 +1193,12 @@ class ReceivingBatchView(PurchasingBatchView):
}
schema = ReceiveRowForm().bind(session=self.Session())
form = forms.Form(schema=schema, request=self.request, use_buefy=use_buefy)
form = forms.Form(schema=schema, request=self.request)
form.cancel_url = self.get_row_action_url('view', row)
# mode
mode_values = [(mode, mode) for mode in possible_modes]
if use_buefy:
mode_widget = dfwidget.SelectWidget(values=mode_values)
else:
mode_widget = forms.widgets.JQuerySelectWidget(values=mode_values)
mode_widget = dfwidget.SelectWidget(values=mode_values)
form.set_widget('mode', mode_widget)
# quantity
@ -1354,59 +1318,55 @@ class ReceivingBatchView(PurchasingBatchView):
View for declaring a credit, i.e. converting some "received" or similar
quantity, to a credit of some sort.
"""
use_buefy = self.get_use_buefy()
row = self.get_row_instance()
# things are a bit different now w/ buefy support..
if use_buefy:
# don't even bother showing this page if that's all the
# request was about
if self.request.method == 'GET':
return self.redirect(self.get_row_action_url('view', row))
# don't even bother showing this page if that's all the
# request was about
if self.request.method == 'GET':
return self.redirect(self.get_row_action_url('view', row))
# make sure edit is allowed
if not (self.has_perm('edit_row') and self.row_editable(row)):
raise self.forbidden()
# make sure edit is allowed
if not (self.has_perm('edit_row') and self.row_editable(row)):
raise self.forbidden()
# check for JSON POST, which is submitted via AJAX from
# the "view row" page
if self.request.method == 'POST' and not self.request.POST:
data = self.request.json_body
kwargs = dict(data)
# check for JSON POST, which is submitted via AJAX from
# the "view row" page
if self.request.method == 'POST' and not self.request.POST:
data = self.request.json_body
kwargs = dict(data)
# TODO: for some reason quantities can come through as strings?
if kwargs['cases'] is not None:
if kwargs['cases'] == '':
kwargs['cases'] = None
else:
kwargs['cases'] = decimal.Decimal(kwargs['cases'])
if kwargs['units'] is not None:
if kwargs['units'] == '':
kwargs['units'] = None
else:
kwargs['units'] = decimal.Decimal(kwargs['units'])
# TODO: for some reason quantities can come through as strings?
if kwargs['cases'] is not None:
if kwargs['cases'] == '':
kwargs['cases'] = None
else:
kwargs['cases'] = decimal.Decimal(kwargs['cases'])
if kwargs['units'] is not None:
if kwargs['units'] == '':
kwargs['units'] = None
else:
kwargs['units'] = decimal.Decimal(kwargs['units'])
try:
result = self.handler.can_declare_credit(row, **kwargs)
try:
result = self.handler.can_declare_credit(row, **kwargs)
except Exception as error:
return self.json_response({'error': str(error)})
except Exception as error:
return self.json_response({'error': six.text_type(error)})
else:
if result:
self.handler.declare_credit(row, **kwargs)
else:
if result:
self.handler.declare_credit(row, **kwargs)
return self.json_response({
'error': "Handler says you can't declare that credit; "
"not sure why"})
else:
return self.json_response({
'error': "Handler says you can't declare that credit; "
"not sure why"})
self.Session.flush()
self.Session.refresh(row)
return self.json_response({
'ok': True,
'row': self.get_context_row(row)})
self.Session.flush()
self.Session.refresh(row)
return self.json_response({
'ok': True,
'row': self.get_context_row(row)})
batch = row.batch
context = {
@ -1422,16 +1382,12 @@ class ReceivingBatchView(PurchasingBatchView):
}
schema = DeclareCreditForm()
form = forms.Form(schema=schema, request=self.request,
use_buefy=use_buefy)
form = forms.Form(schema=schema, request=self.request)
form.cancel_url = self.get_row_action_url('view', row)
# credit_type
values = [(m, m) for m in POSSIBLE_CREDIT_TYPES]
if use_buefy:
widget = dfwidget.SelectWidget(values=values)
else:
widget = forms.widgets.JQuerySelectWidget(values=values)
widget = dfwidget.SelectWidget(values=values)
form.set_widget('credit_type', widget)
# quantity
@ -1896,7 +1852,7 @@ class ReceivingBatchView(PurchasingBatchView):
if cost == '':
return {'error': "You must specify a cost"}
try:
cost = decimal.Decimal(six.text_type(cost))
cost = decimal.Decimal(str(cost))
except decimal.InvalidOperation:
return {'error': "Cost is not valid!"}
else: