def handle(self, text): """ Check some preconditions, based on shared assumptions of these handlers. Return true if there is a precondition that wasn't met. If all preconditions are met, the variables for facility and name will be set. This method will manage some replies as well. """ # at some point we may want more granular permissions for these # operations, but for now we just share the one self.hsa = self.msg.logistics_contact stock_report = create_stock_report(self.get_report_type(), self.hsa.supply_point, text, self.msg.logger_msg) self.requests = StockRequest.create_from_report(stock_report, self.hsa) self.send_responses(stock_report)
def _process_emergency_soh(self): stock_report = create_stock_report(Reports.EMERGENCY_SOH, self.hsa.supply_point, self.report_data, self.msg.logger_msg) requests = StockRequest.create_from_report(stock_report, self.hsa) if stock_report.errors: # TODO: respond better. self.respond(config.Messages.GENERIC_ERROR) else: if self.msg.logistics_contact.role == ContactRole.objects.get(code=config.Roles.IN_CHARGE): self.respond(config.Messages.REPORT_SOH_RESPONSE, hsa=self.hsa.name, products=", ".join(req.sms_format() for req in requests), hsa_id=self.hsa.supply_point.code) else: assert(self.msg.logistics_contact.role == ContactRole.objects.get(code=config.Roles.HSA)) send_emergency_responses(self.msg, self.hsa, stock_report, requests)
def _process_soh(self): stock_report = create_stock_report(Reports.SOH, self.hsa.supply_point, self.report_data, self.msg.logger_msg) requests = StockRequest.create_from_report(stock_report, self.hsa) if stock_report.errors: # TODO: respond better. self.respond(config.Messages.GENERIC_ERROR) else: if self.msg.logistics_contact.role == ContactRole.objects.get( code=config.Roles.IN_CHARGE): self.respond(config.Messages.REPORT_SOH_RESPONSE, hsa=self.hsa.name, products=", ".join(req.sms_format() for req in requests), hsa_id=self.hsa.supply_point.code) else: assert ( self.msg.logistics_contact.role == ContactRole.objects.get( code=config.Roles.HSA)) send_soh_responses(self.msg, self.hsa, stock_report, requests)