Exemplo n.º 1
0
    def update(self, instance, validated_data):
        if 'tax_transcript' in validated_data['user']['invitation']:
            instance.user.invitation.tax_transcript = validated_data['user']['invitation']['tax_transcript']
            instance.user.invitation.save()
            tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
            with open(tmp_filename, 'wb+') as f:
                for chunk in validated_data['user']['invitation']['tax_transcript'].chunks():
                    f.write(chunk)
            instance.regional_data['tax_transcript'] = instance.user.invitation.tax_transcript.url
            instance.regional_data['tax_transcript_data'] = parse_tax_pdf(tmp_filename)

        if 'social_security_statement' in validated_data['user']['invitation']:
            instance.user.invitation.social_security_statement = validated_data['user']['invitation']['social_security_statement']
            instance.user.invitation.save()
            tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
            with open(tmp_filename, 'wb+') as f:
                for chunk in validated_data['user']['invitation']['social_security_statement'].chunks():
                    f.write(chunk)
            instance.regional_data['social_security_statement'] = instance.user.invitation.social_security_statement.url
            instance.regional_data['social_security_statement_data'] = parse_ss_pdf(tmp_filename)

        if 'partner_social_security_statement' in validated_data['user']['invitation']:
            instance.user.invitation.partner_social_security_statement = validated_data['user']['invitation']['partner_social_security_statement']
            instance.user.invitation.save()
            tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
            with open(tmp_filename, 'wb+') as f:
                for chunk in validated_data['user']['invitation']['partner_social_security_statement'].chunks():
                    f.write(chunk)
            instance.regional_data['partner_social_security_statement'] = instance.user.invitation.partner_social_security_statement.url
            instance.regional_data['partner_social_security_statement_data'] = parse_ss_pdf(tmp_filename)
        instance.save()

        return validated_data
Exemplo n.º 2
0
 def get_social_security_statement_data(self, obj):
     if obj.social_security_statement:
         tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
         with open(tmp_filename, 'wb+') as f:
             for chunk in obj.social_security_statement.chunks():
                 f.write(chunk)
         obj.social_security_statement_data = parse_ss_pdf(tmp_filename)
         return obj.social_security_statement_data
     return None
Exemplo n.º 3
0
 def get_partner_social_security_statement_data(self, obj):
     if obj.partner_social_security_statement:
         tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
         with open(tmp_filename, 'wb+') as f:
             for chunk in obj.partner_social_security_statement.chunks():
                 f.write(chunk)
         obj.client.regional_data['partner_social_security_statement_data'] = parse_ss_pdf(tmp_filename)
         obj.client.save()
         return obj.client.regional_data['partner_social_security_statement_data']
     return None
