Personal tools
Navigation
About this blog
なごすいぶろぐ。「すべてはなごすいのために」。
Categories
COREBlog2 (29)
Zope (59)
Linux (26)
Misc (47)
Nagosui (11)
ReadingCOREBlog (7)
Plone (74)
Python (17)
Turbogears (18)
COREBlog1 (30)
moblog (5)
Django (12)
Recent entries
ALAにJeffさんの記事が。 nyusuke 2007-06-14
WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007-05-29
東海Python Workshop 01終了 nyusuke 2007-05-27
東海Python Workshop 01が開催されます nyusuke 2007-05-13
管理画面からみるPlone3.0ベータ(後半) nyusuke 2007-05-03
Recent comments
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007-06-01
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007-05-31
Re:東海Python Workshop 01終了 nyusuke 2007-05-31
Re:東海Python Workshop 01終了 kfuruhata 2007-05-30
Re:管理画面からみるPlone3.0ベータ(前半) nyusuke 2007-05-03
Recent trackbacks
Plone Captcha 1.0.2 と Plone Captchas 1.0 takalog 2007-01-13
plone 2.5.2-rc1 にアップグレード takalog 2007-01-05
Vine Linux 4.0 にアップグレード(その1) takalog 2006-11-26
オハイオ州日本語サイトを手かけ始めた ロバートのブログ 2006-08-14
TurboGears関連記事 Twisted Mind in TurboGears 2006-08-06
Recent Changes
All recent changes…
Amazon Items






Adsense
Document Actions

Plone CaptchaをCOREBlog2のコメントに利用してみる

いっつも「これでいいのか?」って思いながら。

by nyusuke posted at 2006-04-10 23:29 last modified 2006-08-06 17:38

まぁ、あれです。ソースとか読めなくて禿しく辛いんですが、私の場合は何でもかんでも「試す」のが好きなわけで、「使う」のが好きなのかどうかは二の次なのです。

で、このエントリなんですが、一度書いた後に試したらできてなくて、非公開にしてからもう一度調べ直すという、とてもかっこわるいことをしています。一度調べ始めるとキリがつくまで見て回るのがたたって結局今日も3時就寝になりそうな悪寒。最近4時間半以上寝てないし、タバコも吸いまくりなので、たぶん私は結構早い段階で肺ガンで死ぬと思います。

そんな私のことはどうでもいいのですが、とりあえず調べた事・やった事を時系列で並べていってみることにします。

  1. まずは http://captchas.netにいって、アカウントを作ります。そうするとメール経由でname(id)とsecret keyがもらえます。
  2. Plone Captchaをダウンロードして通常のZope Productと同じようにインストール…
  3. と、待ってください。その前に「Zope-instance/Products/PloneCaptcha/config.py」を開いて、 http://captchas.netからもらったnameとsecret keyを設定しておきます。
  4. Zopeのリスタート→Ploneの「プロダクトの追加と削除」からインストール、と定番の道筋をたどります。
  5. 「Zope-instance/Products/PloneCaptcha/README.txt」を読むと、まずはページテンプレートにCaptchaマクロをぶち込め、と書いてあるので「portal_skins/COREBlog2/cbcomment_form」の適所に(私はクッキーボタンの直前に書きました)以下のコードをぶち込んでやります。
    <div metal:use-macro="here/captcha/macros/edit" />
    これだけじゃ寂しいという人はcaptchaのテストコードから以下をぱくってきます。
          <div class="field"
               tal:define="error errors/captcha| nothing;"
               tal:attributes="class python:test(error, 'field error', 'field')">

              <label i18n:translate="label_captcha_help">Verification Code</label>
              <div class="formHelp" i18n:translate="help_plone_captcha">
                 This helps us prevent automated spamming.
              </div>

              <div tal:content="error">Validation error output</div>
              <div metal:use-macro="here/captcha/macros/edit" />
          </div>
  6. で、README.txtは、次にフォームのメタデータファイルにvalidatorとしてvalidate_captchaを指定しろと言っておられる。はて…。さて…。いかがしよう…。validaterがどういうものか抽象的な概念はうっすらと持っている。しかし、フォームのメタデータとかいわれてもさっぱりである。こういうときはボケーっとZMIを眺めてみるのがよい、というのが私の経験則としてある。よって、ボケーっとZMIを眺めていると…。あった。ミラクルである。奇跡である。自分でも信じられない。「portal_form_controller」の中に「validation」とかいう、まさしくビンゴくさい方が鎮座していらっしゃっいました。入力の仕方は何となく雰囲気で「Template」に「cbcomment_form」、「Validators」に「validate_captcha」をしてやりました。…と、ここで「できた」と勘違いしてしまったのが寝不足の始まりです。

ここでの私のミスは、portal_form_controllerというのは確かにvalidatorを設定してくれるのですが、「フツーの」Page Templateじゃダメだという点でした。設定の対象となるのは「Controller」 Page Templateとか「Controller」 Python Scriptとかなのであって、こいつらは「フツーの」Page Templateとはちょっと違った人たちなのだそうです。このことはportal_form_controllerのdocumentに書いてありました(ということに気づくのが遅すぎるという罠)。

