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
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