Ubuntu12.04のCobblerWebInterfaceをDjango1.4に対応させる
devstackでOpenStackの開発環境をインストールしたタイミングでうっかりDjangoが1.4になってしまった...その影響でCobblerWebInterfaceが動かなくなってしまったので、ちょいちょい修正してDjango1.4に対応させたときのメモ。
CSRF対策関連が変更されているのが原因。
他にもいろいろな対応方法があると思うけれど、今回は以下の3つのファイルを修正した。
1. /usr/share/cobbler/web/settings.py
--- settings.py.org 2012-08-11 19:50:30.631347811 +0900 +++ settings.py 2012-08-11 22:32:49.393328254 +0900 @@ -36,14 +36,14 @@ # code config TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.load_template_source', - 'django.template.loaders.app_directories.load_template_source', + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', - 'django.contrib.csrf.middleware.CsrfMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', ) ROOT_URLCONF = 'urls'
2. /usr/share/cobbler/web/cobbler_web/views.py
--- views.py.org 2012-08-11 21:51:58.318406264 +0900 +++ views.py 2012-08-11 22:34:03.622511091 +0900 @@ -1148,7 +1148,7 @@ return False def login(request, next=None): - return render_to_response('login.tmpl', {'next':next}) + return render_to_response('login.tmpl', context_instance=RequestContext(request, {'next':next})) def do_login(request): global remote
3. /usr/share/cobbler/web/cobbler_web/templates/login.tmpl
--- login.tmpl.org 2012-08-11 22:08:04.773729578 +0900 +++ login.tmpl 2012-08-11 22:08:36.234232908 +0900 @@ -11,7 +11,7 @@ {% if form.errors %} <p class="error">Sorry, that's not a valid username or password</p> {% endif %} - <form action="/cobbler_web/do_login" method="post"> + <form action="/cobbler_web/do_login" method="post">{% csrf_token %} {% if next %}<input type="hidden" name="next" value="{{ next|escape }}" />{% endif %} <div id="username"> <label for="username">Username: </label>