class SearchProviderProxyResource(superdesk.Resource): schema = { 'guid': { 'type': 'string', 'required': True }, 'desk': superdesk.Resource.rel('desks', False, nullable=True), 'repo': superdesk.Resource.rel('search_providers', False, nullable=True), 'stage': superdesk.Resource.rel('stages', False, nullable=True), 'fetch_endpoint': { 'type': 'string', 'readonly': True }, 'search_provider': { 'type': 'string', 'readonly': True }, '_fetchable': { 'type': 'boolean', 'readonly': True }, } schema.update(get_schema()) resource_methods = ['GET', 'POST'] privileges = {'POST': 'archive'}
class GenerateHighlightsResource(superdesk.Resource): """Generate highlights item for given package.""" schema = { 'package': { # not setting relation here, we will fetch it anyhow 'type': 'string', 'required': True, }, 'preview': { 'type': 'boolean', 'default': False, }, 'export': { 'type': 'boolean', 'default': False, }, 'type': { 'type': 'string', 'readonly': True, }, } schema.update(get_schema(versioning=True)) resource_methods = ['POST'] item_methods = [] privileges = {'POST': 'highlights'}
class GenerateHighlightsResource(superdesk.Resource): """Generate highlights item for given package.""" schema = { "package": { # not setting relation here, we will fetch it anyhow "type": "string", "required": True, }, "preview": { "type": "boolean", "default": False, }, "export": { "type": "boolean", "default": False, }, "type": { "type": "string", "readonly": True, }, } schema.update(get_schema(versioning=True)) resource_methods = ["POST"] item_methods = [] privileges = {"POST": "highlights"}
class SearchProviderProxyResource(superdesk.Resource): schema = { "guid": { "type": "string", "required": True }, "desk": superdesk.Resource.rel("desks", False, nullable=True), "repo": superdesk.Resource.rel("search_providers", False, nullable=True), "stage": superdesk.Resource.rel("stages", False, nullable=True), "fetch_endpoint": { "type": "string", "readonly": True }, "search_provider": { "type": "string", "readonly": True }, "_fetchable": { "type": "boolean", "readonly": True }, } schema.update(get_schema()) resource_methods = ["GET", "POST"] privileges = {"POST": "archive"}
class SearchResource(superdesk.Resource): resource_methods = ["GET"] item_methods = ["GET"] item_url = item_url schema = get_schema(versioning=True) schema.update(published_item_fields) datasource = {"projection": {field: 1 for field in list(schema.keys()) + ["archive_item"]}} privileges = {}
class SearchResource(superdesk.Resource): resource_methods = ['GET'] item_methods = ['GET'] item_url = item_url schema = get_schema(versioning=True) schema.update(published_item_fields) datasource = { 'projection': {field: 1 for field in list(schema.keys()) + ['archive_item']} }
class LegalArchiveVersionsResource(LegalResource, ArchiveVersionsResource): endpoint_name = LEGAL_ARCHIVE_VERSIONS_NAME resource_title = endpoint_name schema = get_schema(versioning=True) datasource = { 'source': LEGAL_ARCHIVE_VERSIONS_NAME, 'projection': { 'old_version': 0, 'last_version': 0 } }
class LegalArchiveHistoryResource(LegalResource, ArchiveHistoryResource): endpoint_name = LEGAL_ARCHIVE_HISTORY_NAME resource_title = endpoint_name schema = get_schema() schema.update( { "update": {"type": "dict", "schema": {}}, } ) datasource = {"source": LEGAL_ARCHIVE_HISTORY_NAME} mongo_indexes = {"item_id": ([("item_id", 1)], {"background": True})}
class LegalArchiveHistoryResource(LegalResource, ArchiveHistoryResource): endpoint_name = LEGAL_ARCHIVE_HISTORY_NAME resource_title = endpoint_name schema = get_schema() schema.update({ 'update': { 'type': 'dict', 'schema': {} }, }) datasource = {'source': LEGAL_ARCHIVE_HISTORY_NAME} mongo_indexes = {'item_id': ([('item_id', 1)], {'background': True})}
class ArchiveLockResource(Resource): endpoint_name = 'archive_lock' url = 'archive/<{0}:item_id>/lock'.format(item_url) schema = get_schema(versioning=True) schema.update({ '_links': { 'type': 'dict' }, }) datasource = {'source': 'archive'} resource_methods = ['GET', 'POST'] resource_title = endpoint_name privileges = {'POST': 'archive'}
class ArchiveLockResource(Resource): endpoint_name = "archive_lock" url = "archive/<{0}:item_id>/lock".format(item_url) schema = get_schema(versioning=True) schema.update( { "_links": {"type": "dict"}, } ) datasource = {"source": "archive"} resource_methods = ["GET", "POST"] resource_title = endpoint_name privileges = {"POST": "archive"}
class SavedSearchItemsResource(Resource): """Saved search items Since Eve doesn't support more than one URL for a resource, this resource is being created to fetch items based on the search string in the Saved Search document. """ endpoint_name = 'saved_search_items' schema = get_schema() resource_title = endpoint_name url = 'saved_searches/<regex("[a-zA-Z0-9:\\-\\.]+"):saved_search_id>/items' resource_methods = ['GET'] item_methods = []
class FetchResource(Resource): endpoint_name = 'fetch' resource_title = endpoint_name schema = get_schema(True) schema.update({ 'desk': Resource.rel('desks', False, required=True), 'stage': Resource.rel('stages', False, nullable=True), 'macro': {'type': 'string'}, '_links': {'type': 'dict'}, }) url = 'ingest/<{0}:id>/fetch'.format(item_url) resource_methods = ['POST'] item_methods = [] privileges = {'POST': 'fetch'}
class AssignmentsContentResource(Resource): endpoint_name = 'assignments_content' resource_title = endpoint_name url = 'assignments/content' schema = get_schema(versioning=True) schema.update({ 'assignment_id': { 'type': 'string', 'required': True }, 'template_name': { 'type': 'string', 'required': False } }) resource_methods = ['POST'] item_methods = [] privileges = {'POST': 'archive'}
class LegalArchiveResource(LegalResource, ArchiveResource): endpoint_name = LEGAL_ARCHIVE_NAME resource_title = endpoint_name schema = get_schema() datasource = {"source": LEGAL_ARCHIVE_NAME} versioning = True mongo_indexes = ArchiveResource.mongo_indexes.copy() # type: Any mongo_indexes.update( { "text": ( [ ("headline", "text"), ("slugline", "text"), ("description_text", "text"), ], TEXT_INDEX_OPTIONS, ), } )
class FetchResource(Resource): endpoint_name = "fetch" resource_title = endpoint_name schema = get_schema(True) schema.update( { "desk": Resource.rel("desks", False, required=True), "stage": Resource.rel("stages", False, nullable=True), "macro": {"type": "string"}, "_links": {"type": "dict"}, } ) url = "ingest/<{0}:id>/fetch".format(item_url) resource_methods = ["POST"] item_methods = [] privileges = {"POST": "fetch"}
class PlanningArticleExportResource(Resource): schema = get_schema(versioning=True) schema.update({ 'items': { 'type': 'list', 'required': True, }, 'desk': Resource.rel('desks', nullable=True), 'template': { 'type': 'string' }, 'type': { 'type': 'string', 'default': 'planning', }, 'article_template': Resource.rel('content_templates', nullable=True) }) item_methods = [] resource_methods = ['POST'] privileges = {'POST': 'planning'}
class LegalResource(Resource): resource_methods = ['GET'] item_methods = ['GET'] privileges = {'GET': LEGAL_ARCHIVE_NAME} mongo_prefix = 'LEGAL_ARCHIVE' schema = get_schema()
class LegalArchiveVersionsResource(LegalResource, ArchiveVersionsResource): endpoint_name = LEGAL_ARCHIVE_VERSIONS_NAME resource_title = endpoint_name schema = get_schema(versioning=True) datasource = {"source": LEGAL_ARCHIVE_VERSIONS_NAME, "projection": {"old_version": 0, "last_version": 0}}
class LegalResource(Resource): resource_methods = ["GET"] item_methods = ["GET"] privileges = {"GET": LEGAL_ARCHIVE_NAME} mongo_prefix = "LEGAL_ARCHIVE" schema = get_schema()
def __init__(self, data_layer): BaseModel.__init__(self, "archive", data_layer, get_schema(versioning=True), ItemValidator())
class LegalArchiveResource(LegalResource, ArchiveResource): endpoint_name = LEGAL_ARCHIVE_NAME resource_title = endpoint_name schema = get_schema() datasource = {'source': LEGAL_ARCHIVE_NAME} versioning = True
class WorkqueueResource(superdesk.Resource): endpoint_name = 'workqueue' datasource = {'source': 'archive'} schema = get_schema() item_methods = ['GET']