で、ここからが無知な私の無駄なあがきの連続で、cbcomment_formを何とかしようと必死になっていたのが運の尽きでした。結果から言うといじるのは「cbentry_view」と「cbcomment_preview」なのでした。ここまでたどりつくために何度コメントをテストしたことか…。この二つに、validatorとしてvalidate_captchaを設定してやるとできるようです(というかできると信じたい)。

さてそれじゃあどうやって「cbentry_view」と「cbcomment_preview」にvalidate_captchaを設定してやるのかということに考えが向かうわけですが、一般に、Controller Page Templateにvalidatorを設定するにはいくつかのアプローチがあるようです。

ファイルシステム上のテンプレート.メタデータをいじくる
ファイルシステム上のファイルをいじることができる場合は、ファイルを直接編集する事でvalidatorを設定できる
060411-1←こんなふうにcpt(controller page templete)ファイルに「.metadata」をひっつけたやつで設定する

060411-2
 「validators = 」のあとにvalidatorを指定する。複数ある場合はカンマ区切りで羅列する
portal_form_controllerをいじる
portal_form_controllerのvalidatorタブに行くと設定画面がある(関連アイテム参照)。
Controller Page Templateオブジェクトをいじる
 「cbentry_view」や「cbcomment_preview」はController Page Templateオブジェクトなわけで(ファイルシステム上のファイルを見ると拡張子が.cptとなっている)、これらのオブジェクトをZMI上で見ると、フツーのPage Templateと違って、「Validation」やら「Actions」というタブがあるのでここで設定してやる

060411-4

設定は直感的にわかるかと思います。今回はvalidatorを設定しただけでしたが、validatorが返す値(基本的にsuccessとfailure?)によってその後の挙動を設定したり(Actions)、そのほかにもオブジェクトの種類やボタンの名前やらで制御したりもできるようです。

今回はお手軽に、 「cbentry_view」と「cbcomment_preview」の各オブジェクトのValidationタブで設定しました。ということで、お決まりなんですが「これでいいんだろうか…」。

でもどうせウチのサイトにコメントなんてほとんど来ないんだから、コメントスパム様いらっしゃいまし~くらいのスタンスで行った方が賑わいがあっていいんじゃないかと、そんなふうにも思っちゃう今日この頃。

この時間まで私を起こしていてくれた、くるりとCoccoの音楽に感謝しつつ眠りにつく事にしよう。

追記:このエントリは自分の頭の中で考えた事を時系列で書いているのでわかりにくいかもしれません。COREblog-enのMLにて手順をまとめる機会があったのでとりあえずリンクを貼っておきます。つたない英語ですが、手順そのものはエントリを参照するよりもわかりやすいと思います。

portal_form_controller

The URL to Trackback this entry is:
http://nagosui.org:8080/Nagosui/COREBlog2/plone-captcha-and-coreblog2/tbping

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

Posted by Anonymous User at 2006-08-06 17:38

ご苦労様です。ではテスター代わりにコメント。

成功するかな?

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

Posted by takanori at 2006-08-06 17:38

間違った Verification Code を入れてみよう。
はれられるかな?

ちゃんとはねられました!!

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

Posted by nyusuke at 2006-08-06 17:38

>どなたか

テストありがとうございます。反応があるのはとてもうれしいです。

>たかのりさん

演奏会がんばってください。
あんどラディッシュによるついでに私の演奏会聴きに来ちゃったりしてください(・∀・)

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

Posted by しみずかわ at 2006-08-06 17:38

おお~。captcha画像はcaptcha.netに取りに行ってるんですね。

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

Posted by nyusuke at 2006-08-06 17:38

>清水川さん

いいですよね。楽で。
captcha関連の作業はcaptcha.netのアカウント作成とconfig.pyの編集だけですから。

コメント入力に Captcha

Posted by takalog at 2006-08-06 17:38
2日ほど、恐ろしい量のコメントスパムがこの Blog に来ました。 というわけで、残念ですが Captcha 画像を使っての認証を行うようにしました。 使用したプロダクトは Plone Captcha で、手順は Plone C...

コメントスパム対策 - 認証コード入力欄を追加

Posted by s@s at 2006-08-06 17:38
  Plone CaptchaをCOREBlog2のコメントに利用してみる — nagosui.org このところ、あまりにも大量のコメントスパムが届くので、上記サイトの内容をそのまま使わせていただいて、コメント記入欄に、認...

コメント スパム 対策

Posted by GwBS at 2006-08-06 17:38
最近、コメントとトラックバックのスパムが激しい。消して回るのも疲れてきたので、先人の英知をありがたく拝借させていただきました。Plone CaptchaをCOREBlog2のコメントに利用してみるhttp://postaria.com/...
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
Enter the word