Ejemplo n.º 1
0
def exit_sys(log, txt, start, sendmail = False):    
    etgLib.log_error(log, txt)
    etgLib.log_close(log, start)
    if sendmail:
        emailSubject = script_name + " - Failed"        
        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)       
    sys.exit()
Ejemplo n.º 2
0
def main_func():

    start = datetime.datetime.now()
    labelsPath = os.path.join(wkgFolder, labelGDBname)

    err_msg = None
    args = []
    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "preprod sde path: {0}".format(preprodSdePath))
        etgLib.log_info(log,
                        "preprod sde prefix: {0}".format(preprodSdePrefix))
        etgLib.log_info(log, "staging sde path: {0}".format(stgSdePath))
        etgLib.log_info(log, "staging sde prefix: {0}".format(stgSdePrefix))

        ## ========================================
        ## Process: check work folder age
        ## ========================================

        err_msg = etgLib.check_folder_age(wkgFolder, cutoffage)
        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        ## ========================================
        ## Process: call CRS9_checkPreprodCounts
        ## ========================================
        args = [
            labelsPath, preprodSdePath, preprodSdePrefix, stgSdePath,
            stgSdePrefix, log
        ]
        err_msg = crs9_check_preprod_feature_counts(args)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

    except Exception as e:
        err_msg = str(e)
        etgLib.log_error(log, "error in {0}: {1}".format(script_name, e))

    etgLib.log_close(log, start)

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
Ejemplo n.º 3
0
def main_func():

    start = datetime.datetime.now()

    err_msg = None
    args = []
    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(
            log, "preprod SPREPORT SDE path: {0}".format(prepSPREPORTpath))
        etgLib.log_info(
            log, "production SPREPORT SDE path: {0}".format(prodSPREPORTpath))
        etgLib.log_info(log,
                        "preprod SPOWN SDE path: {0}".format(prepSPOWNpath))
        etgLib.log_info(log,
                        "production SPOWN SDE path: {0}".format(prodSPOWNpath))

        ## ==============================================================
        ## Process: call CRS10_prodSPREPORTandSPOWNrefresh_with_fieldMap
        ## ==============================================================

        args = [
            prepSPREPORTpath, prodSPREPORTpath, prepSPOWNpath, prodSPOWNpath
        ]
        err_msg, log_msgs = crs10_prod_db_refresh(args)
        etgLib.log_info_all(log, log_msgs)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

    except Exception as e:
        err_msg = str(e)
        etgLib.log_error(log, "error in {0}: {1}".format(script_name, e))

    etgLib.log_close(log, start)

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
Ejemplo n.º 4
0
def main_func():

    start = datetime.datetime.now()

    err_msg = None
    args = []
    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "preprod sde path: {0}".format(preprodSdePath))
        etgLib.log_info(log, "sde prefix: {0}".format(preprodSdePrefix))

        ## ========================================
        ## Process: call CRS7_removeOldDataFromPreprod
        ## ========================================
        args = [preprodSdePath, preprodSdePrefix]
        err_msg, log_msgs = crs7_remove_old_data_from_preprod(args)

        etgLib.log_info_all(log, log_msgs)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

    except Exception as e:
        err_msg = str(e)
        etgLib.log_error(log, "error in {0}: {1}".format(script_name, e))

    etgLib.log_close(log, start)

    if sendMail:
        if err_msg != None:
            emailSubject = emailSubject1 + " - Failed"
        else:
            emailSubject = emailSubject1 + " - Successful"

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
Ejemplo n.º 5
0
def main_func():

    start = datetime.datetime.now()
    err_msg = None

    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        lbl_gdb = os.path.join(wkgFolder, labelGDBname)
        # set workspace
        arcpy.env.workspace = lbl_gdb

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "prepSPOWNpath: {0}".format(prepSPOWNpath))
        etgLib.log_info(log, "label gdb: {0}".format(lbl_gdb))

        ## ========================================
        ## Process: copy data from labels.gdb to SPOWN in pre-prod
        ## ========================================
        etgLib.log_info(
            log, 'copy Connect_Property from labels.gdb to SPOWN in pre-prod',
            True)
        # copy Connect_Property to *_o in SPOWN sde
        etgLib.log_info(log, 'copy Connect_Property to *_o in SPOWN sde ...')

        inFCpath = os.path.join(prepSPOWNpath, spown_property_connect)
        if arcpy.Exists(inFCpath):
            out_fc_name = spown_property_connect + "_o"
            outFCpath = os.path.join(prepSPOWNpath, out_fc_name)
            etgLib.log_info(
                log, 'Copying: {0} to {1}'.format(spown_property_connect,
                                                  out_fc_name))
            arcpy.Copy_management(inFCpath, outFCpath, "FeatureClass")

            # truncate and append
            etgLib.log_info(log, 'truncate Connect_Property in SPOWN sde ...')
            arcpy.TruncateTable_management(inFCpath)

        # build the FieldMappings
        etgLib.log_info(log, 'build the FieldMappings ...')
        list_fields_to_map = []

        list_fields_to_map.append(('TP_PROPERTY_LINK_PROPERTY_ID',
                                   'tempDsslvID_TP_PROPERTY_LINK_PROPERTY_ID'))
        list_fields_to_map.append(
            ('PROPERTY_ID', 'tempDsslvID_TP_PROPERTY_LINK_PROPERTY_ID'))
        list_fields_to_map.append(
            ('PARCEL_ID', 'tempDsslvID_TP_PROPERTY_LINK_PROPERTY_ID'))
        list_fields_to_map.append(
            ('COUNT_PARCEL_ID',
             'tempDsslvID_COUNT_TP_PROPERTY_LINK_PARCEL_ID'))

        ##        # Old mappings for old staging dataset
        ##        list_fields_to_map.append(('PROPERTY_ID','tempDsslvID_TP_PROPERTY_LINK_PROPERTY_ID'))
        ##        list_fields_to_map.append(('LEGAL_DESCRIPTION','TP_PROPERTY_LEGAL_DESCRIPTION'))
        ##        list_fields_to_map.append(('TITLE_NO', 'TP_PROPERTY_TITLE_NO'))
        ##        list_fields_to_map.append(('SUBADDRESS_ID', 'TP_PROPERTY_SUBADDRESS_ID'))
        ##        list_fields_to_map.append(('ADDRESS_SOURCE', 'TP_PROPERTY_ADDRESS_SOURCE'))
        ##        list_fields_to_map.append(('COUNT_PARCEL_ID', 'tempDsslvID_COUNT_TP_PROPERTY_LINK_PARCEL_ID'))

        print('Got to in fc name: {0}'.format(labels_property_connect))
        inFCpath = os.path.join(lbl_gdb, labels_property_connect)
        print('InFCPath: {0}'.format(inFCpath))
        outFCpath = os.path.join(prepSPOWNpath, spown_property_connect)
        print('OutFCPath: {0}'.format(outFCpath))

        fieldmappings = etgLib.get_field_mapping(inFCpath, outFCpath,
                                                 list_fields_to_map)

        # appending data from labels.gdb to SPOWN preprod sde
        etgLib.log_info(
            log, 'appending data from labels.gdb to SPOWN preprod sde  ...')
        arcpy.Append_management([inFCpath],
                                outFCpath,
                                "NO_TEST",
                                field_mapping=fieldmappings)

    except Exception as e:
        err_msg = "ERROR while running {0}: {1}".format(script_name, e)

    etgLib.log_close(log, start)
    print("Finished!!!  Please check the result in ArcMap or ArcCatalog")

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
Ejemplo n.º 6
0
def main_func():
   
    start=datetime.datetime.now()
    # dateStamp = start.strftime("%Y%m%d")

    prj = os.path.join(wkgFolder,prjName)
    lbl = os.path.join(wkgFolder,labelGDBname)

    err_msg = None
    args = []
    global emailAttachments

    try:               
        log_path = os.path.join(sys.path[0], 'logs')      
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)        

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "arcpro project: {0}".format(prj))
        etgLib.log_info(log, "lbl gdb: {0}".format(lbl))
        
        # ## =====================================
        # ## Process: call CRS_updateDataSourceAprx
        # ## =====================================
        # etgLib.log_info(log, 'calling CRS_updateDataSourceAprx', True)
        # args = [prj,lbl]        
        # err_msg = crs_update_datasource(args)
        
        # if err_msg != None:
        #     exit_sys(log, err_msg, start,sendMail)
        
        ## =====================================
        ## Process: call CRS_exportLabelToAnnoAprx
        ## =====================================
        etgLib.log_info(log, 'calling CRS_exportLabelToAnnoAprx', True)
        args = [prj,lbl]        
        err_msg = crs_label_to_annotation(args)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)
       
    except Exception as e:       
        err_msg = str(e)        
        etgLib.log_error(log,"error in {0}: {1}".format(script_name,e))

    etgLib.log_close(log, start)
    print ("Finished!!!  Please check the result in ArcMap or ArcCatalog")
    

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)
def main_func():

    start = datetime.datetime.now()
    # dateStamp = start.strftime("%Y%m%d")

    mxd = os.path.join(wkgFolder, mxdName)
    lbl = os.path.join(wkgFolder, labelGDBname)

    err_msg = None
    args = []
    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "mxd: {0}".format(mxd))
        etgLib.log_info(log, "lbl gdb: {0}".format(lbl))
        etgLib.log_info(log, "extent string: {0}".format(extentString))
        etgLib.log_info(log, "sde path: {0}".format(stgSdePath))

        ## ========================================
        ## Process: check work folder age
        ## ========================================
        err_msg = etgLib.check_folder_age(wkgFolder, cutoffage)
        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        # =============================
        # Process: check data existance
        # assume: mxd is in \CRS\MMMYYYY folder, create_Annotations.mxd CRS.GDB is in \CRS\MMMYYY folder
        # =============================
        etgLib.log_info(log, "Checking data existance", True)
        args = [mxd]
        for f in args:
            if not arcpy.Exists(f):
                err = "file does not exist: {}".format(f)
                exit_sys(log, err, start, sendMail)

        ## ========================================
        ## Process: call CRS5_prepareForCRSLables
        ## ========================================
        args = [wkgFolder, labelGDBname, stgSdePath, stgSdePrefix, log]
        err_msg = crs5_prepare_for_labels(args)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        ## ========================================
        ## Process: check if data is in nz boundary
        ## ========================================
        args = [lbl, extentString, ['PARCEL_LABEL_PT'], log]
        err_msg = crs_check_data_extent(args)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        ## =====================================
        ## Process: call CRS_updateDataSourceMxd
        ## =====================================
        args = [mxd, lbl, log]
        err_msg = crs_update_datasource_mxd(args)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

    except Exception as e:
        err_msg = str(e)
        etgLib.log_error(log, "error in CRS_Main2: {0}".format(e))

    etgLib.log_close(log, start)
    print("Finished!!!  Please check the result in ArcMap or ArcCatalog")

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
def main_func():

    start = datetime.datetime.now()
    err_msg = None

    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        # set workspace
        arcpy.env.workspace = contextdSdePath

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        # etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log,
                        "pre prod CONTEXTSdePath: {0}".format(contextdSdePath))

        ## ===============================================================
        ## Process: add attribute index to PARCEL_LABEL_PT_1 feature class
        ## ===============================================================
        etgLib.log_info(
            log,
            'add attribute indexes to PARCEL_LABEL_PT_1 feature class in CONTEXT sde...',
            True)

        fc_name = contextSdePrefix + fc_parcel_label_pt
        inFCpath = os.path.join(contextdSdePath, fc_name)
        if arcpy.Exists(inFCpath) == False:
            exit_sys(
                log,
                "{} does not exist in context sde database".format(fc_name),
                start, sendMail)

        indexes = arcpy.ListIndexes(
            inFCpath)  # ----> Lists both attribute and spatial indexes!!!
        indexPrefix = None
        etgLib.log_info(log, 'get the existing index prefix ...')
        for index in indexes:
            m = re.search(r'^R(\d+)_pk', index.name)
            if m != None:
                indexPrefix = m.group(1)
                break

        if indexPrefix == None:
            exit_sys(log, "no index prefix found in the existing indexes",
                     start, sendMail)

        etgLib.log_info(log, 'index prefix : {0}'.format(indexPrefix))

        list_index_to_create = []
        list_index_to_create.append(
            ("Owneridx", ["owner1", "owner2", "owner3",
                          "owner4"]))  # field names are case sensitive!
        list_index_to_create.append(("VestSrvidx", ["VESTING_SURVEY_ID"]))
        list_index_to_create.append(("FullAppidx", ["FULL_APP"]))
        list_index_to_create.append(("Parcelidx", ["PARCEL_ID"]))
        list_index_to_create.append(
            ("Titleidx", ["title1", "title2", "title3", "title4"]))

        for index_to_create in list_index_to_create:
            newIndex = "R{0}_{1}".format(indexPrefix, index_to_create[0])
            #print('InFCPath: {0}, Index name: {1}'.format(inFCpath,newIndex))
            fields = index_to_create[1]
            etgLib.log_info(log, 'creating index : {0}'.format(newIndex))
            arcpy.AddIndex_management(inFCpath, fields, newIndex, "NON_UNIQUE",
                                      "NON_ASCENDING")

        ## ===============================================================
        ## Process: add attribute index to ROAD_CL_Dissove_1 feature class
        ## ===============================================================
        etgLib.log_info(
            log, 'add attribute indexes to ROAD_CL_Dissove_1 feature class...',
            True)

        fc_name = contextSdePrefix + fc_road_cl_dissolve
        inFCpath = os.path.join(contextdSdePath, fc_name)
        if arcpy.Exists(inFCpath) == False:
            exit_sys(
                log,
                "{} does not exist in context sde database".format(fc_name),
                start, sendMail)
        indexes = arcpy.ListIndexes(
            inFCpath)  # ----> Lists both attribute and spatial indexes!!!
        indexPrefix = None
        etgLib.log_info(log, 'get the existing index prefix ...')
        for index in indexes:
            m = re.search(r'^R(\d+)_pk', index.name)
            if m != None:
                indexPrefix = m.group(1)
                break

        if indexPrefix == None:
            exit_sys(log, "no index prefix found in the existing indexes",
                     start, sendMail)

        etgLib.log_info(log, 'index prefix : {0}'.format(indexPrefix))

        list_index_to_create = []
        list_index_to_create.append(("Locidx", ["RD_LOC"]))
        list_index_to_create.append(("Rdnameidx", ["ROAD_NAME1"]))
        list_index_to_create.append(("Locatonidx", ["LOCATION1"]))

        for index_to_create in list_index_to_create:
            newIndex = "R{0}_{1}".format(indexPrefix, index_to_create[0])
            fields = index_to_create[1]
            etgLib.log_info(log, 'creating index : {0}'.format(newIndex))
            arcpy.AddIndex_management(inFCpath, fields, newIndex, "NON_UNIQUE",
                                      "NON_ASCENDING")

    except Exception as e:
        err_msg = "ERROR while running {0}: {1}".format(script_name, e)

    etgLib.log_close(log, start)
    print("Finished!!!  Please check the result in ArcMap or ArcCatalog")

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)
Ejemplo n.º 9
0
def main_func():
    
    start=datetime.datetime.now()

    crs = os.path.join(wkgFolder,crsName)
    mxd = os.path.join(wkgFolder, mxdName)

    err_msg = None
    args = []
    global emailAttachments

    try:  
        # generate log file
        log_path = os.path.join(sys.path[0], 'logs')      
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "Can't create a log file", start)        

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "mxd name: {0}".format(mxd))
        etgLib.log_info(log, "crs gdb: {0}".format(crs))
        etgLib.log_info(log, "extent string: {0}".format(extentString))
        etgLib.log_info(log, "staging sde path: {0}".format(stgSdePath))

        ## ========================================
        ## Process: check work folder age
        ## ========================================
        err_msg = etgLib.check_folder_age(wkgFolder, cutoffage)
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)        

       
        # =============================
        # Process: check data existance 
        # check if check_data.aprx and CRS.GDB are in \CRS\MMMYYY folder
        # =============================
        etgLib.log_info(log, "Checking data existance",True)
        args = [prj,crs]
        for f in args:           
            if not arcpy.Exists(f):
                err = "file does not exist: {}".format(f)                
                exit_sys(log, err, start, sendMail) 
             
        ## ========================================
        ## Process: check if data is in nz boundary
        ## ========================================
        args = [crs, extentString, []]
        err_msg, log_msgs = crs_check_data_extent(args)
        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)

        ## =====================================
        ## Process: call CRS_updateDataSourceMxd
        ## =====================================
        args = [mxd,crs,log]        
        err_msg = crs_update_datasource_mxd(args)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)
                
        
        ## ================================
        ## Process: call CRS1_repairCRSdata
        ## ================================   
        args = [crs,log]        
        err_msg, log_msgs = crs1_repair_crs_data(args)

        etgLib.log_info_all(log, log_msgs)
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)

        ## ===============================
        ## Process: call CRS2_emptyNDCSTAG
        ## ===============================   
        args = [stgSdePath]        
        err_msg, log_msgs = crs2_empty_stage_sde(args)

        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)
              

        ## ===================================
        ## Process: call CRS3_copyFCsToNZCSTAG
        ## ===================================   
        args = [stgSdePath,crs,stgSdePrefix]        
        err_msg, log_msgs = crs3_copy_fcs_stage(args)

        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)
        
        ## ======================================
        ## Process: call CRS4_copyTablesToNZCSTAG
        ## ======================================   
        args = [stgSdePath,crs,stgSdePrefix]        
        err_msg, log_msgs = crs4_copy_tbls_stage(args)

        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

    except Exception as e:       
        err_msg = str(e)        
        etgLib.log_error(log,"error in CRS_Main1: {0}".format(e))

    etgLib.log_close(log, start)
    print ("Finished!!!  Please check the result in ArcMap or ArcCatalog")
    

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)
Ejemplo n.º 10
0
def main_func():
   
    start=datetime.datetime.now()
    err_msg = None
   
    global emailAttachments

    try:               
        log_path = os.path.join(sys.path[0], 'logs')      
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)        

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "Staging sde path: {0}".format(stgSdePath))
        etgLib.log_info(log, "Context sde path: {0}".format(contextSdePath))
        
        ## ========================================
        ## Process: copy data from NZC_STG to NZCONTEXT
        ## ======================================== 
        etgLib.log_info(log,'copy data from NZC_STG to NZCONTEXT ...',True)
        # Get lists of tables and FCs
        etgLib.log_info(log, 'Getting lists of tables and FCs from NZC_STG ...')
        arcpy.env.workspace = stgSdePath
        
        fcl = arcpy.ListFeatureClasses()
        tbll = arcpy.ListTables()  

        # Process: Copy Feature classes
        etgLib.log_info(log,'Copy Features from NZC_STG database to NZCONTEXT pre-prod SDE ...',True)
        for fc in fcl:
