Commit 1ed5d8fc authored by Justin Bronn's avatar Justin Bronn
Browse files

Fixed #11200 -- Now use a `set` data structure for `GoogleMap` icons so that...

Fixed #11200 -- Now use a `set` data structure for `GoogleMap` icons so that they aren't repeated in rendered JavaScript.  Thanks to ludifan for ticket and initial patch.  


git-svn-id: http://code.djangoproject.com/svn/django/trunk@10865 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 419747d1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -143,7 +143,7 @@ class GoogleMap(object):
    @property
    def icons(self):
        "Returns a sequence of GIcon objects in this map."
        return [marker.icon for marker in self.markers if marker.icon]
        return set([marker.icon for marker in self.markers if marker.icon])

class GoogleMapSet(GoogleMap):

@@ -221,6 +221,6 @@ class GoogleMapSet(GoogleMap):
    @property
    def icons(self):
        "Returns a sequence of all icons in each map of the set."
        icons = []
        for map in self.maps: icons.extend(map.icons)
        icons = set()
        for map in self.maps: icons |= map.icons
        return icons
+8 −0
Original line number Diff line number Diff line
@@ -231,6 +231,14 @@ class GIcon(object):
        self.iconanchor = iconanchor
        self.infowindowanchor = infowindowanchor

    def __cmp__(self, other):
        return cmp(self.varname, other.varname)
    
    def __hash__(self):
        # XOR with hash of GIcon type so that hash('varname') won't 
        # equal hash(GIcon('varname')).
        return hash(self.__class__) ^ hash(self.varname)

class GMarker(GOverlayBase):
    """
    A Python wrapper for the Google GMarker object.  For more information