def apiCall(request): access_token = request.session.get('accessToken', None) if access_token is None: return HttpResponse( 'Your Bearer token has expired, please initiate C2QB flow again') realmId = request.session['realmId'] if realmId is None: return HttpResponse( 'No realm ID. QBO calls only work if the payment scope was passed!' ) refresh_token = request.session['refreshToken'] create_charge_response, status_code = createCharge(access_token) print(create_charge_response) print(status_code) if status_code >= 400: # if call to QBO doesn't succeed then get a new bearer token from refresh token and try again bearer = getBearerTokenFromRefreshToken(refresh_token) updateSession(request, bearer.accessToken, bearer.refreshToken, realmId) create_charge_response, status_code = createCharge(bearer.accessToken) if status_code >= 400: return HttpResponseServerError() return HttpResponse('Charge create response: ' + str(create_charge_response))
def apiCall(request): access_token = request.session.get('accessToken', None) if access_token is None: return HttpResponse( 'Your Bearer token has expired, please initiate C2QB flow again') realmId = request.session['realmId'] if realmId is None: return HttpResponse( 'No realm ID. QBO calls only work if the accounting scope was passed!' ) refresh_token = request.session['refreshToken'] company_info_response, status_code = getCompanyInfo(access_token, realmId) if status_code >= 400: # if call to QBO doesn't succeed then get a new bearer token from refresh token and try again bearer = getBearerTokenFromRefreshToken(refresh_token) updateSession(request, bearer.accessToken, bearer.refreshToken, realmId) company_info_response, status_code = getCompanyInfo( bearer.accessToken, realmId) if status_code >= 400: return HttpResponseServerError() company_name = company_info_response['CompanyInfo']['CompanyName'] address = company_info_response['CompanyInfo']['CompanyAddr'] return HttpResponse('Company Name: ' + company_name + ', Company Address: ' + address['Line1'] + ', ' + address['City'] + ', ' + ' ' + address['PostalCode'])
def refreshTokenCall(request): refresh_token = request.session.get('refreshToken', None) if refresh_token is None: return HttpResponse('Not authorized') bearer = getBearerTokenFromRefreshToken(refresh_token) if isinstance(bearer, str): return HttpResponse(bearer) else: return HttpResponse('Access Token: ' + bearer.accessToken + ', Refresh Token: ' + bearer.refreshToken)
def connected(request): access_token = request.session.get('accessToken', None) if access_token is None: return HttpResponse( 'Your Bearer token has expired, please initiate Sign In With Intuit flow again' ) refresh_token = request.session.get('refreshToken', None) realmId = request.session['realmId'] if realmId is None: user_profile_response, status_code = getUserProfile(access_token) if status_code >= 400: # if call to User Profile Service doesn't succeed then get a new bearer token from refresh token # and try again bearer = getBearerTokenFromRefreshToken(refresh_token) user_profile_response, status_code = getUserProfile( bearer.accessToken) updateSession(request, bearer.accessToken, bearer.refreshToken, request.session.get('realmId', None), name=user_profile_response.get('givenName', None)) if status_code >= 400: return HttpResponseServerError() c = { 'first_name': user_profile_response.get('givenName', ' '), } else: if request.session.get('name') is None: name = '' else: name = request.session.get('name') c = { 'first_name': name, } session = Session() c['customer_balances'] = session.query(CustomerBalance).all() session.close() return render(request, 'connected.html', context=c)
def apiCall(request): access_token = request.session.get('accessToken', None) if access_token is None: return HttpResponse( 'Your Bearer token has expired, please initiate C2QB flow again') realmId = request.session['realmId'] if realmId is None: return HttpResponse( 'No realm ID. QBO calls only work if the accounting scope was passed!' ) refresh_token = request.session['refreshToken'] customer_balance_response, status_code = getCustomerBalance( access_token, realmId) if status_code >= 400: # if call to QBO doesn't succeed then get a new bearer token from refresh token and try again bearer = getBearerTokenFromRefreshToken(refresh_token) updateSession(request, bearer.accessToken, bearer.refreshToken, realmId) customer_balance_response, status_code = getCustomerBalance( bearer.accessToken, realmId) if status_code >= 400: return HttpResponseServerError() columns = [ column['ColTitle'] or column['ColType'] for column in customer_balance_response['Columns']['Column'] ] rows = transform_customer_balance_rows( customer_balance_response['Rows']['Row'])['rows'] data_frame = pd.DataFrame.from_dict(rows, orient='index', columns=columns) data_frame.rename(columns={ 'Customer': 'customer', 'Total': 'balance' }, inplace=True) data_frame.to_sql('customer_balance', con=settings.DB_ENGINE, if_exists='append', index=False) time = parse(customer_balance_response['Header']['Time']) updated_log = UpdateLog(date=time.date()) session = Session() session.add(updated_log) session.commit() report_name = customer_balance_response['Header']['ReportName'] date_macro = customer_balance_response['Header'][ 'DateMacro'] if 'DateMacro' in customer_balance_response[ 'Header'] else customer_balance_response['Header']['EndPeriod'] # update_report = {'report_name': report_name, 'date_macro': date_macro, 'updated_at': time.strftime("%m/%d/%Y"), # 'columns': ', '.join(columns), 'no_of_rows': len(rows), # 'customer_balances': session.query(CustomerBalance).all()} session.close() return HttpResponse('Report Name: ' + report_name + ', From: ' + date_macro + ', Updated At: ' + time.strftime("%m/%d/%Y") + ', Columns: ' + ', '.join(columns) + ', Number of rows fetched: ' + str(len(rows)))