Beispiel #1
0
 def get_flare_v2(self, query, headers=None, params=[], values=[]):
     q = self.query_json(query)
     if len(params) < 1 or len(values) < 1:
         return 'Missing Params or Values'
     if q:
         # data = request.data
         r = request.get_json(force=True)
         q = q.format(**r)
         res = dbext.raw_sql(q)
         if len(res) < 1:
             return 'None'
             # FLARE START #
         ret = '%s\n' % headers if headers else ''
         for row in res:
             count = 0
             for k, v in list(row.items()):
                 if k in params:
                     ret += "%s%s" % ('.' if count > 0 else '',
                                      v.replace(' ', '') if type(v) == str
                                      or type(v) == unicode else v)
                     count += 1
                 elif k in values:
                     ret += "%s%s" % (',', v.replace(' ', '') if type(v)
                                      == str or type(v) == unicode else v)
             ret += '\n'
         return self.flask.Response(ret,
                                    mimetype="text/csv",
                                    headers={
                                        "Content-disposition":
                                        "attachment; filename=flare.csv"
                                    })
Beispiel #2
0
 def get_json(self, query, params=False):
     if params is False:
         cache = self.cache_read(query, 'json')
         if cache:
             return self.flask.jsonify(json.dumps(cache))
     ret = []
     q = self.query_json(query)
     if q:
         if params:
             #  Procesar query con parametros
             # self.flask.Request.get_json()
             # data = request.data
             r = request.get_json(force=True)
             q = q.format(**r)
         res = dbext.raw_sql(q)
         for row in res:
             arr = {}
             for k, v in list(row.items()):
                 arr[k] = v
             ret.append(arr)
         if params is False:
             self.cache_write(query, 'json', ret)
     else:
         ret = {'error': True}
     return self.flask.jsonify(json.dumps(ret))
Beispiel #3
0
 def get_tsv(self, query):
     ret = self.cache_read(query, 'tsv')
     if ret:
         return self.flask.Response(ret,
                                    mimetype="text/tsv",
                                    headers={
                                        "Content-disposition":
                                        "attachment; filename=data.tsv"
                                    })
     else:
         ret = ''
     q = self.query_json(query)
     if q:
         res = dbext.raw_sql(q)
         # Headers
         if len(res) < 1:
             return 'None'
         for h, v in list(res[0].items()):
             ret += '%s\t' % h
         ret += '\n'
         # Content
         for row in res:
             for k, v in list(row.items()):
                 if type(v) is float:
                     ret += '%s\t' % '{0:g}'.format(float(v))
                 else:
                     ret += '%s\t' % v
             ret += '\n'
     self.cache_write(query, 'tsv', ret)
     return self.flask.Response(
         ret,
         mimetype="text/tsv",
         headers={"Content-disposition": "attachment; filename=data.tsv"})
Beispiel #4
0
 def get_flare_v1(self, query, headers='id,value', base='flare'):
     cache = self.cache_read(query, 'flare')
     if cache:
         return self.flask.Response\
             (cache,
              mimetype="text/csv",
              headers={
                  "Content-disposition":
                  "attachment; filename=flare.csv"})
     q = self.query_json(query)
     if q:
         res = dbext.raw_sql(q)
         if len(res) < 1:
             return 'None'
         # FLARE START #
         ret = '%s\n' % headers if headers else ''
         ret += '%s,\n' % base if base else ''
         # for k, v in [row.items() for row in res]:
         for row in res:
             group, subgroup, name, value = ('' for i in range(4))
             for k, v in list(row.items()):
                 if k == 'group':
                     group = v.replace(' ', '') if v else 'NG'
                 elif k == 'subgroup' and v and v != '-':
                     subgroup = v.replace(' ', '') if v else 'NSG'
                 elif k == 'value':
                     value = '%s' % str(v)
                 elif k == 'name':
                     name = v
             if not value and not name:
                 continue
             if name and not value:
                 value = '0'
             if base and subgroup and group:
                 ret += '%s.%s.%s.%s,%s\n' % (base, group, subgroup, name,
                                              value)
             elif base and group:
                 ret += '%s.%s.%s,%s\n' % (base, group, name, value)
             elif subgroup and group:
                 ret += '%s.%s.%s,%s\n' % (group, subgroup, name, value)
             elif group:
                 ret += '%s.%s,%s\n' % (group, name, value)
     else:
         ret = 'Query not found'
     self.cache_write(query, 'csv', ret)
     return self.flask.Response(
         ret,
         mimetype="text/csv",
         headers={"Content-disposition": "attachment; filename=flare.csv"})
Beispiel #5
0
    def get_json_cascade(self, query):
        cache = self.cache_read(query, 'json')
        if cache:
            return self.flask.jsonify(json.dumps(cache))
        ret = []
        q = self.query_json(query)
        if q:
            res = dbext.raw_sql(q)
            c = 'children'
            for row in res:
                for k, v in list(row.items()):
                    if k == 'date':
                        if len(ret) == 0 or ret[-1]['date'] != v:
                            ret.append({
                                "date": v,
                                "name": "Frentes",
                                "children": []
                            })
                            continue
                        else:
                            continue
                    elif k == 'frente':
                        if len(ret[-1][c]) == 0 or ret[-1][c][-1]['name'] != v:
                            ret[-1][c].append({"name": v, "children": []})
                            continue
                        else:
                            continue
                    elif k == 'candidato':
                        if len(ret[-1][c][-1]
                               [c]) == 0 or ret[-1][c][-1][c][-1]['name'] != v:
                            ret[-1][c][-1][c].append({"name": v, "size": ""})
                            continue
                        else:
                            continue
                    elif k == 'q_mentions':
                        ret[-1][c][-1][c][-1]['size'] = v
                        break

        else:
            ret = {'error': True}
        self.cache_write(query, 'json', ret)
        return self.flask.jsonify(json.dumps(ret))
Beispiel #6
0
 def get_query(self, query):
     cache = self.cache_read(query, 'query')
     if cache:
         return self.flask.jsonify(cache)
     ret = {}
     q = self.query_json(query)
     if q:
         res = dbext.raw_sql(q)
         c = 0
         for row in res:
             ret[c] = {}
             for k, v in list(row.items()):
                 ret[c][k] = v
             c += 1
     else:
         ret = {'error': True}
     if len(ret) <= 1:
         ret = ret[0]
     self.cache_write(query, 'query', ret)
     return self.flask.jsonify(ret)