def get(self): event_shortname = self.request.get("shortname") page = self.request.get("page") page_int = int(page) if event_shortname == None: event_shortname = "sandy" event = None events = event_db.GetAllCached() for e in events: if e.short_name == event_shortname: event = e ids = [] where_string = "Open" q = None if event.short_name != 'moore': gql_string = 'SELECT * FROM Site WHERE status >= :1 and event = :2' q = db.GqlQuery(gql_string, where_string, event.key()) else: q = Query(model_class=site_db.Site) q.filter("event =", event.key()) q.is_keys_only() q.filter("status >= ", "Open") this_offset = page_int * PAGE_OFFSET ids = [ key.key().id() for key in q.fetch(PAGE_OFFSET, offset=this_offset) ] this_offset = page_int * PAGE_OFFSET ids = [ key.key().id() for key in q.fetch(PAGE_OFFSET, offset=this_offset) ] def public_site_filter(site): # site as dict return { 'event': site['event'], 'id': site['id'], 'case_number': site['case_number'], 'work_type': site['work_type'], 'claimed_by': site['claimed_by'], 'status': site['status'], 'floors_affected': site.get('floors_affected'), 'blurred_latitude': site.get('blurred_latitude'), 'blurred_longitude': site.get('blurred_longitude'), } output = json.dumps([ public_site_filter(s[1]) for s in site_db.GetAllCached(event, ids) ], default=dthandler) self.response.out.write(output)
def get(self): event_shortname = self.request.get("shortname") page = self.request.get("page") page_int = int(page) if event_shortname == None: event_shortname = "sandy" event = None events = event_db.GetAllCached() for e in events: if e.short_name == event_shortname: event = e ids = [] where_string = "Open" q = None if event.short_name != 'moore': gql_string = 'SELECT * FROM Site WHERE status >= :1 and event = :2' q = db.GqlQuery(gql_string, where_string, event.key()) else: q = Query(model_class = site_db.Site) q.filter("event =", event.key()) q.is_keys_only() q.filter("status >= ", "Open") this_offset = page_int * PAGE_OFFSET ids = [key.key().id() for key in q.fetch(PAGE_OFFSET, offset = this_offset)] this_offset = page_int * PAGE_OFFSET ids = [key.key().id() for key in q.fetch(PAGE_OFFSET, offset = this_offset)] def public_site_filter(site): # site as dict return { 'event': site['event'], 'id': site['id'], 'case_number': site['case_number'], 'work_type': site['work_type'], 'claimed_by': site['claimed_by'], 'status': site['status'], 'floors_affected': site.get('floors_affected'), 'blurred_latitude': site.get('blurred_latitude'), 'blurred_longitude': site.get('blurred_longitude'), } output = json.dumps( [public_site_filter(s[1]) for s in site_db.GetAllCached(event, ids)], default=dthandler ) self.response.out.write(output)
def AuthenticatedGet(self, org, event): id_param = self.request.get('id') latitude_param = self.request.get("latitude") longitude_param = self.request.get("longitude") if latitude_param and longitude_param: try: latitude = float(latitude_param) longitude = float(longitude_param) except: self.response.set_status(404) json_array = [] for site in site_db.Site.gql( 'Where latitude = :1 and longitude = :2 and event = :3', latitude, longitude, event.key()): json_string = json.dumps({ "id": site.key().id(), "address": site.address, }) json_array.append(json_string) self.response.out.write( json.dumps(json_array, default = dthandler)) return if id_param == "all": status = self.request.get("status", default_value = "") page = self.request.get("page", default_value = "0") page_int = int(page) logging.debug("page = " + page) #query_string = "SELECT * FROM Site WHERE event = :event_key LIMIT %s OFFSET %s" % (PAGE_OFFSET, page_int * PAGE_OFFSET) ##logging.debug("OFFSET = " + PAGE_OFFSET) ##logging.debug("page * OFFSET = " + page_int * PAGE_OFFSET) #query = db.GqlQuery(query_string, event_key = event.key()) q = Query(model_class = site_db.Site) ids = [] #filter by event q.filter("event =", event.key()) q.is_keys_only() if status == "open": logging.debug("status == open") q.filter("status >= ", "Open") elif status == "closed": q.filter("status < ", "Open") logging.debug("status == closed") logging.debug("status = " + status) #query = q.fetch(PAGE_OFFSET, offset = page_int * PAGE_OFFSET) #for q in query: #ids.append(q.key().id()) this_offset = page_int * PAGE_OFFSET logging.debug("this_offset = " + str(this_offset)) ids = [key.key().id() for key in q.fetch(PAGE_OFFSET, offset = this_offset)] logging.debug("ids len = " + str(len(ids))) output = json.dumps( [s[1] for s in site_db.GetAllCached(event, ids)], default=dthandler) logging.info("after output") self.response.out.write(output) return #if id_param == "all": #county = self.request.get("county", default_value = "all") #status = self.request.get("status", default_value = "") #q = Query(model_class = site_db.Site, keys_only = True) ##filter by event #q.filter("event =", event.key()) #if status == "open": #q.filter("status >= ", "Open") #elif status == "closed": #q.filter("status < ", "Open") #if county != "all": #q.filter("county =", county) #ids = [key.id() for key in q.run(batch_size = 2000)] #output = json.dumps( #[s[1] for s in site_db.GetAllCached(event, ids)], #default=dthandler) #self.response.out.write(output) #return try: id = int(id_param) except: self.response.set_status(404) return site = site_db.GetAndCache(id) if not site: self.response.set_status(404) return # TODO(jeremy): Add the various fixes for Flash # and other vulnerabilities caused by having user-generated # content in JSON strings, by setting this as an attachment # and prepending the proper garbage strings. # Javascript security is really a pain. self.response.out.write( json.dumps(site_db.SiteToDict(site), default = dthandler))
def AuthenticatedGet(self, org, event): id_param = self.request.get("id") latitude_param = self.request.get("latitude") longitude_param = self.request.get("longitude") if latitude_param and longitude_param: try: latitude = float(latitude_param) longitude = float(longitude_param) except: self.response.set_status(404) json_array = [] for site in site_db.Site.gql( "Where latitude = :1 and longitude = :2 and event = :3", latitude, longitude, event.key() ): json_string = json.dumps({"id": site.key().id(), "address": site.address}) json_array.append(json_string) self.response.out.write(json.dumps(json_array, default=dthandler)) return if id_param == "all": status = self.request.get("status", default_value="") page = self.request.get("page", default_value="0") page_int = int(page) logging.debug("page = " + page) # query_string = "SELECT * FROM Site WHERE event = :event_key LIMIT %s OFFSET %s" % (PAGE_OFFSET, page_int * PAGE_OFFSET) ##logging.debug("OFFSET = " + PAGE_OFFSET) ##logging.debug("page * OFFSET = " + page_int * PAGE_OFFSET) # query = db.GqlQuery(query_string, event_key = event.key()) q = Query(model_class=site_db.Site) ids = [] # filter by event q.filter("event =", event.key()) q.is_keys_only() if status == "open": logging.debug("status == open") q.filter("status >= ", "Open") elif status == "closed": q.filter("status < ", "Open") logging.debug("status == closed") logging.debug("status = " + status) # query = q.fetch(PAGE_OFFSET, offset = page_int * PAGE_OFFSET) # for q in query: # ids.append(q.key().id()) this_offset = page_int * PAGE_OFFSET logging.debug("this_offset = " + str(this_offset)) ids = [key.key().id() for key in q.fetch(PAGE_OFFSET, offset=this_offset)] logging.debug("ids len = " + str(len(ids))) output = json.dumps([s[1] for s in site_db.GetAllCached(event, ids)], default=dthandler) self.response.out.write(output) return # if id_param == "all": # county = self.request.get("county", default_value = "all") # status = self.request.get("status", default_value = "") # q = Query(model_class = site_db.Site, keys_only = True) ##filter by event # q.filter("event =", event.key()) # if status == "open": # q.filter("status >= ", "Open") # elif status == "closed": # q.filter("status < ", "Open") # if county != "all": # q.filter("county =", county) # ids = [key.id() for key in q.run(batch_size = 2000)] # output = json.dumps( # [s[1] for s in site_db.GetAllCached(event, ids)], # default=dthandler) # self.response.out.write(output) # return try: id = int(id_param) except: self.response.set_status(404) return site = site_db.GetAndCache(id) if not site: self.response.set_status(404) return # TODO(jeremy): Add the various fixes for Flash # and other vulnerabilities caused by having user-generated # content in JSON strings, by setting this as an attachment # and prepending the proper garbage strings. # Javascript security is really a pain. self.response.out.write(json.dumps(site_db.SiteToDict(site), default=dthandler))