PinaxとSymposionで作るカンファレンスサイト
このエントリは 2012 Pythonアドベントカレンダー(Webフレームワーク) の22日目です。
Djangoのアプリケーションとして提供されているPinaxと、その拡張であるSymposionについて紹介します。
Pinaxとは?
Djangoのアプリケーションとして提供されているオープンソースのプロダクトです。これはユーザ管理機能を中心とした、Webサイトでよく使う機能の詰め合わせを提供します。
Pinaxの公式サイトによると、以下のような機能が含まれています。(一部抜粋)
...including apps for: account management openid e-mail verification password management profiles notifications activity streams private betas / waiting lists
「Pinaxを使えばよくある機能は提供されるから、作りたいもの作ることに集中できるよ」
というのがコンセプトのようです。
また、Pinaxが提供するのは上記のようなWebサイトの基盤となる機能に限りますが、Pinaxに機能を追加するためのパッケージが数多く用意されています。
Symposionもそんなパッケージの一つです。
Symposionとは?
http://eldarion.com/symposion/
カンファレンスサイト向けの機能を詰め合わせたパッケージです。カンファレンスサイトというものはだいたい以下のようなコンテンツを扱います。
- セッションの情報
- スピーカーの情報
- タイムテーブル
- スポンサーの情報
- etc
Symposionはこれらのコンテンツを扱う機能一式を提供するため、サイトの構築にかかるコストを引き下げてくれます。
利用実績
Djangoのアプリケーションとして作られていることもあって、各国のPyConで採用される事例が多いです。Symposionを利用したサイトの一部を紹介します。
Symposionのセットアップ
まずはvirtualenvで環境作成
virtualenv conference cd conference source bin/activate
Symposionのコードを持ってきて、必要パッケージのインストール
git clone git://github.com/pinax/symposion cd symposion pip install -r requirements.txt
requirements.txtにDjango, Pinax含めた必要パッケージは記述してあるので、これ一発でインストールできる…はずなんだけどうまくいかなかった所が2箇所あった。
以下のように直したらインストールできた。
--- a/requirements.txt +++ b/requirements.txt @@ -16,14 +16,14 @@ django-forms-bootstrap==2.0.3.post1 metron==0.1 # 0.2.dev3 pinax-utils==1.0b1.dev3 django-debug-toolbar==0.9.4 -django-mailer==0.2a1 +django-mailer==0.2a1.dev3 django-timezones==0.2 pytz==2012g django-model-utils==1.1.0 django-taggit==0.9.3 django-reversion==1.6.4 -django-markitup==1.0.0 +django-markitup markdown==2.2.0 django-sitetree==0.9.1 PIL==1.1.7
セットアップ
./manage.py syncdb ./manage.py loadata fixtures/* ./manage.py runserver
http://127.0.0.1:8000/ にアクセスすると、以下の画面が表示されるはずです。
右上のリンクからユーザ登録が行えます。また、登録したユーザアカウントでログインすることで、自分自身をスピーカーとして登録したりスポンサーに応募することができる機能が最初から実装されています。
あとはドキュメントを参考に、それぞれのカンファレンスに合わせて機能や見た目のカスタマイズしていくことになるでしょう。
まとめ
WebフレームワークDjangoの上で動くアプリケーションであるPinax, Symposionを紹介しました。これらを利用することで、スクラッチで作るよりも少ないコストでカンファレンスのWebサイトを立ち上げることができるのではないでしょうか。