kawaz.core.publishments.lookups のソースコード

from django.db.models import Q


[ドキュメント]def published_lookup(user_obj, field_name='pub_state'): """ 指定されたユーザーが閲覧可能な公開オブジェクトをフィルタするための Qオブジェクトを返す ユーザーがメンバーであれば、publicおよびprotected指定のオブジェクトを返し それ以外であればpublic指定のオブジェクトを返す Args: user_obj (obj): Userモデルインスタンス(or AnonymousUser) field_name (str): 公開状態を指定しているフィールド名 (デフォルト: ``'pub_state'``) Returns: Qオブジェクトインスタンス """ q = Q(**{field_name: 'public'}) if user_obj and user_obj.is_authenticated() and user_obj.is_member: q |= Q(**{field_name: 'protected'}) return q
[ドキュメント]def draft_lookup(user_obj, author_field_name='author', field_name='pub_state'): """ 指定されたユーザーが編集可能な下書きオブジェクトをフィルタするための Qオブジェクトを返す ユーザーがメンバーであれば、自身が保有する下書き状態のオブジェクトを返し それ以外であれば何も返さない。なおユーザーがsuperuserの場合は存在する あらゆる下書き状態のオブジェクトを返す(superuserはあらゆる権限を持つため 全ての下書き記事の編集権限を持つ) Args: user_obj (obj): Userモデルインスタンス(or AnonymousUser) author_field_name (str): 所有者を指定しているフィールド名 (デフォルト: ``'author'``) field_name (str): 公開状態を指定しているフィールド名 (デフォルト: ``'pub_state'``) Returns: Qオブジェクトインスタンス """ # pk = -1 は db 的に存在しない値なので何も返さないフィルタになる q = Q(pk=-1) if user_obj and user_obj.is_authenticated(): if user_obj.is_superuser: # superuser は全てのオブジェクトに対し編集権限を持つため所有者 # チェックは行わない q = Q(**{field_name: 'draft'}) elif user_obj.is_member: q = Q(**{author_field_name: user_obj, field_name: 'draft'}) return q