Replacing "file" with "open" fixed it. Thank you so much!
~Karen On Nov 21, 1:31 pm, "Diez B. Roggisch" <[email protected]> wrote: > On Nov 21, 2010, at 6:02 PM, Karen McNeil wrote: > > > > > Here's the full traceback, along with the code. This is definitely > > the code I'm testing, and I'm still getting the same error. The only > > change from what I posted before is that I changed the variable name > > like you suggested. (I'm also going to change the filenaming scheme, > > but I haven't decided how yet, so right now I just want to get the > > upload working. The other suggestion you made, about the validators, > > is something I don't know how to do yet.) > > > Thank you very much for your help, > > Karen > > > ------------------------------------------------------------------------------------------------------------------------------------------------ > > TRACEBACK > > ------------------------------------------------------------------------------------------------------------------------------------------------ > > > URL:http://localhost:8080/add > > Module weberror.evalexception:431 in respond view > > << try: > > __traceback_supplement__ = > > errormiddleware.Supplement, self, environ > > app_iter = self.application(environ, > > detect_start_response) > > > # Don't create a list from a paste.fileapp object > >>> app_iter = self.application(environ, detect_start_response) > > Module tg.configuration:796 in remover view > > << def remover(environ, start_response): > > try: > > return app(environ, start_response) > > finally: > > log.debug("Removing DBSession from current > > thread") > >>> return app(environ, start_response) > > Module repoze.tm:19 in __call__ view > > << return start_response(status, headers, exc_info) > > try: > > result = self.application(environ, > > save_status_and_headers) > > except: > > self.abort() > >>> result = self.application(environ, save_status_and_headers) > > Module repoze.who.middleware:107 in __call__ view > > << wrapper = StartResponseWrapper(start_response) > > app_iter = app(environ, wrapper.wrap_start_response) > > > # The challenge decider almost(?) always needs > > information from the > >>> app_iter = app(environ, wrapper.wrap_start_response) > > Module tw.core.middleware:43 in __call__ view > > << def __call__(self, environ, start_response): > > return self.wsgi_app(environ, start_response) > > > def wsgi_app(self, environ, start_response): > >>> return self.wsgi_app(environ, start_response) > > Module tw.core.middleware:68 in wsgi_app view > > << else: > > # Pass request downstream > > resp = req.get_response(self.application) > > return resp(environ, start_response) > > finally: > >>> resp = req.get_response(self.application) > > Module webob.request:937 in get_response view > > Module webob.request:906 in call_application view > > Module tw.core.resource_injector:68 in _injector view > > << def _injector(environ, start_response): > > req = Request(environ) > > resp = req.get_response(app) > > content_type = resp.headers.get('Content-Type','text/ > > plain').lower() > > if 'html' in content_type: > >>> resp = req.get_response(app) > > Module webob.request:937 in get_response view > > Module webob.request:906 in call_application view > > Module beaker.middleware:81 in __call__ view > > << > > self.cache_manager) > > environ[self.environ_key] = self.cache_manager > > return self.app(environ, start_response) > >>> return self.app(environ, start_response) > > Module beaker.middleware:160 in __call__ view > > << headers.append(('Set-cookie', cookie)) > > return start_response(status, headers, exc_info) > > return self.wrap_app(environ, session_start_response) > > > def _get_session(self): > >>> return self.wrap_app(environ, session_start_response) > > Module routes.middleware:130 in __call__ view > > << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'] > > [:-1] > > > response = self.app(environ, start_response) > > > # Wrapped in try as in rare cases the attribute will be > > gone already > >>> response = self.app(environ, start_response) > > Module pylons.wsgiapp:125 in __call__ view > > << > > controller = self.resolve(environ, start_response) > > response = self.dispatch(controller, environ, > > start_response) > > > if 'paste.testing_variables' in environ and > > hasattr(response, > >>> response = self.dispatch(controller, environ, start_response) > > Module pylons.wsgiapp:324 in dispatch view > > << if log_debug: > > log.debug("Calling controller class with WSGI > > interface") > > return controller(environ, start_response) > > > def load_test_env(self, environ): > >>> return controller(environ, start_response) > > Module tunisian.lib.base:32 in __call__ view > > << request.identity = > > request.environ.get('repoze.who.identity') > > tmpl_context.identity = request.identity > > return TGController.__call__(self, environ, > > start_response) > >>> return TGController.__call__(self, environ, start_response) > > Module pylons.controllers.core:221 in __call__ view > > << return response(environ, self.start_response) > > > response = self._dispatch_call() > > if not start_response_called: > > self.start_response = start_response > >>> response = self._dispatch_call() > > Module pylons.controllers.core:172 in _dispatch_call view > > << req.environ['pylons.action_method'] = func > > > response = self._inspect_call(func) > > else: > > if log_debug: > >>> response = self._inspect_call(func) > > Module pylons.controllers.core:107 in _inspect_call view > > << func.__name__, args) > > try: > > result = self._perform_call(func, args) > > except HTTPException, httpe: > > if log_debug: > >>> result = self._perform_call(func, args) > > Module tg.controllers.dispatcher:254 in _perform_call view > > << self._setup_wsgi_script_name(url_path, remainder, params) > > > r = self._call(func, params, remainder=remainder) > > > if hasattr(controller, '__after__'): > >>> r = self._call(func, params, remainder=remainder) > > Module tg.controllers.decoratedcontroller:107 in _call view > > << params, remainder = > > self._remove_argspec_params_from_params(controller, params, remainder) > > > output = controller(*remainder, **dict(params)) > > > except formencode.api.Invalid, inv: > >>> output = controller(*remainder, **dict(params)) > > Module tunisian.controllers.root:107 in add view > > << #write text file to corpus directory - THIS IS WHERE MY > > PROBLEM IS > > text_path = os.path.join(corpus_path, filename) > > f = file(text_path, 'w') > > f.write(new_file.value) > > f.close() > >>> f = file(text_path, 'w') > > TypeError: 'unicode' object is not callable > > It looks to me that you are shadowing the file-builtin with a string. What > happens if you use open instead? > > Diez -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/turbogears?hl=en.

