コード例 #1
0
 def get(self, request, *args, **kwargs):
     pk = kwargs["id"]
     user = User.objects.get(pk=pk)
     preferences = CategoryPreference.objects.filter(
         user=user).order_by("ranking")
     serializer = CategoryPreferenceSerializer(preferences, many=True)
     return Response(serializer.data)
コード例 #2
0
ファイル: test_user.py プロジェクト: alined908/phoodi
 def test_UserPreferenceListView_POST_valid(self):
     response = client.post(
         "/api/users/" + str(self.user.id) + "/preferences/",
         data={"category_id": self.italian.id},
     )
     preference = CategoryPreference.objects.get(user=self.user, category=self.italian)
     serializer = CategoryPreferenceSerializer(preference)
     self.assertEqual(preference.ranking, 3)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, serializer.data)
コード例 #3
0
ファイル: test_user.py プロジェクト: alined908/phoodi
 def test_UserPreferenceView_DELETE_valid(self):
     response = client.delete(
         "/api/users/"
         + str(self.user.id)
         + "/preferences/"
         + str(self.dessert.id)
         + "/"
     )
     self.preference2.refresh_from_db()
     serializer = CategoryPreferenceSerializer(self.user.categorypreferences, many=True)
     self.assertEqual(self.preference2.ranking, 1)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, serializer.data)
コード例 #4
0
ファイル: test_user.py プロジェクト: alined908/phoodi
 def test_UserPreferenceListView_PATCH_valid(self):
     response = client.patch(
         "/api/users/" + str(self.user.id) + "/preferences/",
         data={"oldRanking": 1, "newRanking": 2},
     )
     self.preference1.refresh_from_db()
     self.preference2.refresh_from_db()
     preferences = CategoryPreference.objects.filter(user=self.user).order_by("ranking")
     serializer = CategoryPreferenceSerializer(preferences, many=True)
     self.assertEqual(self.preference1.ranking, 2)
     self.assertEqual(self.preference2.ranking, 1)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, serializer.data)
コード例 #5
0
ファイル: test_user.py プロジェクト: alined908/phoodi
 def test_UserPreferenceView_PATCH_valid(self):
     response = client.patch(
         "/api/users/"
         + str(self.user.id)
         + "/preferences/"
         + str(self.dessert.id)
         + "/",
         {"name": "Best"},
     )
     self.preference1.refresh_from_db()
     serializer = CategoryPreferenceSerializer(self.preference1)
     self.assertEqual(self.preference1.name, "Best")
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, serializer.data)
コード例 #6
0
    def delete(self, request, *args, **kwargs):
        user = request.user
        pk = kwargs["id"]
        if user.id != int(pk):
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        preference, user = self.get_preference(kwargs["id"],
                                               kwargs["category_id"])
        try:
            preference.reorder_preferences_delete()
            preference.delete()
            serializer = CategoryPreferenceSerializer(user.categorypreferences,
                                                      many=True)
            return Response(serializer.data)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #7
0
    def patch(self, request, *args, **kwargs):
        user = request.user
        pk = kwargs["id"]
        if user.id != int(pk):
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        name = request.data["name"]
        preference, user = self.get_preference(kwargs["id"],
                                               kwargs["category_id"])
        try:
            preference.name = name
            preference.save()
            serializer = CategoryPreferenceSerializer(preference)
            return Response(serializer.data)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #8
0
    def patch(self, request, *args, **kwargs):
        user = request.user
        pk = kwargs["id"]

        if user.id != int(pk):
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        user, old_ranking, new_ranking = (
            request.user,
            request.data["oldRanking"],
            request.data["newRanking"],
        )
        try:
            moved_preference = CategoryPreference.objects.filter(
                user=user, ranking=old_ranking)[0]
            moved_preference.reorder_preferences(new_ranking)
            preferences = CategoryPreference.objects.filter(
                user=user).order_by("ranking")
            serializer = CategoryPreferenceSerializer(preferences, many=True)
            return Response(serializer.data)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)
コード例 #9
0
    def post(self, request, *args, **kwargs):
        user = request.user
        pk = kwargs["id"]

        if user.id != int(pk):
            return Response(status=status.HTTP_401_UNAUTHORIZED)

        category_id = request.data["category_id"]
        category = Category.objects.get(pk=category_id)

        if CategoryPreference.objects.filter(user=user,
                                             category=category).exists():
            return Response({"error": "Already a preference"},
                            status=status.HTTP_400_BAD_REQUEST)

        pref_count = user.categorypreferences.all().count()
        preference = CategoryPreference.objects.create(user=user,
                                                       category=category,
                                                       name=category.label,
                                                       ranking=(pref_count +
                                                                1))
        serializer = CategoryPreferenceSerializer(preference)
        return Response(serializer.data)
コード例 #10
0
ファイル: test_user.py プロジェクト: alined908/phoodi
 def test_UserPreferenceListView_GET(self):
     response = client.get("/api/users/" + str(self.user.id) + "/preferences/")
     serializer = CategoryPreferenceSerializer(self.user.categorypreferences, many=True)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data, serializer.data)