Hi Dan, I was trying to poke through some of the server code and I was struggling to fall the flow of the code (lots of hidden magic with turbogears and cherrypy). Of course, with the turbogears->flask and cherrypy->flask wrappers, it makes things more challenging. :-)
So I thought if I start peeling away some of the cherrypy stuff it would help me understand some of the code better. Using a lot of ignorance, I pulled out this patch inside beaker-in-a-box: diff --git a/Server/bkr/server/CSV_import_export.py b/Server/bkr/server/CSV_import_export.py index 41fcb26..8c98d68 100644 --- a/Server/bkr/server/CSV_import_export.py +++ b/Server/bkr/server/CSV_import_export.py @@ -10,7 +10,8 @@ from bkr.server import identity from bkr.server.xmlrpccontroller import RPCRoot from tempfile import NamedTemporaryFile -from cherrypy.lib.cptools import serve_file +#from cherrypy.lib.cptools import serve_file +from flask import send_file from bkr.server.model import (System, SystemType, Activity, SystemActivity, User, Group, LabController, LabInfo, OSMajor, OSVersion, @@ -139,9 +140,9 @@ def action_export(self, csv_type, *args, **kw): log = self.to_csv(file, csv_type) file.seek(0) - return serve_file(file.name, contentType="text/csv", - disposition="attachment", - name="%s.csv" % csv_type) + return send_file(file.name, mimetype="text/csv", + as_attachment=True, + attachment_filename="%s.csv" % csv_type) def _import_row(self, data, log): if data['csv_type'] in system_types and ('fqdn' in data or 'id' in data): Restarting the httpd service and trying to export a CSV led to a 500 failure, with the beaker debug logs spitting out 'cherrypy can not iterate through the response' failures. Not surprised. I am sure I am untangling spaghetti here, but I guess I was hoping I would eventually hit one of your cherrypy->flask wrappers. Is there a good direction to go here or am I in for a long ride of unhappiness? Also for some reason when I am in IntegrationTests and run ./run-tests.sh, I get the following error: ====================================================================== ERROR: test suite for <module 'bkr.inttest' from '/root/git/beaker/IntegrationTests/src/bkr/inttest/__init__.pyc'> ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/nose/suite.py", line 209, in run self.setUp() File "/usr/lib/python2.6/site-packages/nose/suite.py", line 292, in setUp self.setupContext(ancestor) File "/usr/lib/python2.6/site-packages/nose/suite.py", line 315, in setupContext try_run(context, names) File "/usr/lib/python2.6/site-packages/nose/util.py", line 471, in try_run return func() File "/root/git/beaker/IntegrationTests/src/bkr/inttest/__init__.py", line 351, in setup_package data_setup.setup_model() File "/usr/lib/python2.6/site-packages/beaker_server-24.2-py2.6.egg/bkr/server/tests/data_setup.py", line 51, in setup_model connection = engine.connect() File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1779, in connect return self._connection_cls(self, **kwargs) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 60, in __init__ self.__connection = connection or engine.raw_connection() File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/base.py", line 1848, in raw_connection return self.pool.unique_connection() File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 280, in unique_connection return _ConnectionFairy._checkout(self) File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 641, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 440, in checkout rec = pool._do_get() File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 961, in _do_get return self._create_connection() File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 285, in _create_connection return _ConnectionRecord(self) File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 411, in __init__ self.connection = self.__connect() File "/usr/lib64/python2.6/site-packages/sqlalchemy/pool.py", line 537, in __connect connection = self.__pool._creator() File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/strategies.py", line 96, in connect connection_invalidated=invalidated File "/usr/lib64/python2.6/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/strategies.py", line 90, in connect return dialect.connect(*cargs, **cparams) File "/usr/lib64/python2.6/site-packages/sqlalchemy/engine/default.py", line 377, in connect return self.dbapi.connect(*cargs, **cparams) File "/usr/lib64/python2.6/site-packages/MySQLdb/__init__.py", line 81, in Connect return Connection(*args, **kwargs) File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 187, in __init__ super(Connection, self).__init__(*args, **kwargs2) OperationalError: (OperationalError) (1044, "Access denied for user 'beaker'@'localhost' to database 'beaker_test'") None None -------------------- >> begin captured logging << -------------------- Thoughts? Cheers, Don _______________________________________________ Beaker-devel mailing list -- beaker-devel@lists.fedorahosted.org To unsubscribe send an email to beaker-devel-le...@lists.fedorahosted.org