Как изменить blobstoreuploadhandler для принятия статуса 200? - PullRequest
1 голос
/ 28 августа 2011

Говорят, что GAE SDK 1.5.4 снял требование о том, что blobstoreuploadhandler должен возвращать перенаправление, и в рабочем состоянии оно уже предположительно, чтобы обработчик мог сделать «обычный» ответ на шаблон с переменными шаблона. Мне нужна эта возможность с dev_appserver и, следовательно, спросить, как я могу изменить dev_appserver, чтобы допустить обработчик для отображения шаблона с переменными шаблона. Я полагаю, что код, который мне нужно изменить, находится в файле http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/dev_appserver_blobstore.py но я не уверен, что изменить. Можете ли вы сказать мне, как сделать обработчик способным к регулярному ответу?

  def EndRedirect(self, redirected_outfile, original_outfile):
      """Handle the end of upload complete notification.

      Makes sure the application upload handler returned an appropriate status
      code.
      """
      response = dev_appserver.RewriteResponse(redirected_outfile)
      logging.info('Upload handler returned %d', response.status_code)

      if (response.status_code in (301, 302, 303) and
          (not response.body or len(response.body.read()) == 0)):
        contentless_outfile = cStringIO.StringIO()


        contentless_outfile.write('Status: %s\n' % response.status_code)
        contentless_outfile.write(''.join(response.headers.headers))
        contentless_outfile.seek(0)
        dev_appserver.URLDispatcher.EndRedirect(self,
                                                contentless_outfile,
                                                original_outfile)
      else:
        logging.error(
            'Invalid upload handler response. Only 301, 302 and 303 '
            'statuses are permitted and it may not have a content body.')
        original_outfile.write('Status: 500\n\n')

Обновление: решение было размещено по этой ссылке https://groups.google.com/forum/#!topic/google-appengine-python/vnvhUG1-UN0

1 Ответ

0 голосов
/ 07 сентября 2011

Решение было опубликовано, и я мог убедиться, что это сработало:

def EndRedirect(self, dispatched_output, original_output):

"""Handle the end of upload complete notification. Makes sure the application upload handler returned an appropriate status code. """

    response = dev_appserver.RewriteResponse(dispatched_output)

    logging.info('Upload handler returned %d', response.status_code)
    outfile = cStringIO.StringIO()
    outfile.write('Status: %s\n' % response.status_code)

    if response.body and len(response.body.read()) > 0:
      response.body.seek(0)
      outfile.write(response.body.read())
    else:
      outfile.write(''.join(response.headers.headers))

    outfile.seek(0)

dev_appserver.URLDispatcher.EndRedirect(self,outfile,original_output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...