Example #1
0
    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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)