Exemplo n.º 4
0
    def update(self, instance, validated_data):
        """
        Override the default update because we have nested relations.
        :param instance:
        :param validated_data:
        :return: The updated RetirementPlan
        """

        if instance.agreed_on:
            raise ValidationError(
                "Unable to make changes to a plan that has been agreed on")

        # Client civil_status check
        if 'client' in validated_data:
            if 'civil_status' in validated_data['client']:
                instance.client.civil_status = validated_data['client'][
                    'civil_status']
            if 'smoker' in validated_data['client']:
                instance.client.smoker = validated_data['client']['smoker']
            if 'drinks' in validated_data['client']:
                instance.client.drinks = validated_data['client']['drinks']
            if 'height' in validated_data['client']:
                instance.client.height = validated_data['client']['height']
            if 'weight' in validated_data['client']:
                instance.client.weight = validated_data['client']['weight']
            if 'daily_exercise' in validated_data['client']:
                instance.client.daily_exercise = validated_data['client'][
                    'daily_exercise']

            if 'home_value' in validated_data['client']:
                instance.client.home_value = validated_data['client'][
                    'home_value']
            if 'home_growth' in validated_data['client']:
                instance.client.home_growth = validated_data['client'][
                    'home_growth']
            if 'ss_fra_todays' in validated_data['client']:
                instance.client.ss_fra_todays = validated_data['client'][
                    'ss_fra_todays']
            if 'ss_fra_retirement' in validated_data['client']:
                instance.client.ss_fra_retirement = validated_data['client'][
                    'ss_fra_retirement']
            if 'state_tax_after_credits' in validated_data['client']:
                instance.client.state_tax_after_credits = validated_data[
                    'client']['state_tax_after_credits']
            if 'state_tax_effrate' in validated_data['client']:
                instance.client.state_tax_effrate = validated_data['client'][
                    'state_tax_effrate']
            if 'pension_name' in validated_data['client']:
                instance.client.pension_name = validated_data['client'][
                    'pension_name']
            if 'pension_amount' in validated_data['client']:
                instance.client.pension_amount = validated_data['client'][
                    'pension_amount']
            if 'pension_start_date' in validated_data['client']:
                instance.client.pension_start_date = validated_data['client'][
                    'pension_start_date']
            if 'employee_contributions_last_year' in validated_data['client']:
                instance.client.employee_contributions_last_year = validated_data[
                    'client']['employee_contributions_last_year']
            if 'employer_contributions_last_year' in validated_data['client']:
                instance.client.employer_contributions_last_year = validated_data[
                    'client']['employer_contributions_last_year']
            if 'total_contributions_last_year' in validated_data['client']:
                instance.client.total_contributions_last_year = validated_data[
                    'client']['total_contributions_last_year']

            if 'user' in validated_data['client']:
                if 'tax_transcript' in validated_data['client']['user'][
                        'invitation']:
                    instance.client.user.invitation.tax_transcript = validated_data[
                        'client']['user']['invitation']['tax_transcript']
                    instance.client.user.invitation.save()
                    tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
                    with open(tmp_filename, 'wb+') as f:
                        for chunk in validated_data['client']['user'][
                                'invitation']['tax_transcript'].chunks():
                            f.write(chunk)
                    instance.client.regional_data[
                        'tax_transcript'] = instance.client.user.invitation.tax_transcript.url
                    instance.client.regional_data[
                        'tax_transcript_data'] = parse_tax_pdf(tmp_filename)

                if 'social_security_statement' in validated_data['client'][
                        'user']['invitation']:
                    instance.client.user.invitation.social_security_statement = validated_data[
                        'client']['user']['invitation'][
                            'social_security_statement']
                    instance.client.user.invitation.save()
                    tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
                    with open(tmp_filename, 'wb+') as f:
                        for chunk in validated_data['client']['user'][
                                'invitation'][
                                    'social_security_statement'].chunks():
                            f.write(chunk)
                    instance.client.regional_data[
                        'social_security_statement'] = instance.client.user.invitation.social_security_statement.url
                    instance.client.regional_data[
                        'social_security_statement_data'] = parse_ss_pdf(
                            tmp_filename)

                if 'partner_social_security_statement' in validated_data[
                        'client']['user']['invitation']:
                    instance.client.user.invitation.partner_social_security_statement = validated_data[
                        'client']['user']['invitation'][
                            'partner_social_security_statement']
                    instance.client.user.invitation.save()
                    tmp_filename = '/tmp/' + str(uuid.uuid4()) + '.pdf'
                    with open(tmp_filename, 'wb+') as f:
                        for chunk in validated_data['client']['user'][
                                'invitation'][
                                    'partner_social_security_statement'].chunks(
                                    ):
                            f.write(chunk)
                    instance.client.regional_data[
                        'partner_social_security_statement'] = instance.client.user.invitation.partner_social_security_statement.url
                    instance.client.regional_data[
                        'partner_social_security_statement_data'] = parse_ss_pdf(
                            tmp_filename)
            instance.client.save()

        for attr, value in validated_data.items():
            if str(attr) != 'client':
                # civil_status update is on client
                setattr(instance, attr, value)

        reverse_plan = getattr(instance, 'partner_plan_reverse', None)
        if instance.partner_plan is not None and reverse_plan is not None and instance.partner_plan != reverse_plan:
            emsg = "Partner plan relationship must be symmetric. " \
                   "I.e. Your selected partner plan must have you as it's partner"
            raise ValidationError(emsg)

        instance.save()

        return instance