Exemple #1
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        path_info = jrequest.getPathInfo()
        try:
            year = int(path_info[3])
            month = int(path_info[4])
            day = int(path_info[5])
            hour = int(path_info[6])
        except:
            return
        start = datetime(year=year, month=month, day=day, hour=hour)
        assert start.tzinfo is None # start is a naive datetime object
        end = start + timedelta(hours=1)
        assert end.tzinfo is None # end is a naive datetime object
        start = start - timedelta(minutes=1)
        end = end + timedelta(minutes=1)

        metadata_query = Metadata.queryDateRange(start, end)
        metadata_keys = metadata_query.fetch(keys_only=True)
        for metadata_key in metadata_keys:
            metadata = metadata_key.get()
            assert isinstance(metadata, Metadata)
            rawdata_key = metadata.rawData
            rawdata = rawdata_key.get()
            assert isinstance(rawdata, RawData)
            #jresponse.addResult([metadata.receivedDateTime.isoformat(), rawdata.query])
            jresponse.addResult(rawdata)
        jresponse.setColumns(RawDataColumns())
Exemple #2
0
class _OneDay(JsonRpcDispatcher):
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            year = int(jrequest.getPathInfo(3))
            month = int(jrequest.getPathInfo(4))
            day = int(jrequest.getPathInfo(5))
        except Exception, e:
            jresponse.setErrorInvalidParameter(e)
            return
        start = datetime(year=year, month=month, day=day)
        end = start + timedelta(days=1)
        start = start - timedelta(minutes=1)
        end = end + timedelta(minutes=1)

        metadata_query = Metadata.queryDateRange(start, end)
        metadata_keys = metadata_query.fetch(keys_only=True)
        for metadata_key in metadata_keys:
            metadata = metadata_key.get()
            assert isinstance(metadata, Metadata)
            rawdata_key = metadata.rawData
            rawdata = rawdata_key.get()
            assert isinstance(rawdata, RawData)
            #jresponse.addResult([metadata.receivedDateTime.isoformat(), rawdata.query])
            jresponse.addResult(rawdata)
        jresponse.setColumns(RawDataColumns())
Exemple #3
0
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        path_info = jrequest.getPathInfo()
        try:
            year = int(path_info[3])
            month = int(path_info[4])
            day = int(path_info[5])
            hour = int(path_info[6])
        except:
            return
        start = datetime(year=year, month=month, day=day, hour=hour)
        assert start.tzinfo is None  # start is a naive datetime object
        end = start + timedelta(hours=1)
        assert end.tzinfo is None  # end is a naive datetime object
        start = start - timedelta(minutes=1)
        end = end + timedelta(minutes=1)

        metadata_query = Metadata.queryDateRange(start, end)
        metadata_keys = metadata_query.fetch(keys_only=True)
        for metadata_key in metadata_keys:
            metadata = metadata_key.get()
            assert isinstance(metadata, Metadata)
            rawdata_key = metadata.rawData
            rawdata = rawdata_key.get()
            assert isinstance(rawdata, RawData)
            #jresponse.addResult([metadata.receivedDateTime.isoformat(), rawdata.query])
            jresponse.addResult(rawdata)
        jresponse.setColumns(RawDataColumns())
 def eliminateUnusedData(self):
     query = Data.queryRange(self.currentDataId, self.end)
     for data_key in query.iter(keys_only=True):
         data = data_key.get()
         if data: self.currentDataId = data_key.get().dataId
         metadata_query = Metadata.queryByData(data_key)
         metadata_key = metadata_query.get(keys_only=True)
         if metadata_key: continue
         #info("deleting data_key=%s (data_id = %s)" % (data_key, data_key.get().dataId))
         self.nDeleted += 1
         data_key.delete()
 def eliminateUnusedData(self):
     query = Data.queryRange(self.currentDataId, self.end)
     for data_key in query.iter(keys_only=True):
         data = data_key.get()
         if data: self.currentDataId = data_key.get().dataId
         metadata_query = Metadata.queryByData(data_key)
         metadata_key = metadata_query.get(keys_only=True)
         if metadata_key: continue
         #info("deleting data_key=%s (data_id = %s)" % (data_key, data_key.get().dataId))
         self.nDeleted += 1
         data_key.delete()
 def GET(self, jrequest, jresponse):
     #LIMIT = 100
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     query = MetadataNdb.queryRecent()
     keys = query.fetch(keys_only=True, limit=100)
     for key in keys:
         metadata = key.get()
         #assert isinstance(metadata, MetadataNdb)
         jresponse.addResult(metadata)
     jresponse.setColumns(MetadataColumns())
