Skip to content

Instantly share code, notes, and snippets.

@d30jeff
Created June 28, 2015 01:39
Show Gist options
  • Select an option

  • Save d30jeff/92829f8429a0fd48b3f7 to your computer and use it in GitHub Desktop.

Select an option

Save d30jeff/92829f8429a0fd48b3f7 to your computer and use it in GitHub Desktop.
Stackoverflow request help
# Function files:
def convert_to_csv(json_format):
"""Converts json to csv."""
csv_data = ""
if json_format:
for x in json_format:
csv_data += str(x['name']) + "," + str(x['flowrate']) + "," + str(x['temperature']) + "," + str(x['power']) + "," +str(x['log_time']) + "," + str(x['created_on']) + "\n"
return csv_data
def write_csv_from_query(resp, query, status, header, result_func):
"""Writes CSV response."""
csv_name = date_to_str(datetime.now()) + ".csv"
csv_header = ','.join(header) + "\n"
# csv_data = convert_to_csv(result_func(query))
csv_data = []
csv_data = result_func(query)
csv_data = ','.join(csv_data)
resp.status = status
resp.content_type = 'text/csv'
resp.set_header('Content-disposition', 'attachment; filename=' + csv_name)
resp.body = csv_header + csv_data
API CALL File:
def on_get(self, req, resp, id):
"""Generates CSV for log."""
qry = db.Session.query(db.Log, db.Location).\
filter(db.Log.location_id == db.Location.id).\
filter(db.Log.location_id == id)
qry = helpers.filter_between_dates(qry, req, db.Log.log_time)
header = ['Location','Flow Rate','Temperature','Power Consumption','Log Time','Created on']
# helpers.write_csv_from_query(resp, qry, falcon.HTTP_200, header,
# lambda q:[{
# 'name': location.name,
# 'flowrate': str(obj.flowrate),
# 'temperature': str(obj.temperature),
# 'power': str(obj.power),
# 'log_time': helpers.datetime_to_str(obj.log_time),
# 'created_on': helpers.date_to_str(obj.created_on)
# } for obj, location in q.all()])
helpers.write_csv_from_query(resp, qry, falcon.HTTP_200, header,
lambda q: [[location.name, str(obj.flowrate)] for obj, location in q.all()]
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment