Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions backend/api/team/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib import admin

from team.models import Skill, Hobby, Profile
from .models import Skill, Hobby, Profile


class SkillInline(admin.TabularInline):
Expand All @@ -12,7 +12,6 @@ class HobbyInline(admin.TabularInline):


class ProfileAdmin(admin.ModelAdmin):

inlines = (SkillInline, HobbyInline)


Expand Down
29 changes: 25 additions & 4 deletions backend/api/team/management/commands/set_team.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.contrib.auth import get_user_model
from django.core.management import BaseCommand

from team.models import Profile, Skill, Hobby
from backend.api.team.models import Profile, Skill, Hobby

TEAM = [
{
Expand All @@ -12,11 +12,11 @@
"hobbies": [
{
"name": "Mountain biking",
"strength": 8,
"strength": 10,
},
{
"name": "Sitting in the sun, drinking wine and pretending to work",
"strength": 6
"strength": 10
}
],
"skills": [
Expand Down Expand Up @@ -119,6 +119,28 @@
"strength": 10,
}
]
},
{
"name": "Rostik",
"job_title": "Python Back-end dev",
"years_of_experience": 2,
"introduction": "update things.",
"hobbies": [
{
"name": "Riding a motorcycle",
"strength": 10,
},
{
"name": "E-sports",
"strength": 8
}
],
"skills": [
{
"name": "Python",
"strength": 8,
}
]
}
]

Expand Down Expand Up @@ -147,4 +169,3 @@ def handle(self, *args, **kwargs):
Hobby.objects.get_or_create(profile=profile, **hobby)

self.stdout.write(self.style.SUCCESS('Created Basic User Profiles!'))

25 changes: 15 additions & 10 deletions backend/api/team/serializers.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
from django.db.models import Avg
from rest_framework import serializers

from team.models import Profile, Skill, Hobby
from .models import Profile, Skill, Hobby


class ProfileListSerializer(serializers.ModelSerializer):
class MaximumPassionSerializer(serializers.Serializer):
maximum_passion = serializers.SerializerMethodField()

@staticmethod
def get_maximum_passion(obj):
try:
maximum_passion = int(obj)
return maximum_passion
except ValueError:
return 0


class ProfileListSerializer(serializers.ModelSerializer):
name = serializers.CharField(read_only=True, source='user.username')

class Meta:
Expand All @@ -13,29 +25,22 @@ class Meta:


class SkillSerializer(serializers.ModelSerializer):

class Meta:
model = Skill
fields = ('name', 'strength')


class HobbySerializer(serializers.ModelSerializer):

class Meta:
model = Hobby
fields = ('name', 'strength')


class ProfileRetrieveSerializer(ProfileListSerializer):

average_skill_proficiency = serializers.SerializerMethodField()
skills = SkillSerializer(many=True, read_only=True)
hobbies = HobbySerializer(many=True, read_only=True)

@staticmethod
def get_average_skill_proficiency(profile):
skill_strengths = []
for skill in profile.skills.all():
skill_strengths.append(skill.strength)

return sum(skill_strengths) / len(skill_strengths)
return Profile.objects.aggregate(Avg('skills'))
2 changes: 1 addition & 1 deletion backend/api/team/urls.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from rest_framework.routers import SimpleRouter

from team.views import ProfileViewSet
from .views import ProfileViewSet

router = SimpleRouter()
router.register(r'profile', ProfileViewSet, basename='profile')
Expand Down
14 changes: 12 additions & 2 deletions backend/api/team/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from rest_framework import viewsets

from team.models import Profile
from team.serializers import ProfileRetrieveSerializer, ProfileListSerializer
from .models import Profile
from .serializers import ProfileRetrieveSerializer, ProfileListSerializer, MaximumPassionSerializer


class ProfileViewSet(viewsets.ReadOnlyModelViewSet):
Expand All @@ -12,3 +12,13 @@ def get_serializer_class(self):
if self.action == 'list':
return ProfileListSerializer
return ProfileRetrieveSerializer

def get_queryset(self, **kwargs):
qs = super().get_queryset(**kwargs)
maximum_passion_query = self.request.GET.get('maximum_passion')
if maximum_passion_query:
maximum_passion = MaximumPassionSerializer(maximum_passion_query).data['maximum_passion']
if maximum_passion > 0:
return qs.filter(hobbies__strength=int(maximum_passion))
else:
return qs
2 changes: 1 addition & 1 deletion deploy/docker/uiDockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node
FROM node:14.18.2-bullseye

EXPOSE 3000

Expand Down
Loading