From f3ef00333b34d9ec827f8b548a9d5fcd3a671b74 Mon Sep 17 00:00:00 2001 From: ckan Date: Sat, 1 Feb 2014 21:48:07 -0500 Subject: [PATCH 01/14] removing dependency on google app engine --- README.rst | 4 +++ dataproxy/__init__.py | 0 dataproxy/app.py | 0 dataproxy/app.yaml | 0 dataproxy/bn/__init__.py | 0 dataproxy/bn/relimport_test.py | 0 dataproxy/dataproxy.py | 29 ++++++++++++++++-- dataproxy/static/demo.html | 0 dataproxy/vendor/openpyxl-1.5.7/LICENCE | 0 .../openpyxl-1.5.7/openpyxl/__init__.py | 0 .../vendor/openpyxl-1.5.7/openpyxl/cell.py | 0 .../vendor/openpyxl-1.5.7/openpyxl/chart.py | 0 .../vendor/openpyxl-1.5.7/openpyxl/drawing.py | 0 .../openpyxl-1.5.7/openpyxl/namedrange.py | 0 .../openpyxl/reader/__init__.py | 0 .../openpyxl-1.5.7/openpyxl/reader/excel.py | 0 .../openpyxl/reader/iter_worksheet.py | 0 .../openpyxl-1.5.7/openpyxl/reader/strings.py | 0 .../openpyxl-1.5.7/openpyxl/reader/style.py | 0 .../openpyxl/reader/workbook.py | 0 .../openpyxl/reader/worksheet.py | 0 .../openpyxl/shared/__init__.py | 0 .../openpyxl/shared/compat/__init__.py | 0 .../openpyxl/shared/compat/allany.py | 0 .../openpyxl/shared/compat/elementtree.py | 0 .../openpyxl/shared/compat/odict.py | 0 .../openpyxl/shared/compat/sax.py | 0 .../openpyxl/shared/compat/tempnamedfile.py | 0 .../openpyxl/shared/date_time.py | 0 .../openpyxl-1.5.7/openpyxl/shared/exc.py | 0 .../openpyxl-1.5.7/openpyxl/shared/ooxml.py | 0 .../openpyxl/shared/password_hasher.py | 0 .../openpyxl-1.5.7/openpyxl/shared/units.py | 0 .../openpyxl/shared/xmltools.py | 0 .../vendor/openpyxl-1.5.7/openpyxl/style.py | 0 .../openpyxl-1.5.7/openpyxl/tests/__init__.py | 0 .../openpyxl-1.5.7/openpyxl/tests/helper.py | 0 .../openpyxl/tests/test_cell.py | 0 .../openpyxl/tests/test_chart.py | 0 .../openpyxl/tests/test_dump.py | 0 .../openpyxl/tests/test_iter.py | 0 .../openpyxl/tests/test_meta.py | 0 .../openpyxl/tests/test_named_range.py | 0 .../openpyxl/tests/test_number_format.py | 0 .../openpyxl/tests/test_password_hash.py | 0 .../openpyxl/tests/test_props.py | 0 .../openpyxl/tests/test_read.py | 0 .../openpyxl/tests/test_strings.py | 0 .../openpyxl/tests/test_style.py | 0 .../openpyxl/tests/test_theme.py | 0 .../openpyxl/tests/test_workbook.py | 0 .../openpyxl/tests/test_worksheet.py | 0 .../openpyxl/tests/test_write.py | 0 .../openpyxl-1.5.7/openpyxl/workbook.py | 0 .../openpyxl-1.5.7/openpyxl/worksheet.py | 0 .../openpyxl/writer/__init__.py | 0 .../openpyxl-1.5.7/openpyxl/writer/charts.py | 0 .../openpyxl/writer/drawings.py | 0 .../openpyxl/writer/dump_worksheet.py | 0 .../openpyxl-1.5.7/openpyxl/writer/excel.py | 0 .../openpyxl-1.5.7/openpyxl/writer/strings.py | 0 .../openpyxl-1.5.7/openpyxl/writer/styles.py | 0 .../openpyxl-1.5.7/openpyxl/writer/theme.py | 0 .../openpyxl/writer/workbook.py | 0 .../openpyxl/writer/worksheet.py | 0 dataproxy/vendor/python-dateutil-1.5/LICENSE | 0 .../python-dateutil-1.5/dateutil/__init__.py | 0 .../python-dateutil-1.5/dateutil/easter.py | 0 .../python-dateutil-1.5/dateutil/parser.py | 0 .../dateutil/relativedelta.py | 0 .../python-dateutil-1.5/dateutil/rrule.py | 0 .../vendor/python-dateutil-1.5/dateutil/tz.py | 0 .../python-dateutil-1.5/dateutil/tzwin.py | 0 .../dateutil/zoneinfo/__init__.py | 0 .../dateutil/zoneinfo/zoneinfo-2010g.tar.gz | Bin dataproxy/xlrd/__init__.py | 0 dataproxy/xlrd/biffh.py | 0 dataproxy/xlrd/compdoc.py | 0 dataproxy/xlrd/doc/compdoc.html | 0 dataproxy/xlrd/doc/xlrd.html | 0 dataproxy/xlrd/examples/namesdemo.xls | Bin dataproxy/xlrd/examples/xlrdnameAPIdemo.py | 0 dataproxy/xlrd/formatting.py | 0 dataproxy/xlrd/formula.py | 0 dataproxy/xlrd/licences.py | 0 dataproxy/xlrd/sheet.py | 0 dataproxy/xlrd/timemachine.py | 0 dataproxy/xlrd/xldate.py | 0 88 files changed, 31 insertions(+), 2 deletions(-) mode change 100644 => 100755 dataproxy/__init__.py mode change 100644 => 100755 dataproxy/app.py mode change 100644 => 100755 dataproxy/app.yaml mode change 100644 => 100755 dataproxy/bn/__init__.py mode change 100644 => 100755 dataproxy/bn/relimport_test.py mode change 100644 => 100755 dataproxy/dataproxy.py mode change 100644 => 100755 dataproxy/static/demo.html mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/LICENCE mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/cell.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/chart.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/drawing.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/namedrange.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/excel.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/iter_worksheet.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/strings.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/style.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/workbook.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/worksheet.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/allany.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/elementtree.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/odict.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/sax.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/tempnamedfile.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/date_time.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/exc.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/ooxml.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/password_hasher.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/units.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/xmltools.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/style.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/helper.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_cell.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_chart.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_dump.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_iter.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_meta.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_named_range.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_number_format.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_password_hash.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_props.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_read.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_strings.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_style.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_theme.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_workbook.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_worksheet.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_write.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/workbook.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/worksheet.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/__init__.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/charts.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/drawings.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/dump_worksheet.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/excel.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/strings.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/styles.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/theme.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/workbook.py mode change 100644 => 100755 dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/worksheet.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/LICENSE mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/__init__.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/easter.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/parser.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/relativedelta.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/rrule.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/tz.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/tzwin.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/__init__.py mode change 100644 => 100755 dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/zoneinfo-2010g.tar.gz mode change 100644 => 100755 dataproxy/xlrd/__init__.py mode change 100644 => 100755 dataproxy/xlrd/biffh.py mode change 100644 => 100755 dataproxy/xlrd/compdoc.py mode change 100644 => 100755 dataproxy/xlrd/doc/compdoc.html mode change 100644 => 100755 dataproxy/xlrd/doc/xlrd.html mode change 100644 => 100755 dataproxy/xlrd/examples/namesdemo.xls mode change 100644 => 100755 dataproxy/xlrd/examples/xlrdnameAPIdemo.py mode change 100644 => 100755 dataproxy/xlrd/formatting.py mode change 100644 => 100755 dataproxy/xlrd/formula.py mode change 100644 => 100755 dataproxy/xlrd/licences.py mode change 100644 => 100755 dataproxy/xlrd/sheet.py mode change 100644 => 100755 dataproxy/xlrd/timemachine.py mode change 100644 => 100755 dataproxy/xlrd/xldate.py diff --git a/README.rst b/README.rst index 8103aeb..269670e 100644 --- a/README.rst +++ b/README.rst @@ -1,3 +1,7 @@ +OCHA Fork ++++++++++ +Security protocols at the UN require all services be run on UN servers, so dataproxy had to be modified to run indepedent of Google App Engine. + Data Proxy ++++++++++ diff --git a/dataproxy/__init__.py b/dataproxy/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/app.py b/dataproxy/app.py old mode 100644 new mode 100755 diff --git a/dataproxy/app.yaml b/dataproxy/app.yaml old mode 100644 new mode 100755 diff --git a/dataproxy/bn/__init__.py b/dataproxy/bn/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/bn/relimport_test.py b/dataproxy/bn/relimport_test.py old mode 100644 new mode 100755 diff --git a/dataproxy/dataproxy.py b/dataproxy/dataproxy.py old mode 100644 new mode 100755 index e987928..dae02a6 --- a/dataproxy/dataproxy.py +++ b/dataproxy/dataproxy.py @@ -1,11 +1,36 @@ -from google.appengine.ext.webapp.util import run_wsgi_app +#from google.appengine.ext.webapp.util import run_wsgi_app import os from app import JsonpDataProxy application = JsonpDataProxy(3000000) + +def _start_response(status, headers, exc_info=None): + if exc_info is not None: + raise exc_info[0], exc_info[1], exc_info[2] + print "Status: %s" % status + for name, val in headers: + print "%s: %s" % (name, val) + print + return sys.stdout.write + def main(): - run_wsgi_app(application) + env = dict(os.environ) + env["wsgi.input"] = sys.stdin + env["wsgi.errors"] = sys.stderr + env["wsgi.version"] = (1,0) + env["wsgi.run_once"] = True + env["wsgi.url_scheme"] = wsgiref.util.guess_scheme(env) + env["msgi.multithread"] = False + env["wsgi.multiprocess"] = False + result = application(env, _start_response) + try: + if result is not None: + for data in result: + sys.stdout.write(data) + finally: + if hasattr(result, 'close'): + result.close() if __name__ == "__main__": main() diff --git a/dataproxy/static/demo.html b/dataproxy/static/demo.html old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/LICENCE b/dataproxy/vendor/openpyxl-1.5.7/LICENCE old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/cell.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/cell.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/chart.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/chart.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/drawing.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/drawing.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/namedrange.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/namedrange.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/excel.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/excel.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/iter_worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/iter_worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/strings.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/strings.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/style.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/style.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/workbook.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/workbook.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/reader/worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/allany.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/allany.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/elementtree.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/elementtree.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/odict.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/odict.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/sax.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/sax.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/tempnamedfile.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/compat/tempnamedfile.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/date_time.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/date_time.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/exc.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/exc.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/ooxml.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/ooxml.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/password_hasher.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/password_hasher.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/units.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/units.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/xmltools.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/shared/xmltools.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/style.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/style.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/helper.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/helper.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_cell.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_cell.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_chart.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_chart.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_dump.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_dump.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_iter.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_iter.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_meta.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_meta.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_named_range.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_named_range.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_number_format.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_number_format.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_password_hash.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_password_hash.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_props.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_props.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_read.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_read.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_strings.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_strings.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_style.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_style.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_theme.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_theme.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_workbook.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_workbook.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_write.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/tests/test_write.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/workbook.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/workbook.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/__init__.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/charts.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/charts.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/drawings.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/drawings.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/dump_worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/dump_worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/excel.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/excel.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/strings.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/strings.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/styles.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/styles.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/theme.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/theme.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/workbook.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/workbook.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/worksheet.py b/dataproxy/vendor/openpyxl-1.5.7/openpyxl/writer/worksheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/LICENSE b/dataproxy/vendor/python-dateutil-1.5/LICENSE old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/__init__.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/easter.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/easter.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/parser.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/parser.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/relativedelta.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/relativedelta.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/rrule.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/rrule.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/tz.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/tz.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/tzwin.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/tzwin.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/__init__.py b/dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/zoneinfo-2010g.tar.gz b/dataproxy/vendor/python-dateutil-1.5/dateutil/zoneinfo/zoneinfo-2010g.tar.gz old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/__init__.py b/dataproxy/xlrd/__init__.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/biffh.py b/dataproxy/xlrd/biffh.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/compdoc.py b/dataproxy/xlrd/compdoc.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/doc/compdoc.html b/dataproxy/xlrd/doc/compdoc.html old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/doc/xlrd.html b/dataproxy/xlrd/doc/xlrd.html old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/examples/namesdemo.xls b/dataproxy/xlrd/examples/namesdemo.xls old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/examples/xlrdnameAPIdemo.py b/dataproxy/xlrd/examples/xlrdnameAPIdemo.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/formatting.py b/dataproxy/xlrd/formatting.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/formula.py b/dataproxy/xlrd/formula.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/licences.py b/dataproxy/xlrd/licences.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/sheet.py b/dataproxy/xlrd/sheet.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/timemachine.py b/dataproxy/xlrd/timemachine.py old mode 100644 new mode 100755 diff --git a/dataproxy/xlrd/xldate.py b/dataproxy/xlrd/xldate.py old mode 100644 new mode 100755 From e33c740c33f0b924d0d491607388951d2669dc3d Mon Sep 17 00:00:00 2001 From: ckan Date: Tue, 13 May 2014 15:59:26 -0400 Subject: [PATCH 02/14] forgot import sys --- dataproxy/dataproxy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/dataproxy.py b/dataproxy/dataproxy.py index dae02a6..91eb333 100755 --- a/dataproxy/dataproxy.py +++ b/dataproxy/dataproxy.py @@ -1,5 +1,5 @@ #from google.appengine.ext.webapp.util import run_wsgi_app -import os +import os, sys from app import JsonpDataProxy application = JsonpDataProxy(3000000) From 16629cceb0b9e8e88e6f0f0be00dbae2c8ed013b Mon Sep 17 00:00:00 2001 From: System Administrator Date: Tue, 7 Oct 2014 13:10:17 -0400 Subject: [PATCH 03/14] updating submods --- dataproxy/vendor/dataconverters | 2 +- dataproxy/vendor/messytables | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dataproxy/vendor/dataconverters b/dataproxy/vendor/dataconverters index 11a7f11..3e6c963 160000 --- a/dataproxy/vendor/dataconverters +++ b/dataproxy/vendor/dataconverters @@ -1 +1 @@ -Subproject commit 11a7f11dd5068e9c884b24c26bb7e3cb65e5ccc1 +Subproject commit 3e6c9630db4325188d2c43cceb98b984269a7a0c diff --git a/dataproxy/vendor/messytables b/dataproxy/vendor/messytables index eaa8ae6..973dece 160000 --- a/dataproxy/vendor/messytables +++ b/dataproxy/vendor/messytables @@ -1 +1 @@ -Subproject commit eaa8ae617220ceea8660c9db1b3a0d13e56588c7 +Subproject commit 973dece22282fcf093e7e12c00b2a69743037d2d From 526b1b3a557955b448bae72ad246d62f6981a165 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Tue, 7 Oct 2014 13:12:51 -0400 Subject: [PATCH 04/14] updating submods --- dataproxy/vendor/chardet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/vendor/chardet b/dataproxy/vendor/chardet index 70af46c..c40aa9b 160000 --- a/dataproxy/vendor/chardet +++ b/dataproxy/vendor/chardet @@ -1 +1 @@ -Subproject commit 70af46cb8e146326081fd76360d1c19675ee627c +Subproject commit c40aa9b8f7b47a77f4926d75adecd51fb1ed7ce3 From bb370230c065614fec955e1ca3557c3998c4c5b9 Mon Sep 17 00:00:00 2001 From: mbellotti Date: Tue, 21 Oct 2014 14:42:16 -0400 Subject: [PATCH 05/14] Fix to run on the new dataconverters --- dataproxy/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 14f4b9d..d683a76 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -243,7 +243,7 @@ def transform(type_name, flow, url, query, max_results): else: sheet_number = 1 records, metadata = dataconverters.xls.parse(stream, - excel_type=type_name, worksheet=sheet_number, + excel_type=type_name, guess_types=guess_types) else: raise Exception("Resource type not supported '%s'" % type_name) From 32b32669ec0ff15b5e5927210c078b56d2d9a86f Mon Sep 17 00:00:00 2001 From: System Administrator Date: Tue, 11 Nov 2014 15:27:41 -0500 Subject: [PATCH 06/14] passing cookies and controlling permissions more strictly --- dataproxy/app.py | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 14f4b9d..47b30ec 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -128,7 +128,12 @@ def __call__(self, environ, start_response): return error(title=title, message=msg) def index(self, flow): - if not flow.query.has_key('url'): + if not from_ckan(flow.environ['HTTP_COOKIE']): + title = 'ckan only' + msg = 'Dataproxy only accepts requests from CKAN installations' + flow.http_response.status = '200 Error %s'%title + flow.http_response.body = error(title=title, message=msg) + elif not flow.query.has_key('url'): title = 'url query parameter missing' msg = 'Please read the dataproxy API format documentation: https://github.com/okfn/dataproxy' flow.http_response.status = '200 Error %s'%title @@ -142,6 +147,13 @@ def index(self, flow): flow.http_response.status = '200 %s %s' % (e.error, e.title) flow.http_response.body = error(title=e.title, message=e.message) + def from_ckan(cookies): + #Checks to see if there's a ckan cookie present + for c in cookies.split(';'): + t = c.split('=') + if t[0] == 'ckan': + return True + return False def proxy_query(self, flow, url, query): parts = urlparse.urlparse(url) @@ -221,15 +233,37 @@ def transform(type_name, flow, url, query, max_results): if 'encoding' in query: encoding = query["encoding"].value if type_name == 'csv': - stream = urllib2.urlopen(url) + request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) + try: + stream = urllib2.urlopen(request) + except urllib2.HTTPError, err: + if err.code == 403: + raise Exception("You do not have permission to access this file.") + else: + raise Exception("File could not be fetched from the filestore.") + #stream = urllib2.urlopen(url) records, metadata = dataconverters.commas.parse(stream, encoding=encoding, window=window, guess_types=guess_types) elif type_name == 'tsv': - stream = urllib2.urlopen(url) + request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) + try: + stream = urllib2.urlopen(request) + except urllib2.HTTPError, err: + if err.code == 403: + raise Exception("You do not have permission to access this file.") + else: + raise Exception("File could not be fetched from the filestore.") records, metadata = dataconverters.commas.parse(stream, delimiter='\t', encoding=encoding, window=window, guess_types=guess_types) elif type_name == 'xls' or type_name == 'xlsx': - stream = urllib2.urlopen(url) + request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) + try: + stream = urllib2.urlopen(request) + except urllib2.HTTPError, err: + if err.code == 403: + raise Exception("You do not have permission to access this file.") + else: + raise Exception("File could not be fetched from the filestore.") length = int(stream.headers.get('content-length', 0)) # max_length = flow.app.config.proxy.max_length max_length = 5000000 # ~ 5Mb From 683e205f0c411cef6b621abc0717cb9367e0bda0 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Tue, 11 Nov 2014 15:35:58 -0500 Subject: [PATCH 07/14] OOP fail, go back to programming 101 Marianne --- dataproxy/app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 6f1eef3..0914ea5 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -128,7 +128,7 @@ def __call__(self, environ, start_response): return error(title=title, message=msg) def index(self, flow): - if not from_ckan(flow.environ['HTTP_COOKIE']): + if not self.from_ckan(flow.environ['HTTP_COOKIE']): title = 'ckan only' msg = 'Dataproxy only accepts requests from CKAN installations' flow.http_response.status = '200 Error %s'%title @@ -147,7 +147,7 @@ def index(self, flow): flow.http_response.status = '200 %s %s' % (e.error, e.title) flow.http_response.body = error(title=e.title, message=e.message) - def from_ckan(cookies): + def from_ckan(self,cookies): #Checks to see if there's a ckan cookie present for c in cookies.split(';'): t = c.split('=') From 5bfb3f3d50067a5322f1a6ac223948e151bace30 Mon Sep 17 00:00:00 2001 From: mbellotti Date: Thu, 13 Nov 2014 09:34:31 -0500 Subject: [PATCH 08/14] Update app.py --- dataproxy/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 0914ea5..ef37b11 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -151,7 +151,7 @@ def from_ckan(self,cookies): #Checks to see if there's a ckan cookie present for c in cookies.split(';'): t = c.split('=') - if t[0] == 'ckan': + if t[0].strip().lower() == 'ckan': return True return False From d3c01463a17d4d4f95e7de5bbe355084c3f84a62 Mon Sep 17 00:00:00 2001 From: mbellotti Date: Thu, 13 Nov 2014 10:07:30 -0500 Subject: [PATCH 09/14] That was a terrible idea, I blame Serban! ;) --- dataproxy/app.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index ef37b11..5e3f0fa 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -149,11 +149,12 @@ def index(self, flow): def from_ckan(self,cookies): #Checks to see if there's a ckan cookie present - for c in cookies.split(';'): - t = c.split('=') - if t[0].strip().lower() == 'ckan': - return True - return False + #for c in cookies.split(';'): + # t = c.split('=') + # if t[0].strip().lower() == 'ckan': + # return True + #return False + return True def proxy_query(self, flow, url, query): parts = urlparse.urlparse(url) From 3d2e4048ccff0642904616ef991d5da263cc9682 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 19 Nov 2014 10:06:21 -0500 Subject: [PATCH 10/14] controlling where the token is sent --- dataproxy/app.py | 59 ++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 0914ea5..3f54da4 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -233,37 +233,15 @@ def transform(type_name, flow, url, query, max_results): if 'encoding' in query: encoding = query["encoding"].value if type_name == 'csv': - request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) - try: - stream = urllib2.urlopen(request) - except urllib2.HTTPError, err: - if err.code == 403: - raise Exception("You do not have permission to access this file.") - else: - raise Exception("File could not be fetched from the filestore.") - #stream = urllib2.urlopen(url) + stream = create_stream(flow, url) records, metadata = dataconverters.commas.parse(stream, encoding=encoding, window=window, guess_types=guess_types) elif type_name == 'tsv': - request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) - try: - stream = urllib2.urlopen(request) - except urllib2.HTTPError, err: - if err.code == 403: - raise Exception("You do not have permission to access this file.") - else: - raise Exception("File could not be fetched from the filestore.") + stream = create_stream(flow, url) records, metadata = dataconverters.commas.parse(stream, delimiter='\t', encoding=encoding, window=window, guess_types=guess_types) elif type_name == 'xls' or type_name == 'xlsx': - request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) - try: - stream = urllib2.urlopen(request) - except urllib2.HTTPError, err: - if err.code == 403: - raise Exception("You do not have permission to access this file.") - else: - raise Exception("File could not be fetched from the filestore.") + stream = create_stream(flow, url) length = int(stream.headers.get('content-length', 0)) # max_length = flow.app.config.proxy.max_length max_length = 5000000 # ~ 5Mb @@ -283,6 +261,37 @@ def transform(type_name, flow, url, query, max_results): raise Exception("Resource type not supported '%s'" % type_name) return (records, metadata) +def from_hdx(url): + p = re.compile("hdx.rwlabs.org") + for m in p.finditer(url): + #https://data. 13 + #http://data. 12 + #https://dev-data. 17 + #http://dev-data. 16 + #https://test-data. 18 + #http://test-data. 17 + if m.start() < 19: + return True + else: + return False + +def create_stream(flow, url): + hdx = from_hdx(flow.query['url']) + if hdx: + request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) + try: + stream = urllib2.urlopen(request) + except urllib2.HTTPError, err: + if err.code == 403: + raise Exception("You do not have permission to access this file.") + else: + if hdx: + raise Exception("File could not be fetched from filestore.") + else: + raise Exception("File could not be fetched.") + else: + stream = urllib2.urlopen(url) + return stream if __name__ == '__main__': from wsgiref.util import setup_testing_defaults From 06fe8cfdeb28c8b1fe18c17a5fea64636e0d12df Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 19 Nov 2014 10:18:07 -0500 Subject: [PATCH 11/14] urlparse over regex --- dataproxy/app.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 731abd6..b289146 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -263,18 +263,12 @@ def transform(type_name, flow, url, query, max_results): return (records, metadata) def from_hdx(url): - p = re.compile("hdx.rwlabs.org") - for m in p.finditer(url): - #https://data. 13 - #http://data. 12 - #https://dev-data. 17 - #http://dev-data. 16 - #https://test-data. 18 - #http://test-data. 17 - if m.start() < 19: - return True - else: - return False + url = urlparse.urlparse(url) + url = url.netloc.split(':') + if url[0][-14:] == 'hdx.rwlabs.org': + return True + else: + return False def create_stream(flow, url): hdx = from_hdx(flow.query['url']) From 7d4548d1a5871786c4806ccf45d86d5ace2f5355 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 19 Nov 2014 10:50:16 -0500 Subject: [PATCH 12/14] no 500 error if no cookies --- dataproxy/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index b289146..8d01e5b 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -128,7 +128,7 @@ def __call__(self, environ, start_response): return error(title=title, message=msg) def index(self, flow): - if not self.from_ckan(flow.environ['HTTP_COOKIE']): + if not 'HTTP_COOKIE' in flow.environ or not self.from_ckan(flow.environ['HTTP_COOKIE']): title = 'ckan only' msg = 'Dataproxy only accepts requests from CKAN installations' flow.http_response.status = '200 Error %s'%title From c756c7fca2ad4dfed3dc1707f27bf7c37ce8ff88 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 19 Nov 2014 10:55:46 -0500 Subject: [PATCH 13/14] no 500 error if no cookies --- dataproxy/app.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 8d01e5b..7e8d876 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -95,6 +95,8 @@ def __call__(self, environ, start_response): flow['app']['config'] = AttributeDict() flow['app']['config']['proxy'] = AttributeDict(max_length=int(self.max_length)) flow['environ'] = environ + if not 'HTTP_COOKIE' in flow.environ: + flow['environ']['HTTP_COOKIE'] = '' flow['http_response'] = HTTPResponseMarble() flow.http_response.header_list = [ dict(name='Content-Type', value='application/javascript'), @@ -128,7 +130,7 @@ def __call__(self, environ, start_response): return error(title=title, message=msg) def index(self, flow): - if not 'HTTP_COOKIE' in flow.environ or not self.from_ckan(flow.environ['HTTP_COOKIE']): + if not self.from_ckan(flow.environ['HTTP_COOKIE']): title = 'ckan only' msg = 'Dataproxy only accepts requests from CKAN installations' flow.http_response.status = '200 Error %s'%title From 9f1730548d65ede2b3cbabfd5d4ee821c8311062 Mon Sep 17 00:00:00 2001 From: System Administrator Date: Wed, 19 Nov 2014 13:57:55 -0500 Subject: [PATCH 14/14] url instead of flow url --- dataproxy/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dataproxy/app.py b/dataproxy/app.py index 7e8d876..adf57ea 100755 --- a/dataproxy/app.py +++ b/dataproxy/app.py @@ -273,7 +273,7 @@ def from_hdx(url): return False def create_stream(flow, url): - hdx = from_hdx(flow.query['url']) + hdx = from_hdx(url) if hdx: request = urllib2.Request(url, headers={"Cookie" : flow.environ['HTTP_COOKIE']}) try: