equal
deleted
inserted
replaced
1 import logging |
1 import logging |
2 |
2 |
3 from django.contrib.auth import get_user_model |
3 from django.contrib.auth import get_user_model |
4 from django.contrib.auth.models import Group |
4 from django.contrib.auth.models import Group |
|
5 from django.db import transaction |
|
6 from notes import constants |
|
7 from notes.api.fields.category import ProtocolField |
|
8 from protocols.models import Protocol |
5 from rest_auth.serializers import \ |
9 from rest_auth.serializers import \ |
6 UserDetailsSerializer as RestAuthUserDetailsSerializer |
10 UserDetailsSerializer as RestAuthUserDetailsSerializer |
7 from rest_framework import serializers |
11 from rest_framework import serializers |
8 |
|
9 from notes.api.fields.category import ProtocolField |
|
10 |
12 |
11 logger = logging.getLogger(__name__) |
13 logger = logging.getLogger(__name__) |
12 |
14 |
13 User = get_user_model() |
15 User = get_user_model() |
14 |
16 |
69 if request and hasattr(request, "user"): |
71 if request and hasattr(request, "user"): |
70 user = request.user |
72 user = request.user |
71 group.user_set.add(user) |
73 group.user_set.add(user) |
72 group.save() |
74 group.save() |
73 group.profile.owner = user |
75 group.profile.owner = user |
|
76 |
|
77 new_protocol = Protocol.objects.create_from_default( |
|
78 "Protocol group %s"%validated_data.get('name', ''), |
|
79 "Protocol group %s"%validated_data.get('name', ''), |
|
80 validated_data.get('name', ''), |
|
81 None |
|
82 ) |
|
83 group.profile.protocol = "%s%s.%s" % (constants.PROTOCOL_URN_PREFIX, new_protocol.ext_id, new_protocol.revisions.last().version) |
74 group.profile.save() |
84 group.profile.save() |
75 |
85 |
76 return group |
86 return group |
77 |
87 |
78 def update(self, instance, validated_data): |
88 def update(self, instance, validated_data): |
88 if group.profile.owner and group.profile.owner not in group.user_set.all(): |
98 if group.profile.owner and group.profile.owner not in group.user_set.all(): |
89 group.user_set.add(group.profile.owner) |
99 group.user_set.add(group.profile.owner) |
90 |
100 |
91 return group |
101 return group |
92 |
102 |
|
103 @transaction.atomic() |
|
104 def save(self, **kwargs): |
|
105 return super().save(**kwargs) |
|
106 |
93 |
107 |
94 class UserDetailsSerializer(RestAuthUserDetailsSerializer): |
108 class UserDetailsSerializer(RestAuthUserDetailsSerializer): |
95 default_group = serializers.SlugRelatedField(read_only=True, slug_field='name', source='profile.default_group') |
109 default_group = serializers.SlugRelatedField(read_only=True, slug_field='name', source='profile.default_group') |
96 |
110 |
97 class Meta(RestAuthUserDetailsSerializer.Meta): |
111 class Meta(RestAuthUserDetailsSerializer.Meta): |