import Pyro.core from sndcs.ScrapCodeFactory import ScrapCodeFactory from sndcs_common.SndcsExceptions import * from sndcs_common.Logger import logger log = logger.getLogger("sndcsd") class ScrapCodeProxyFactory(Pyro.core.ObjBase): ### __init__ functions ### ### From ScrapCodeFactory ### def getScrapCodes(self): scrap_codes = [] scr = ScrapCodeFactory().getActiveScrapCodes() for x in scr: scrap_codes.append({"serialNum":x.serialNum(), "code":x.code(), "description":x.description()}) return scrap_codes def setScrapCodeByCode(self, code): scrapcode = ScrapCodeFactory().getScrapCodeByCode(code) if not scrapcode: raise SndcsIndirectError("No scrap code with code = '%s'" % (code)) proxy = ScrapCodeProxy() proxy.scrapcode = scrapcode self.getDaemon().connect(proxy) log.debug("Returning scrap code proxy object %s.", proxy) return proxy.getProxy() def setScrapCodeBySerialNum(self, serialNum): scrapcode = ScrapCodeFactory().getScrapCodeBySerialNum(serialNum) if not scrapcode: raise SndcsIndirectError("No scrap code with serialNum = '%s'" % (serialNum)) proxy = ScrapCodeProxy() proxy.scrapcode = scrapcode self.getDaemon().connect(proxy) log.debug("Returning scrap code proxy object %s.", proxy) return proxy.getProxy() class ScrapCodeProxy(Pyro.core.ObjBase): def getDataDict(self): """Utility to return scrap code data in a dictionary""" return {"serial_num":self.serialNum(), "code":self.code(), "description":self.description()} ### Getters and Setters ### def serialNum(self): return self.scrap_code.serialNum() def code(self): return self.scrap_code.code() def description(self): return self.scrap_code.description() def jopHed(self): return self.scrap_code.jobHed() def laborDtl(self): return self.scrap_code.laborDtl() def qtyScrap(self): return self.scrap_code.qtyScrap() ### Cleanup ### def disconnect(self): daemon = self.getDaemon() log.debug("Disconnecting scrap code proxy object %s.", self) daemon.disconnect(self)