Beispiel #1
0
preview_item_fields = api.clone(
    'HarvestItemPreview', item_fields, {
        'dataset':
        fields.Nested(preview_dataset_fields,
                      description='The processed dataset',
                      allow_null=True),
    })

preview_job_fields = api.clone(
    'HarvestJobPreview', job_fields, {
        'items':
        fields.List(fields.Nested(preview_item_fields),
                    description='The job collected items'),
    })

source_parser = api.page_parser()
source_parser.add_argument('owner',
                           type=str,
                           location='args',
                           help='The organization or user ID to filter on')


@ns.route('/sources/', endpoint='harvest_sources')
class SourcesAPI(API):
    @api.doc('list_harvest_sources', parser=source_parser)
    @api.marshal_list_with(source_page_fields)
    def get(self):
        '''List all harvest sources'''
        args = source_parser.parse_args()
        return actions.paginate_sources(args.get('owner'),
                                        page=args['page'],
Beispiel #2
0
                      description='The user who performed the action',
                      readonly=True),
        'organization':
        fields.Nested(org_ref_fields,
                      allow_null=True,
                      readonly=True,
                      description='The organization who performed the action'),
        # 'related_to'
        # related_to = db.ReferenceField(db.DomainModel, required=True)
        'created_at':
        fields.ISODateTime(description='When the action has been performed',
                           readonly=True),
        'kwargs':
        fields.Raw(description='Some action specific context'),
    })

activity_page_fields = api.model('ActivityPage', fields.pager(activity_fields))

activity_parser = api.page_parser()


@api.route('/site/activity', endpoint='site_activity')
class SiteActivityAPI(API):
    @api.doc('site_activity', parser=activity_parser)
    @api.marshal_list_with(activity_page_fields)
    def get(self):
        '''Fetch site activity'''
        args = activity_parser.parse_args()
        return Activity.objects.order_by('-created').paginate(
            args['page'], args['page_size'])
Beispiel #3
0
                           readonly=True),
        'uri':
        fields.UrlFor('api.post',
                      lambda o: {'post': o},
                      description='The post API URI',
                      readonly=True),
        'page':
        fields.UrlFor('posts.show',
                      lambda o: {'post': o},
                      description='The post page URL',
                      readonly=True),
    })

post_page_fields = api.model('PostPage', fields.pager(post_fields))

parser = api.page_parser()


@ns.route('/', endpoint='posts')
class PostsAPI(API):
    @api.doc('list_posts', model=post_page_fields, parser=parser)
    @api.marshal_with(post_page_fields)
    def get(self):
        '''List all posts'''
        args = parser.parse_args()
        return Post.objects.order_by('-created').paginate(
            args['page'], args['page_size'])

    @api.doc('create_post', responses={400: 'Validation error'})
    @api.secure(admin_permission)
    @api.expect(post_fields)
Beispiel #4
0
    'owner': fields.Nested(user_ref_fields, description='The owner user', readonly=True, allow_null=True),
    'private': fields.Boolean(description='Is the post visible'),

    'created_at': fields.ISODateTime(description='The post creation date', readonly=True),
    'last_modified': fields.ISODateTime(description='The post last modification date', readonly=True),

    'uri': fields.UrlFor('api.post', lambda o: {'post': o},
        description='The post API URI', readonly=True),
    'page': fields.UrlFor('posts.show', lambda o: {'post': o},
        description='The post page URL', readonly=True),
})


post_page_fields = api.model('PostPage', fields.pager(post_fields))

parser = api.page_parser()


@ns.route('/', endpoint='posts')
class PostsAPI(API):

    @api.doc('list_posts', model=post_page_fields, parser=parser)
    @api.marshal_with(post_page_fields)
    def get(self):
        '''List all posts'''
        args = parser.parse_args()
        return Post.objects.order_by('-created').paginate(args['page'], args['page_size'])

    @api.doc('create_post', responses={400: 'Validation error'})
    @api.secure(admin_permission)
    @api.expect(post_fields)
