示例#1
0
    def resolve_checkins(self,
                         info,
                         id: str = None,
                         scope: str = None,
                         created_by: str = None):
        user = info.context.user

        qs = CheckIn.objects.all()

        if id:
            qs = qs.filter(id=id)

        if scope == "friends":
            if not user.is_authenticated:
                return qs.none()
            qs = qs.filter(created_by__in=Follower.objects.filter(
                from_user=user.id))
        # there's not yet privacy scope
        elif scope == "public":
            pass
        elif scope:
            raise NotImplementedError

        if created_by:
            qs = qs.filter(created_by=created_by)

        qs = qs.order_by("-created_at")

        qs = optimize_queryset(qs, info, "checkins")

        return qs
示例#2
0
 def resolve_spirit_types(self, info, id: str = None, query: str = None):
     qs = SpiritType.objects.all()
     if id:
         qs = qs.filter(id=id)
     if query:
         qs = qs.filter(name__istartswith=query)
     qs = optimize_queryset(qs, info, "spirit_types")
     return qs.order_by("name")
示例#3
0
 def resolve_flavor_profiles(self, info, id: str = None, query: str = None):
     qs = FlavorProfile.objects.all()
     if id:
         qs = qs.filter(id=id)
     if query:
         qs = qs.filter(name__istartswith=query)
     qs = optimize_queryset(qs, info, "flavor_profiles")
     return qs.order_by("name")
示例#4
0
 def resolve_distilleries(self, info, id: str = None, query: str = None):
     qs = Distillery.objects.all()
     if id:
         qs = qs.filter(id=id)
     if query:
         qs = qs.filter(name__istartswith=query)
     qs = optimize_queryset(qs, info, "distilleries")
     return qs.order_by("name")
示例#5
0
 def resolve_locations(self, info, id: str = None, query: str = None):
     qs = Location.objects.all()
     if id:
         qs = qs.filter(id=id)
     if query:
         qs = qs.filter(name__istartswith=query)
     qs = optimize_queryset(qs, info, "locations")
     return qs.order_by("name")
示例#6
0
 def resolve_regions(
     self, info, id: str = None, country: str = None, query: str = None
 ):
     qs = Region.objects.all()
     if id:
         qs = qs.filter(id=id)
     if country:
         qs = qs.filter(country=country)
     if query:
         qs = qs.filter(name__istartswith=query)
     qs = optimize_queryset(qs, info, "countries")
     return qs.order_by("regions")
示例#7
0
    def resolve_users(
        self, info, id: str = None, query: str = None, scope: str = None, **kwargs
    ):
        user = info.context.user
        qs = User.objects.all()

        if id:
            qs = qs.filter(from_user_id=id)

        if query:
            qs = qs.filter(name__istartswith=query)

        if scope == "followers":
            if not user.is_authenticated:
                qs = qs.none()
            else:
                qs = qs.filter(
                    id__in=Follower.objects.filter(to_user_id=user.id).values_list(
                        "from_user_id"
                    )
                )
        elif scope == "following":
            if not user.is_authenticated:
                qs = qs.none()
            else:
                qs = qs.filter(
                    id__in=Follower.objects.filter(from_user_id=user.id).values_list(
                        "to_user_id"
                    )
                )
        elif scope:
            qs = qs.none()

        qs = optimize_queryset(qs, info, "users")

        return qs