Skip to content

Commit 1c72b58

Browse files
committed
добавлена возможность изменять статус ресурса
1 parent d555ee7 commit 1c72b58

File tree

3 files changed

+46
-4
lines changed

3 files changed

+46
-4
lines changed

backend/api/v1/serializers.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,3 +281,28 @@ class UserUpdateSkillSerializer(serializers.ModelSerializer):
281281
class Meta:
282282
model = UserSkill
283283
fields = ("status",)
284+
285+
286+
class UserResourcesSerializer(serializers.ModelSerializer):
287+
"""Изменение статуса ресурсов пользователя."""
288+
289+
class Meta:
290+
model = UserProfile
291+
fields = ('resources',)
292+
293+
def create(self, validated_data):
294+
"""Переопределение метода create."""
295+
profile=validated_data.get('profile')
296+
try:
297+
add = self.initial_data['add']
298+
rm = self.initial_data['rm']
299+
except:
300+
raise serializers.ValidationError({'error': 'Неверные ключи словаря.'})
301+
302+
for item in add:
303+
resource = get_object_or_404(ResourceLibrary, id=item)
304+
UserResources.objects.create(profile=profile, resource=resource, status='done')
305+
for item in rm:
306+
resource = get_object_or_404(ResourceLibrary, id=item)
307+
UserResources.objects.filter(profile=profile, resource=resource, status='done').delete()
308+
return validated_data

backend/api/v1/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
LibraryViewSet, MyUsersViewSet,
99
ProfileViewSet, ShortUserSkillViewSet,
1010
SkillViewSet, UserActivationView,
11-
UserSkillViewSet)
11+
UserSkillViewSet, UserResourceViewSet)
1212

1313
app_name = "v1"
1414

@@ -26,6 +26,7 @@
2626
router_v1 = DefaultRouter()
2727
router_v1.register("users", MyUsersViewSet, basename="users")
2828
router_v1.register("userskills", UserSkillViewSet, basename="userskills")
29+
router_v1.register("userresources", UserResourceViewSet, basename="userresource")
2930
router_v1.register("levels", LevelViewSet, basename="level")
3031
router_v1.register("dashboard", DashboardViewSet, basename="dashboard")
3132
router_v1.register("libraries", LibraryViewSet, basename="library")

backend/api/v1/views.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
from rest_framework.views import APIView
99

1010
from skills.models import ResourceLibrary, Skill, Specialization
11-
from users.models import UserProfile, UserSkill
11+
from users.models import UserProfile, UserResources, UserSkill
1212
from api.v1.serializers import (DashboardSerializer, LevelSerializer,
1313
LibrarySerializer, ProfileSerializer,
14-
ShortUserSkillSerializer,
14+
ResourceLibrarySerializer, ShortUserSkillSerializer,
1515
SkillDetailSerializer, SkillFrontSerializer,
1616
UserCreateSkillSerializer, UserSkillSerializer,
17-
UserUpdateSkillSerializer)
17+
UserUpdateSkillSerializer, UserResourcesSerializer)
1818

1919
User = get_user_model()
2020

@@ -128,3 +128,19 @@ class LibraryViewSet(viewsets.ReadOnlyModelViewSet):
128128

129129
queryset = ResourceLibrary.objects.all()
130130
serializer_class = LibrarySerializer
131+
132+
133+
class UserResourceViewSet(viewsets.ModelViewSet):
134+
"""Изменение ресурсов пользователя."""
135+
136+
serializer_class = UserResourcesSerializer
137+
138+
def get_queryset(self):
139+
"""Ресурсы текущего пользователя."""
140+
profile = UserProfile.objects.filter(user=self.request.user)
141+
return profile
142+
143+
def perform_create(self, serializer):
144+
"""Переопределение метода save."""
145+
profile = UserProfile.objects.get(user=self.request.user)
146+
serializer.save(profile=profile)

0 commit comments

Comments
 (0)