2009/03/02(月)zope

# apt-get install python-dev
$ wget http://peak.telecommunity.com/dist/ez_setup.py
# python2.4 ez_setup.py
$ wget http://download.zope.org/distribution/ZConfig-2.4a2.tar.gz
$ easy_install2.4 --install-dir='ZOPE/lib/python/' ZConfig-2.4a2.tar.gz
$ wget http://download.zope.org/distribution/zdaemon-1.4a2.tar.gz
$ easy_install2.4 --install-dir='ZOPE/lib/python/' zdaemon-1.4a2.tar.gz
$ wget http://pypi.python.org/packages/source/p/plone.app.blob/plone.app.blob-1.0b2.tar.gz#md5=3a438c29ed34f819aea7983340eddd2c
$ easy_install2.4 --install-dir='ZOPE/lib/python/' plone.app.blob-1.0b2.tar.gz

2009/02/23(月)cookie

set

self.context.REQUEST.RESPONSE.setCookie('name', 'value', path='/', expires='')

get

self.context.REQUEST.has_key('name')でチェック
trueならばデータがあるので
self.context.REQUEST['name']で取り出し

消し方

よく分からないけど、
self.context.REQUEST.RESPONSE.setCookie('name', '', path='/', expires='Thu, 1-Jan-2000 00:00:00 GMT')
とかでいいのかな

2009/02/21(土)自作プロダクト

ログビューワー

プロダクトとして登録(インストール)できるようになった。
でも、削除(アンインストール)はできない。
...イイカナ?

自作プロダクト

上のLog Viewerが自作のプロダクト。
下にあるZip File Transportのソースを元に改変したものになってるので、一部ゴミが残ってる。一応余計なインターフェースは消せているはず < 未確認

メモ

どこかに依頼したい内容

  • メッセージの作成(日本語/英語)
  • アイコンの作成 (16x16 GIF)

i18n

ploneに登録が必要?

2009/02/18(水)ZipFileTransport

Export

plone/Products/ZipFileTransport/browser/zipexportのaction_exportがエクスポートの実体
ここで、ログを取る

84: for x in paths:
ループでファイルリストを生成
-> ファイルサイズのチェックを追加
94: if self.context.portal_...
ユーザ認証
-> ファイルサイズのチェックも同時に行う?

画面

plone/Products/ZipFileTransport/browser/export_widget.pt
plone/Products/ZipFileTransport/browser/zipexport.py

2009/02/18(水)ploneへのパッチ

アクションボタンをすべてのページで表示する

アクションボタンの表示

plone/lib/python/plone/app/content/browser/foldercontents.py
201: if self.context.cb_dataValid():

201: if self.context.cb_dataValid() or 1:

importだけ表示 2009/02/27

ZipFileTransportに含まれるImportボタンです

Importボタンの表示

plone/lib/python/plone/app/content/browser/foldercontents.py
200:    if not len(self.items):
201:        if self.context.cb_dataValid():
202:            for button in button_actions:
203:                if button['id'] == 'paste':
204:                     return [self.setbuttonclass(button)]
205:        else:
206:            return []
↓
200:    if not len(self.items):
201:        if self.context.cb_dataValid():
202:            for button in button_actions:
203:                if button['id'] == 'paste' or button['id'] == 'import':
204:                    buttons.append(self.setbuttonclass(button))
205:            return buttons
206:        else:
207:            for button in button_actions:
208:                if button['id'] == 'import':
209:                    return [self.setbuttonclass(button)]
210:            return []

2009/02/18(水)ploneのキャッシュ

pyスクリプトをキャッシュしてる
pyc消してもダメ
メモリ上にキャッシュしてるか、他にファイルをおいてる

キャッシュするプロダクトの時間を短くすればいいのかもしれない*1

けど、面倒なのでファイルを書き換えた場合は(py書き換えた場合は)pyc消して、zope再起動したほうが早いし確実

*1 : /manage/のHTTPCCacheとかRAMCacheとかREsourceRegistryCacheあたり?

追記

ptはキャッシュしてないのでサーバ再起動は要らない...たぶん

2009/02/16(月)フォルダーコンテンツ

フォルダにあるファイル一覧を表示するビュー

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pt

カスタマイズ

/plone/manage_main にアクセス
portal_view_customizations
zope.interface.Interface > folder_contents
<div tal:replace="structure view/contents_table">

contents_tableの実装

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの27~?

テーブル本体は
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.pt

このフォルダには~

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.pt
18-23行目

コピー、カット、名前を変更など

plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの193~?ちがうっぽい
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/table.ptの183-
ここで、呼び出している使っているview/buttonsがどこか何か分からない
table.ptを開く前に定義済みなのかな?

あってた
plone(instanceのフォルダ)/lib/python/plone/app/content/browser/foldercontents.pyの201行目付近 self.context.cb_dataValid()でチェックしてるので、ここを常に真にしてしまえばよさげ*1

*1 : cb_dataValid() or 1