def register_auth_chain(self, register=True, session=None): parents = self.auth_parent_snos if register is True: for parent in parents: serialnos.link_serialno(child=self.serialno, parent=parent, session=session)
def commit(self, outfolder=None, indent_sno=None, prod_ord_sno=None, register=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): if self._is_done is True: raise NothingToProduceError self._generate_docs(outfolder, indent_sno, prod_ord_sno, register, session) if register is True: serialnos.set_serialno_efield(sno=self._sno, efield=self._target_modulename, session=session) serialnos.link_serialno(child=self._sno, parent=prod_ord_sno, session=session) self._original = get_module_prototype(self._orig_modulename) self._target = get_module_instance(self._sno, self._target_modulename, session=session) self._is_done = True
def commit(self, outfolder=None, indent_sno=None, prod_ord_sno=None, register=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): # Serial numbers will already have been written in. if self._prototype.strategy['genmanifest'] is True: if pb_class is None: pb_class = TendrilProgressBar if leaf_pb is True: pb = pb_class(max=len(self.refdes)) verbose = False else: pb = None verbose = True msg = "Generating Manifests and Linking for {0}".format(self.ident) print(msg) for card in self.modules: self._generate_am( outfolder, card.refdes, prod_ord_sno, indent_sno, verbose=verbose, register=register, session=session ) if register is True: serialnos.link_serialno( child=card.refdes, parent=prod_ord_sno, verbose=verbose, session=session ) if leaf_pb is True: pb.next(note=card.refdes) if leaf_pb is True: pb.finish()
def commit(self, outfolder=None, indent_sno=None, prod_ord_sno=None, register=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): if self._is_done is True: raise NothingToProduceError self._generate_docs(outfolder, indent_sno, prod_ord_sno, register, session) if register is True: serialnos.set_serialno_efield( sno=self._sno, efield=self._target_modulename, session=session ) serialnos.link_serialno( child=self._sno, parent=prod_ord_sno, session=session ) self._original = get_module_prototype(self._orig_modulename) self._target = get_module_instance(self._sno, self._target_modulename, session=session) self._is_done = True
def commit(self, outfolder=None, indent_sno=None, prod_ord_sno=None, register=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): # Serial numbers will already have been written in. if self._prototype.strategy['genmanifest'] is True: if pb_class is None: pb_class = TendrilProgressBar if leaf_pb is True: pb = pb_class(max=len(self.refdes)) verbose = False else: pb = None verbose = True msg = "Generating Manifests and Linking for {0}".format(self.ident) print(msg) for card in self.modules: self._generate_am(outfolder, card.refdes, prod_ord_sno, indent_sno, verbose=verbose, register=register, session=session) if register is True: serialnos.link_serialno(child=card.refdes, parent=prod_ord_sno, verbose=verbose, session=session) if leaf_pb is True: pb.next(note=card.refdes) if leaf_pb is True: pb.finish()
def _process(self, outfolder=None, manifestsfolder=None, label_manager=None, register=False, force=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): self._force = force if pb_class is None: pb_class = TendrilProgressBar if stacked_pb is True: pb = pb_class(max=8) else: pb = DummyProgressBar(max=8) pb.next(note="Constructing Resources for Production Order Generation") if outfolder is None: if self._order_yaml_path is not None: outfolder = os.path.split(self._order_yaml_path)[0] else: raise AttributeError('Output folder needs to be defined') if manifestsfolder is None: manifestsfolder = os.path.join(outfolder, 'manifests') if not os.path.exists(manifestsfolder): os.makedirs(manifestsfolder) if self._sno is None: self._sno = serialnos.get_serialno( series='PROD', efield=self._title, register=register, session=session ) # Create Snomap if self._snomap_path is not None: with open(self._snomap_path, 'r') as f: self._snomap = SerialNumberMap(yaml.load(f), self._sno) else: self._snomap = SerialNumberMap({}, self._sno) self._snomap.set_session(session=session) if register is True: self._snomap.enable_creation() indent_sno = self._snomap.get_sno('indentsno') if register is True: serialnos.link_serialno(child=indent_sno, parent=self.serialno, verbose=False, session=session) # Create cards and deltas and so forth pb.next(note="Constructing Production Order Actions") actions = self.card_actions + self.delta_actions pb.next(note="Executing Production Order Actions") for action in actions: if register is False: action.scaffold = True action.set_session(session=session) action.commit( outfolder=manifestsfolder, indent_sno=indent_sno, prod_ord_sno=self._sno, register=register, session=session, pb_class=pb_class, stacked_pb=stacked_pb, leaf_pb=leaf_pb, ) self._snomap.disable_creation() pb.next(note="Constructing Composite Output BOM") cobom = CompositeOutputBom(self.bomlist) pb.next(note="Creating Indent(s)") self._process_indents( indent_sno=indent_sno, cobom=cobom, outfolder=outfolder, register=register, force=force, session=session ) pb.next(note="Generating Production Order Document") # Make production order doc self._last_generated_at = arrow.utcnow().isoformat() if self._first_generated_at is None: self._first_generated_at = arrow.utcnow().isoformat() self._dump_order_yaml(outfolder=outfolder, register=register, session=session) self._generate_doc(outfolder=outfolder, register=register, session=session) pb.next(note="Generating Labels") self.make_labels(label_manager=label_manager, pb_class=pb_class, stacked_pb=stacked_pb, leaf_pb=leaf_pb) pb.next(note="Finalizing Production Order") for action in actions: action.scaffold = False action.unset_session() self._snomap.dump_to_file(outfolder) self._snomap.unset_session() if register is True: docstore.register_document( serialno=self.serialno, docpath=os.path.join(outfolder, 'snomap.yaml'), doctype='SNO MAP', efield=self.title, verbose=False, session=session ) pb.finish() self._defined = True
def _process(self, outfolder=None, manifestsfolder=None, label_manager=None, register=False, force=False, pb_class=None, stacked_pb=False, leaf_pb=True, session=None): self._force = force if pb_class is None: pb_class = TendrilProgressBar if stacked_pb is True: pb = pb_class(max=8) else: pb = DummyProgressBar(max=8) pb.next(note="Constructing Resources for Production Order Generation") if outfolder is None: if self._order_yaml_path is not None: outfolder = os.path.split(self._order_yaml_path)[0] else: raise AttributeError('Output folder needs to be defined') if manifestsfolder is None: manifestsfolder = os.path.join(outfolder, 'manifests') if not os.path.exists(manifestsfolder): os.makedirs(manifestsfolder) if self._sno is None: self._sno = serialnos.get_serialno( series='PROD', efield=self._title, register=register, session=session ) # Create Snomap if self._snomap_path is not None: with open(self._snomap_path, 'r') as f: self._snomap = SerialNumberMap(yaml.load(f), self._sno) else: self._snomap = SerialNumberMap({}, self._sno) self._snomap.set_session(session=session) if register is True: self._snomap.enable_creation() indent_sno = self._snomap.get_sno('indentsno') if register is True: serialnos.link_serialno(child=indent_sno, parent=self.serialno, verbose=False, session=session) # Create cards and deltas and so forth pb.next(note="Constructing Production Order Actions") actions = self.card_actions + self.delta_actions pb.next(note="Executing Production Order Actions") for action in actions: if register is False: action.scaffold = True action.set_session(session=session) action.commit( outfolder=manifestsfolder, indent_sno=indent_sno, prod_ord_sno=self._sno, register=register, session=session, pb_class=pb_class, stacked_pb=stacked_pb, leaf_pb=leaf_pb, ) self._snomap.disable_creation() pb.next(note="Constructing Composite Output BOM") cobom = CompositeOutputBom(self.bomlist) # Assume Indent is non-empty. # Create indent pb.next(note="Creating Indent") indent = InventoryIndent(indent_sno, verbose=False, session=session) indent.create(cobom, title="FOR {0}".format(self.serialno), desc=None, indent_type='production', requested_by=self._ordered_by, force=force) indent.define_auth_chain(prod_order_sno=self.serialno, session=session, prod_order_scaffold=True) indent.process(outfolder=outfolder, register=register, verbose=False, session=session) self._indents.append(indent) pb.next(note="Generating Production Order Document") # Make production order doc self._last_generated_at = arrow.utcnow().isoformat() if self._first_generated_at is None: self._first_generated_at = arrow.utcnow().isoformat() self._dump_order_yaml(outfolder=outfolder, register=register, session=session) self._generate_doc(outfolder=outfolder, register=register, session=session) pb.next(note="Generating Labels") self.make_labels(label_manager=label_manager, pb_class=pb_class, stacked_pb=stacked_pb, leaf_pb=leaf_pb) pb.next(note="Finalizing Production Order") for action in actions: action.scaffold = False action.unset_session() self._snomap.dump_to_file(outfolder) self._snomap.unset_session() if register is True: docstore.register_document( serialno=self.serialno, docpath=os.path.join(outfolder, 'snomap.yaml'), doctype='SNO MAP', efield=self.title, verbose=False, session=session ) pb.finish() self._defined = True