예제 #1
0
    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
예제 #2
0
    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