def setUpClass(self): # Create 2 users, 2 datasets, 2 models and 20 documents # user0 -> dataset0 (public) -> doc00 .. doc09 (id=1..10) # user1 -> dataset1 (private) -> doc10 .. doc19 (id=11.20) for i in range(2): user = User() user.username = "******" + str(i) user.save() dataset = Dataset() dataset.owner = user dataset.text_id = "dataset" + str(i) dataset.is_public = (i == 0) dataset.save() for j in range(10): document = Document() document.dataset = dataset document.index_id = j document.title = "doc" + str(i) + str(j) document.text = "text" + str(i) + str(j) document.snippet = "snippet" + str(i) + str(j) document.url = "url" + str(i) + str(j) document.save()
def handle(self, *args, **options): dir_name = sys.argv[3] shapefile_name = 'hydro ln' # datasource = ogr.Open(os.path.join(dir_name, shapefile_name)) datasource = ogr.Open(dir_name) layer = datasource.GetLayer(0) # creating Dataset object src_spatial_ref = layer.GetSpatialRef() geom_type = layer.GetLayerDefn().GetGeomType() geom_name = ogr.GeometryTypeToName(geom_type) shapefile = Dataset(name=shapefile_name, srs_wkt=src_spatial_ref.ExportToWkt(), geom_type=geom_name) shapefile.save() # creating Attribute objects attributes = [] layer_def = layer.GetLayerDefn() for i in range(layer_def.GetFieldCount()): field_def = layer_def.GetFieldDefn(i) attr = Attribute(dataset=shapefile, name=field_def.GetName(), type=field_def.GetType(), width=field_def.GetWidth(), precision=field_def.GetPrecision()) attributes.append(attr) Attribute.objects.bulk_create(attributes) # creating Feature objects dst_spatial_ref = osr.SpatialReference() dst_spatial_ref.ImportFromEPSG(4326) coord_transform = osr.CoordinateTransformation(src_spatial_ref, dst_spatial_ref) feature_objs = [] for i in range(layer.GetFeatureCount()): src_feature = layer.GetFeature(i) src_geometry = src_feature.GetGeometryRef() src_geometry.Transform(coord_transform) geometry = GEOSGeometry(src_geometry.ExportToWkt()) geometry = wrap_geos_geometry(geometry) geom_field = calc_geometry_field(geom_name) fields = {} fields['dataset'] = shapefile fields[geom_field] = geometry attribute_dict = dict() for attr in attributes: success, result = get_ogr_feature_attribute(attr, src_feature) if not success: # os.remove(fname) # shutil.rmtree(dir_name) shapefile.delete() return result attribute_dict.update({attr.name: result}) fields['attribute_values'] = attribute_dict feature = Feature(**fields) feature_objs.append(feature) Feature.objects.bulk_create(feature_objs) self.stdout.write('Successfully loaded datasets.')