def query_from_form(org, event, form, projection=None, distinct=None):
    # start query based on admin type
    if org.is_global_admin:
        query = Query(Site, projection=projection, distinct=distinct)
    elif org.is_local_admin:
        if projection is not None or distinct is not None:
            raise Exception("Not currently supported for local admin")
        query = Query(Site).filter('event in', [
            incident.key() for incident in org.incidents
        ])
    else:
        raise Exception("Not an admin")

    # if a local admin, filter to logged in event
    if org.is_local_admin:
        query.filter('event', event.key())

    # apply filters if set 
    if form.event.data:
        query.filter('event', Key(form.event.data))
    if form.reporting_org.data:
        query.filter('reported_by', Key(form.reporting_org.data))
    if form.claiming_org.data:
        query.filter('claimed_by', Key(form.claiming_org.data))
    if form.work_type.data:
        query.filter('work_type', form.work_type.data)
    if form.status.data:
        query.filter('status', form.status.data)

    # apply order
    if form.order.data:
        query.order(form.order.data)

    return query
Exemplo n.º 2
0
 def get(self):
     # List Cities
     citylist = {}
     cities = City.all()
     for city in cities:
         citylist[city.Name] = {0:abs(hash(city.Name)),1:[]}
         for station in city.station_set:
             data = {'Name':station.Name}
             query = Query(AQIData)
             query.filter('Station =', station.Code)
             query.order('-Date')
             query.run()
             aqi = query.get()
             data['AQI'] = aqi.AQI
             data['Level'] = aqi.AQILevel
             data['Assess'] = aqi.AQIAssess
             data['Majority'] = aqi.Majority
             data['Date'] = aqi.Date
             citylist[city.Name][1].append(data)
     # logging.info(str(citylist))
     #----generate parameter list----------------------------------------------------------------------
     template_values = {
         'citylist' : citylist,
         }
     path = os.path.join(os.path.dirname(__file__), './/template//citylist.html')
     #----end------------------------------------------------------------------------------------------
     self.response.out.write(template.render(path,template_values))
    def get(self):
        MEMCACHE_KEY = "yw4ct7ntqzh93ioqaxif"
        path_info = self.request.path_info.split("/")
        debug("PATH_INFO = %s" % path_info)
        client = memcache.Client()
        LIMIT = 100

        if len(self.request.get("clear")) != 0:
            client.delete(MEMCACHE_KEY)

        template_values = {}
        template_values["all_raw_data"] = []

        old_key_list = client.get(MEMCACHE_KEY)
        if old_key_list is None:
            old_key_list = []
            query = Query(RawData, keys_only=True)
            query.order("-rawDataId")
            new_key_list = []
            count = 0
            for key_in_query in query:
                count += 1
                if count >= LIMIT: break
                if key_in_query in old_key_list: break
                new_key_list.append(key_in_query)

            all_key_list = new_key_list + old_key_list
            all_key_list = all_key_list[:LIMIT]
            client.set(MEMCACHE_KEY, all_key_list, 15)
        else:
            all_key_list = old_key_list

        for key_in_list in all_key_list:
            raw_data = client.get(str(key_in_list))
            if not isinstance(raw_data, RawData):
                raw_data_list = RawData.get([key_in_list])
                if len(raw_data_list) != 1: continue
                raw_data = raw_data_list[0]
                if not isinstance(raw_data, RawData): continue
                client.set(str(key_in_list), raw_data)
            if not isinstance(raw_data, RawData): continue

            raw_data_dict = {
                "rawDataId": raw_data.rawDataId,
                "path": raw_data.path,
                "parameters": raw_data.parameters,
                "query": raw_data.query,
                "fragment": raw_data.fragment,
                "body": raw_data.body
            }
            #logging.info(raw_data_dict)
            template_values["all_raw_data"].append(raw_data_dict)

        self.writeWithTemplate(template_values, "RawData")
    def get(self):
        MEMCACHE_KEY = "yw4ct7ntqzh93ioqaxif"
        path_info = self.request.path_info.split("/")
        debug("PATH_INFO = %s" % path_info)
        client = memcache.Client()
        LIMIT = 100

        if len(self.request.get("clear")) != 0:
            client.delete(MEMCACHE_KEY)
            
        template_values = {}
        template_values["all_raw_data"] = []

        
        old_key_list = client.get(MEMCACHE_KEY)
        if old_key_list is None:
            old_key_list = []
            query = Query(RawData, keys_only=True)
            query.order("-rawDataId")
            new_key_list = []
            count = 0
            for key_in_query in query:
                count += 1
                if count >= LIMIT: break
                if key_in_query in old_key_list: break
                new_key_list.append(key_in_query)
            
            all_key_list = new_key_list + old_key_list
            all_key_list = all_key_list[:LIMIT]
            client.set(MEMCACHE_KEY, all_key_list, 15)
        else:
            all_key_list = old_key_list

        for key_in_list in all_key_list:
            raw_data = client.get(str(key_in_list))
            if not isinstance(raw_data, RawData):
                raw_data_list = RawData.get([key_in_list])
                if len(raw_data_list) != 1: continue
                raw_data = raw_data_list[0]
                if not isinstance(raw_data, RawData): continue
                client.set(str(key_in_list), raw_data)
            if not isinstance(raw_data, RawData): continue

            raw_data_dict = {"rawDataId": raw_data.rawDataId,
                            "path":raw_data.path,
                            "parameters": raw_data.parameters,
                            "query": raw_data.query,
                            "fragment":raw_data.fragment,
                            "body": raw_data.body }
            #logging.info(raw_data_dict)
            template_values["all_raw_data"].append(raw_data_dict)
        
        self.writeWithTemplate(template_values, "RawData")
Exemplo n.º 5
0
    def get(self):
        # get city id
        city_id = self.request.get('city','')
        try:
            city_id = int(city_id)
        except:
            city_id = 0

        if city_id == 0:
            # no city? --> show city list
            citylist = {}
            cities = City.all()
            for city in cities:
                citylist[city.Name] = [city.Code,abs(hash(city.Name))]
            #----generate parameter list----------------------------------------------------------------------
            template_values = {
                'citylist' : citylist,
                'stationlist' : None
                }
            path = os.path.join(os.path.dirname(__file__), './/template//citylist_all.html')
            #----end------------------------------------------------------------------------------------------
            self.response.out.write(template.render(path,template_values))
        else:
            # show station plots
            stationlist = {}
            query = Query(City)
            query.filter('Code =', city_id)
            query.run()
            city = query.get()
            for station in city.station_set:
                data = []
                query = Query(AQIData)
                query.filter('Station =', station.Code)
                query.order('-Date')
                query.run()
                aqi = query.fetch(None)
                for entry in aqi:
                    data.append("['%s',%d]" % (str(entry.Date),entry.AQI))
                stationlist[station.Name] = ','.join(data)
            #----generate parameter list----------------------------------------------------------------------
            template_values = {
                'citylist' : None,
                'stationlist' : stationlist
                }
            path = os.path.join(os.path.dirname(__file__), './/template//citylist_all.html')
            #----end------------------------------------------------------------------------------------------
            self.response.out.write(template.render(path,template_values))