From f74ebcede3b2687a3c8b9648b34243ab0e062357 Mon Sep 17 00:00:00 2001 From: Chif Gergo <chifgeri97@gmail.com> Date: Sat, 23 Dec 2017 17:34:51 +0100 Subject: [PATCH] Jelentkezes nagyjabol megcsinalva --- .../migrations/0005_auto_20171223_1455.py | 20 ++++++ src/account/models.py | 6 -- src/account/serializers.py | 63 +++++++++++++++---- src/account/urls.py | 3 +- src/account/views.py | 6 ++ 5 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 src/account/migrations/0005_auto_20171223_1455.py diff --git a/src/account/migrations/0005_auto_20171223_1455.py b/src/account/migrations/0005_auto_20171223_1455.py new file mode 100644 index 0000000..d5e5fb8 --- /dev/null +++ b/src/account/migrations/0005_auto_20171223_1455.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-12-23 13:55 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0004_profile_signed'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='join_date', + field=models.DateField(auto_now=True), + ), + ] diff --git a/src/account/models.py b/src/account/models.py index 2524e6d..86d7d41 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -1,7 +1,5 @@ from django.db import models from django.contrib.auth.models import User -from django.core.exceptions import ValidationError -import datetime class Profile(models.Model): @@ -22,7 +20,3 @@ class Profile(models.Model): def __str__(self): return self.user.username - - def clean(self): - if self.join_date > datetime.date.today() or self.join_date < datetime.date(2015, 1, 1): - raise ValidationError('Invalid date') diff --git a/src/account/serializers.py b/src/account/serializers.py index 8921477..9dded68 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers from account.models import Profile +from django.contrib.auth.models import User class ProfileSerializer(serializers.ModelSerializer): @@ -9,16 +10,17 @@ class ProfileSerializer(serializers.ModelSerializer): 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() - # Create a custom method field - current_user = serializers.SerializerMethodField('_user') class Meta: model = Profile fields = [ - 'current_user', 'first_name', 'last_name', 'email', @@ -27,23 +29,58 @@ class ProfileCreateSerializer(serializers.ModelSerializer): 'signed', ] - def _user(self, obj): + 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 = 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 - def create(self, validated_data): - #user.first_name = validated_data['first_name'] - #user.last_name = validated_data['last_name'] - #user.email = validated_data['email'] - #user.save() + first_name = serializers.CharField() + last_name = serializers.CharField() + email = serializers.EmailField() + + class Meta: + model = 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'] - signed = validated_data['signed'] profile_obj = Profile( user=user, nick=nick, pref_group=pref_group, - signed=signed, - ) + ) profile_obj.save() - return validated_data diff --git a/src/account/urls.py b/src/account/urls.py index 1dc4f59..347aecb 100644 --- a/src/account/urls.py +++ b/src/account/urls.py @@ -6,6 +6,7 @@ router = routers.DefaultRouter(trailing_slash=False) router.register(r'profiles', views.ProfileViewSet) urlpatterns = [ - url(r'^profiles/create', views.ProfileCreateView.as_view()) + url(r'^profiles/create', views.ProfileCreateView.as_view()), + url(r'^profiles/update/<pk>', views.ProfileUpdateView.as_view()) ] urlpatterns += router.urls diff --git a/src/account/views.py b/src/account/views.py index 348fddc..e4f226b 100644 --- a/src/account/views.py +++ b/src/account/views.py @@ -11,6 +11,12 @@ class ProfileCreateView(generics.CreateAPIView): permission_classes = [IsAuthenticated, ] +class ProfileUpdateView(generics.RetrieveAPIView): + 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() -- GitLab