Beispiel #5
0
            required=True,
        ),
        "related_to_url": fields.String(
            attribute="related_to.display_url", description="The activity target model", required=True
        ),
        "created_at": fields.ISODateTime(description="When the action has been performed", readonly=True),
        "label": fields.String(description="The label of the activity", required=True),
        "key": fields.String(description="The key of the activity", required=True),
        "icon": fields.String(description="The icon of the activity", required=True),
        "kwargs": fields.Raw(description="Some action specific context"),
    },
)

activity_page_fields = api.model("ActivityPage", fields.pager(activity_fields))

activity_parser = api.page_parser()
activity_parser.add_argument("user", type=unicode, help="Filter activities for that particular user", location="args")
activity_parser.add_argument(
    "organization", type=unicode, help="Filter activities for that particular organization", location="args"
)


@api.route("/activity", endpoint="activity")
class SiteActivityAPI(API):
    @api.doc("activity", parser=activity_parser)
    @api.marshal_list_with(activity_page_fields)
    def get(self):
        """Fetch site activity, optionally filterd by user of org."""
        args = activity_parser.parse_args()
        qs = Activity.objects
Beispiel #6
0
        org.save()
        return {'image': org.logo}

    @api.secure
    @api.doc('resize_organization_logo')
    @api.expect(image_parser
                )  # Swagger 2.0 does not support formData at path level
    @api.marshal_with(uploaded_image_fields)
    def put(self, org):
        '''Set the logo BBox'''
        EditOrganizationPermission(org).test()
        parse_uploaded_image(org.logo)
        return {'image': org.logo}


dataset_parser = api.page_parser()
dataset_parser.add_argument('sort',
                            type=str,
                            default='-created',
                            location='args',
                            help='The sorting attribute')


@ns.route('/<org:org>/datasets/', endpoint='org_datasets')
class OrgDatasetsAPI(API):
    sort_mapping = {
        'created': 'created_at',
        'views': 'metrics.views',
        'updated': 'last_modified',
        'reuses': 'metrics.reuses',
        'followers': 'metrics.followers',
Beispiel #7
0
        parse_uploaded_image(org.logo)
        org.save()
        return {'image': org.logo}

    @api.secure
    @api.doc('resize_organization_logo')
    @api.expect(image_parser)  # Swagger 2.0 does not support formData at path level
    @api.marshal_with(uploaded_image_fields)
    def put(self, org):
        '''Set the logo BBox'''
        EditOrganizationPermission(org).test()
        parse_uploaded_image(org.logo)
        return {'image': org.logo}


dataset_parser = api.page_parser()
dataset_parser.add_argument(
    'sort', type=str, default='-created', location='args',
    help='The sorting attribute')


@ns.route('/<org:org>/datasets/', endpoint='org_datasets')
class OrgDatasetsAPI(API):
    sort_mapping = {
        'created': 'created_at',
        'views': 'metrics.views',
        'updated': 'last_modified',
        'reuses': 'metrics.reuses',
        'followers': 'metrics.followers',
    }
Beispiel #8
0
        'datasets.show', lambda o: {'dataset': 'not-available'},
        description='The dataset page URL (fake)'),
})

preview_item_fields = api.clone('HarvestItemPreview', item_fields, {
    'dataset': fields.Nested(preview_dataset_fields,
                             description='The processed dataset',
                             allow_null=True),
})

preview_job_fields = api.clone('HarvestJobPreview', job_fields, {
    'items': fields.List(fields.Nested(preview_item_fields),
                         description='The job collected items'),
})

source_parser = api.page_parser()
source_parser.add_argument('owner', type=str, location='args',
                           help='The organization or user ID to filter on')


@ns.route('/sources/', endpoint='harvest_sources')
class SourcesAPI(API):
    @api.doc('list_harvest_sources')
    @api.expect(source_parser)
    @api.marshal_list_with(source_page_fields)
    def get(self):
        '''List all harvest sources'''
        args = source_parser.parse_args()
        return actions.paginate_sources(args.get('owner'),
                                        page=args['page'],
                                        page_size=args['page_size'])