def save(self, request):
email = self.initial_data.get('email', None)
user_type = self.initial_data.get('type', None)
confirm_key = self.initial_data.get('key', None)
invite_key = self.initial_data.get('invite_key', None)
application = None
invitation = None
if confirm_key:
try:
application = DeveloperApplication.objects.get(confirmation_key=confirm_key, used=False)
user_type = USER_TYPE_DEVELOPER
except:
raise ValidationError({'key': 'Invalid or expired key'})
elif invite_key:
try:
invitation = DeveloperInvitation.objects.get(invitation_key=invite_key, used=False)
user_type = invitation.type
except:
raise ValidationError({'invite_key': 'Invalid or expired key'})
if application or invitation:
# Skip email activation for developer applications and invitations
adapter = get_adapter()
adapter.stash_verified_email(request, email)
user = super(TungaRegisterSerializer, self).save(request)
user.type = user_type
user.first_name = self.initial_data['first_name']
user.last_name = self.initial_data['last_name']
user.pending = False
user.save()
if application:
application.used = True
application.used_at = datetime.datetime.utcnow()
application.save()
profile = UserProfile(user=user, phone_number=application.phone_number, country=application.country)
profile.city = application.city
profile.save()
if invitation:
invitation.used = True
invitation.used_at = datetime.datetime.utcnow()
invitation.save()
# Notify admins that developer has accepted invitation
send_developer_invitation_accepted_email.delay(invitation.id)
return user
评论列表
文章目录