temporary update to debug email

This commit is contained in:
2024-07-26 12:34:54 +00:00
parent 9215ba8f9f
commit bcfcceb068
10 changed files with 383 additions and 73 deletions

View File

@ -1,8 +1,8 @@
import uuid
from django.db import IntegrityError
from django.core.mail import send_mail
from django.conf import settings
from django.urls import reverse
from django.contrib.auth.password_validation import validate_password
from django.db import transaction
from rest_framework import serializers
@ -14,7 +14,6 @@ from drf_extra_fields.fields import Base64ImageField
#from django.contrib.auth.models import User
from .models import CustomUser
from django.contrib.auth import authenticate
from .utils import send_activation_email
from .models import TestModel
import logging
@ -72,8 +71,41 @@ class GifuAreaSerializer(serializers.ModelSerializer):
model= GifuAreas
fields=['id', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode', 'adm2_ja', 'adm2_en', 'adm2_pcode', 'area_nm']
class UserRegistrationSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True, required=True, validators=[validate_password])
class Meta:
model = CustomUser
fields = ('email', 'password', 'firstname', 'lastname', 'date_of_birth', 'female')
extra_kwargs = {
'email': {'required': True},
'firstname': {'required': True},
'lastname': {'required': True},
'date_of_birth': {'required': True},
}
def validate_email(self, value):
if CustomUser.objects.filter(email=value).exists() or TempUser.objects.filter(email=value).exists():
raise serializers.ValidationError("この電子メールアドレスは既に使用されています。")
return value
def create(self, validated_data):
try:
user = CustomUser.objects.create_user(
email=validated_data['email'],
password=validated_data['password'],
firstname=validated_data['firstname'],
lastname=validated_data['lastname'],
date_of_birth=validated_data['date_of_birth'],
female=validated_data.get('female', False),
group='' # この値は必要に応じて変更してください
)
return user
except ValidationError as e:
raise serializers.ValidationError({"password": list(e.messages)})
'''
class CreateUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
@ -83,6 +115,17 @@ class CreateUserSerializer(serializers.ModelSerializer):
def create(self, validated_data):
user = CustomUser.objects.create_user(validated_data['email'],validated_data['password'], '大垣-初心者','','')
return user
'''
class TempUserRegistrationSerializer(serializers.ModelSerializer):
class Meta:
model = TempUser
fields = ('email', 'firstname', 'lastname', 'date_of_birth', 'female')
def create(self, validated_data):
validated_data['verification_code'] = str(uuid.uuid4())
return TempUser.objects.create(**validated_data)
class UserSerializer(serializers.ModelSerializer):
class Meta:
@ -385,10 +428,16 @@ class EntrySerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
if isinstance(ret['date'], datetime):
ret['date'] = ret['date'].date().isoformat()
ret['team'] = TeamSerializer(instance.team).data
ret['event'] = NewEvent2Serializer(instance.event).data
ret['category'] = NewCategorySerializer(instance.category).data
ret['owner'] = CustomUserSerializer(instance.owner).data
return ret
#if isinstance(ret['date'], datetime):
# ret['date'] = ret['date'].date().isoformat()
#return ret
#def to_representation(self, instance):
# ret = super().to_representation(instance)
# ret['team'] = instance.team.team_name
@ -400,9 +449,8 @@ class EntrySerializer(serializers.ModelSerializer):
class CustomUserSerializer(serializers.ModelSerializer):
class Meta:
model = CustomUser
#fields = ['email', 'is_staff', 'is_active', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group', 'firstname', 'lastname', 'date_of_birth', 'female']
fields = ['id','email', 'firstname', 'lastname', 'date_of_birth', 'female']
read_only_fields = ['email']
read_only_fields = ['id','email']
class TeamDetailSerializer(serializers.ModelSerializer):
category = NewCategorySerializer(read_only=True)
@ -448,7 +496,7 @@ class MemberWithUserSerializer(serializers.ModelSerializer):
class MemberSerializer(serializers.ModelSerializer):
user = CustomUserSerializer(read_only=True)
team = TeamDetailSerializer(read_only=True)
#team = TeamDetailSerializer(read_only=True)
#email = serializers.EmailField(write_only=True, required=False)
#firstname = serializers.CharField(write_only=True, required=False)
@ -487,16 +535,35 @@ class MemberSerializer(serializers.ModelSerializer):
user_data = validated_data.pop('user', {})
user = instance.user
if user.email.startswith('dummy_'): # dummy_ で始まるメールアドレスの場合のみ更新
for attr, value in user_data.items():
setattr(user, attr, value)
user.save()
else:
raise serializers.ValidationError("このユーザーの情報は更新できません。")
for attr, value in user_data.items():
setattr(user, attr, value)
user.save()
return super().update(instance, validated_data)
#if user.email.startswith('dummy_'): # dummy_ で始まるメールアドレスの場合のみ更新
# for attr, value in user_data.items():
# setattr(user, attr, value)
# user.save()
#else:
# raise serializers.ValidationError("このユーザーの情報は更新できません。")
#return super().update(instance, validated_data)
def to_representation(self, instance):
representation = super().to_representation(instance)
user_data = representation['user']
return {
'id': representation['id'],
'email': user_data['email'],
'firstname': user_data['firstname'],
'lastname': user_data['lastname'],
'date_of_birth': user_data['date_of_birth'],
'female': user_data['female'],
'team': representation['team']
}
class EntryMemberSerializer(serializers.ModelSerializer):
class Meta:
@ -507,7 +574,8 @@ class EntryMemberSerializer(serializers.ModelSerializer):
class TempUserSerializer(serializers.ModelSerializer):
class Meta:
model = TempUser
fields = ['id','email', 'password', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group', 'firstname', 'lastname', 'date_of_birth', 'female', 'verification_code', 'created_at', 'expires_at']
#fields = ['id','email', 'password', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group', 'firstname', 'lastname', 'date_of_birth', 'female', 'verification_code', 'created_at', 'expires_at']
fields = ['email', 'password', 'firstname', 'lastname', 'date_of_birth', 'female', 'verification_code']
class EntryCreationSerializer(serializers.Serializer):
owner_email = serializers.EmailField()