##            inFCname = stgSdePrefix + fc
            inFCname = fc
            etgLib.log_info(log,'Featureclass name: {}'.format(fc))
            inFCpath = os.path.join(stgSdePath,inFCname)
            etgLib.log_info(log,'Featureclass path: {}'.format(inFCpath))
            NZC_fc = contextSdePrefix + fc.split(".")[2]
##            out_fc_name = contextSdePrefix + fc + "_1"
            out_fc_name = NZC_fc + "_1"
            etgLib.log_info(log,'Out Featureclass: {}'.format(out_fc_name))
            etgLib.log_info(log,'Context SDE Path: {}'.format(contextSdePath))
            outFCpath = os.path.join(contextSdePath,out_fc_name)
            etgLib.log_info(log,'Out fc: {}'.format(outFCPath))
            etgLib.log_info(log,'Copying ...: {}'.format(inFCname))
            arcpy.Copy_management(inFCpath,outFCpath, "FeatureClass")

        # Process: Copy Feature classes
        etgLib.log_info(log,'Copy Tables from NZC_STG database to NZCONTEXT pre-prod SDE ...',True)
        for tbl in tbll:
            if tbl not in excludedTables:
                inTBLname = stgSdePrefix + tbl
##                inTBLpath = os.path.join(stgSdePrefix,inTBLname)
                inTBLpath = os.path.join(stgSdePath,inTBLname)
                out_tbl_name = contextSdePrefix + tbl + "_1"
                outTBLpath = os.path.join(contextSdePath,out_tbl_name)
                etgLib.log_info(log,'Copying ...: {}'.format(inTBLname))
                arcpy.Copy_management(inTBLpath,outTBLpath)
        
        # Copy TITLE in CONTEXT to TITLE_o
        etgLib.log_info(log,'Copy TITLE table to TITLE_o in NZCONTEXT pre-prod SDE ...',True)
        inTBLname = contextSdePrefix + "TITLE"
        inTBLpath = os.path.join(contextSdePath,inTBLname)               
        out_tbl_name = contextSdePrefix + "TITLE_o"
        outTBLpath = os.path.join(contextSdePath,out_tbl_name)
        arcpy.Copy_management(inTBLpath,outTBLpath)

        # truncate and append Title in CONTEXT
        etgLib.log_info(log,'truncate and append TITLE in CONTEXT ...')
        arcpy.TruncateTable_management(inTBLname)

        stg_title_table = stgSdePrefix + "TITLE"   
        in_tables = [stg_title_table]
        arcpy.Append_management(in_tables, inTBLpath, "TEST") 
        
        # copying annotation layers to CONTEXT sde
        etgLib.log_info(log,'copying annotation layers from labels.gdb to CONTEXT sde ...',True)
        annoLayers = ['PARCEL_LABELSAnno2_5k', 'PARCEL_LABELSAnno5k', 'PARCEL_LABELSAnno10k', 'PARCEL_LABELSAnno20k','PARCEL_LABEL_PT', 'EASEMENT_LEASE', 'ROAD_CL_Dissolve']

        lbl_gdb = os.path.join(wkgFolder,labelGDBname)        
        arcpy.env.workspace = lbl_gdb
        
        for fc in annoLayers:                      
            inFCpath = os.path.join(lbl_gdb,fc)
            out_fc_name = contextSdePrefix + fc
            outFCpath = os.path.join(contextSdePath,out_fc_name)
            if arcpy.Exists(inFCpath):
                etgLib.log_info(log,'Copying ...: {}'.format(fc))            
                arcpy.Copy_management(inFCpath,outFCpath, "FeatureClass")

       
    except Exception as e:                     
        err_msg =  "ERROR while running {0}: {1}" .format(script_name,e)

    etgLib.log_close(log, start)
    print ("Finished!!!  Please check the result in ArcMap or ArcCatalog")
    

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)
Ejemplo n.º 11
0
def main_func():
   
    start=datetime.datetime.now()
    # dateStamp = start.strftime("%Y%m%d")

    err_msg = None
    args = []
    global emailAttachments

    try:               
        log_path = os.path.join(sys.path[0], 'logs')      
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)        

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        

        ## ========================================
        ## Process: call CRS6_addDataPreparation
        ## ========================================       
        args = [wkgFolder,labelGDBname]            
        err_msg, log_msgs = crs6_add_data_preparation(args)
        
        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)

        ## ========================================
        ## Process: call CRS7_removeOldDataFromPreprod
        ## ========================================       
        args = [contextdSdePath,contextSdePrefix]            
        err_msg, log_msgs = crs7_remove_old_data_from_preprod(args)
        
        etgLib.log_info_all(log, log_msgs)
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)            
       
        ## ========================================
        ## Process: call CRS8_Extract_for_Connect
        ## ========================================      
        args = [wkgFolder, assetsGDBname, spreportSdePath,spreportSdePrefix,stgSdePath, stgSdePrefix]            
        err_msg, log_msgs = crs8_extract_for_connection(args)

        etgLib.log_info_all(log, log_msgs)
        
        if err_msg != None:
            exit_sys(log, err_msg, start,sendMail)  
                
    except Exception as e:       
        err_msg = str(e)        
        etgLib.log_error(log,"error in CRS_Main3: {0}".format(e))

    etgLib.log_close(log, start)
    print ("Finished!!!  Please check the result in ArcMap or ArcCatalog")
    

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)
Ejemplo n.º 12
0
def main_func():
   
    start=datetime.datetime.now()
    err_msg = None
   
    global emailAttachments

    try:               
        log_path = os.path.join(sys.path[0], 'logs')      
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)        

        emailAttachments = [logfile]

        assets_gdb = os.path.join(wkgFolder,assetsGDBname)
        # set workspace
        arcpy.env.workspace = assets_gdb       
                      
        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "prepSREPORTpath: {0}".format(prepSPREPORTpath))
        etgLib.log_info(log, "assets gdb: {0}".format(assets_gdb))
              
        
        ## ========================================
        ## Process: copy data from assets.gdb to SPREPORT in pre-prod
        ## ========================================
        etgLib.log_info(log,'copy data from assets.gdb to SPREPORT in pre-prod...',True)
    
        list_of_fields_to_map_List = []

        # Parcel_site
        list_of_fields_to_map = []    
        list_of_fields_to_map.append(('SITE','MXLOCATION'))
        list_of_fields_to_map.append(('SITE_TYPE','type'))
        list_of_fields_to_map.append(('STATUS', 'status'))
        list_of_fields_to_map.append(('SITE_DESC', 'description'))

        list_of_fields_to_map_List.append(list_of_fields_to_map)

        # SPAN_Parcel
        list_of_fields_to_map = []    
        list_of_fields_to_map.append(('TAG_NO','MXLOCATION'))
        list_of_fields_to_map.append(('SITE','site'))

        list_of_fields_to_map_List.append(list_of_fields_to_map)

        # STRUCTURE_Parcel
        list_of_fields_to_map = []    
        list_of_fields_to_map.append(('TAG_NO','MXLOCATION'))
        list_of_fields_to_map.append(('TAG_TYPE','type'))
        list_of_fields_to_map.append(('STATUS', 'status'))
        list_of_fields_to_map.append(('STR_CAT_DESC', 'LongType'))

        list_of_fields_to_map_List.append(list_of_fields_to_map)

        # Section_Parcel
        list_of_fields_to_map = []           
        list_of_fields_to_map_List.append(list_of_fields_to_map)
           
        
        # backup sreport feature classes
        etgLib.log_info(log,'backup sreport feature classes...')
        for fc in spreportFClist:
            inFCpath = os.path.join(prepSPREPORTpath,fc)
            out_fc_name = fc + "_o"
            outFCpath = os.path.join(prepSPREPORTpath,out_fc_name)
            etgLib.log_info(log,'Copying: {0} to {1}'.format(fc,out_fc_name ))
            arcpy.Copy_management(inFCpath,outFCpath, "FeatureClass")

            arcpy.TruncateTable_management(inFCpath)
    
        # append from assets.gdb to SPREPORT
        i = 0
        for fc in assets_fcs:
            inFCpath =  os.path.join(assets_gdb,fc)

            out_fc_name = spreportFClist[i]
            outFCpath = os.path.join(prepSPREPORTpath,out_fc_name)
            
            list_fields_to_map = list_of_fields_to_map_List[i]
            
            if len(list_fields_to_map) > 0:
                fieldmappings = etgLib.get_field_mapping(inFCpath, outFCpath,list_fields_to_map)

                etgLib.log_info(log,'appending data from : {0}'.format(inFCpath))
                arcpy.Append_management(fc,outFCpath, "NO_TEST", fieldmappings)
            else:
                etgLib.log_info(log,'appending data from : {0}'.format(inFCpath))
                arcpy.Append_management(inFCpath,outFCpath, "TEST")
            i = i+1 

        # field calculation
        etgLib.log_info(log,'field calculation...')
        Input_FC = os.path.join(prepSPREPORTpath,"SPREPORT.MAPDATA.SPAN_Parcel")       
        arcpy.CalculateField_management(Input_FC, "EQN_TYPE", "'CON'", "PYTHON_9.3", "")

        Input_FC = os.path.join(prepSPREPORTpath,"SPREPORT.MAPDATA.STRUCTURE_Parcel")       
        arcpy.CalculateField_management(Input_FC, "SITE", "!TAG_NO![:9]", "PYTHON_9.3", "")
               
    except Exception as e:                     
        err_msg =  "ERROR while running {0}: {1}" .format(script_name,e)

    etgLib.log_close(log, start)
    print ("Finished!!!  Please check the result in ArcMap or ArcCatalog")
    

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText, emailAttachments, smtpServer)
Ejemplo n.º 13
0
def main_func():

    start = datetime.datetime.now()
    # dateStamp = start.strftime("%Y%m%d")

    #Change this depending on whether using MXD or APRX (ArcGIS Pro) project
    prj = os.path.join(wkgFolder, prjName)
    lbl = os.path.join(wkgFolder, labelGDBname)

    err_msg = None
    args = []
    global emailAttachments

    try:
        log_path = os.path.join(sys.path[0], 'logs')
        log, logfile = etgLib.create_log(log_path, log_name)
        if log == None: exit_sys(log, "can't create a log file", start)

        emailAttachments = [logfile]

        etgLib.log_start(log)
        etgLib.log_info(log, "script parameters:")
        etgLib.log_info(log, "------------------------")
        etgLib.log_info(log, "working folder: {0}".format(wkgFolder))
        etgLib.log_info(log, "arcpro project: {0}".format(prj))
        etgLib.log_info(log, "lbl gdb: {0}".format(lbl))
        etgLib.log_info(log, "extent string: {0}".format(extentString))
        etgLib.log_info(log, "sde path: {0}".format(stgSdePath))

        # =============================
        # Process: check data existance
        # check if create_Annotations.mxd/.aprx  is in \CRS\MMMYYY folder
        # =============================
        etgLib.log_info(log, "Checking data existance", True)
        args = [prj]
        for f in args:
            if not arcpy.Exists(f):
                err_msg = "file does not exist: {}".format(f)
                exit_sys(log, err_msg, start, sendMail)

        ## ========================================
        ## Process: call CRS5_prepareForCRSLabels
        ## ========================================
        args = [wkgFolder, labelGDBname, stgSdePath, stgSdePrefix]
        err_msg, log_msgs = crs5_prepare_for_labels(args)

        etgLib.log_info_all(log, log_msgs)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        ## ========================================
        ## Process: check if data is in NZ boundary by calling CRS_checkDataExtent
        ## ========================================
        args = [lbl, extentString, ['PARCEL_LABEL_PT']]
        err_msg, log_msgs = crs_check_data_extent(args)

        etgLib.log_info_all(log, log_msgs)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        ## =====================================
        ## Process: call CRS_updateDataSourceAprx
        ## =====================================
        etgLib.log_info(log, 'calling CRS_updateDataSourceAprx', True)
        args = [prj, lbl]
        err_msg, log_msgs = crs_update_datasource(args)

        etgLib.log_info_all(log, log_msgs)

        if err_msg != None:
            exit_sys(log, err_msg, start, sendMail)

        # ## =====================================
        # ## Process: call CRS_exportLabelToAnnoAprx
        # ## =====================================
        # etgLib.log_info(log, 'calling CRS_exportLabelToAnnoAprx', True)
        # args = [prj,lbl]
        # err_msg, log_msgs = crs_label_to_annotation(args)
        # etgLib.log_info_all(log, log_msgs)
        # if err_msg != None:
        #     exit_sys(log, err_msg, start,sendMail)

    except Exception as e:
        err_msg = str(e)
        etgLib.log_error(log, "error in CRS_Main2: {0}".format(e))

    etgLib.log_close(log, start)
    print("Finished!!!  Please check the result in ARcGIS Pro or ArcCatalog")

    if sendMail:
        if err_msg != None:
            emailSubject = 'Run {} - Failed'.format(script_name)
        else:
            emailSubject = 'Run {} - Successful'.format(script_name)

        etgLib.send_email(emailFrom, emailTo, emailSubject, emailText,
                          emailAttachments, smtpServer)