def test_get_package_total_downloads(self): dataset = create_dataset() dataset_id = dataset['id'] resource = factories.Resource(package_id=dataset_id, url='http://google.com') resource2 = factories.Resource(package_id=dataset_id, url='http://google.com') increment_downloads(resource['id']) increment_downloads(resource2['id']) result = helpers.get_package_total_downloads(dataset_id) assert result == 2
def test_update_package_stats(self): dataset = create_dataset() test_file = StringIO.StringIO() test_file.write(''' "info": { "title": "BC Data Catalogue API", "description": "This API provides information about datasets in the BC Data Catalogue.", "termsOfService": "http://www.data.gov.bc.ca/local/dbc/docs/license/API_Terms_of_Use.pdf", "contact": { "name": "Data BC", "url": "http://data.gov.bc.ca/", "email": "" }, "license": { "name": "Open Government License - British Columbia", "url": "http://www.data.gov.bc.ca/local/dbc/docs/license/OGL-vbc2.0.pdf" }, "version": "3.0.0" } ''') test_resource = FakeFileStorage(test_file, 'test.json') resource = factories.Resource(package_id=dataset['id'], url='http://www.google.com', upload=test_resource) increment_downloads(resource['id']) increment_downloads(resource['id']) actions.update_package_stats(dataset['id']) solr_base_url = config['solr_url'] url = '{0}/select?q=*:*&fq=id:{1}&wt=json'.format( solr_base_url, dataset['id']) result = requests.get(url) response = result.json().get('response') assert response.get('numFound') == 1 assert response.get('docs')[0].get( 'extras_total_downloads') == '000000000000000000000002' assert response.get('docs')[0].get( 'extras_file_size') == '000000000000000000000669'
def increment_downloads_for_resource(context, data_dict): """ This function will increment the total downloads for a resource :param resource_id: the id from the resource :type resource_id: str :returns: message that the action was successful :rtype: str """ resource_id = data_dict.get('resource_id') increment_downloads(resource_id) # Also, update the stats in dataset indexed metadata try: resource = get_action('resource_show')({'ignore_auth': True}, {'id': resource_id}) increment_total_downloads_solr(resource['package_id']) except Exception as e: log.debug(e) import traceback traceback.print_exc() return 'success'
def test_get_resource_stats(self): dataset = create_dataset() resource = factories.Resource(package_id=dataset['id'], url='http://google.com') resource_id = resource['id'] increment_downloads(resource_id) increment_downloads(resource_id) increment_downloads(resource_id) result = helpers.get_resource_stats(resource_id) assert result['downloads'] == 3
def test_get_package_stats(self): dataset = create_dataset() test_file = StringIO.StringIO() test_file.write(''' "info": { "title": "BC Data Catalogue API", "description": "This API provides information about datasets in the BC Data Catalogue.", "termsOfService": "http://www.data.gov.bc.ca/local/dbc/docs/license/API_Terms_of_Use.pdf", "contact": { "name": "Data BC", "url": "http://data.gov.bc.ca/", "email": "" }, "license": { "name": "Open Government License - British Columbia", "url": "http://www.data.gov.bc.ca/local/dbc/docs/license/OGL-vbc2.0.pdf" }, "version": "3.0.0" } ''') test_resource = FakeFileStorage(test_file, 'test.json') resource = factories.Resource(package_id=dataset['id'], url='http://www.google.com', upload=test_resource) resource2 = factories.Resource(package_id=dataset['id'], url='http://www.yahoo.com') increment_downloads(resource['id']) increment_downloads(resource['id']) increment_downloads(resource2['id']) result = actions.get_package_stats(dataset['id']) assert result['file_size'] == 669 assert result['total_downloads'] == 3
except Exception, ex: log.error('An error occured while preparing zip archive. Error: %s' % ex) raise zip_id = file_name try: package = toolkit.get_action('package_show')({}, {'id': package_id}) package_name = package['name'] zip_id += '::{name}'.format(name=package_name) except: pass if resourceArchived: for resource_id in resource_ids: increment_downloads(resource_id) return {'zip_id': zip_id} os.remove(file_path) return {'zip_id': None} def safe_override(action): """Decorator for save override of standard CKAN actions. When overriding CKAN actions you must be aware of the extensions order and whether some other extension have already registered the action. When decorated with this decorator, you can provide a chained implementation for the given action withour checking if there are prior extensions or just the CKAN core action.