[TurboGears] TurboGearsのためのregistration

はじめに

この記事は、Registration For TurboGearsの日本語訳です。

これはなに?

この登録パッケージは、新規ユーザ登録とメンテナンスに共通した機能をより簡単にするために設計された、TurboGearsで使用するテンプレートの集まりです。これは、TurboGearsのユーザ識別フレームワークに沿うようにしてあります。特徴は、

  1. 新規ユーザ登録フォーム
  2. 電子メールによる検証
  3. 検証されたユーザを、定義されたグループに追加する。
  4. パスワードを忘れた場合の復旧
  5. ユーザが、自分のパスワードとメールアドレスを変更できる。

誰がこれを使えるの?

もしあなたのユーザ識別モデルが、標準の識別モデルにほどよく似ており(SQLObjectIdentityProviderを使っており)、同じユーザ/グループ/パーミッションの仕組みを使っていれば、あなたはこれを使うことができます。もしあなたの識別モデルがとても違っていたら、あなたは登録テンプレートと統合するためにいろいろなことをしなければならなくなり、それならスクラッチから始めた方が簡単です。

TurboGearsバージョン1.0(かそれ以降)が必要です。現在は、Python 2.4のみに対応しています。

インストール

もしあなたがTurboGearsをインストールしていたら、あなたはeasy_installをすでに持っていることでしょう。このモジュールは、

easy_install registration

とやってインストールします。あなたはsudoか、適切な権限に昇格するための似たような何かをする必要があるでしょう。

アップグレード

registrationの以前のバージョンからアップグレードする場合は、easy_installで次のようにして下さい:

easy_install -U registration

設定

テンプレートをプロジェクトに追加する。

もしあなたが既にプロジェクトを持っていたなら、次のコマンドで登録用のファイルを対化できます:

tg-admin update -t registration

もしプロジェクトにregistrationをインストールするのが初めてならば、本当に上書きするのでない限り、ファイルを上書きする質問には'n'とした方が安全です。

もしあなたがプロジェクト内のテンプレートをregistrationの以前のバージョンからアップグレードするのであれば、あなたは'register_'で始まらないファイルについて'n'と答えた方がいいでしょう。'register_*'テンプレートについては、'b'(バックアップ)と答えるのがおそらくもっとも安全です。'b'は、アップグレードするコード/テンプレートを設置し、元のバージョンのバックアップを保存します。アップグレードが完了したら、あなたは昔のバージョンと新しいバージョンを比べ、新しいテンプレートに統合する必要があるなんらかの変更があるかどうか、調べることができます。

新しいプロジェクトでは、コマンドは簡単です:

tg-admin quickstart -t registration
モデルを設定する。

もしあなたが'tg-admin quickstart'が生成した元来のUserクラスを変更していたら、あなたはregistration_model.RegistrationPendingUserクラスをあなたのUserモデルと同じように修正する必要があります(少なくとも、登録するときにユーザに入力させたい項目を持つように)。基本的に、あなたは自分のUserモデルをRegistrationPendingUserにカット・アンド・ペーストできますが、新しいクラスの'validation_key'カラムだけは決して削除しないで下さい。

必要なデータベースのテーブルはすべて、プロジェクトを立ち上げたときに自動的に作成されます。

変数を設定する。

あなたのプロジェクトのconfigディレクトリに、'registration.cfg'という新しいファイルがあるはずです。あなたは変数を適切に編集する必要があります。ほとんどの変数の目的は、そのファイルのコメントに書いてあるはずです。

やってみる。

登録用のコントローラを追加する。

あなたのメインのcontrollers.pyで、新しい登録用のコントローラを参照するようにして下さい。もしあなたがあなたのメインのコントローラのルートから登録用のコントローラを公開したいなら、このようになるでしょう:

from myproject import register_controllers

class Root(controller.RootController):
    registration = register_controllers.UserRegistration()
    # あなたの残りのコントローラのコード

あなたがidentityが生成したUserクラスとGroupクラスを使っていたら、これで終わりです。しかし、もしあなたがこれらのクラスを修正していたら、もう少しやることがあります。

registrationをあなたのモデルにあわせる。

もしあなたのUserクラスがもともとのUserクラスと異なっていたら、registrationの以下の箇所を修正して下さい:

  • registration_modelの、RegistrationPendingUserクラスを適切に設定する(これはすでに上の「モデルを設定する。」で終わっているはずです)。
  • register_widgetsに、新しいユーザを登録するフォームの項目を定義しているNewUserFieldsクラスがあります。あなたはこれに適当な項目を追加して下さい。
  • register_widgetsに、フォーム検証を行うNewUserSchemaクラスがあります。もしフォームの項目を検証したいなら、このクラスを修正して下さい。
  • register_controllersで、'create'メソッドがUserFieldsフォームから与えられた項目を元に新しいRegistrationPendingUserオブジェクトを生成します。あなたは'create'に与えられるパラメータを、新しいRegistrationPendingUserが生成されるときに使用される項目となるように、修正する必要があります。
  • register_controllersで、'promote_pending_user'が様々な場面で働きますが、もしあなたがRegistrationPendingUserに特別な項目を追加し、それをUserクラスに移したくないならば、あなたは移動させない要素のリストを修正する必要があります。
  • register_widgetsの、ExistingUserFieldsクラスで既存のユーザに修正させることができる要素を公開しています。
  • register_widgetsで、ExistingUserSchemaは既存のユーザのデータの検証を行います。

登録プロセスはまた、あなたがUserを'by_email_address'で検索できることを仮定し、'group'といった名前でグループに関連づけていることを仮定します。もしこれらと異なっていたら、動かすためにはさらにやることがあります。

いちど変更が加えられたら、あなたはプロジェクトをスタートさせ、新たに公開された登録コントローラをみることができます。

テンプレートのカスタマイズ

templatesディレクトリには(register_*で始まる)いくつかのテンプレートがあり、これらはあなたのサイトの外見に合うように変更できます。

もしそうしたいのであれば、ログインフォームにパスワードを忘れたときのページへのリンクを追加することもできます。loginコントローラが'templates.login'テンプレートを使う代わりに、'templates.register_login'を使って下さい。あなたはregister_login.kidで'lost_password'コントローラを指すようにURLを修正する必要があります。

中心となるコントローラ

あなたのアプリケーション内で使いたいと思うようなコントローラが、いくつかあります。

  • new - 新しいユーザ登録のスタート地点です。
  • lost_password - 忘れたパスワードを復旧します。
  • edit_user - ユーザに、メールアドレスとパスワードを編集させることができます。
  • validate_new_user - あなたがこれを使いたくなくても、フレームワークから送信される電子メールはこのコントローラを指定し、指定したアドレスでユーザが電子メールを受信したか検証します。
  • validate_email_change - そして、これを直接使わないで下さい。このコントローラは電子メールのアドレスを変更したいと思う登録済みユーザへのメールに記載されています。

ソフトウェアの詳細

サポート

registration Googleグループを使って、質問して下さい。アイデアやコメントもこのリストへどうぞ。

開発を追いかけたいか、不具合報告を閲覧したいなら、Project page / subversion repositoryを参照して下さい。

ダウンロード

ダウンロード: registration-0.3-py2.4.egg 2007年2月13日

Changelog

ライセンス

MITライセンスです。

Copyright (c) 2007 Patrick Lewis

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.