があるときに私が持っている:unrestrictedTraverseが間違ったオブジェクトを取得隣接する二つの同一のID
try:
path1 = /Plone/s/a
path2 = 2011/07/07
#The path to traverse becomes /Plone/s/a/2011/07/07/. From
#Plone to last 07, they are normal Folders.
ob = self.portal.unrestrictedTraverse('%s/%s/' % (path1, path2))
print ob
except AtributeError:
#do something
pass
/Ploneの/ S/A/2011/07/07/は存在しません。 /Plone/s/a/2011/07/が存在します。上のコードはAtributeErrorを与えるはずですが、代わりに/Plone/s/a/2011/07/オブジェクトを取得します。それは印刷する:
<ATFolder at /Plone/s/a/2011/07 used for /Plone/s/a/2011/07>
私はトラバースと "似た"結果を得たくない、これは間違っている。具体的には/Plone/s/a/2011/07/07/が必要です。それが存在しない場合、私は例外をキャッチしたい。私は、オブジェクトが/Ploneの/ sで正確にありますかどうかを確認するために使用できる他のアプローチ
/十分のような/ 2011/07/07/、およびない近い/Ploneの/ S/A/2011/07/?
きっとあなたが取得しているあなたのパラメーター: '年= aq_base(GETATTR( '2011'、A))' は次のようになります。 '年= aq_base(GETATTR( '2011'))' さもなければ、よく置いてください。 OPはそれを好きではないかもしれませんが、買収はZopeの不可欠な部分です、そして、私たちがそれをやめたら、たくさんのものが壊れるでしょう! – Auspex
@marcosfromero:私はそれが買収であることを知っていた、私はこの問題を解決する方法を知りたいと思った。したがって、unrestrictedTraverseを使用する代わりに、aq_baseとgetattrを使用できます。あなたが投稿したスニペットは、本当に自明です。それは良い解決策に見えます。そして、私は買収が不可欠であることを知っています@Auspex、そして訂正のおかげで。 –
日には取得コンテキストがなく、絶対URL生成やその他のサービスは失敗します... –