Exemplo n.º 1
0
    def get(self, request):
        """Return feature prompt status if dismissed or in snoozed period"""

        features = request.GET.getlist("feature")
        if len(features) == 0:
            return Response({"details": "No feature specified"}, status=400)

        conditions = None
        for feature in features:
            if not prompt_config.has(feature):
                return Response({"detail": "Invalid feature name " + feature}, status=400)

            required_fields = prompt_config.required_fields(feature)
            for field in required_fields:
                if field not in request.GET:
                    return Response({"detail": 'Missing required field "%s"' % field}, status=400)
            filters = {k: request.GET.get(k) for k in required_fields}
            condition = Q(feature=feature, **filters)
            conditions = condition if conditions is None else (conditions | condition)

        result = PromptsActivity.objects.filter(conditions, user=request.user)
        featuredata = {k.feature: k.data for k in result}
        if len(features) == 1:
            result = result.first()
            data = None if result is None else result.data
            return Response({"data": data, "features": featuredata})
        else:
            return Response({"features": featuredata})
Exemplo n.º 2
0
    def get(self, request):
        """ Return feature prompt status if dismissed or in snoozed period"""

        feature = request.GET.get("feature")

        if not prompt_config.has(feature):
            return Response({"detail": "Invalid feature name"}, status=400)

        required_fields = prompt_config.required_fields(feature)
        for field in required_fields:
            if field not in request.GET:
                return Response(
                    {"detail": 'Missing required field "%s"' % field},
                    status=400)

        filters = {k: request.GET.get(k) for k in required_fields}

        try:
            result = PromptsActivity.objects.get(user=request.user,
                                                 feature=feature,
                                                 **filters)
        except PromptsActivity.DoesNotExist:
            return Response({})

        return Response({"data": result.data})
Exemplo n.º 3
0
 def validate_feature(self, value):
     if value is None:
         raise serializers.ValidationError("Must specify feature name")
     if not prompt_config.has(value):
         raise serializers.ValidationError("Not a valid feature prompt")
     return value