パーソナルツール
現在の場所: ホーム takalog plone.api: Plone のシンプルでエレガントなAPI
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
« 2017April »
Su Mo Tu We Th Fr Sa
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
このBlogについて
鈴木たかのりです。とりあえず日記っぽく雑多なことを書き込んでいこうと思っています。 zope/plone関係の技術的な内容については http://takanory.net の方にまとめていこうと思います。 コメント・ツッコミはご自由にどうぞ。
twitter facebook linkedin foursquare
カテゴリ
android (16)
av (27)
books (35)
coreblog (49)
ds (22)
emacs (8)
ferret (24)
google (34)
icecream (44)
lego (71)
mac (22)
misc (75)
moblog (277)
movie (33)
pc (44)
plone (339)
puzzle (43)
python (66)
server (67)
snowscoot (9)
software (125)
sports (40)
suidou (30)
winds (47)
 
文書操作

plone.api: Plone のシンプルでエレガントなAPI

作成者 takanori投稿日 2012年12月14日 00時05分 最終変更日時 2012年12月14日 00時05分

これは 2012 Pythonアドベントカレンダー(Webフレームワーク) の13日目のエントリです。

今日は Zen of Zope の紹介をしようかなと思ったんですが、翻訳が結構めんどくさそうな気がするのでやめました。

で、今日のネタは Zope Webアプリケーションサーバー上で動作する CMS Plone の開発の新しい方法 plone.api について紹介したいと思います。

plone.api のドキュメントは Read The Docs にある A Plone API — plone.api 0.1b1 documentation を参照してください。

plone.api とは

plone.api は Plone の上でアプリケーション等を開発をするときに使用する、エレガントでシンプルな API です。

今後の Plone 上での開発は plone.api を使用する方向になりそうな感じのようです。

今までの問題

Plone は CMS(コンテンツ管理システム)なので、プログラムを開発するときにいろいろな情報を色々なところから持ってきます。よく使うものが以下のような情報です。

  • サイトの情報とか設定
  • あるコンテンツの中身や状態(公開、非公開等)
  • ユーザの情報
  • ユーザが属するグループの情報

例えば、このブログのこのページを表示するときには、こういうことが行われているはずです。

  • サイトに設定してある portlet を取得して、左上にコンサート情報を表示
  • エントリの中身を表示
  • 私が見ている時には管理者なので、blog を管理するための情報(編集ボタン等)を表示

で、この色々な情報を取得するのがどこからとってきたらいいのか非常にわかりにくいというのが今までの問題でした。

まとまったドキュメントもあまりないので、他の人のコードを読んだり、試しにコードを書いて「あっ、ここからこれが取れるんだ」みたいなことの繰り返しで大変です。 こういった問題を解決するために plone.api が開発されていると考えられます。

plone.api の特徴

plone.api では上記の4つの情報にアクセスする API をまとめて提供しています。

  • plone.api.portal: Plone ポータルの情報
  • plone.api.content: コンテンツの情報(
  • plone.api.user: ユーザ情報
  • plone.api.group: グループ情報

実際にはこれらのモジュール自体では何もしていなくて、要求に従って対応するもともとある API を呼んでいるだけです。

今後考えられることとしては、足回りの API をがんがん書き換えても、plone.api では同じようにアクセスできれば、開発したモジュールを書き換えずに新しいバージョンなどに対応できるようになるかも知れません。 個人的にはわかりやすさとあわせてこういった部分にも非常に期待しています。

plone.api の使い方

簡単にドキュメントを見ながら plone.api の使い方を見てみます。

plone.api.portal

plone.api.portal を使用して Portal の情報を取得したり設定を行えます。

from plone import api

# サイトのURLを取得
url = api.portal.get().absolute_url()

# メールを送信
api.portal.send_email(
    recipient="bob@example.com",
    sender="noreply@example.com",
    subject="Mail test",
    body="Hi Bob!",
)

# 設定を取得
api.portal.get_registry_record('my.package.someoption')

# 設定を書き込み
api.portal.set_registry_record('my.package.someoption', False)

plone.api.content

コンテンツそのものを作成したりさまざまな操作を行えます。 content モジュールはドキュメントがないので、機能一覧を載せます。

  • create: 新規コンテンツを作成する
  • get: コンテンツのオブヘクトを取得する
  • move: コンテンツの場所(フォルダ)を移動する
  • rename: コンテンツのidを変更する
  • copy: コンテンツをコピーする
  • delete: コンテンツを削除する
  • get_state: 状態を取得する
  • transition: 状態を変更する
  • get_view: ブラウザでの表示用のオブジェクトを取得する
  • get_uuid: オブジェクトの UUID を取得する

plone.api.user

ユーザの作成やユーザ情報が取得できます。 権限の取得や設定なども行えるようです。

from plone import api

# ユーザを作成する
user = api.user.create(email='takanory@example.com',
                       username='takanory')

# ユーザを取得する
user = api.user.get(username='takanory')

# 現在のユーザを取得する
current = api.user.get_current()

# 全ユーザ情報を取得する
users = api.user.get_users()

plone.api については先日の Plone Conf 2012 でもトークがあったようで、以下の資料があります。

ここでドキュメントの翻訳者や Read the Docs 上の Sphinx ドキュメントの多言語化に協力者を募集しているので、ちょっと手伝いたいかなーと思っています。

plone.api には個人的に期待しているのでちょっと追いかけていきたいかなと思います。

カテゴリ
plone plone
トラックバック用URL:
http://takanory.net/takalog/1294/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

Powered by vine linux, python, zope, plone, coreblog