diff --git a/tendril/dox/production.py b/tendril/dox/production.py index 9ada410..0f446cd 100644 --- a/tendril/dox/production.py +++ b/tendril/dox/production.py @@ -36,10 +36,14 @@ import os import yaml +from fs.utils import copyfile + from tendril.boms import electronics as boms_electronics from tendril.entityhub import projects from tendril.entityhub import serialnos from tendril.gedaif.conffile import ConfigsFile +from tendril.utils.fsutils import temp_fs +from tendril.utils.fsutils import get_tempname from tendril.utils.pdf import merge_pdf import render @@ -294,3 +298,24 @@ def get_production_order_data(serialno=None): snomap_data = yaml.load(f) return order_yaml_data, snomap_data + + +def get_production_order_manifest_set(serialno): + workspace = temp_fs.makeopendir(get_tempname()) + children = serialnos.get_child_serialnos(sno=serialno) + manifests = [] + for child in children: + am = docstore.get_docs_list_for_sno_doctype(child, 'ASSEMBLY MANIFEST') + if len(am) == 1: + am = am[0] + copyfile(am.fs, am.path, workspace, am.filename, overwrite=True) + manifests.append(workspace.getsyspath(am.filename)) + if len(manifests): + output = merge_pdf(manifests, + os.path.join( + workspace.getsyspath('/'), + serialno + '.pdf' + ), + remove_sources=True) + return output + return None diff --git a/tendril/entityhub/serialnos.py b/tendril/entityhub/serialnos.py index 9fd95ed..bbb3e99 100644 --- a/tendril/entityhub/serialnos.py +++ b/tendril/entityhub/serialnos.py @@ -85,7 +85,7 @@ def get_parent_serialnos(sno=None, session=None): def get_child_serialnos(sno=None, session=None): if sno is None: raise AttributeError("child cannot be None") - return controller.get_serialno_object(sno=sno, session=session).children + return controller.get_child_snos(serialno=sno, session=session) @with_db diff --git a/tendril/frontend/blueprints/production/templates/production_order_detail.html b/tendril/frontend/blueprints/production/templates/production_order_detail.html index 803db46..0b48faa 100644 --- a/tendril/frontend/blueprints/production/templates/production_order_detail.html +++ b/tendril/frontend/blueprints/production/templates/production_order_detail.html @@ -25,7 +25,7 @@