Avoid error when history has blanks for ordering worksheet
This commit is contained in:
parent
a807a0f50c
commit
cc7b9ccb86
|
@ -2,7 +2,7 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2022 Lance Edgar
|
# Copyright © 2010-2023 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -27,12 +27,8 @@ These views expose the basic CRUD interface to "ordering" batches, for the web
|
||||||
API.
|
API.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import unicode_literals, absolute_import
|
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
from rattail.util import pretty_quantity
|
from rattail.util import pretty_quantity
|
||||||
|
|
||||||
|
@ -67,10 +63,10 @@ class OrderingBatchViews(APIBatchView):
|
||||||
data = super(OrderingBatchViews, self).normalize(batch)
|
data = super(OrderingBatchViews, self).normalize(batch)
|
||||||
|
|
||||||
data['vendor_uuid'] = batch.vendor.uuid
|
data['vendor_uuid'] = batch.vendor.uuid
|
||||||
data['vendor_display'] = six.text_type(batch.vendor)
|
data['vendor_display'] = str(batch.vendor)
|
||||||
|
|
||||||
data['department_uuid'] = batch.department_uuid
|
data['department_uuid'] = batch.department_uuid
|
||||||
data['department_display'] = six.text_type(batch.department) if batch.department else None
|
data['department_display'] = str(batch.department) if batch.department else None
|
||||||
|
|
||||||
data['po_total_calculated_display'] = "${:0.2f}".format(batch.po_total_calculated or 0)
|
data['po_total_calculated_display'] = "${:0.2f}".format(batch.po_total_calculated or 0)
|
||||||
data['ship_method'] = batch.ship_method
|
data['ship_method'] = batch.ship_method
|
||||||
|
@ -152,7 +148,7 @@ class OrderingBatchViews(APIBatchView):
|
||||||
product = cost.product
|
product = cost.product
|
||||||
subdept_costs.append({
|
subdept_costs.append({
|
||||||
'uuid': cost.uuid,
|
'uuid': cost.uuid,
|
||||||
'upc': six.text_type(product.upc),
|
'upc': str(product.upc),
|
||||||
'upc_pretty': product.upc.pretty() if product.upc else None,
|
'upc_pretty': product.upc.pretty() if product.upc else None,
|
||||||
'brand_name': product.brand.name if product.brand else None,
|
'brand_name': product.brand.name if product.brand else None,
|
||||||
'description': product.description,
|
'description': product.description,
|
||||||
|
@ -173,8 +169,8 @@ class OrderingBatchViews(APIBatchView):
|
||||||
|
|
||||||
# sort the (sub)department groupings
|
# sort the (sub)department groupings
|
||||||
sorted_departments = []
|
sorted_departments = []
|
||||||
for dept in sorted(six.itervalues(departments), key=lambda d: d['name']):
|
for dept in sorted(departments.values(), key=lambda d: d['name']):
|
||||||
dept['subdepartments'] = sorted(six.itervalues(dept['subdepartments']),
|
dept['subdepartments'] = sorted(dept['subdepartments'].values(),
|
||||||
key=lambda s: s['name'])
|
key=lambda s: s['name'])
|
||||||
sorted_departments.append(dept)
|
sorted_departments.append(dept)
|
||||||
|
|
||||||
|
@ -185,6 +181,8 @@ class OrderingBatchViews(APIBatchView):
|
||||||
history = list(reversed(history))
|
history = list(reversed(history))
|
||||||
# must convert some date objects to string, for JSON sake
|
# must convert some date objects to string, for JSON sake
|
||||||
for h in history:
|
for h in history:
|
||||||
|
if not h:
|
||||||
|
continue
|
||||||
purchase = h.get('purchase')
|
purchase = h.get('purchase')
|
||||||
if purchase:
|
if purchase:
|
||||||
dt = purchase.get('date_ordered')
|
dt = purchase.get('date_ordered')
|
||||||
|
@ -237,7 +235,7 @@ class OrderingBatchRowViews(APIBatchRowView):
|
||||||
data = super(OrderingBatchRowViews, self).normalize(row)
|
data = super(OrderingBatchRowViews, self).normalize(row)
|
||||||
|
|
||||||
data['item_id'] = row.item_id
|
data['item_id'] = row.item_id
|
||||||
data['upc'] = six.text_type(row.upc)
|
data['upc'] = str(row.upc)
|
||||||
data['upc_pretty'] = row.upc.pretty() if row.upc else None
|
data['upc_pretty'] = row.upc.pretty() if row.upc else None
|
||||||
data['brand_name'] = row.brand_name
|
data['brand_name'] = row.brand_name
|
||||||
data['description'] = row.description
|
data['description'] = row.description
|
||||||
|
@ -262,7 +260,7 @@ class OrderingBatchRowViews(APIBatchRowView):
|
||||||
data['po_total_calculated'] = row.po_total_calculated
|
data['po_total_calculated'] = row.po_total_calculated
|
||||||
data['po_total_calculated_display'] = "${:0.2f}".format(row.po_total_calculated) if row.po_total_calculated is not None else None
|
data['po_total_calculated_display'] = "${:0.2f}".format(row.po_total_calculated) if row.po_total_calculated is not None else None
|
||||||
data['status_code'] = row.status_code
|
data['status_code'] = row.status_code
|
||||||
data['status_display'] = row.STATUS.get(row.status_code, six.text_type(row.status_code))
|
data['status_display'] = row.STATUS.get(row.status_code, str(row.status_code))
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue