プリントの to_publish 属性が True に設定されている場合は、プリントの所有者のみ、または誰でもアクセスできるようにしたい PrintDetailView があります。
これを行うためにpermission_required()
、Print モデルから callable を受け入れるメソッド デコレーターを使用しようとしています。
class PrintDetailView(DetailView):
template_name = 'prints/detail.html'
queryset = Print.objects.all()
@method_decorator(permission_required('prints.user_is_owner_or_public'))
def dispatch(self, request, *args, **kwargs):
return super(PrintDetailView, self).dispatch(request, *args, **kwargs)
Print モデルのuser_is_owner_or_public()
メソッドは次のとおりです。
def user_is_owner_or_public(self, user):
"""Checks whether the print is a public print, or
whether the current user is the owner
"""
if self.user is user or self.to_publish:
return True
ここで、to_publish 属性が True に設定されている印刷詳細ページでこれをテストすると、まだログイン画面が表示されるので、permission_required() 関数が呼び出されていることがわかります。ただし、明らかに user_is_owner_or_public() メソッドを呼び出していません。
誰かが私がこれをどのように機能させるかを理解してもらえますか?
ティア、アンディ