Basic release 1-Aug-2024
This commit is contained in:
@ -481,8 +481,8 @@ class MemberCreationSerializer(serializers.Serializer):
|
||||
#email = serializers.EmailField()
|
||||
email = serializers.EmailField(allow_blank=True, required=False)
|
||||
|
||||
firstname = serializers.CharField(required=False)
|
||||
lastname = serializers.CharField(required=False)
|
||||
firstname = serializers.CharField(required=False, allow_blank=True)
|
||||
lastname = serializers.CharField(required=False, allow_blank=True)
|
||||
date_of_birth = serializers.DateField(required=False)
|
||||
female = serializers.BooleanField(required=False)
|
||||
|
||||
@ -495,7 +495,80 @@ class MemberWithUserSerializer(serializers.ModelSerializer):
|
||||
fields = ['user', 'team']
|
||||
|
||||
class MemberSerializer(serializers.ModelSerializer):
|
||||
email = serializers.EmailField(write_only=True)
|
||||
firstname = serializers.CharField(required=False, allow_blank=True, allow_null=True)
|
||||
lastname = serializers.CharField(required=False, allow_blank=True, allow_null=True)
|
||||
date_of_birth = serializers.DateField(required=False, allow_null=True)
|
||||
female = serializers.BooleanField(required=False)
|
||||
|
||||
class Meta:
|
||||
model = Member
|
||||
fields = ['id', 'email', 'firstname', 'lastname', 'date_of_birth', 'female']
|
||||
|
||||
def validate_firstname(self, value):
|
||||
return value or None
|
||||
|
||||
def validate_lastname(self, value):
|
||||
return value or None
|
||||
|
||||
def create(self, validated_data):
|
||||
email = validated_data.pop('email')
|
||||
team = self.context['team']
|
||||
|
||||
# 既存のユーザーを探すか、新しいユーザーを作成
|
||||
user, created = CustomUser.objects.get_or_create(email=email)
|
||||
|
||||
# ユーザーが新しく作成された場合のみ、追加情報を更新
|
||||
if created:
|
||||
user.firstname = validated_data.get('firstname', '')
|
||||
user.lastname = validated_data.get('lastname', '')
|
||||
user.date_of_birth = validated_data.get('date_of_birth')
|
||||
user.female = validated_data.get('female', False)
|
||||
user.save()
|
||||
|
||||
# メンバーを作成
|
||||
member = Member.objects.create(
|
||||
user=user,
|
||||
team=team,
|
||||
firstname=validated_data.get('firstname'),
|
||||
lastname=validated_data.get('lastname'),
|
||||
date_of_birth=validated_data.get('date_of_birth'),
|
||||
female=validated_data.get('female', False)
|
||||
)
|
||||
|
||||
return member
|
||||
# メンバーを作成して返す
|
||||
#class MemberCreationSerializerreturn Member.objects.create(user=user, team=team)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
user_data = validated_data.pop('user', {})
|
||||
user = instance.user
|
||||
|
||||
for attr, value in user_data.items():
|
||||
setattr(user, attr, value)
|
||||
user.save()
|
||||
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
def to_representation(self, instance):
|
||||
representation = super().to_representation(instance)
|
||||
representation['email'] = instance.user.email
|
||||
representation['firstname'] = instance.user.firstname
|
||||
representation['lastname'] = instance.user.lastname
|
||||
representation['date_of_birth'] = instance.user.date_of_birth
|
||||
representation['female'] = instance.user.female
|
||||
return representation
|
||||
|
||||
|
||||
|
||||
class MemberSerializerOld(serializers.ModelSerializer):
|
||||
user = CustomUserSerializer(read_only=True)
|
||||
firstname = serializers.CharField(required=False, allow_blank=True, allow_null=True)
|
||||
lastname = serializers.CharField(required=False, allow_blank=True, allow_null=True)
|
||||
date_of_birth = serializers.DateField(required=False, allow_null=True)
|
||||
female = serializers.BooleanField(required=False)
|
||||
|
||||
|
||||
#team = TeamDetailSerializer(read_only=True)
|
||||
|
||||
#email = serializers.EmailField(write_only=True, required=False)
|
||||
@ -506,8 +579,8 @@ class MemberSerializer(serializers.ModelSerializer):
|
||||
|
||||
class Meta:
|
||||
model = Member
|
||||
fields = ['id','user','team'] # ,'email','firstname','lastname','date_of_birth','female']
|
||||
read_only_fields = ['id', 'team']
|
||||
fields = ['id','email','firstname','lastname','date_of_birth','female']
|
||||
#read_only_fields = ['id', 'team']
|
||||
|
||||
|
||||
'''
|
||||
@ -530,6 +603,25 @@ class MemberSerializer(serializers.ModelSerializer):
|
||||
return member
|
||||
'''
|
||||
|
||||
def create(self, validated_data):
|
||||
email = validated_data.pop('email')
|
||||
team = self.context['team']
|
||||
|
||||
# 既存のユーザーを探すか、新しいユーザーを作成
|
||||
user, created = CustomUser.objects.get_or_create(email=email)
|
||||
|
||||
# メンバーを作成
|
||||
member = Member.objects.create(
|
||||
user=user,
|
||||
team=team,
|
||||
firstname=validated_data.get('firstname', ''),
|
||||
lastname=validated_data.get('lastname', ''),
|
||||
date_of_birth=validated_data.get('date_of_birth'),
|
||||
female=validated_data.get('female', False)
|
||||
)
|
||||
|
||||
return member
|
||||
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
user_data = validated_data.pop('user', {})
|
||||
@ -551,6 +643,12 @@ class MemberSerializer(serializers.ModelSerializer):
|
||||
|
||||
#return super().update(instance, validated_data)
|
||||
|
||||
def to_representation(self, instance):
|
||||
representation = super().to_representation(instance)
|
||||
representation['email'] = instance.user.email
|
||||
return representation
|
||||
|
||||
'''
|
||||
def to_representation(self, instance):
|
||||
representation = super().to_representation(instance)
|
||||
user_data = representation['user']
|
||||
@ -563,7 +661,7 @@ class MemberSerializer(serializers.ModelSerializer):
|
||||
'female': user_data['female'],
|
||||
'team': representation['team']
|
||||
}
|
||||
|
||||
'''
|
||||
|
||||
class EntryMemberSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
Reference in New Issue
Block a user