|
- # -*- coding: utf-8 -*-
- from datetime import datetime
- import sys
- import connexion
-
-
- def root():
- cur_time = datetime.now().isoformat()
- return {'name': 'demo-data-one', 'time': cur_time}
-
-
- def get_summary_uris():
- years = xrange(2007,2015)
- return [{'year': y, 'link': "/summary/costs/{}".format(y)} for y in years]
-
-
- def get_summary(year):
- from xlrd import open_workbook, XL_CELL_TEXT
-
- try:
- if year in xrange(2007, 2011):
- book = open_workbook('data/ic2010_ay.xls')
- sheet = book.sheet_by_name('Statistics')
-
- in_state_tuition = {
- # the tuple is : in-state tuition + fees, books/supplies
- 2007: (sheet.cell(74, 4).value, sheet.cell(100, 4).value),
- 2008: (sheet.cell(77, 4).value, sheet.cell(101, 4).value),
- 2009: (sheet.cell(80, 4).value, sheet.cell(102, 4).value),
- 2010: (sheet.cell(83, 4).value, sheet.cell(100, 4).value)
- }
- #
- # for demo : uncomment and finish
- #
- # out_of_state_tuition = {
- # '2007': sheet.cell(88, 4).value,
- # '2008': sheet.cell(91, 4).value,
- # '2009': sheet.cell(94, 4).value,
- # '2010': sheet.cell(97, 4).value
- # }
- return dict(zip(['tuition_and_fees', 'books_and_supplies'], in_state_tuition[year]))
- elif year in xrange(2011, 2015):
- book = open_workbook('data/ic2014_ay.xlsx')
- sheet = book.sheet_by_name('Statistics')
-
- in_state_tuition = {
- 2011: (sheet.cell(71, 4).value, sheet.cell(97, 4).value),
- 2012: (sheet.cell(74, 4).value, sheet.cell(98, 4).value),
- 2013: (sheet.cell(77, 4).value, sheet.cell(99, 4).value),
- 2014: (sheet.cell(80, 4).value, sheet.cell(100, 4).value)
- }
- #
- # for demo : uncomment and finish
- #
- # out_of_state_tuition = {
- # '2011': sheet.cell(85, 4).value,
- # '2012': sheet.cell(88, 4).value,
- # '2013': sheet.cell(91, 4).value,
- # '2014': sheet.cell(94, 4).value
- # }
- return dict(zip(['tuition_and_fees', 'books_and_supplies'], in_state_tuition[year]))
- else:
- return {"error": "Data for year {} not found.".format(year)}
- except IOError:
- # Internal Server Error - NOT GOOD, but do something about it!
- return {"error": "An internal server error occured.", "reason": sys.exc_info(), "input": "\"{}\"".format(year)}
-
- if __name__ == '__main__':
- app = connexion.App(__name__, specification_dir='apispec/')
- app.add_api('data_api.yaml')
-
- # start the server
- app.run(port=1234)
|