6

Plone Form Gen を使用して Event コンテンツ タイプを作成しようとしています。これを行うために、このチュートリアルを使用しています。

メニューを使用してイベント コンテンツ タイプを作成すると、イベントの開始日と終了Add New...日を入力する 2 つのフィールドが与えられます。フォームにこれらのフィールドから情報を取得して、イベント コンテンツ タイプに適用したいと考えています。を使用して作成します。

私が理解している私の問題は、以下の例で説明されています。

カスタム スクリプト アダプタ スクリプトには、次のものが含まれます。

obj.setDescription(form['replyto'])

以下から、イベント コンテンツ タイプの説明のコンテンツを取得していることがわかります。

<input id="replyto" class="" type="text" size="30" name="replyto" />

PFGフォームに追加されたときの日付/時刻フィールドは、上記のような1つだけではなく、複数の入力で構成されています。これは、これに対する単純なコマンド<select>がないことを意味すると思います...選択を参照する方法はありませんがobj.setEndDate()箱 私はちょっと立ち往生しています。

Plone Form Genを使用して、イベントコンテンツタイプを作成し、開始日と終了日を指定できるかどうか知っている人はいますか?

編集

このリンクを使用して元の問題を回避しましたが、さらに問題が発生しました

上記のリンクを使用してスクリプトを次のように調整しました。

target = context.viewjobs

form = request.form

from DateTime import DateTime
uid = str(DateTime().millis())

loc = form['location-of-event']

target.invokeFactory("Event", id=uid, title=form['topic'], event_url=loc)

obj = target[uid]

obj.setFormat('text/plain')
obj.setText(form['comments'])
obj.setDescription(form['replyto'])

obj.reindexObject()

(オプションで運がなかったので、テストするためだけに event_url を使用しましたevent_start)。

イベントは問題なく作成されますが、イベントを表示すると次のようになります。

 Module zope.tales.expressions, line 217, in __call__
Module Products.PageTemplates.Expressions, line 147, in _eval
Module zope.tales.expressions, line 124, in _eval
Module Products.PageTemplates.Expressions, line 74, in boboAwareZopeTraverse
Module OFS.Traversable, line 317, in restrictedTraverse
Module OFS.Traversable, line 285, in unrestrictedTraverse
__traceback_info__: ([], 'location')

AttributeError: 場所

スクリプトのどこにも場所を参照していません。場所を参照すると、同じエラーが発生します。

どんな考えでもいただければ幸いです

4

2 に答える 2

1

テキスト フィールドを使用し、ユーザーに 2013-12-12 の形式で日付を入力するように求めることで、これを解決することができましobj.setStartDate(form['name-of-field'])obj.setEndDate(form['name-of-field'])

Location トレースバックを回避するために、obj.setLocation()上記のスクリプトに示されている invoke メソッドから location 行を使用して削除しました。

興味のある人のためのスクリプト:

target = context.viewjobs

form = request.form

from DateTime import DateTime
uid = str(DateTime().millis())

target.invokeFactory("Event", id=uid, title=form['job-title'])

obj = target[uid]

obj.setFormat('text/plain')
obj.setText(form['comments'])
obj.setDescription(form['description-1'])
obj.setLocation(form['location-of-event'])
obj.setStartDate(form['start-date'])
obj.setEndDate(form['end-date-due-by'])

obj.reindexObject()
于 2013-04-03T14:55:47.247 に答える