diff --git a/src/account/admin.py b/src/account/admin.py index ced8aebf3fec2c3ed4dd60e9c4369c86d1770c59..b9e5817dfac078d71887a8d90fdda504257bb88a 100644 --- a/src/account/admin.py +++ b/src/account/admin.py @@ -1,13 +1,16 @@ from django.contrib import admin -from .models import Profile +from . import models -@admin.register(Profile) +@admin.register(models.Profile) class ProfileAdmin(admin.ModelAdmin): - list_display = ('user_username', 'join_date', 'pref_group') + list_display = ('user_username', 'join_date') def user_username(self, obj): return obj.user.username user_username.admin_order_field = 'user__username' + + # Register your models here. +admin.site.register(models.GroupChoice) diff --git a/src/account/migrations/0006_auto_20180123_1713.py b/src/account/migrations/0006_auto_20180123_1713.py new file mode 100644 index 0000000000000000000000000000000000000000..035ce31da185ae28746fa3674f1670e1491e671f --- /dev/null +++ b/src/account/migrations/0006_auto_20180123_1713.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-01-23 16:13 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0005_auto_20171223_1455'), + ] + + operations = [ + migrations.CreateModel( + name='GroupChoice', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('pref_group', models.CharField(choices=[('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'Hallgatói Tudásbázis'), ('N', 'None')], default='None', max_length=10)), + ], + ), + migrations.RemoveField( + model_name='profile', + name='pref_group', + ), + migrations.AddField( + model_name='groupchoice', + name='profile', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='preferd_groups', to='account.Profile'), + ), + migrations.AlterUniqueTogether( + name='groupchoice', + unique_together=set([('pref_group', 'profile')]), + ), + ] diff --git a/src/account/migrations/0007_auto_20180123_1723.py b/src/account/migrations/0007_auto_20180123_1723.py new file mode 100644 index 0000000000000000000000000000000000000000..27a4efe8c61f7cb19bb1f349a8c21b6e66f1e60e --- /dev/null +++ b/src/account/migrations/0007_auto_20180123_1723.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-01-23 16:23 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0006_auto_20180123_1713'), + ] + + operations = [ + migrations.RenameField( + model_name='groupchoice', + old_name='pref_group', + new_name='choice', + ), + migrations.AlterUniqueTogether( + name='groupchoice', + unique_together=set([('choice', 'profile')]), + ), + ] diff --git a/src/account/models.py b/src/account/models.py index cf691e659397d0194849d1b5fdaa03eddcc93cf8..5ccda4b742062811a39b9bf95e2c1a57d8a51a1b 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -2,8 +2,6 @@ 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) @@ -16,7 +14,6 @@ class Profile(models.Model): return self.user.username - class GroupChoice(models.Model): TEAMS = ( ('DT', 'DevTeam'), @@ -26,8 +23,11 @@ class GroupChoice(models.Model): ('HAT', 'Hallgatói Tudásbázis'), ('N', 'None'), ) - pref_group = models.CharField(max_length=10, choices=TEAMS, default='None') - profile = models.ForeignKey(Profile, related_name="preferd_groups") + choice = models.CharField(max_length=10, choices=TEAMS, default='None') + profile = models.ForeignKey(Profile, related_name="preferd_groups", on_delete=models.CASCADE) class Meta: - unique_together = ('pref_group', 'profile') \ No newline at end of file + unique_together = ('choice', 'profile') + + def __str__(self): + return self.choice diff --git a/src/account/serializers.py b/src/account/serializers.py index f359cf0ffce7cff02a1d622168794e2ff5d52909..2725ff692bd27b23bcd133acd7cb434a6444e1ad 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -1,126 +1,16 @@ from rest_framework import serializers from account import models -from django.contrib.auth.models import User class ChoiceSerializer(serializers.ModelSerializer): class Meta: model = models.GroupChoice - + fields = ('choice', ) class ProfileSerializer(serializers.ModelSerializer): - preferd_groups = ChoiceSerializer(many=True, read_only=True) - - class Meta: - model = models.Profile - fields = serializers.ALL_FIELDS - - -class ProfileCreateSerializer(serializers.ModelSerializer): - def current_user(self): - user = self.context['request'].user - return user - - first_name = serializers.CharField() - last_name = serializers.CharField() - email = serializers.EmailField() - - class Meta: - model = models.Profile - fields = [ - 'first_name', - 'last_name', - 'email', - 'nick', - 'pref_group', - 'signed', - ] - - def create(self, validated_data): - user = self.current_user() - if User.objects.filter(username=user.get_username()) is None: - user.first_name = validated_data['first_name'] - user.last_name = validated_data['last_name'] - user.email = validated_data['email'] - user.save() - nick = validated_data['nick'] - pref_group = validated_data['pref_group'] - signed = validated_data['signed'] - profile_obj = models.Profile( - user=user, - nick=nick, - pref_group=pref_group, - signed=signed, - ) - profile_obj.save() - else: - raise serializers.ValidationError("Már jelentkeztél, ha le akarsz jelentkezni hazsnáld a Lejelentkezés gombot!") - return validated_data - - -class ProfileUpdateSerializer(serializers.ModelSerializer): - def current_user(self): - user = self.context['request'].user - return user - - first_name = serializers.CharField() - last_name = serializers.CharField() - email = serializers.EmailField() - - class Meta: - model = models.Profile - fields = [ - 'first_name', - 'last_name', - 'email', - 'nick', - 'pref_group', - ] - - def update(self, validated_data): - user = self.current_user() - user.first_name = validated_data['first_name'] - user.last_name = validated_data['last_name'] - user.email = validated_data['email'] - user.save() - nick = validated_data['nick'] - pref_group = validated_data['pref_group'] - profile_obj = models.Profile( - user=user, - nick=nick, - pref_group=pref_group, - ) - profile_obj.save() - - -class ProfileDetailSerializer(serializers.ModelSerializer): - def current_user(self): - user = self.context['request'].user - return user - - first_name = serializers.SerializerMethodField() - last_name = serializers.SerializerMethodField() - email = serializers.SerializerMethodField() + preferd_groups = serializers.SlugRelatedField(slug_field='choice', many=True, queryset=models.GroupChoice.objects.all()) class Meta: model = models.Profile - fields = [ - 'first_name', - 'last_name', - 'email', - 'nick', - 'pref_group', - ] - - def get_first_name(self): - user = self.current_user() - return user.first_name - - def get_last_name(self): - user = self.ccurrent_user() - return user.last_name - - def get_email(self): - user = self.ccurrent_user() - return user.email + fields = ('join_date', 'user', 'nick', 'signed', 'preferd_groups') diff --git a/src/account/urls.py b/src/account/urls.py index 691b51e2be5134df30bb8f876d4718790f7dd65e..ff117975c2a30d4e3b81a32d531b2689987a0480 100644 --- a/src/account/urls.py +++ b/src/account/urls.py @@ -1,13 +1,7 @@ from rest_framework import routers -from django.conf.urls import url from . import views -router = routers.DefaultRouter(trailing_slash=False) +router = routers.DefaultRouter() -router.register(r'profiles', views.ProfileViewSet) -urlpatterns = [ - url(r'^profiles/create', views.ProfileCreateView.as_view()), - url(r'^profiles/(?P<pk>\d+)/$', views.ProfileDetailView.as_view()), - url(r'^profiles/(?P<pk>\d+)/update/$', views.ProfileUpdateView.as_view()), -] -urlpatterns += router.urls +router.register(r'^profiles', views.ProfileViewSet) +urlpatterns = router.urls diff --git a/src/account/views.py b/src/account/views.py index e87ad7134e580b81d4c6494a3b4c267ed7c2badd..05197b5653b8844add87e7b14803cf4cc4ddc69a 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -1,28 +1,11 @@ -from rest_framework import viewsets, generics -from rest_framework.permissions import IsAuthenticated +from rest_framework import viewsets +from rest_framework import permissions from . import models from . import serializers -class ProfileCreateView(generics.CreateAPIView): - serializer_class = serializers.ProfileCreateSerializer - queryset = models.Profile.objects.all() - permission_classes = [IsAuthenticated, ] - - -class ProfileDetailView(generics.RetrieveAPIView): - serializer_class = serializers.ProfileDetailSerializer - queryset = models.Profile.objects.all() - permission_classes = [IsAuthenticated, ] - - -class ProfileUpdateView(generics.RetrieveUpdateAPIView): - serializer_class = serializers.ProfileUpdateSerializer - queryset = models.Profile.objects.all() - permission_classes = [IsAuthenticated, ] - - class ProfileViewSet(viewsets.ModelViewSet): serializer_class = serializers.ProfileSerializer queryset = models.Profile.objects.all() + permission_classes = [permissions.IsAuthenticated, ]