def test_timeout_error(self, mock_get): error = ('ulapd_ui', 'API_TIMEOUT') response = Mock() response.status_code = 500 response.raise_for_status.side_effect = Timeout(self.error_msg) mock_get.return_value = response with self.assertRaises(ApplicationError) as cm: ulapd_api = UlapdAPI() ulapd_api.get_datasets() self.assertEqual(cm.exception.message, errors.get_message(*error, filler=self.error_msg)) self.assertEqual(cm.exception.code, errors.get_code(*error)) self.assertEqual(cm.exception.http_code, 500)
def get_api_datasets(external=False): ulapd_api = UlapdAPI() dataset_list = ulapd_api.get_datasets() user_details = _authenticate(ulapd_api) user_access = user_details['datasets'] if dataset_list: # Filter out 'open' datasets dataset_list = [d for d in dataset_list if d['type'] != 'open'] result_data = [] for dataset in dataset_list: # Don't show 'confidential' datasets unless user has access if dataset['type'] == 'confidential': if user_access.get(dataset['name']): result_data.append( dict(name=dataset['name'], title=dataset['title'])) else: result_data.append( dict(name=dataset['name'], title=dataset['title'])) response = {"success": True, "result": result_data} return response else: raise ApplicationError(*errors.get('ulapd_ui', 'NO_DATASETS_FOUND'), http_code=404)
def test_get_datasets(self, mock_get): mock_get.return_value.json.return_value = [{'name': 'ccod'}] mock_get.return_value.status_code = 200 ulapd_api = UlapdAPI() response = ulapd_api.get_datasets() self.assertEqual(response, [{'name': 'ccod'}])
def get_list(): try: ulapd_api = UlapdAPI() session = dps_session.get_state() internal_datasets = ulapd_api.get_datasets() external_datasets = ulapd_api.get_external_datasets() # Filter out sample internal_datasets = [ d for d in internal_datasets if '_sample' not in d['name'] ] # Add internal/external datasets together dataset_list = internal_datasets + external_datasets # Sort alphabetically putting datasets starting with numeric characters last dataset_list.sort( key=lambda d: 'z' if d['title'][0].isdigit() else d['title']) # User specific data user_access = {} api_key = '' user_has_activity = False if g.user: api_key = session['user']['user_details']['api_key'] # Dictionary of datasets user has access to user_access = {d: True for d in session['user']['datasets']} # Check if user has downloaded anything for 'agreed licence but not downloaded' state user_activity = ulapd_api.get_user_download_activity( session['user']['user_details']['user_details_id']) user_has_activity = bool(user_activity) # Get dataset history for agreed datasets agreed_dataset_list = [] for dataset in dataset_list: if check_agreement(dataset['name']): dataset['history'] = ulapd_api.get_dataset_history( dataset['name']) agreed_dataset_list.append(dataset) # Filter out confidential (e.g. DAD dataset) from listings page dataset_list = [d for d in dataset_list if 'confidential' != d['type']] freemium_licences = {} for dataset in user_access: if dataset == 'res_cov' or dataset == 'leases': dataset_licence = session['user']['datasets'][dataset][ 'licences'] if len(dataset_licence) == 1: licence_string = '{} licence'.format(dataset_licence[0]) freemium_licences[dataset] = licence_string else: start = ", ".join(dataset_licence[:-1]) licence_string = '{} and {} licences'.format( start, dataset_licence[-1]) freemium_licences[dataset] = licence_string return render_template('app/datasets/index.html', datasets_list=dataset_list, api_key=api_key, user_access=user_access, agreed_dataset_list=agreed_dataset_list, dps_session=session, user_has_activity=user_has_activity, freemium_licences=freemium_licences) except ApplicationError as e: raise ApplicationError( 'Something went wrong when retrieving the datasets - error: {}'. format(e))