Exemple #1
0
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.comments.models import Comment, CommentType
from catalog.modules.comments.parameters import AddCommentParameters
from catalog.modules.comments.schemas import CommentSchema
from catalog.modules.datasets.models import Dataset, License, Organization, Publisher, Reference, Source
from catalog.modules.datasets.parameters import AddDatasetParameters, PatchDatasetParameters
from catalog.modules.datasets.parameters import AddReferenceParameters, AddSourceParameters
from catalog.modules.datasets.schemas import DatasetSchema, ReferenceSchema, SourceSchema
from catalog.modules.stories.models import Story, StoryDatasetAssociation
from catalog.modules.stories.parameters import AddStoryParameters
from catalog.modules.stories.schemas import StorySchema
from catalog.modules.users.models import UserStarDataset

log = logging.getLogger(__name__)
api = Namespace('datasets', description="On datasets")


@api.route("/")
@api.login_required(oauth_scopes=['datasets:read'])
class DatasetResource(Resource):
    """
    Manipulations with datasets
    """

    @api.parameters(PaginationParameters())
    @api.response(DatasetSchema(many=True))
    def get(self, args):
        """
        List of all datasets
Exemple #2
0
import logging

from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.datasets.models import Organization
from catalog.modules.datasets.parameters import AddOrganizationParameters, UpdateOrganizationParameters
from catalog.modules.datasets.schemas import OrganizationSchema

log = logging.getLogger(__name__)
api = Namespace('organizations', description="On organizations")


@api.route('/')
@api.login_required(oauth_scopes=['datasets:read'])
class OrganizationResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(OrganizationSchema(many=True))
    def get(self, args):
        """
        List of organizations.
        """
        return Organization.query.offset(args['offset']).limit(args['limit'])

    @api.login_required(oauth_scopes=['datasets:write'])
    @api.parameters(AddOrganizationParameters())
    @api.response(OrganizationSchema())
    def post(self, args):
        """Create a new organization
Exemple #3
0
import logging

from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus import Resource
from catalog.modules.comments.models import Comment
from catalog.modules.comments.parameters import UpdateCommentParameters
from catalog.modules.comments.schemas import CommentSchema

log = logging.getLogger(__name__)
api = Namespace('comments', description="On comments")


@api.route('/<comment_id>')
@api.login_required(oauth_scopes=['comments:read'])
@api.resolve_object_by_model(Comment, 'comment', identity_arg_name='comment_id')
class SingleComment(Resource):
    @api.response(CommentSchema())
    def get(self, comment):
        """ Get a specific comment"""
        return comment

    @api.login_required(oauth_scopes=['comments:write'])
    @api.permission_required(
        permissions.OwnerRolePermission,
        kwargs_on_request=lambda kwargs: {'obj': kwargs['comment']}
    )
    @api.parameters(UpdateCommentParameters())
    @api.response(CommentSchema())
    def patch(self, args, comment):
Exemple #4
0
import logging

from catalog.extensions import db
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.datasets.models import License
from catalog.modules.datasets.parameters import AddLicenseParameters, UpdateLicenseParameters
from catalog.modules.datasets.schemas import LicenseSchema
from catalog.extensions import permissions

log = logging.getLogger(__name__)
api = Namespace('licenses', description="On licenses")


@api.route('/')
@api.login_required(oauth_scopes=['datasets:read'])
class LicenseResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(LicenseSchema(many=True))
    def get(self, args):
        """
        List of licenses.
        """
        return License.query.offset(args['offset']).limit(args['limit'])

    @api.login_required(oauth_scopes=['datasets:write'])
    @api.parameters(AddLicenseParameters())
    @api.response(LicenseSchema())
    def post(self, args):
        """Create a new license
Exemple #5
0
from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus import Resource
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.modules.comments.models import Comment, CommentType
from catalog.modules.comments.parameters import AddCommentParameters
from catalog.modules.comments.schemas import CommentSchema
from catalog.modules.stories.models import Story
from catalog.modules.stories.parameters import UpdateStoryParameters
from catalog.modules.stories.schemas import StorySchema
from catalog.modules.users.models import User, UserStarStory

log = logging.getLogger(__name__)
api = Namespace('stories', description="On stories")


@api.route('/')
@api.login_required(oauth_scopes=['stories:read'])
class StoryResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(StorySchema(many=True))
    def get(self, args):
        """
        List of all stories.

        :param args: query parameters
        :return: a list of stories starting from ``offset`` limited by
        ``limit`` parameter.
        """
Exemple #6
0
import logging

from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.datasets.models import Publisher
from catalog.modules.datasets.parameters import AddPublisherParameters, UpdatePublisherParameters
from catalog.modules.datasets.schemas import PublisherSchema

log = logging.getLogger(__name__)
api = Namespace('publishers', description="On publishers")


@api.route('/')
@api.login_required(oauth_scopes=['datasets:read'])
class PublisherResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(PublisherSchema(many=True))
    def get(self, args):
        """
        List of publishers.
        """
        return Publisher.query.offset(args['offset']).limit(args['limit'])

    @api.login_required(oauth_scopes=['datasets:write'])
    @api.parameters(AddPublisherParameters())
    @api.response(PublisherSchema())
    def post(self, args):
        """Create a new publisher
