--- a/src/notes/api/serializers/auth.py Tue Aug 01 12:20:14 2017 +0200
+++ b/src/notes/api/serializers/auth.py Thu Aug 03 09:44:37 2017 +0200
@@ -2,8 +2,12 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
+from rest_auth.serializers import \
+ UserDetailsSerializer as RestAuthUserDetailsSerializer
from rest_framework import serializers
+from notes.api.fields.category import ProtocolField
+
logger = logging.getLogger(__name__)
User = get_user_model()
@@ -12,10 +16,11 @@
owner = serializers.CharField(source='profile.owner.username', read_only=True)
is_personal = serializers.BooleanField(source='profile.is_personal', read_only=True)
description = serializers.CharField(source='profile.description')
+ protocol = ProtocolField(read_only=True, source='profile.protocol')
class Meta:
model = Group
- fields = ['name', 'owner', 'is_personal', 'description']
+ fields = ['name', 'owner', 'is_personal', 'description', 'protocol']
class DetailGroupSerializer(GroupSerializer):
@@ -28,7 +33,7 @@
class Meta:
model = Group
- fields = ['name', 'owner', 'description', 'users', 'is_personal']
+ fields = ['name', 'owner', 'description', 'users', 'is_personal', 'protocol']
class WriteGroupSerializer(serializers.ModelSerializer):
@@ -44,10 +49,11 @@
queryset=User.objects.all(),
default=[]
)
+ protocol = ProtocolField(required=False, source='profile.protocol')
class Meta:
model = Group
- fields = ['name', 'description', 'users']
+ fields = ['name', 'description', 'users', 'protocol']
def create(self, validated_data):
@@ -55,7 +61,7 @@
group = super().create(validated_data)
- if profile_data is not None:
+ if profile_data is not None and profile_data.get('description', None) is not None:
group.profile.description = profile_data.get('description')
user = None
@@ -73,7 +79,8 @@
profile_data = validated_data.pop('profile', None)
group = super().update(instance, validated_data)
- if profile_data is not None:
+ logger.debug("WriteGroupSerializer.update %r", profile_data)
+ if profile_data is not None and profile_data.get('description', None) is not None:
group.profile.description = profile_data.get('description')
group.profile.save()
@@ -82,3 +89,11 @@
group.user_set.add(group.profile.owner)
return group
+
+
+class UserDetailsSerializer(RestAuthUserDetailsSerializer):
+ default_group = serializers.SlugRelatedField(read_only=True, slug_field='name', source='profile.default_group')
+
+ class Meta(RestAuthUserDetailsSerializer.Meta):
+ fields = ('pk', 'username', 'email', 'first_name', 'last_name', 'default_group')
+ read_only_fields = ('email', 'default_group')