Esempio n. 1
0
    def get(self):
        result = ""
        mine_info = ""
        response_message = ""

        try:
            permit_no = request.args.get('a_PermitNumber')
            permit_prefix = permit_no.split("-")[0]
            type_of_deemed_auth = request.args.get('a_TypeofDeemedAuth')

            permits = Permit.find_by_permit_no_all(permit_no)

            for permit in permits:
                mine = Mine.find_by_mine_guid(str(permit.mine_guid))

                # Mine must be operating.
                if not mine.mine_status or mine.mine_status[
                        0].mine_status_xref.mine_operation_status_code != "OP":
                    break

                # IP SURVEYS (Induced): Valid MMS mine types: 'CX','ES','EU'
                # There may be need of a check against mine_tenure_type_code IN ["MIN", "COL"] and mine_disturbance_code IN ["SUR", "UND"]
                # but this data is inconsistant for now.
                if type_of_deemed_auth == "INDUCED" and permit_prefix not in [
                        "CX", "MX"
                ]:
                    break

                # DRILL PROGRAM (Drill): Valid MMS mine types: 'CS','CU','MS','MU','IS','IU'
                if type_of_deemed_auth != "INDUCED" and permit_prefix not in [
                        "C", "M"
                ]:
                    break

                mine_info = mine_info + mine.mine_no + ' - ' + mine.mine_name + '\r\c'

            if mine_info != "":
                result = "Success"
            else:
                result = "Failure"
                response_message = "NoValidMinesForPermit"

        except Exception as e:
            current_app.logger.error(str(e))
            result = "Failure"
            mine_info = ""
            response_message = "Unhandled Exception"

        return {
            "a_Result": result,
            "a_MineInfo": mine_info,
            "a_ResponseMessage": response_message,
            "a_Timestamp": datetime.utcnow()
        }
    def get(self):
        result = ""
        now_info = ""
        response_message = ""

        try:
            permit_no = request.args.get('a_PermitNumber')
            permit_prefix = permit_no.split("-")[0]

            permits = Permit.find_by_permit_no_all(permit_no)

            for permit in permits:
                mine = Mine.find_by_mine_guid(str(permit.mine_guid))

                # Mine must be operating.
                if not mine.mine_status or mine.mine_status[
                        0].mine_status_xref.mine_operation_status_code != "OP":
                    break

                if permit_prefix not in ["CX", "MX"]:
                    break

                for permit_amendment in permit.permit_amendments:
                    if (permit_amendment.authorization_end_date -
                            datetime.utcnow().date()).days > 30:
                        #only want permits that expire 30 days or further in the future
                        if permit_amendment.now_identity:
                            now_info = now_info + str(
                                permit_amendment.now_identity.now_number
                            ) + " - " + str(
                                permit_amendment.authorization_end_date) + '\r'
                        else:
                            now_info = now_info + " - " + str(
                                permit_amendment.authorization_end_date) + '\r'
                        break

            if now_info != "":
                result = "Success"
            else:
                result = "Failure"
                response_message = "NoValidNowsForPermit"

        except Exception as e:
            current_app.logger.error(str(e))
            result = "Failure"
            now_info = ""
            response_message = "Unhandled Exception"

        return {
            "a_Result": result,
            "a_NoWInfo": now_info,
            "a_ResponseMessage": response_message,
            "a_Timestamp": datetime.utcnow()
        }