from django.db.models import Q from .models import Project def can_create(user): return user.is_staff or user.has_perm("projects.add_project") def can_manage(user, project): return user.is_staff or user.is_superuser or project.manager_id == user.pk def visible_projects(user): qs = Project.objects.all() if user.is_staff or user.is_superuser: return qs return qs.filter(Q(manager=user) | Q(memberships__employee=user)).distinct()