-1

数人のユーザーが、OSQAの認証設定ページにアクセスできないと不満を漏らしました。500エラーを受け取ります。スクリーンショットを参照してください。ただし、「パスワードを忘れた」を通過した後、またはパスワードを変更した後のみです。
ログを見ると、エラーは具体的には次のとおりです。

UnboundLocalError: local variable name 'name' referenced before assignment  

他の誰かがこれを経験しましたか?もしそうなら、どうすれば修正できますか。
よろしくお願いします。

ログからのスタックトレースは次のように読み取られます(フォーマットが正しくないことをお詫びします)。

DIRECTORY/forum/templatetags/extra_tags.py TIME: 2012-12-13 09:23:31,419 MSG:extra_tags.py:render:312 Error in declare tag, when evaluating:    questions.children_count('answer')
DIRECTORY/apps/django/lib/python2.6/site-packages/django/core/handlers/base.py TIME: 2012-12-14 12:40:31,086 MSG: base.py:handle_uncaught_exception:209 Internal Server Error: /osqa/account/9/authsettings/
Traceback (most recent call last):
  File "DIRECTORY/apps/django/lib/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "DIRECTORY/apps/osqa/forum/views/auth.py", line 348, in auth_settings
    'name': name,
UnboundLocalError: local variable 'name' referenced before assignment
DIRECTORY/apps/osqa/forum/views/meta.py TIME: 2012-12-14 12:40:31,093 MSG: meta.py:error_handler:200 
        error executing request:
        PATH: /osqa/account/9/authsettings/
        USER: USER (1)
        METHOD: GET
        POST PARAMETERS:
            None
        GET PARAMETERS:
            None
        HTTP HEADERS:
            mod_wsgi.listener_port: 8080
    HTTP_REFERER: URL/osqa/users/9/USER
            mod_wsgi.listener_host: 
    SERVER_SOFTWARE: Apache
        SCRIPT_NAME: /osqa
        mod_wsgi.handler_script: 
    SERVER_SIGNATURE: 
    REQUEST_METHOD: GET
    PATH_INFO: /account/9/authsettings/
    SERVER_PROTOCOL: HTTP/1.1
    QUERY_STRING: 
    HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
    HTTP_CONNECTION: keep-alive
    HTTP_COOKIE: sessionid=REDACTED; csrftoken=REDACTED
    SERVER_NAME: SERVERNAME
    REMOTE_ADDR: SERVERIP
    mod_wsgi.request_handler: wsgi-script
    wsgi.url_scheme: http
    PATH_TRANSLATED: DIRECTORY/apache2/htdocs/account/9/authsettings/
    SERVER_PORT: 8080
    wsgi.multiprocess: True
    mod_wsgi.input_chunked: 0
    SERVER_ADDR: SERVERIP
    DOCUMENT_ROOT: DIRECTORY/apache2/htdocs
    mod_wsgi.process_group: 
    SCRIPT_FILENAME: DIRECTORY/apps/osqa/scripts/osqa.wsgi
    SERVER_ADMIN: you@example.com
    wsgi.input: <mod_wsgi.Input object at 0x46feab0>
    HTTP_DNT: 1
    HTTP_HOST: SERVER:8080
    wsgi.multithread: False
    mod_wsgi.callable_object: application
    REQUEST_URI: /osqa/account/9/authsettings/
    HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    wsgi.version: (1, 1)
    GATEWAY_INTERFACE: CGI/1.1
    wsgi.run_once: False
    wsgi.errors: <mod_wsgi.Log object at 0x487c4f0>
    REMOTE_PORT: 51455
    HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.8
    mod_wsgi.version: (3, 3)
    mod_wsgi.application_group: localhost:8080|/osqa
    mod_wsgi.script_reloading: 1
    wsgi.file_wrapper: <built-in method file_wrapper of mod_wsgi.Adapter object at 0x47bf0a8>
    CSRF_COOKIE: REDACTED
    HTTP_ACCEPT_ENCODING: gzip,deflate,sdch

    COOKIES:
             csrftoken: REDACTED
    sessionid: REDACTED

    EXCEPTION INFO:
        Traceback (most recent call last):
      File "DIRECTORY/apps/django/lib/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
        response = callback(request, *callback_args, **callback_kwargs)
      File "DIRECTORY/apps/osqa/forum/views/auth.py", line 348, in auth_settings
        'name': name,
    UnboundLocalError: local variable 'name' referenced before assignment
4

1 に答える 1

1

のソースコードを見ると、問題が発生osqaしている行の周りに次のようなものがあります(行番号は実際の行番号とは異なりますが、バージョンの違いが原因である可能性があります)。

347     for k in auth_keys:
348         provider = AUTH_PROVIDERS.get(k.provider, None)
349
350         if provider is not None:
351             name =  "%s: %s" % (provider.context.human_name, provider.context.readable_key(k))
352         else:
353             from forum.authentication.base import ConsumerTemplateContext
354             "unknown: %s" % ConsumerTemplateContext.readable_key(k)
355 
356         auth_keys_list.append({
357         'name': name,
358         'id': k.id
359         })

354行目と同じように見えますがname = "unknown: %s" % ConsumerTemplateContext.readable_key(k)、誰かがそれを忘れてしまいましたname =

私は本当に知識がないので、これについて100%確信することはできませんosqaが、このステートメントをそのままにしておくと、それ以外のことは何もしません。k.providerさらに、バグが発生しない理由を特定できれば、バグは100%再現可能です。これは、かなり珍しいことAUTH_PROVIDERSだと思います。


のバグトラッカーでバグを報告することをお勧めしますosqa。短期的に問題を解決するには、次のことができます。

  • あなたproviderがである理由を理解してくださいNone。(どうやら、のいずれにも対応していないauth_key電流が存在することによって引き起こされる問題)。userAUTH_PROVIDERS
  • コード内のその行を自分で修正します。
于 2012-12-14T18:17:13.990 に答える