読者です 読者をやめる 読者になる 読者になる

PinaxとSymposionで作るカンファレンスサイト

このエントリは 2012 Pythonアドベントカレンダー(Webフレームワーク) の22日目です。

Djangoのアプリケーションとして提供されているPinaxと、その拡張であるSymposionについて紹介します。

Pinaxとは?

http://pinaxproject.com/

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/ にアクセスすると、以下の画面が表示されるはずです。

f:id:inoshirou:20121222162744p:plain

右上のリンクからユーザ登録が行えます。また、登録したユーザアカウントでログインすることで、自分自身をスピーカーとして登録したりスポンサーに応募することができる機能が最初から実装されています。

あとはドキュメントを参考に、それぞれのカンファレンスに合わせて機能や見た目のカスタマイズしていくことになるでしょう。

まとめ

WebフレームワークDjangoの上で動くアプリケーションであるPinax, Symposionを紹介しました。これらを利用することで、スクラッチで作るよりも少ないコストでカンファレンスのWebサイトを立ち上げることができるのではないでしょうか。