def test_data_frame_name(self): """Test getting a map docmment data frame name without a layer name in the path""" expected_name = task_utils.get_data_frame_name( r"C:\GISData\mxds\USRivers.mxd | Layers").strip() self.assertEqual(expected_name, "Layers")
def test_data_frame_name_with_layer(self): """Test getting a map docmment data frame name with a layer name in the path""" name = task_utils.get_data_frame_name( 'C:\GISData\mxds\USRivers.mxd | Layers\Rivers') self.assertEqual(name, 'Layers')
def test_data_frame_name(self): """Test getting a map docmment data frame name without a layer name in the path""" expected_name = task_utils.get_data_frame_name(r"C:\GISData\mxds\USRivers.mxd | Layers").strip() self.assertEqual(expected_name, "Layers")
def test_data_frame_name_with_layer(self): """Test getting a map docmment data frame name with a layer name in the path""" name = task_utils.get_data_frame_name('C:\GISData\mxds\USRivers.mxd | Layers\Rivers') self.assertEqual(name, 'Layers')
def get_items(input_items, out_workspace): """Returns the list of items to package.""" layers = [] files = [] errors = 0 skipped = 0 for i, item in enumerate(input_items, 1): try: if item.endswith('.lyr'): layers.append(arcpy.mapping.Layer(item)) else: # Is the item a mxd data frame. map_frame_name = task_utils.get_data_frame_name(item) if map_frame_name: item = item.split('|')[0].strip() dsc = arcpy.Describe(item) if dsc.dataType in ('FeatureClass', 'ShapeFile', 'RasterDataset'): if os.path.basename(item) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(item), i) else: layer_name = os.path.basename(item) if dsc.dataType == 'RasterDataset': arcpy.MakeRasterLayer_management(item, layer_name) else: arcpy.MakeFeatureLayer_management(item, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) elif dsc.dataType in ('CadDrawingDataset', 'FeatureDataset'): arcpy.env.workspace = item for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) arcpy.env.workspace = out_workspace elif dsc.dataType == 'MapDocument': in_mxd = arcpy.mapping.MapDocument(item) if map_frame_name: df = arcpy.mapping.ListDataFrames(in_mxd, map_frame_name)[0] mxd_layers = arcpy.mapping.ListLayers(in_mxd, data_frame=df) else: mxd_layers = arcpy.mapping.ListLayers(in_mxd) layers += mxd_layers elif item.endswith('.gdb') or item.endswith('.mdb'): arcpy.env.workspace = item for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) for raster in arcpy.ListRasters(): if os.path.basename(raster) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(raster), i) else: layer_name = os.path.basename(raster) arcpy.MakeRasterLayer_management(raster, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) datasets = arcpy.ListDatasets('*', 'Feature') for fds in datasets: arcpy.env.workspace = fds for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) arcpy.env.workspace = item arcpy.env.workspace = out_workspace elif dsc.dataType == 'File' or dsc.dataType == 'TextFile': files.append(item) else: status_writer.send_status(_('Invalid input type: {0}').format(item)) skipped_reasons[item] = 'Invalid input type' skipped += 1 continue except Exception as ex: status_writer.send_status(_('Cannot package: {0}: {1}').format(item, repr(ex))) errors += 1 errors_reasons[item] = repr(ex) pass return layers, files, errors, skipped