def process_GET(self, request):
     # build up query
     session = self.env.db.session()
     query = session.query(
         WaveformChannel.network, WaveformChannel.station,
         WaveformChannel.location, WaveformChannel.channel,
         func.max(WaveformChannel.endtime).label('latency')
     )
     query = query.group_by(
         WaveformChannel.network, WaveformChannel.station,
         WaveformChannel.location, WaveformChannel.channel
     )
     # process arguments
     for key in ['network_id', 'station_id', 'location_id', 'channel_id']:
         text = request.args0.get(key, None)
         if text == None:
             continue
         col = getattr(WaveformChannel, key[:-3])
         if text == "":
             query = query.filter(col == None)
         elif '*' in text or '?' in text:
             text = text.replace('?', '_')
             text = text.replace('*', '%')
             query = query.filter(col.like(text))
         else:
             query = query.filter(col == text)
     data = formatORMResults(request, query)
     session.close()
     return data
 def process_GET(self, request):
     session = self.env.db.session()
     query = session.query(WaveformChannel.network)
     query = query.group_by(WaveformChannel.network)
     data = formatORMResults(request, query)
     session.close()
     return data
 def process_GET(self, request):
     network = request.args0.get('network_id', None)
     session = self.env.db.session()
     query = session.query(WaveformChannel.station)
     if network:
         query = query.filter(WaveformChannel.network == network)
     query = query.group_by(WaveformChannel.station)
     data = formatORMResults(request, query)
     session.close()
     return data