o a@sddlmZddlmZddlmZmZddlmZddl m Z ddl m Z Gdd d ejZGd d d eZGd d d eZGdddeZGdddeZGdddeZGdddeZGdddeZdS))forms) GDALException) GEOSException GEOSGeometry)ValidationError) gettext_lazy)OpenLayersWidgetcsjeZdZdZeZdZededededdZddd fd d Z d d Z fddZ ddZ Z S) GeometryFieldz This is the basic form field for a Geometry. Any textual input that is accepted by GEOSGeometry is accepted by this form. By default, this includes WKT, HEXEWKB, WKB (in a buffer), and GeoJSON. GEOMETRYzNo geometry value provided.zInvalid geometry value.zInvalid geometry type.zXAn error occurred when transforming the geometry to the SRID of the geometry form field.)required invalid_geominvalid_geom_typetransform_errorN)srid geom_typec s8||_|dur ||_tjdi||j|jjd<dS)Nr)rrsuper__init__widgetattrs)selfrrkwargs __class__rA/usr/lib/python3/dist-packages/django/contrib/gis/forms/fields.pyrs zGeometryField.__init__c Cs||jvrdSt|tsHt|jdr&z|j|}Wn ty%d}Ynwzt|}Wnttt fy:d}Ynw|durHt |j ddd|j shz|jj |_ W|Styg|j rd|j |_ Y|SY|Sw|S)z)Transform the value to a Geometry object.N deserializer code) empty_values isinstancerhasattrrrrr ValueError TypeErrorrerror_messagesrmap_sridAttributeError)rvaluerrr to_python"s8        zGeometryField.to_pythoncst|}|dur |St|j|jkr$|jdkr$t|jddd|jrL|jdkrL|j|jkrLz ||jW|St yKt|jdddw|S)z Validate that the input value can be converted to a Geometry object and return it. Raise a ValidationError if the value cannot be instantiated as a Geometry. Nr rrr) rcleanstrrupperrr$r transformr)rr'geomrrrr*>s   zGeometryField.cleancCsbz ||}||}Wn tyYdSw|r)|r)||j|j|dd St|t|kS)z: Compare geographic value of data with its initial value. Tgư>) tolerance)r(rr-r equals_exactbool)rinitialdatarrr has_changedWs   zGeometryField.has_changed)__name__ __module__ __qualname____doc__r rr_default_error_messagesrr(r*r4 __classcell__rrrrr s r c@eZdZdZdS)GeometryCollectionFieldGEOMETRYCOLLECTIONNr5r6r7rrrrrr=lr=c@r<) PointFieldPOINTNr?rrrrrApr@rAc@r<)MultiPointField MULTIPOINTNr?rrrrrCtr@rCc@r<)LineStringField LINESTRINGNr?rrrrrExr@rEc@r<)MultiLineStringFieldMULTILINESTRINGNr?rrrrrG|r@rGc@r<) PolygonFieldPOLYGONNr?rrrrrIr@rIc@r<)MultiPolygonField MULTIPOLYGONNr?rrrrrKr@rKN)djangordjango.contrib.gis.gdalrdjango.contrib.gis.geosrrdjango.core.exceptionsrdjango.utils.translationrr9widgetsr Fieldr r=rArCrErGrIrKrrrrs    b