コード例 #1
0
    def post(self, candidate_public_id):
        """ Create Credit Report Account """
        request_data = request.json

        # TODO: retrieve campaign information for candidate
        campaign_data = {'ad_id': 5000, 'affiliate_id': 1662780, 'campaign_id': 'ABR:DBL_OD_WOULDYOULIKETOADD_041615'}
        campaign_data.update({'channel': 'paid'})

        try:
            candidate, error_response = _handle_get_candidate(candidate_public_id)
            if not candidate:
                return error_response

            # look for existing credit report account
            credit_report_account = candidate.credit_report_account
            if not credit_report_account:
                signup_data = start_signup(campaign_data)
                credit_report_account = save_new_credit_report_account(signup_data, candidate,
                                                                       CreditReportSignupStatus.INITIATING_SIGNUP)

            if credit_report_account.status == CreditReportSignupStatus.ACCOUNT_CREATED:
                response_object = {
                    'success': False,
                    'message': 'Credit Report account already exists'
                }
                return response_object, 409

            email_exists, error = does_email_exist(request_data.get('email'), credit_report_account.tracking_token)
            if email_exists or error:
                response_object = {
                    'success': False,
                    'message': error or 'Email already exists'
                }
                return response_object, 409

            password = Auth.generate_password()
            request_data.update(dict(password=password))
            new_customer = create_customer(request_data, credit_report_account.tracking_token, sponsor_code='BTX5DY2SZK')

            credit_report_account.password = password
            credit_report_account.customer_token = new_customer.get('customerToken')
            credit_report_account.financial_obligation_met = new_customer.get('isFinancialObligationMet')
            credit_report_account.plan_type = new_customer.get('planType')
            credit_report_account.status = CreditReportSignupStatus.ACCOUNT_CREATED
            update_credit_report_account(credit_report_account)

            response_object = {
                'success': True,
                'message': f'Successfully created credit report account with {credit_report_account.provider}',
                'public_id': credit_report_account.public_id
            }
            return response_object, 201

        except LockedException as e:
            response_object = {
                'success': False,
                'message': str(e)
            }
            return response_object, 409
        except Exception as e:
            response_object = {
                'success': False,
                'message': str(e)
            }
            return response_object, 500
コード例 #2
0
class UserDto:
    api = Namespace('users', description='user related operations')
    new_user = api.model(
        'new_user', {
            'email':
            fields.String(required=True, description='user email address'),
            'username':
            fields.String(required=True, description='user username'),
            'password':
            fields.String(required=True,
                          description='user password',
                          example=Auth.generate_password()),
            'first_name':
            fields.String(required=True, description='user first name'),
            'last_name':
            fields.String(required=True, description='user last name'),
            'title':
            fields.String(required=True,
                          description='user title',
                          example='Administrator'),
            'language':
            fields.String(required=True,
                          description='user language preference',
                          example='en'),
            'personal_phone':
            fields.String(required=True,
                          description='user personal phone number'),
            'voip_route_number':
            fields.String(required=False,
                          description='user VOIP routing number')
        })
    update_user = api.model(
        'update_user', {
            'email':
            fields.String(required=False, description='user email address'),
            'first_name':
            fields.String(required=False, description='user first name'),
            'last_name':
            fields.String(required=False, description='user last name'),
            'title':
            fields.String(required=False,
                          description='user title',
                          example='Administrator'),
            'language':
            fields.String(required=False,
                          description='user language preference',
                          example='en'),
            'personal_phone':
            fields.String(required=False,
                          description='user personal phone number'),
            'voip_route_number':
            fields.String(required=False,
                          description='user VOIP routing number')
        })
    user = api.model(
        'user', {
            'email':
            fields.String(required=True, description='user email address'),
            'username':
            fields.String(required=True, description='user username'),
            'password':
            fields.String(required=True, description='user password'),
            'public_id':
            fields.String(description='user identifier'),
            'first_name':
            fields.String(required=True, description='user first name'),
            'last_name':
            fields.String(required=True, description='user last name'),
            'title':
            fields.String(required=True, description='user title'),
            'language':
            fields.String(required=True,
                          description='user language preference'),
            'personal_phone':
            fields.String(required=True,
                          description='user personal phone number'),
            'voip_route_number':
            fields.String(required=False,
                          description='user VOIP routing number')
        })