Example #1
0
    def _application_cancel(self, state, originator, data):
        txn_data = ApplicationCancelPayload()
        txn_data.ParseFromString(data)

        application_addr = Addressing.application_address(
            txn_data.record_identifier)

        state_items = self._get(state, [application_addr])

        # check that the application exists
        applications = state_items.get(application_addr, None)
        application = self._find_application(applications, txn_data.applicant,
                                             txn_data.record_identifier,
                                             txn_data.type)
        if application is None:
            raise InvalidTransaction("Application does not exists.")

        # verify the txn signer is qualified to accept the application
        if application.applicant != originator:
            raise InvalidTransaction("Only Applicant can cancel Application.")

        # update the application
        application.status = Application.CANCELED

        # send back the updated application list
        self._set(state, [(application_addr, applications)])
Example #2
0
    def create_application_cancel_tp_process_request(self,
                                                     record_id,
                                                     applicant_id,
                                                     application_type):
        record_addr = Addressing.record_address(record_id)
        agent_pub_key = self.public_key
        agent_addr = Addressing.agent_address(agent_pub_key)
        application_addr = Addressing.application_address(record_id)
        inputs = [agent_addr, application_addr, record_addr]
        outputs = [application_addr]

        return self.create_tp_process_request(
            SupplyChainPayload.APPLICATION_CANCEL,
            ApplicationCancelPayload(record_identifier=record_id,
                                     applicant=applicant_id,
                                     type=application_type),
            inputs, outputs)
Example #3
0
 def application_cancel(self,
                        record_identifier,
                        application_type,
                        wait=None):
     outputs = [
         Addressing.application_address(record_identifier),
         Addressing.record_address(record_identifier)
     ]
     inputs = outputs + [
         Addressing.agent_address(self.public_key),
         Addressing.record_address(record_identifier)
     ]
     return self._send_txn(SupplyChainPayload.APPLICATION_CANCEL,
                           ApplicationCancelPayload(
                               record_identifier=record_identifier,
                               applicant=self._public_key,
                               type=application_type),
                           inputs=inputs,
                           outputs=outputs,
                           wait=wait)