| 42 | return None |
| 43 | |
| 44 | def get_context(self, name, value, attrs): |
| 45 | context = super().get_context(name, value, attrs) |
| 46 | # If a string reaches here (via a validation error on another |
| 47 | # field) then just reconstruct the Geometry. |
| 48 | if value and isinstance(value, str): |
| 49 | value = self.deserialize(value) |
| 50 | |
| 51 | if value: |
| 52 | # Check that srid of value and map match |
| 53 | if value.srid and value.srid != self.map_srid: |
| 54 | try: |
| 55 | ogr = value.ogr |
| 56 | ogr.transform(self.map_srid) |
| 57 | value = ogr |
| 58 | except gdal.GDALException as err: |
| 59 | logger.error( |
| 60 | "Error transforming geometry from srid '%s' to srid '%s' (%s)", |
| 61 | value.srid, |
| 62 | self.map_srid, |
| 63 | err, |
| 64 | ) |
| 65 | context["serialized"] = self.serialize(value) |
| 66 | geom_type = gdal.OGRGeomType(self.attrs["geom_type"]).name |
| 67 | context["widget"]["attrs"]["geom_name"] = ( |
| 68 | "Geometry" if geom_type == "Unknown" else geom_type |
| 69 | ) |
| 70 | return context |
| 71 | |
| 72 | |
| 73 | class OpenLayersWidget(BaseGeometryWidget): |