Exemple #7
0
 def GET(self, jrequest, jresponse):
     #LIMIT = 100
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     query = MetadataNdb.queryRecent()
     keys = query.fetch(keys_only=True, limit=100)
     for key in keys:
         metadata = key.get()
         #assert isinstance(metadata, MetadataNdb)
         jresponse.addResult(metadata)
     jresponse.setColumns(MetadataColumns())
 def GET(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     path_info = jrequest.getPathInfo()
     try:
         metadata_id = int(path_info[3])
     except: return 
     query = MetadataNdb.queryRange(metadata_id, metadata_id)
     for metadata_key in query.fetch(keys_only=True):
         jresponse.addResult(metadata_key.get())
         jresponse.setExtraValue("key_id", metadata_key.id())
Exemple #9
0
 def GET(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     path_info = jrequest.getPathInfo()
     try:
         metadata_id = int(path_info[3])
     except:
         return
     query = MetadataNdb.queryRange(metadata_id, metadata_id)
     for metadata_key in query.fetch(keys_only=True):
         jresponse.addResult(metadata_key.get())
         jresponse.setExtraValue("key_id", metadata_key.id())
Exemple #10
0
class _ByDataKey(JsonRpcDispatcher):
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            data_key = ndb.Key("Data", int(jrequest.getPathInfo(4)))
        except Exception, e:
            jresponse.setErrorInvalidParameter(e)
            return
        metadata_keys = MetadataNdb.fetchByData(data_key)
        for metadata_key in metadata_keys:
            jresponse.addResult(metadata_key.get())
 def GET(self, jrequest, jresponse):
     
     def create_data(data_id, field, string):
         data = DataDb()
         data.dataId = data_id
         data.field = field
         data.string = string
         return data.put()
     
     def delete_data(start, end):
         query = DataNdb.queryRange(start, end)
         keys = query.fetch(keys_only=True)
         for key in keys: key.delete()
     
     def create_metadata(metadata_id, data_list):
         metadata = MetadataDb()
         metadata.metadataId = metadata_id
         metadata.dataList = data_list
         return metadata.put()
     
     def delete_metadata(start, end):
         query = MetadataNdb.queryRange(start, end)
         keys = query.fetch(keys_only=True)
         for key in keys: key.delete()
     
     def prepare():
         delete_data(1, 4)
         data1_key = create_data(1, "aa", "bb")
         data2_key = create_data(2, "aa", "bb")
         data3_key = create_data(3, "cc", "dd")
         data4_key = create_data(4, "cc", "dd")
         delete_metadata(1, 6)
         create_metadata(1, [data2_key, data4_key])
         create_metadata(2, [data2_key, data4_key])
         create_metadata(3, [data1_key, data3_key])
         create_metadata(4, [data2_key, data2_key])
         create_metadata(5, [data2_key, data3_key])
         create_metadata(6, [data4_key, data4_key])
     
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     prepare()
     query = MetadataNdb.queryRange(1, 6)
     keys = query.fetch(keys_only=True)
     for key in keys:
         debug(key)
         assert isinstance(key, ndb.Key)
         metadata = key.get()
         jresponse.addResult([metadata.metadataId, _listifyDataList(metadata.dataList)])
Exemple #12
0
    def GET(self, jrequest, jresponse):

        def create_data(data_id, field, string):
            data = DataDb()
            data.dataId = data_id
            data.field = field
            data.string = string
            return data.put()

        def delete_data(start, end):
            query = DataNdb.queryRange(start, end)
            keys = query.fetch(keys_only=True)
            for key in keys: key.delete()

        def create_metadata(metadata_id, data_list):
            metadata = MetadataDb()
            metadata.metadataId = metadata_id
            metadata.dataList = data_list
            return metadata.put()

        def delete_metadata(start, end):
            query = MetadataNdb.queryRange(start, end)
            keys = query.fetch(keys_only=True)
            for key in keys: key.delete()

        def prepare():
            delete_data(1, 4)
            data1_key = create_data(1, "aa", "bb")
            data2_key = create_data(2, "aa", "bb")
            data3_key = create_data(3, "cc", "dd")
            data4_key = create_data(4, "cc", "dd")
            delete_metadata(1, 6)
            create_metadata(1, [data2_key, data4_key])
            create_metadata(2, [data2_key, data4_key])
            create_metadata(3, [data1_key, data3_key])
            create_metadata(4, [data2_key, data2_key])
            create_metadata(5, [data2_key, data3_key])
            create_metadata(6, [data4_key, data4_key])

        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        prepare()
        query = MetadataNdb.queryRange(1, 6)
        keys = query.fetch(keys_only=True)
        for key in keys:
            debug(key)
            assert isinstance(key, ndb.Key)
            metadata = key.get()
            jresponse.addResult([metadata.metadataId, _listifyDataList(metadata.dataList)])
Exemple #13
0
class _Range(JsonRpcDispatcher):
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            start = int(jrequest.getPathInfo(3))
            end = int(jrequest.getPathInfo(4))
        except Exception, e:
            jresponse.setError(JsonRpcError.INVALID_REQUEST, str(e))
            return
        keys = MetadataNdb.fetchRange(start, end)
        for key in keys:
            jresponse.addResult(key.get())
        jresponse.setExtraValue("start", start)
        jresponse.setExtraValue("end", end)
Exemple #14
0
class _ByDataId(JsonRpcDispatcher):
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            data_id = int(jrequest.getPathInfo(4))
            data_key = DataNdb.getByDataId(data_id)
            if data_key is None: raise RuntimeError("Data entity with dataId %s was not found" % data_id)
            assert isinstance(data_key, ndb.Key)
        except Exception, e:
            jresponse.setErrorInvalidParameter(e)
            return
        assert isinstance(data_key, ndb.Key)
        metadata_keys = MetadataNdb.fetchByData(data_key)
        for metadata_key in metadata_keys:
            jresponse.addResult(metadata_key.get())
 def GET(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     path_info = jrequest.getPathInfo()
     try:
         year = int(path_info[3])
         month = int(path_info[4])
         day = int(path_info[5])
     except:
         year = 2012
         month = 8
         day = 20
     start = datetime(year=year, month=month, day=day)
     end = start + timedelta(days=1)
     query = MetadataNdb.queryDateRange(start, end)
     keys = query.fetch(limit=24 * 60 + 100, keys_only=True)
     for key in keys:
         jresponse.addResult(key.get())
     jresponse.setColumns(MetadataColumns())
Exemple #16
0
 def GET(self, jrequest, jresponse):
     assert isinstance(jrequest, JsonRpcRequest)
     assert isinstance(jresponse, JsonRpcResponse)
     jresponse.setId()
     path_info = jrequest.getPathInfo()
     try:
         year = int(path_info[3])
         month = int(path_info[4])
         day = int(path_info[5])
     except:
         year = 2012
         month = 8
         day = 20
     start = datetime(year=year, month=month, day=day)
     end = start + timedelta(days=1)
     query = MetadataNdb.queryDateRange(start, end)
     keys = query.fetch(limit=24 * 60 + 100, keys_only=True)
     for key in keys:
         jresponse.addResult(key.get())
     jresponse.setColumns(MetadataColumns())
Exemple #17
0
class _Recent(JsonRpcDispatcher):
    def GET(self, jrequest, jresponse):
        assert isinstance(jrequest, JsonRpcRequest)
        assert isinstance(jresponse, JsonRpcResponse)
        jresponse.setId()
        try:
            arduinoid = unicode(jrequest.getPathInfo(3))
            debug("arduinoid = %s" % arduinoid)
            data_keys = Data.fetchByFieldAndString("arduinoid", arduinoid)
            debug("data_keys = %s" % data_keys)
        except Exception, e:
            jresponse.setErrorInvalidParameter(e)
            return
        metadata_keys = Metadata.fetchByDataList(data_keys)
        for metadata_key in metadata_keys:
            metadata_entity = metadata_key.get()
            data_list = metadata_entity.dataList
            data_dict = _DataListToDict(data_list)
            jresponse.addResult([
                metadata_entity.receivedDateTime.isoformat(),
                data_dict.get("time"),
                data_dict.get("gen.power(W)"),
                data_dict.get("duration")
            ])
Exemple #18
0
 def delete_metadata(start, end):
     query = MetadataNdb.queryRange(start, end)
     keys = query.fetch(keys_only=True)
     for key in keys: key.delete()
Exemple #19
0
                e.message())
            return

        try:
            data_keys = Data.fetchByFieldAndString("arduinoid", arduino_id)
        except Exception, e:
            jresponse.setErrorInvalidParameter(e)
            return

        start = datetime(year=year, month=month, day=day, hour=hour)
        end = start + timedelta(hours=1) + timedelta(minutes=1)
        start = start - timedelta(minutes=1)
        #data_list = _getDataListByArduinoId(arduino_id)
        #jresponse.setExtraValue("data_list", data_list)

        metadata_keys = Metadata.fetchDateRangeAndDataList(
            start, end, data_keys)

        for metadata_key in metadata_keys:
            metadata_entity = metadata_key.get()
            assert isinstance(metadata_entity, Metadata)
            data_dict = _DataListToDict(metadata_entity.dataList)
            jresponse.addResult([
                metadata_entity.receivedDateTime.isoformat(),
                data_dict.get("time"),
                data_dict.get("gen.power(W)"),
                data_dict.get("duration")
            ])
        jresponse.setFieldNames(
            ["receivedDateTime", "time", "gen.power(W)", "duration"])

 def delete_metadata(start, end):
     query = MetadataNdb.queryRange(start, end)
     keys = query.fetch(keys_only=True)
     for key in keys: key.delete()