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)
Exemplo n.º 3
0
  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))