Exemple #7
0
--------------------------
"""

import logging
from http import HTTPStatus

from flask_login import current_user
from werkzeug import security

from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus import Resource
from catalog.modules.auth import schemas, parameters
from catalog.modules.auth.models import db, OAuth2Client

log = logging.getLogger(__name__)
api = Namespace('auth', description="Authentication")


@api.route('/oauth2_clients/')
@api.login_required(oauth_scopes=['auth:read'])
class OAuth2Clients(Resource):
    """
    Manipulations with OAuth2 clients.
    """
    @api.parameters(parameters.ListOAuth2ClientsParameters())
    @api.response(schemas.BaseOAuth2ClientSchema(many=True))
    def get(self, args):
        """
        List of OAuth2 Clients.

        Returns a list of OAuth2 Clients starting from ``offset`` limited by
Exemple #8
0
import logging

from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.datasets.models import Reference
from catalog.modules.datasets.parameters import UpdateReferenceParameters
from catalog.modules.datasets.schemas import ReferenceSchema

log = logging.getLogger(__name__)
api = Namespace('references', description="On dataset references")


@api.route('/')
@api.login_required(oauth_scopes=['datasets:read'])
class ReferenceResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(ReferenceSchema(many=True))
    def get(self, args):
        """
        List of references.
        """
        return Reference.query.offset(args['offset']).limit(args['limit'])


@api.route('/<ref_id>')
@api.login_required(oauth_scopes=['datasets:read'])
@api.resolve_object_by_model(Reference,
                             'reference',
Exemple #9
0
from flask_login import current_user

from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus import Resource
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.modules.comments.schemas import CommentSchema
from catalog.modules.datasets.schemas import DatasetSchema, ReferenceSchema, \
    SourceSchema, LicenseSchema, OrganizationSchema, PublisherSchema
from catalog.modules.stories.schemas import StorySchema
from catalog.modules.users import schemas, parameters
from catalog.modules.users.models import db, User

log = logging.getLogger(__name__)
api = Namespace('users', description="Users")


@api.route('/')
class Users(Resource):
    """
    Manipulations with users.
    """

    @api.login_required(oauth_scopes=['users:read'])
    @api.permission_required(permissions.AdminRolePermission())
    @api.parameters(PaginationParameters())
    @api.response(schemas.UserSchema(many=True))
    def get(self, args):
        """
        List of all users.
Exemple #10
0
import logging

from catalog.extensions import db
from catalog.extensions import permissions
from catalog.extensions.flask_restplus import Namespace
from catalog.extensions.flask_restplus.parameters import PaginationParameters
from catalog.extensions.flask_restplus import Resource
from catalog.modules.datasets.models import Source
from catalog.modules.datasets.parameters import UpdateSourceParameters
from catalog.modules.datasets.schemas import SourceSchema

log = logging.getLogger(__name__)
api = Namespace('sources', description="On dataset sources")


@api.route('/')
@api.login_required(oauth_scopes=['datasets:read'])
class SourceResource(Resource):
    @api.parameters(PaginationParameters())
    @api.response(SourceSchema(many=True))
    def get(self, args):
        """
        List of sources.
        """
        return Source.query.offset(args['offset']).limit(args['limit'])


@api.route('/<source_id>')
@api.login_required(oauth_scopes=['datasets:read'])
@api.resolve_object_by_model(Source, 'source', identity_arg_name='source_id')
class SingleSource(Resource):