Python/Zope/Plone
Up one levelWorld Plone Day 2010/Tokyo
オープンソースCMS「Plone」コミュニティのワールドワイドイベントであるWorld Plone Day を今年も開催いたします。
今年はメジャーバージョンアップとなる「Plone4」の紹介の他に多数の事例の紹介も予定しております。
参加は無料ですので、CMSに興味ある型はぜひご参加下さい。
では、公式リリース情報をコピペ。
エンタープライズCMS「Plone」の最新版、Plone4の紹介をはじめ、役に立つプロダクトの紹介やPloneの導入事例などPloneの「今」と「これから」を知るチャンスです。参加無料ですのでぜひお気軽に参加ください。
■開催概要
日時:4月28日(水)18:45 - 21:00
受付:18:20
開始:18:45
会場:JETRO 5A会議室(5F)
(地図:赤坂アークヒルズ)
http://www.jetro.go.jp/jetro/profile/map.html
■セミナー概要
・18:45 開会
・18:50 海外クリップ:世界のWPD~台湾とつないで
・19:00 スペシャル講演:Plone4について
日本側での貢献で日本語環境が大幅に改善した点等を紹介
・19:25 海外クリップ:世界のWPD~ニュージーランドとつないで
・19:35 アドオンプロダクトの紹介(Plone3対応版)
・20:00 事例紹介:www. 1twoone2.com Ploneによるメンズ・ファッション&カルチャー・デジタルマガジンを創刊
・20:15 事例紹介:E-ディフェンスアーカイブ(ASEBI)の構築
・20:35 事例紹介:天文データアーカイブALMA Science Archive (ASA)
PortalにPloneを採用
・20:45 書籍紹介・プレゼントコーナーなど
・21:00 終了・解散
http://plone.jp/events/100329-world-plone-day-2010
■参加申し込み方法
下記事前登録フォームよりお申し込みください。
http://plone.jp/form/wpd2010-registration
--
HPサーバ保守始めました。データセンタ好評運用中。
#define _A_T_M_A_R_K_ @
jack_A_T_M_A_R_K_synergies.jp -- "Masaya jack Kato"
Villa Royal 204, 7-2 Sanban-cho Chiyoda-ku Tokyo, Japan 102-0075
Cell: 090-8777-2811 Tel: 03-5215-2550 Fax: 050-3588-8458
Synergies.jp Co. Ltd. -- http://www.synergies.jp/
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2010-04-08-10-25/tbping
Plone4以前でもメールアドレスをIDにしたい
Plone.jpのTips アドベントカレンダー企画が、本多さんよりまわってきました。
ほんのコネタですがこれでいいかしらん?
Plone4では、メールアドレスをIDにできるようになるそうですが、それ以前のPloneでもメアド=IDとしたいことは多いはずです。
しかし、標準ではごらんの通り、メールアドレスをIDにしようとするとエラーとなってしまいます。
これは、Ploneの内部、ZMI的にはPortal_registerationに当たるところで、'@'を含むIDを拒否するような設定になっているためです。
しかしながら、mixiを例に出すまでもなく、メールアドレスをIDとしておくメリットは結構あります。実在確認も容易ですし、ID忘れにも対応しやすいです。
もっとも、Ploneでは実在確認にメールを使うのはパスワードを管理者側で付与しない設定にしておけばいいだけですが…
プロダクトで、メールアドレスをIDにできるようにするものもあるようですが、カンタンなコピペでできますのでそれを紹介します。
ある意味あたりまえですが、そのPloneサイトのManager権限が必要です。
まずは、ZMIに行きます。
そして、portal_skins/custom へ移動します。
右上のドロップダウンからScript(Python)を選択し、Add を押します。
Python スクリプトの名前は、まぁ、なんでもいいです。
今回は 'enableMailID' 、と、結構ベタな名前にしてみます。
この名前は、他のものとカブらなければなんでもかまいません。
そして、以下の内容を入力します。
request = context.REQUEST
pr = context.portal_registration
pr.manage_editIDPattern('^[A-Za-z0-9][A-Za-z0-9_@.-]*$')
return 'ok'
そして、'test' タブをクリックすると、'ok' と表示されます。
書くだけでなく、一度実行する必要があります。
一度実行すればZopeを再起動するまで有効です。
つまり、再起動するたびに呼ばなければいけないのですが、それが面倒であれば、portal_skins/plone_prefs以下の適当な(たぶん、prefs_user_overviewがいいかな)をcustomizeしてこれを呼ぶようにするとか…どんどん邪道が激しくなりますけど(笑)
それでは次は、理不尽にデミオを乗りまわしてしまってその節はごめんなさい、嘉平さん、おねがいします。
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-12-11-17-40/tbping
セミナー&パーティー by Plone User's Group Japan・Plone研究会
12月9日(水)にPlone研究会とPlone User's Group Japan主催のセミナー&パーティーをJR目黒駅近くのエスニック・レストランで開催いたします。
エスニック料理をつまみに、くつろぎながらのセミナー形式です。2010年初旬にリリース予定のPlone4のプレビューをご覧いただくほか、海外でPloneベースで開発されたグループウェアの紹介など、 Ploneのこれからを感じていただきます。どうぞお気軽にご参加ください
詳しいひとから、Ploneって何?という人まで、気軽に参加できるパーティです。
エスニックバイキング+ワンドリンク付きで会費は3000円、追加ドリンクはcash on delivery(だとおもう)で各自負担、普通のものは500円くらいです。
みんな来てね(はーと(きもちわるいからやめよう))。
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-12-01-09-00/tbping
いろいろな「最近の変更」を最適化する
最近の変更で出したいもの、出したくないものがいろいろあります。
例えば画像をuploadしてもそれをいちいち出されてもこまる、とかそういうことです。
ファイルとドキュメントとブログエントリとリンクだけ出したいといっても、front-page は出したくないしrobot.txt もときどき変更するし、それを見てるのは、portlet-recent やらrecently_modifiedやらいろいろあるし、いわゆるフィード(RSS)もそのままだと画像やらなにやら全部でちゃうし・・・
ということで、getRecents というScript(Python) を書いてあちこちから参照させることにしました。
あちこちで、portal_catalog.searchResults を違うように呼んでたのでこのほうがよいだろうということで。
parametersは withfolder=0 が入っています。特定のフォルダのみ見せたり見せなかったりを制御したいという感じです。
recents = context.portal_catalog.searchResults(
portal_type=['File', 'Document','COREBlogEntry','Link'],
sort_on='modified',sort_order='reverse')[:30]
ret = []
for x in recents:
if '/robots.txt' in x.getPath(): continue
elif '/front-page' in x.getPath(): continue
elif (not withfolder) and ('/specialfolder/' in x.getPath()): continue
ret.append(x)
return ret
とりあえず想定通りになったので個人的には満足。もっといいやり方はあるんでしょうけど
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-07-23-12-35/tbping
PloneにムリヤリLightBoxを入れる
忘れないうちにメモ
LightBoxをPloneに強引にいれるには
・全部のファイルをportal_skins/customに押しこむ
・portal_javascript、portal_cssに設定、
但し
- prototype.js
- scriptaculous.js
は、マージを許可しない。でもそれ以外の js, css はマージ許可にしないとうまく動かない?
あとで、previewbubblesとかgetRecentもかくか・・・
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-7-19-2-12/tbping
Zope (Plone) でPASV(Passive)ポートを制限する方法
ただ、欠点があって、Passive mode で port の min, max を設定できないのが不便です。
まぁ、Firewall との兼合いで、どうせ数人しかFTPでアクセスしないから、20 portsくらいに 絞りたい、とかそういう話です。
で、結論からいうと、マトモな方法ではできません。ソースいじるしかないです。
なぜなら、そういう設定項目がないから(笑)
$ZOPE_HOME/lib/python/ZServer/medusa/ftp_server.py
をいじります。bind の port に無条件で 0 が渡されているので、範囲を指定するように 変更します。
jack in medusa % diff -c ftp_server.py.org ftp_server.pyお勧めするような方法じゃないですが、とりあえず、動きます。
*** ftp_server.py.org Fri Jul 17 20:05:21 2009
--- ftp_server.py Fri Jul 17 20:09:36 2009
***************
*** 817,825 ****
self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
# bind to an address on the interface that the
# control connection is coming from.
self.bind ((
self.control_channel.getsockname()[0],
! 0
))
self.addr = self.getsockname()
self.listen (1)
--- 817,829 ----
self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
# bind to an address on the interface that the
# control connection is coming from.
+ #### patch to bind()'s port line
+ from random import randint
+ port = 0 # original
+ port = randint(20030, 20050) # change here for your firewall.
self.bind ((
self.control_channel.getsockname()[0],
! port # changed 0 to randint
))
self.addr = self.getsockname()
self.listen (1)
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-07-17-20-15/tbping
コンテンツマネージメントシステム(CMS)
この「にっき」で使っているのは、Zope + Plone というコンテントマネージメントシステムです。
何が便利か
明日とか、ネタないな、ってときに先に仕込んでおくと、設定した時間にエントリが追加されます。
mixiから見ても、その時間をすぎてから新エントリが追加されたように見えます。
間違った便利さの発現という気はします
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/30b330f330c630f330c430de30cd30fc30e130f330c830b730b930c630e0-cms/tbping
オープンソースカンファレンス
- Category(s)
- Python/Zope/Plone
- にっき
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/moblog2009-02-21-12-00/tbping
Plone用ブログエントリポートレット
from Products.CMFCore.utils import getToolByName urltool = getToolByName(context, "portal_url") portal = urltool.getPortalObject() nikki = getattr(portal,"Nikki") return nikki名前はgetnikkiとしました。
次にポートレットです。 COREBlog2 の portlet_recent_entry を customize してrename やコピーをして portlet_blog とします
<div metal:define-macro="portlet" tal:define="nikki python:here.getnikki(); results python:nikki.getRecentEntry(type=2,limit=nikki.getPortlet_item_count())" tal:condition="results">一番最初のdiv のところで getnikkiを呼びだして、coreblog オブジェクトを参照するようにresults を書きかえます。
あとは、Plone の property でポートレットを追加します。
これでOKでした
- Category(s)
- Python/Zope/Plone
- The URL to Trackback this entry is:
- http://ns.jk.to/Nikki/plone752830ed30a830f330c830ea30fc30c830ec30c330c8/tbping