def user_data(request): """ Context processor for Navbar :param request: :return: username and organisation name """ if request.user.is_authenticated: try: fyle_sdk_connector = FyleSdkConnector(request.user.refresh_token) user_details = fyle_sdk_connector.extract_employee_details() return {'username': user_details.get('full_name'), 'org': user_details.get('org_name')} except Exception as e: return {} return {}
def org_name(request): """ Context processor for Settings tab :param request: :return: organisation name for current active fyle account """ if request.user.is_authenticated: try: fyle_sdk_connector = FyleSdkConnector(request.user.refresh_token) fyle_org_name = fyle_sdk_connector.extract_employee_details().get('org_name') return {'current_org_name': fyle_org_name, 'connected': True} except Exception: return {} return {}
def schedule_backup(request, backup): """ Schedule this backup using JobsInfra :param request: request object :param backup: backup object """ try: fyle_sdk_connector = FyleSdkConnector(request.user.refresh_token) fyle_sdk_connection = fyle_sdk_connector.connection jobs = FyleJobsSDK(fyle_sdk_connection) object_type = request.POST.get('object_type') created_job = jobs.trigger_now( callback_url='{0}{1}/'.format(settings.FYLE_JOBS_CALLBACK_URL, object_type), callback_method='POST', object_id=backup.id, payload={'backup_id': backup.id}, job_description='Fetch backup_id {0} for user: {1}'.format( backup.id, request.user )) if created_job is None: logger.error('Backup_id: %s not scheduled. Task creation failed.', backup.id) backup.current_state = 'FAILED' backup.save() return False backup.task_id = created_job['id'] backup.save() return True except Exception as excp: logger.error('Exception occured while scheduling backup_id: %s', backup.id) raise
def schedule_backup(request, backup): """ Schedule this backup using JobsInfra :param request: request object :param backup: backup object """ try: fyle_sdk_connector = FyleSdkConnector(request.user.refresh_token) fyle_sdk_connection = fyle_sdk_connector.connection jobs = fyle_sdk_connection.Jobs org_user_id = fyle_sdk_connection.Employees.get_my_profile()[ 'data']['id'] object_type = request.POST.get('object_type') created_job = jobs.trigger_now( callback_url='{0}{1}/'.format(settings.FYLE_JOBS_CALLBACK_URL, object_type), callback_method='POST', org_user_id=org_user_id, job_description='Fetch backup_id {0} for user: {1}'.format( backup.id, request.user ), object_id=backup.id, payload={'backup_id': backup.id} ) backup.task_id = created_job['id'] backup.save() return True except Exception: error = traceback.format_exc() logger.error( 'Exception occured while scheduling backup_id: %s, Traceback: %s', backup.id, error)
def get(self, request): code = request.GET.get('code') error = request.GET.get('error') if code and error is None: fyle_oauth = FyleOAuth2() refresh_token = fyle_oauth.get_refresh_token(code) fyle_sdk_connector = FyleSdkConnector(refresh_token) fyle_org_id = fyle_sdk_connector.extract_employee_details().get( 'org_id') user = UserProfile.objects.get(email=request.user) user.refresh_token = refresh_token user.fyle_org_id = fyle_org_id user.save() return redirect('/main/expenses/') messages.error( request, 'Please Authorize Fyle Backup Application\ to access your Fyle Account.') return redirect('/')
def get(self, request, backup_id): try: logger.info('Got a notify request from user %s for backup_id: %s', request.user, backup_id) backup = Backups.objects.get(id=backup_id, user_id__email=request.user) fyle_connection = FyleSdkConnector(backup.fyle_refresh_token) object_type = ObjectLookup(backup.object_type).label.lower() notify_user(fyle_connection, backup.file_path, backup.fyle_org_id, object_type) messages.success( request, 'We have sent you the download\ link by email.') return redirect('/main/{0}/'.format(object_type)) except Backups.DoesNotExist: messages.error(request, 'Did not find a backup for this id.') except Exception as excp: logger.error( 'Error while notifying user for backup_id: %s. Error: %s', backup_id, excp) messages.error(request, 'Something went wrong. Please try again!') return redirect('/main/expenses/')