def for_user(self, user=None):
        if not user:
            user = AnonymousUser()
        qs = self.get_query_set()
        qset = Q()
        if user.is_active:
            qset = qset & \
                Q(public=True) | \
                Q(public=False, membership__member=user) | \
                Q(public=False, team__group__user=user)
        else:
            qset = qset & Q(public=True)
        qs = qs.filter(qset)\
            .select_related('membership__member')\
            .order_by('name')\
            .distinct()

        return qs
Returns queryset of :model:`Project` instances available for given
dataset/ETHPy150Open lukaszb/django-projector/projector/managers.py/ProjectManager.for_user