#27557: Overzealous GEOSGeometry sub-subclasses casts
----------------------------------------+------------------------
               Reporter:  Claude Paroz  |          Owner:  nobody
                   Type:  Bug           |         Status:  new
              Component:  GIS           |        Version:  master
               Severity:  Normal        |       Keywords:
           Triage Stage:  Accepted      |      Has patch:  0
    Needs documentation:  0             |    Needs tests:  0
Patch needs improvement:  0             |  Easy pickings:  0
                  UI/UX:  0             |
----------------------------------------+------------------------
 Reported by Pete Flugstad in
 https://groups.google.com/forum/#!topic/geodjango/-tao0uPNYY8

 When writing a Point, Polygon, etc. subclass, the parent
 `GEOSGeometry._post_init` is force casting the instance to one of the
 hardcoded GEOSGeometry subclass, which breaks method overriding of the
 subclass.

 Example:
 {{{
 from django.contrib.gis.geos import Polygon

 class ExtendedPolygon(Polygon):
     def __init__(self, point_list, data=0 ):
         super(ExtendedPolygon, self).__init__(point_list)
         self._data = data

     def __str__(self):
         return "EXT_POLYGON - data: %d - %s" % (self._data, self.wkt )
 }}}

 {{{
 >>> from extpoly import ExtendedPolygon
 >>> points = ((-75.1, 34.3), (-74.9, 34.3), (-74.9, 34.4), (-75.1, 34.4),
 (-75.1, 34.3))
 >>> ex = ExtendedPolygon( points, altitude=123, speed=456, direction=789 )
 >>> print(ex)
     POLYGON ((-75.09999999999999 34.3, -74.90000000000001 34.3,
 -74.90000000000001 34.4, -75.09999999999999 34.4, -75.09999999999999
 34.3))
 >>> type(ex)
     <class 'django.contrib.gis.geos.polygon.Polygon'>
 }}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27557>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.d3ad10beaed91547d6a42dbb4e4693e1%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to