Sahana Edenのメモを書いておきます。
データインポート
CSV住所データをインポート
国土交通省国土計画局「位置参照情報(街区レベル、大字・町丁目レベル)ダウンロードサービス」のデータをSahana Edenのロケーションデータとして利用するためのシェルスクリプトをこのページ末に添付しています。
住所を一気に登録するにはCSVで住所データを作成しておいて、web2pyのコマンドラインから登録する。
web2pyのコマンドラインに入るにはweb2pyのルート直下で以下のコマンドを実行する。
$ python web2py.py -N -S eden -M
web2pyコマンドラインに入ってデータをインポートするには以下のコマンドを実行する。address.csv
は住所データ。web2pyのルート直下に置いておく。db.commit()
を実行しない限りDBにはコミットされない。
gis.import_csv("address.csv")
db.commit()
(終了するときは Ctrl+D)
CSVデータの形式は以下のようヘッダを指定しておく。
ADM0_NAME,ADM1_NAME,ADM2_NAME,LAT,LON
Japan,北海道,札幌市,43.0627818,141.3535986
Japan,北海道,札幌市中央区,43.0550852,141.3412251
Japan,北海道,札幌市北区,43.090267,141.3410508
指定できるヘッダは以下のとおり。ADM0からADM5がロケーションのL0からL5に対応、WKTはエリア、LAT,LONが緯度経度,UUIDはuuidです。UUIDはユニークであれば形式は問いません。
ADM0_NAME,
ADM1_NAME,
ADM2_NAME,
ADM3_NAME,
ADM4_NAME,
ADM5_NAME,
WKT,
LAT,
LON,
UUID,
Google被難所データをインポート
* インポートするときにはライセンスに注意 *
東日本大震災 - 避難所情報: http://shelter-info.appspot.com/maps で公開されているkmlデータをインポートするには、各地域のKMLファイルをダウンロードしておき、ブラウザから以下のようにファイル名を指定してインポートします。
古い情報
以下の情報は振るい情報です。
Googleの被難所データをダウンロード。
KML: http://www.google.com/intl/ja/crisisresponse/japanquake2011_shelter.kmz
zipで圧縮されているので展開する。
$ unzip japanquake2011_shelter.kmz
展開してできたファイル名を指定して以下にアクセス。 ファイルはweb2pyから読めるところに置いておくこと。
(リモートの場合は外から読める場所、サーバーの適当な場所など)
http://127.0.0.1:8000/eden/cr/shelter/create.kml?filename=/home/example/japanquake2011_shelter.kml&xsltmode=extended
fods形式を使ってデータのインポート
fods形式はOpenOffice.org/LibreOfficeで作成できます。
ボランティアスキルを登録する場合。
http://japan.sahanafoundation.org/eden/vol/skill/
- シート名 = リソース名
- 最初の行 = アトリビュートやフィールドの名前
- 以下の行 = アトリビュートやフィールドの値
fodsの書式は以上のような形式にしなければいけないけど、わかりにくい。
そういう場合はdbを見てみる。
ボランティアスキルのdbは、db.vol_skillでヘッダはこのようになってる。
vol_skill.id vol_skill.name vol_skill.category vol_skill.description vol_skill.uuid
これを当てはめてみると
- シート名 = vol_skill
- 最初の行 = dbのヘッダの「.」以下の名前(例:nameやcategory)
- 2行目以下の行 = 設定したい値
で、作成する。
インポートの時はインポートしたいアドレスにファイル名などを渡してやれば良い。
渡す方法は命名規約としてURIのあとに「create.(ファイル形式)?filename=(ファイル名)」をつければよい。
http://japan.sahanafoundation.org/eden/vol/skill/ ならば、
http://japan.sahanafoundation.org/eden/vol/skill/create.fods?filename=/home/example/vol_skill.fods となる。
設定
各機能モジュールを無効化する
Sahana Edenの機能はモジュール化され、不要な機能は使わない(見せない)ようにできます。
models/000_config.py
の deployment_settings.modules
に書いてあるモジュールをコメントアウトすることにより無効にできる。
Documentモジュール(doc)を無効にした場合の例を示す。
# Comment/uncomment modules here to disable/enable them
# Modules menu is defined in 01_menu.py
deployment_settings.modules = OrderedDict([
("default", Storage(
name_nice = T("Home"),
restricted = False, # Use ACLs to control access to this module
access = None, # All Users (inc Anonymous) can see this module in the default menu & access the controller
module_type = 0 # This item is always 1st in the menu
)),
(中略)
#("doc", Storage(
# name_nice = T("Documents and Photos"),
# description = T("A library of digital resources, such as photos, documents and reports"),
# restricted = False,
# module_type = 10,
# )),
(後略)
権限を設定する
各モジュールの権限を設定するには、 models/000_config.py
の deployment_settings.security.policy
のコメントを外しレベルを設定し、 deployment_settings.modules
にあるモジュールの restricted = True|False
を設定することにより、管理画面から権限を設定できるようになる。
参考: http://eden.sahanafoundation.org/wiki/S3AAA#System-widePolicy
# Security Policy (defaults to 1 = Simple)
# http://eden.sahanafoundation.org/wiki/S3AAA#System-widePolicy
deployment_settings.security.policy = 4 # Function-ACLs
国を固定する
models/000_config.pyの以下の部分をJPにする。
deployment_settings.L10n.countries = ["JP"]
その他
po2web2pyでpoカタログからja.pyを生成する
http://pootle.sahanafoundation.org/pootle/ja/eden/ja.po/translate/
にあるgettextカタログファイルをweb2pyの言語ファイルに変換するには、po2web2pyコマンドを利用する。
Debian/Ubuntuの場合は translate-toolkit パッケージをインストールすればよい。
$ sudo apt-get install translate-toolkit
po2web2pyを利用する前には /etc/python2.6/sitecustomize.py の末尾に以下の設定を追加してからpo2web2pyを実行する。
import.sys
sys.setdefaultenconding('utf-8')
Pythonをバイトコンパイルする
models/000_config.pyはバイトコンパイルしてると反映されないので、変更するとバイトコンパイルしなおす。
cd /home/web2py
python web2py.py -S eden -R applications/eden/static/scripts/tools/compile.py
バイトコンパイル済みファイルを消す
バイトコンパイルをしていると設定を変更しても反映されません。そのときはキャッシュを削除して作り直します。。
ローカル環境ならweb2py管理画面 http://127.0.0.1:8000/admin/default/site から remove compiled ボタンを押す。
リモート環境なら、applicationの下にあるeden/compiledディレクトリをディレクトリごと削除。
JavascriptとCSSを編集する時の注意
Sahana Edenでは、Javascript と CSS を圧縮(改行を削る)したものを作成し使用している。 単にstatic内のフォルダを編集しただけでは実際のビューに反映されない。
- statics/scripts/tools 内に、圧縮スクリプトと設定ファイルがある。
- sahana.css.cfg、sahana.js.cfg に記載されているファイルが圧縮対象
- CSS/JS に変更を加えた後、 python build.sahana.py を実行する
Bazaarでコミット時にVERSIONファイルを更新する
- ~/.bazaar/plugins にPythonファイルを作成
- 以下内容のフックコードを記述する
from bzrlib import mutabletree
from datetime import datetime
def start_commit_hook(tree):
ver = "%s-%u (%s)" % (tree.branch.nick,
int(tree.branch.revno()) + 1,
datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
with open("%s/VERSION" % tree.basedir, 'w') as f:
f.write(ver)
mutabletree.MutableTree.hooks.install_named_hook('start_commit', start_commit_hook, 'Start Commit Hook')