def auto_set_key_name(sender, **kwargs): from gogogo.views.db.forms import next_key_name kwargs = kwargs["kwargs"] if "auto_set_key_name" in kwargs: if sender.kind() in auto_set_key_name_table and "key_name" not in kwargs: fields = auto_set_key_name_table[sender.kind()] items = [] for f in fields: if not hasattr(sender,f): # It is not a property. It is a keyword items.append(f) continue prop = getattr(sender,f) value = kwargs[f] if isinstance(prop,db.ReferenceProperty): if isinstance(value,db.Key): items.append(value.id_or_name()) else: items.append(value.key().id_or_name()) elif isinstance(prop,MLStringProperty): items.append(MLStringProperty.to_key_name(value)) else: items.append(value) key_name = "-".join(items) kwargs["key_name"] = next_key_name(sender,key_name) del kwargs["auto_set_key_name"]
if c.station != None: g.set_fixed_centroid(LatLng(c.station.latlng.lat ,c.station.latlng.lon ) ) del stops[key.id_or_name()] clusterer.appendGroup(g) stations = [] for id in stops: s = stops[id] if s.location_type == 1: #Create cluster based on station stations.append(s) key_name = next_key_name(Cluster , MLStringProperty.to_key_name(s.name)) cluster = Cluster(key_name = key_name) cluster.set_station(s) pt = LatLng(s.latlng.lat,s.latlng.lon) pt.set_data(s) g = LatLngGroup() g.set_data(cluster) g.append(pt) g.set_fixed_centroid(pt) clusterer.appendGroup(g) print "%d stations found" % len(stations)