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
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
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):
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
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. """
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
-------------------------- """ 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
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',
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.
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):