fields.Markdown(description='The resource markdown description'), 'type': fields.String(description=('Whether the resource is an uploaded file, ' 'a remote file or an API'), required=True, enum=RESOURCE_TYPES.keys()), 'format': fields.String(description='The resource format', required=True), 'url': fields.String(description='The resource URL', required=True), 'checksum': fields.Nested(checksum_fields, allow_null=True, description='A checksum to validate file validity'), 'size': fields.Integer(description='The resource file size in bytes'), 'mime': fields.String(description='The resource mime type'), 'created_at': fields.ISODateTime(readonly=True, description='The resource creation date'), 'published': fields.ISODateTime(description='The resource publication date'), 'last_modified': fields.ISODateTime(attribute='modified', readonly=True, description='The resource last modification date'), 'metrics': fields.Raw(description='The resource metrics', readonly=True), })
'page': fields.UrlFor( 'datasets.show', lambda o: {'dataset': o}, description='The dataset page URL', required=True, fallback_endpoint='api.dataset'), 'quality': fields.Raw(description='The dataset quality', readonly=True), 'last_update': fields.ISODateTime( description='The resources last modification date', required=True), }, mask=DEFAULT_MASK_APIV2) resource_page_fields = apiv2.model('ResourcePage', { 'data': fields.List( fields.Nested(resource_fields, description='The dataset resources') ), 'next_page': fields.String(), 'previous_page': fields.String(), 'page': fields.Integer(), 'page_size': fields.Integer(), 'total': fields.Integer() }) @ns.route('/<dataset:dataset>/', endpoint='dataset', doc=common_doc) @apiv2.response(404, 'Dataset not found') @apiv2.response(410, 'Dataset has been deleted') class DatasetAPI(API): @apiv2.doc('get_dataset') @apiv2.marshal_with(dataset_fields) def get(self, dataset): '''Get a dataset given its identifier''' if dataset.deleted and not DatasetEditPermission(dataset).can(): apiv2.abort(410, 'Dataset has been deleted')
from .forms import CrontabTaskForm, IntervalTaskForm from .models import PeriodicTask, PERIODS ns = api.namespace('workers', 'Asynchronous workers related operations', path='') crontab_fields = api.model('Crontab', { 'minute': fields.String(description='Cron expression for minute', required=True, default='*'), 'hour': fields.String(description='Cron expression for hour', required=True, default='*'), 'day_of_week': fields.String(description='Cron expression for day of week', required=True, default='*'), 'day_of_month': fields.String(description='Cron expression for day of month', required=True, default='*'), 'month_of_year': fields.String(description='Cron expression for month of year', required=True, default='*'), }) interval_fields = api.model('Interval', { 'every': fields.Integer(description='The interval without unit', required=True), 'period': fields.String(description='The period/interval type', required=True, enum=PERIODS), }) job_fields = api.model('Job', { 'id': fields.String(description='The job unique identifier', readonly=True), 'name': fields.String(description='The job unique name', required=True), 'description': fields.String(description='The job description'), 'task': fields.String(description='The task name', required=True, enum=[job.name for job in schedulables()]), 'crontab': fields.Nested(crontab_fields, allow_null=True), 'interval': fields.Nested(interval_fields, allow_null=True), 'args': fields.List(fields.Raw, description='The job execution arguments', default=[]), 'kwargs': fields.Raw(description='The job execution keyword arguments', default={}), 'schedule': fields.String(attribute='schedule_display', description='The schedule display', readonly=True), 'last_run_at': fields.ISODateTime(description='The last job execution date', readonly=True), 'last_run_id': fields.String(description='The last execution task id', readonly=True),
'id': fields.String(description='The level identifier', required=True), 'name': fields.String(description='The level name', required=True), 'parents': fields.List(fields.String, description='The parent levels'), }) zone_fields = api.model('GeoZone', { 'id': fields.String(description='The zone identifier', required=True), 'name': fields.String(description='The zone name', required=True), 'code': fields.String( description='The zone unique code in the level', required=True), 'level': fields.String(description='The zone level', required=True), 'parents': fields.List( fields.String, description='Every known parent zones'), 'keys': fields.Raw( description='Some arbitry key-value identifying the zone'), 'population': fields.Integer( description='An estimated/approximative population'), 'area': fields.Integer(description='An estimated/approximative area'), 'geom': fields.Nested( geojson, description='A multipolygon for the whole coverage'), }) granularity_fields = api.model('GeoGranularity', { 'id': fields.String( description='The granularity identifier', required=True), 'name': fields.String(description='The granularity name', required=True), }) spatial_coverage_fields = api.model('SpatialCoverage', { 'geom': fields.Nested( geojson, allow_null=True,
'api.user', lambda o: {'user': o}, description='The user API URI', required=True), }) me_fields = api.inherit('Me', user_fields, { 'email': fields.String(description='The user email', required=True), 'apikey': fields.String(description='The user API Key', readonly=True), }) me_metrics_fields = api.model('MyMetrics', { 'id': fields.String( description='The user identifier', required=True), 'resources_availability': fields.Float( description="The user's resources availability percentage", readonly=True), 'datasets_org_count': fields.Integer( description="The user's orgs datasets number", readonly=True), 'followers_org_count': fields.Integer( description="The user's orgs followers number", readonly=True), 'datasets_count': fields.Integer( description="The user's datasets number", readonly=True), 'followers_count': fields.Integer( description="The user's followers number", readonly=True), }) apikey_fields = api.model('ApiKey', { 'apikey': fields.String(description='The user API Key', readonly=True), }) user_page_fields = api.model('UserPage', fields.pager(user_fields)) user_suggestion_fields = api.model('UserSuggestion', {
me_fields = api.inherit( 'Me', user_fields, { 'apikey': fields.String(description='The user API Key', readonly=True), }) me_metrics_fields = api.model( 'MyMetrics', { 'id': fields.String(description='The user identifier', required=True), 'resources_availability': fields.Float( description="The user's resources availability percentage", readonly=True), 'datasets_org_count': fields.Integer(description="The user's orgs datasets number", readonly=True), 'followers_org_count': fields.Integer(description="The user's orgs followers number", readonly=True), 'datasets_count': fields.Integer(description="The user's datasets number", readonly=True), 'followers_count': fields.Integer(description="The user's followers number", readonly=True), }) apikey_fields = api.model( 'ApiKey', { 'apikey': fields.String(description='The user API Key', readonly=True), })
feature_collection_fields = api.model( 'GeoJSONFeatureCollection', { 'type': fields.String(required=True, enum=['FeatureCollection']), 'features': api.as_list(fields.Nested(feature_fields)) }) level_fields = api.model( 'TerritoryLevel', { 'id': fields.String(description='The level identifier', required=True), 'label': fields.String(description='The level name', required=True), 'position': fields.Integer( description='The position in the level tree (top is zero)', min=0, required=True), 'parent': fields.String(description='The parent level'), 'children': fields.List(fields.String, description='The known children levels'), }) granularity_fields = api.model( 'SpatialGranularity', { 'id': fields.String(description='The granularity identifier', required=True), 'label': fields.String(description='The granularity name', required=True), })
required=True), }, mask=DEFAULT_MASK_APIV2) resource_page_fields = apiv2.model( 'ResourcePage', { 'data': fields.List( fields.Nested(resource_fields, description='The dataset resources')), 'next_page': fields.String(), 'previous_page': fields.String(), 'page': fields.Integer(), 'page_size': fields.Integer(), 'total': fields.Integer() }) dataset_page_fields = apiv2.model( 'DatasetPage', fields.pager(dataset_fields), mask='data{{{0}}},*'.format(DEFAULT_MASK_APIV2)) specific_resource_fields = apiv2.model( 'SpecificResource', { 'resource': fields.Nested(resource_fields, description='The dataset resources'),