Solved! Go to Solution.
# DOCLoadMetadata.py # with altered dates for current month # using element tree # create original Metadata with same name as layer # run this to alter to name_et.xml # reload into filegeodatabase # Note there is no tool to unload metadata # 15 March 2010 # 2.6 upgrade for element tree 12 Nov 2011 # alter fc names 10 March 2012 import arcgisscripting,sys,os import xml.etree.ElementTree as ET import sys,os,datetime print print def alter(xmlfile,edDate,publishDate,createDate) : """ read xml file for featureclass or table change dates to today,loading date and LINZ extract date empty processing logs write out file with _et suffix return file name """ # print xmlfile tree = ET.parse(xmlfile) ## print tree.getroot().tag, tree.getroot().text,tree.getroot().tail,tree.getroot().attrib # Edition Date elem = list(tree.getiterator("resEdDate"))[0] # print elem.tag,elem.text elem.text = edDate ## print elem.text # Reference Date 001 (Creation) elem = list(tree.getiterator("refDate"))[0] # print elem.tag,elem.text elem.text = createDate ## print elem.text # note there may be two of these dates # DateTypCd 001 and 002 # Reference Date 002 (Publication) if len(list(tree.getiterator("refDate"))) > 1 : elem = list(tree.getiterator("refDate"))[1] # print elem.tag,elem.text elem.text = publishDate else : # print "Skipping publication date",xmlfile pass ## print elem.text # clear out lineag if it exists try : lin = list(tree.getiterator("lineage"))[0] # print lin.tag lin.clear() lin.text = "Cleared" except : gp.AddMessage("Skipping clear lineage") outfile = xmlfile.replace(".","_et.") tree.write(outfile) return outfile # ---------------------- main ---------------------- try : publishDate = sys.argv[1] createDate = sys.argv[2] if createDate == '#' : createDate = publishDate gp.AddMessage(publishDate+type(publishDate)) except : # 12 = 5 (sat) + 7 to keep positive in modulo 7 tday = datetime.datetime.now() div,offset = divmod((12 - tday.replace(day=1).weekday()),7) firstSat = tday.replace(day=1) + datetime.timedelta(days=offset) publishDate = firstSat.strftime("%Y%m%d") createDate = publishDate print publishDate,firstSat.ctime() print # override # publishDate = '20100804' # createDate = '20100710' gp = arcgisscripting.create(9.3) os.chdir("e:/crs/customer/conservation/metadata") edDate = str(datetime.datetime.now().date()).replace("-","") edDate = publishDate # '20100914' gp.AddMessage(edDate+" edit date") gp.AddMessage(publishDate+" publish date") gp.AddMessage(createDate+" create date") ws = "e:/crs/customer/conservation/corax.gdb" metasrc = "e:/crs/customer/conservation/metadata" gp.Workspace = ws os.chdir(metasrc) print print ws print metasrc print lstFC = gp.ListFeatureClasses("*") for fc in lstFC : # print fc fcxml = metasrc+"/"+fc+".xml" if os.path.exists(fcxml) : etxml = alter(fcxml,edDate,publishDate,createDate) gp.MetadataImporter_conversion(etxml,fc) print fc,"updated" gp.AddMessage(fc+" updated") else : print fcxml,"not found" gp.AddError(fcxml+" not found") lstTab = gp.ListTables("*") for tab in lstTab : # print tab tabxml = metasrc+"/"+tab+".xml" if os.path.exists(tabxml) : etxml = alter(tabxml,edDate,publishDate,createDate) gp.MetadataImporter_conversion(etxml,tab) print tab,"updated" gp.AddMessage(tab+" updated") else : print tabxml,"not found" gp.AddError(tabxml+" not found") # geodatabase metadata etxml = alter(metasrc+"/corax.xml",edDate,publishDate,createDate)
# DOCLoadMetadata.py # with altered dates for current month # using element tree # create original Metadata with same name as layer # run this to alter to name_et.xml # reload into filegeodatabase # Note there is no tool to unload metadata # 15 March 2010 # 2.6 upgrade for element tree 12 Nov 2011 # alter fc names 10 March 2012 import arcgisscripting,sys,os import xml.etree.ElementTree as ET import sys,os,datetime print print def alter(xmlfile,edDate,publishDate,createDate) : """ read xml file for featureclass or table change dates to today,loading date and LINZ extract date empty processing logs write out file with _et suffix return file name """ # print xmlfile tree = ET.parse(xmlfile) ## print tree.getroot().tag, tree.getroot().text,tree.getroot().tail,tree.getroot().attrib # Edition Date elem = list(tree.getiterator("resEdDate"))[0] # print elem.tag,elem.text elem.text = edDate ## print elem.text # Reference Date 001 (Creation) elem = list(tree.getiterator("refDate"))[0] # print elem.tag,elem.text elem.text = createDate ## print elem.text # note there may be two of these dates # DateTypCd 001 and 002 # Reference Date 002 (Publication) if len(list(tree.getiterator("refDate"))) > 1 : elem = list(tree.getiterator("refDate"))[1] # print elem.tag,elem.text elem.text = publishDate else : # print "Skipping publication date",xmlfile pass ## print elem.text # clear out lineag if it exists try : lin = list(tree.getiterator("lineage"))[0] # print lin.tag lin.clear() lin.text = "Cleared" except : gp.AddMessage("Skipping clear lineage") outfile = xmlfile.replace(".","_et.") tree.write(outfile) return outfile # ---------------------- main ---------------------- try : publishDate = sys.argv[1] createDate = sys.argv[2] if createDate == '#' : createDate = publishDate gp.AddMessage(publishDate+type(publishDate)) except : # 12 = 5 (sat) + 7 to keep positive in modulo 7 tday = datetime.datetime.now() div,offset = divmod((12 - tday.replace(day=1).weekday()),7) firstSat = tday.replace(day=1) + datetime.timedelta(days=offset) publishDate = firstSat.strftime("%Y%m%d") createDate = publishDate print publishDate,firstSat.ctime() print # override # publishDate = '20100804' # createDate = '20100710' gp = arcgisscripting.create(9.3) os.chdir("e:/crs/customer/conservation/metadata") edDate = str(datetime.datetime.now().date()).replace("-","") edDate = publishDate # '20100914' gp.AddMessage(edDate+" edit date") gp.AddMessage(publishDate+" publish date") gp.AddMessage(createDate+" create date") ws = "e:/crs/customer/conservation/corax.gdb" metasrc = "e:/crs/customer/conservation/metadata" gp.Workspace = ws os.chdir(metasrc) print print ws print metasrc print lstFC = gp.ListFeatureClasses("*") for fc in lstFC : # print fc fcxml = metasrc+"/"+fc+".xml" if os.path.exists(fcxml) : etxml = alter(fcxml,edDate,publishDate,createDate) gp.MetadataImporter_conversion(etxml,fc) print fc,"updated" gp.AddMessage(fc+" updated") else : print fcxml,"not found" gp.AddError(fcxml+" not found") lstTab = gp.ListTables("*") for tab in lstTab : # print tab tabxml = metasrc+"/"+tab+".xml" if os.path.exists(tabxml) : etxml = alter(tabxml,edDate,publishDate,createDate) gp.MetadataImporter_conversion(etxml,tab) print tab,"updated" gp.AddMessage(tab+" updated") else : print tabxml,"not found" gp.AddError(tabxml+" not found") # geodatabase metadata etxml = alter(metasrc+"/corax.xml",edDate,publishDate,createDate)