petitviolet_blog

@petitviolet blog

ajaxからpythonを使ってsvn updateする方法

apache文字コードをいじる

叩かれるPythonは以下のファイルです。

#!/usr/local/bin/python
# -*- encoding:utf-8 -*-
'''
chdirしてsvn updateしてくる
ajaxで叩かれる
'''
import os
import commands
import commit_log_viewer as c

# このpythonファイルが置いてある場所
WORK_SPACE = '~/workspace'
# updateしたいsvnディレクトリ
SVN_DIR = '~/sample/svn/'

# svnのディレクトリに移動
os.chdir(SVN_DIR)

# svn updateする
change_encoding = 'export LC_CTYPE=ja_JP.utf8'
os.system(change_encoding)
svn_update = 'env LANG=ja_JP.UTF-8 svn update'
update = commands.getoutput(svn_update)

# wordspaceに帰る(wordspaceで何もしないなら必要ない)

os.chdir(WORK_SPACE)
# 何か処理をする

html = """Content-Type: text/html; charset="utf-8"

{update}
""".format(update=update)

print html

ポイントはchange_encodingで、ajaxから叩くと/etc/sysconfig/httpdHTTPD_LANGの設定によっては

svn: Can't convert string from 'UTF-8′ to native encoding

というエラーが出ます。
これを回避するためにLANGの値を一時的に変更して対処します。

また、ajaxから叩くのでhtmlヘッダを出力する必要があります。