現在位置: ホーム ブログ Pythonスクリプトを使って便利な機能を実装
ブログ

Pythonスクリプトを使って便利な機能を実装

田原悠西さんからZope/Ploneのアドベントカレンダーのバトンがやってきました。

ネタをいろいろと考えてみましたが、普段便利に良く使ってるが、書くことが少ないだろうと思う、ZMIから簡単に実行できるScript(Python)ネタをいくつか書こうと思います。

Script(Python)は、制限が厳しく、指定されたものしかインポートできないなどありますが、ある程度の操作ならここでできます。

下記のスクリプトを記述し、上部の「test」ボタンをクリックすると実行されます。引数を設定した場合は、引数入力画面が表示されます。
なお、結果がない場合は、画面が遷移しません。

いずれのScript(Python)もZMIからportal_skins/custom/ 以下に設置しています。



コンテンツの数を数える(すべての)

catalog = context.portal_catalog
items = catalog()
print len(items)
return printed

コンテンツの数を数える(画像のみ)

catalog = context.portal_catalog
items = catalog(portal_type='Image')
print len(items)
return printed

ページの本文内に、ある文言(引数で指定)が入っている物URLを列挙

Parameter List : s

catalog = context.portal_catalog
items = catalog(portal_type='Document')
for item in items:
obj = item.getObject()
text = obj.getText()
if s in text:
print item.getURL()
# print obj.absolute_url() でもOK
return printed

ワークフロー遷移(非公開のコンテンツを公開する)

catalog = context.portal_catalog
wftool = context.portal_workflow
items = catalog()
for item in items:
obj = item.getObject()
review_state = wftool.getInfoFor(obj, 'review_state', '')
if review_state == 'private':
wftool.doActionFor(obj, 'publish')
print 'ID: ', item.getId, ' is Published'
return printed

オブジェクトのリインデックス(newsパスの以下)

catalog = context.portal_catalog
items = catalog(path='/Plone/news')
for item in items:
obj = item.getObject()
obj.reindexObject()
print item.getId
return printed

登録ユーザの列挙

mtool = context.portal_membership
members = mtool.listMembers()
print 'Toltal : ', len(members)
for member in members:
print member.id, member.getProperty('fullname'), member.getProperty('email')
return printed

インストール可能な物と既にされているアドオンプロダクトの列挙

qi = context.portal_quickinstaller
for p in qi.listInstallableProducts():
print 'install able: ', p['id']
for p in qi.listInstalledProducts():
print 'installed: ',p['id']
return printed



次のバトンは、安田さんにお願いしようと思います。

comments powered by Disqus