def get(self): count = 0 chp_data_last_updated = CHPData.last_updated() if chp_data_last_updated is not None: query = CHPIncident.all(keys_only=True) query.filter('updated <', chp_data_last_updated - timedelta(hours=1)) count = query.count() db.delete(query) self.response.write("Purged %d records." % count)
def get(self): # We need to be careful here. It's possible this handler could run in the # window between when the CHPData is updated and when the incidents get # updated. So throw in 5 minutes of padding. # # See also: https://developers.google.com/appengine/docs/python/ndb/#writes query = CHPIncident.query(CHPIncident.updated < CHPData.last_updated() - timedelta(minutes=5)) count = query.count() keys = query.fetch(keys_only=True) ndb.delete_multi(keys) self.response.write("Purged %d records." % count)
def get_incidents(self): """Return CHP incidents given various request args. """ id = self.request.get("id") center = self.request.get("center") dispatch = self.request.get("dispatch") area = self.request.get("area") city = self.request.get("city") since = self.request.get("since") memcache_key = "incidents-%s-%s-%s-%s-%s-%s" % (id, center, dispatch, area, city, since) memcache_expiry_time = 60 incidents = memcache.get(memcache_key) if incidents is None: if id == "": query = CHPIncident.all() query.order('-LogTime') if center != "": query.filter('CenterID =', center) if dispatch != "": query.filter('DispatchID =', dispatch) if area != "": query.filter('Area =', area) if city != "": query.filter('city =', city) if since != "": query.filter('LogTime >', datetime.fromtimestamp(float(since))) incidents = query.fetch(10000) else: # Handle single incident requests, slightly different approach # We want to use get_by_key_name() instead of filtering. incidents = [] incident = CHPIncident.get_by_key_name(id) if incident is not None: incidents.append(incident) try: memcache.add(memcache_key, incidents, memcache_expiry_time) except ValueError: pass if len(incidents) > 0: self.incidents_last_mod = max(incidents, key=lambda incident: incident.updated).updated else: self.incidents_last_mod = CHPData.last_updated() self.incidents = incidents
def get_incidents(self): """Return CHP incidents given various request args. """ center = self.request.get("center") dispatch = self.request.get("dispatch") area = self.request.get("area") city = self.request.get("city") # Change this for the West Sac News-Leger since no one appears home there if "http://www.westsac.com/news-ledger" in self.request.headers['User-Agent']: if dispatch == "": dispatch = 'SACC' memcache_key = "incidents-%s-%s-%s-%s" % (center, dispatch, area, city) # Don't even try the cache if this looks like a PubSubHubBub request. if "pubsubhubbub" in self.request.headers['User-Agent']: incidents = None else: incidents = memcache.get(memcache_key) if incidents is None: query = CHPIncident.query().order(-CHPIncident.LogTime) if city != "": query = query.filter(CHPIncident.city == city) elif area != "": query = query.filter(CHPIncident.Area == area) elif dispatch != "": query = query.filter(CHPIncident.DispatchID == dispatch) elif center != "": query = query.filter(CHPIncident.CenterID == center) incidents = query.fetch(10000) try: memcache.set(memcache_key, incidents, 300) except: pass if len(incidents) > 0: self.incidents_last_mod = max(incidents, key=lambda incident: incident.updated).updated else: self.incidents_last_mod = CHPData.last_updated() self.incidents = incidents