パーソナルツール
現在の場所: ホーム plone SNS風味 メンバー検索 insert_member_data のソース
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
ナビゲーション

 
文書操作

insert_member_data のソース

作成者 takanori 最終変更日時 2008年06月04日 12時38分

メンバー情報をまとめて(または指定した ID)挿入(または更新)するための Python Script のソースコードです。

Click here to get the file

サイズ 3.7 kB - File type text/python-source

ファイルのコンテンツ

## Script (Python) "insert_member_data"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=member_id=None
##title=指定されたメンバーの情報を登録(または全メンバー登録)
##

membership = context.portal_membership
memberdata = context.portal_memberdata

ids = ()
if member_id:
    # メンバー ID が指定されている場合
    ids = (member_id,)
else:
    # 指定されていない場合は全メンバーの ID を取得する
    ids = membership.listMemberIds()

for id in ids:

    # メンバーデータを辞書型に保存
    member_data = {}
    member_data['id'] = id

    member = membership.getMemberById(id)

    member_data['fullname'] = member.getProperty('fullname')
    member_data['kananame'] = member.getProperty('kananame')
    member_data['nickname'] = member.getProperty('nickname')
    member_data['email'] = member.getProperty('email')
    member_data['organization'] = member.getProperty('organization')
    member_data['workplace'] = member.getProperty('workplace')
    member_data['telno'] = member.getProperty('telno')
    member_data['telext'] = member.getProperty('telext')
    member_data['sex'] = member.getProperty('sex')
    member_data['blood'] = member.getProperty('blood')
    member_data['location'] = member.getProperty('location')
    member_data['hometown'] = member.getProperty('hometown')
    member_data['day'] = member.getProperty('day')
    member_data['month'] = member.getProperty('month')
    member_data['year'] = member.getProperty('year')
    member_data['hobby'] = member.getProperty('hobby')
    member_data['homepage'] = member.getProperty('homepage')
    member_data['skype'] = member.getProperty('skype')
    member_data['introduction'] = member.getProperty('introduction')

    # 検索用の文字列を生成
    member_data['searchable_text'] = string.join((id,
                                                  member_data['fullname'],
                                                  member_data['kananame'],
                                                  member_data['nickname'],
                                                  member_data['email'],
                                                  member_data['organization'],
                                                  member_data['workplace'],
                                                  member_data['telno'],
                                                  member_data['telext'],
                                                  member_data['location'],
                                                  member_data['hometown'],
                                                  member_data['hobby'],
                                                  member_data['homepage'],
                                                  member_data['skype'],
                                                  member_data['introduction']
                                                  ))

    # 顔写真の URL を取得
    member_data['portrait'] = membership.getPersonalPortrait(member_id = id).absolute_url()
    member_data['photo'] = '1'

    # 顔写真が設定されているかチェック
    if (member_data['portrait'].find('defaultUser.gif') != -1):
        member_data['portrait'] = ""
        member_data['photo'] = '0'

    # データがすでに存在するかチェック
    if len(container.member_exist(id=id)) == 1:
        # メンバー情報更新
        container.member_update(member_data)
    else:
        # メンバー情報登録
        container.member_insert(member_data)

return

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