def get_user_filters(user):
"""
Returns `django.db.models.query.QuerySet` filters based on allowed category for given user
"""
where = [Q()]
user_specific_where = []
abuse_permissions = AbusePermission.objects.filter(user=user.id)
for perm in abuse_permissions:
if perm.profile.name == 'Expert':
user_specific_where.append(Q(category=perm.category))
elif perm.profile.name == 'Advanced':
user_specific_where.append(Q(category=perm.category, confidential=False))
elif perm.profile.name == 'Beginner':
user_specific_where.append(Q(
priority__in=USER_FILTERS_BEGINNER_PRIORITY,
category=perm.category,
confidential=False,
escalated=False,
moderation=False
))
if len(user_specific_where):
user_specific_where = reduce(operator.or_, user_specific_where)
where.append(user_specific_where)
else:
# If no category allowed
where.append(Q(category=None))
return where
评论列表
文章目录