src/notes/api/serializers/auth.py
changeset 142 56850f5c73f6
parent 133 6f3078f7fd47
--- a/src/notes/api/serializers/auth.py	Tue Jul 10 15:18:03 2018 +0200
+++ b/src/notes/api/serializers/auth.py	Wed Jul 18 17:32:09 2018 +0200
@@ -2,12 +2,14 @@
 
 from django.contrib.auth import get_user_model
 from django.contrib.auth.models import Group
+from django.db import transaction
+from notes import constants
+from notes.api.fields.category import ProtocolField
+from protocols.models import Protocol
 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()
@@ -71,6 +73,14 @@
             group.user_set.add(user)
             group.save()
         group.profile.owner = user
+
+        new_protocol = Protocol.objects.create_from_default(
+            "Protocol group %s"%validated_data.get('name', ''),
+            "Protocol group %s"%validated_data.get('name', ''),
+            validated_data.get('name', ''),
+            None
+        )
+        group.profile.protocol = "%s%s.%s" % (constants.PROTOCOL_URN_PREFIX, new_protocol.ext_id, new_protocol.revisions.last().version)
         group.profile.save()
 
         return group
@@ -90,6 +100,10 @@
 
         return group
 
+    @transaction.atomic()
+    def save(self, **kwargs):
+        return super().save(**kwargs)
+
 
 class UserDetailsSerializer(RestAuthUserDetailsSerializer):
     default_group = serializers.SlugRelatedField(read_only=True, slug_field='name', source='profile.default_group')