diff --git a/src/account/models.py b/src/account/models.py index 86d7d416cd4d7106054a8c6650c4fab8ba19dc38..cf691e659397d0194849d1b5fdaa03eddcc93cf8 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -2,9 +2,22 @@ from django.db import models from django.contrib.auth.models import User + + class Profile(models.Model): join_date = models.DateField(auto_now=True) user = models.OneToOneField(User, on_delete=models.CASCADE) + + nick = models.CharField(max_length=15, blank=True, null=True) + signed = models.BooleanField(default=False, null=False) + # Homeworks=models.ForeignKey(Homework) + + def __str__(self): + return self.user.username + + + +class GroupChoice(models.Model): TEAMS = ( ('DT', 'DevTeam'), ('NET', 'NeTeam'), @@ -14,9 +27,7 @@ class Profile(models.Model): ('N', 'None'), ) pref_group = models.CharField(max_length=10, choices=TEAMS, default='None') - nick = models.CharField(max_length=15, blank=True, null=True) - signed = models.BooleanField(default=False, null=False) - # Homeworks=models.ForeignKey(Homework) + profile = models.ForeignKey(Profile, related_name="preferd_groups") - def __str__(self): - return self.user.username + class Meta: + unique_together = ('pref_group', 'profile') \ No newline at end of file diff --git a/src/account/serializers.py b/src/account/serializers.py index 41b44386d7fe3aaefeee4677391bde7f70f9fdc2..f359cf0ffce7cff02a1d622168794e2ff5d52909 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -1,12 +1,20 @@ from rest_framework import serializers -from account.models import Profile +from account import models from django.contrib.auth.models import User +class ChoiceSerializer(serializers.ModelSerializer): + class Meta: + model = models.GroupChoice + + + class ProfileSerializer(serializers.ModelSerializer): + preferd_groups = ChoiceSerializer(many=True, read_only=True) + class Meta: - model = Profile - fields = '__all__' + model = models.Profile + fields = serializers.ALL_FIELDS class ProfileCreateSerializer(serializers.ModelSerializer): @@ -19,7 +27,7 @@ class ProfileCreateSerializer(serializers.ModelSerializer): email = serializers.EmailField() class Meta: - model = Profile + model = models.Profile fields = [ 'first_name', 'last_name', @@ -39,7 +47,7 @@ class ProfileCreateSerializer(serializers.ModelSerializer): nick = validated_data['nick'] pref_group = validated_data['pref_group'] signed = validated_data['signed'] - profile_obj = Profile( + profile_obj = models.Profile( user=user, nick=nick, pref_group=pref_group, @@ -61,7 +69,7 @@ class ProfileUpdateSerializer(serializers.ModelSerializer): email = serializers.EmailField() class Meta: - model = Profile + model = models.Profile fields = [ 'first_name', 'last_name', @@ -78,7 +86,7 @@ class ProfileUpdateSerializer(serializers.ModelSerializer): user.save() nick = validated_data['nick'] pref_group = validated_data['pref_group'] - profile_obj = Profile( + profile_obj = models.Profile( user=user, nick=nick, pref_group=pref_group, @@ -96,7 +104,7 @@ class ProfileDetailSerializer(serializers.ModelSerializer): email = serializers.SerializerMethodField() class Meta: - model = Profile + model = models.Profile fields = [ 'first_name', 'last_name',