Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.webapps.galaxy.api.quotas

"""
API operations on Quota objects.
"""
import logging

from fastapi import Path
from fastapi.param_functions import Body

from galaxy import (
    util,
    web,
)
from galaxy.managers.context import ProvidesUserContext
from galaxy.managers.quotas import QuotasService
from galaxy.quota._schema import (
    CreateQuotaParams,
    CreateQuotaResult,
    DeleteQuotaPayload,
    QuotaDetails,
    QuotaSummaryList,
    UpdateQuotaParams,
)
from galaxy.schema.fields import EncodedDatabaseIdField
from . import (
    BaseGalaxyAPIController,
    depends,
    DependsOnTrans,
    Router,
)

log = logging.getLogger(__name__)


router = Router(tags=['quotas'])


QuotaIdPathParam: EncodedDatabaseIdField = Path(
    ...,  # Required
    title="Quota ID",
    description="The encoded identifier of the Quota."
)


[docs]@router.cbv class FastAPIQuota: service: QuotasService = depends(QuotasService)
[docs] @router.get( '/api/quotas', summary="Displays a list with information of quotas that are currently active.", require_admin=True, ) def index( self, trans: ProvidesUserContext = DependsOnTrans, ) -> QuotaSummaryList: """Displays a list with information of quotas that are currently active.""" return self.service.index(trans)
[docs] @router.get( '/api/quotas/deleted', summary="Displays a list with information of quotas that have been deleted.", require_admin=True, ) def index_deleted( self, trans: ProvidesUserContext = DependsOnTrans, ) -> QuotaSummaryList: """Displays a list with information of quotas that have been deleted.""" return self.service.index(trans, deleted=True)
[docs] @router.get( '/api/quotas/{id}', summary="Displays details on a particular active quota.", require_admin=True, ) def show( self, trans: ProvidesUserContext = DependsOnTrans, id: EncodedDatabaseIdField = QuotaIdPathParam ) -> QuotaDetails: """Displays details on a particular active quota.""" return self.service.show(trans, id)
[docs] @router.get( '/api/quotas/deleted/{id}', summary="Displays details on a particular quota that has been deleted.", require_admin=True, ) def show_deleted( self, trans: ProvidesUserContext = DependsOnTrans, id: EncodedDatabaseIdField = QuotaIdPathParam, ) -> QuotaDetails: """Displays details on a particular quota that has been deleted.""" return self.service.show(trans, id, deleted=True)
[docs] @router.post( '/api/quotas', summary="Creates a new quota.", require_admin=True, ) def create( self, payload: CreateQuotaParams, trans: ProvidesUserContext = DependsOnTrans, ) -> CreateQuotaResult: """Creates a new quota.""" return self.service.create(trans, payload)
[docs] @router.put( '/api/quotas/{id}', summary="Updates an existing quota.", require_admin=True, ) def update( self, payload: UpdateQuotaParams, id: EncodedDatabaseIdField = QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, ) -> str: """Updates an existing quota.""" return self.service.update(trans, id, payload)
[docs] @router.delete( '/api/quotas/{id}', summary="Deletes an existing quota.", require_admin=True, ) def delete( self, id: EncodedDatabaseIdField = QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, payload: DeleteQuotaPayload = Body(None), # Optional ) -> str: """Deletes an existing quota.""" return self.service.delete(trans, id, payload)
[docs] @router.post( '/api/quotas/deleted/{id}/undelete', summary="Restores a previously deleted quota.", require_admin=True, ) def undelete( self, id: EncodedDatabaseIdField = QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, ) -> str: """Restores a previously deleted quota.""" return self.service.undelete(trans, id)
[docs]class QuotaAPIController(BaseGalaxyAPIController): service: QuotasService = depends(QuotasService)
[docs] @web.require_admin @web.expose_api def index(self, trans, deleted='False', **kwd): """ GET /api/quotas GET /api/quotas/deleted Displays a collection (list) of quotas. """ deleted = util.string_as_bool(deleted) return self.service.index(trans, deleted)
[docs] @web.require_admin @web.expose_api def show(self, trans, id, deleted='False', **kwd): """ GET /api/quotas/{encoded_quota_id} GET /api/quotas/deleted/{encoded_quota_id} Displays information about a quota. """ deleted = util.string_as_bool(deleted) return self.service.show(trans, id, deleted)
[docs] @web.require_admin @web.expose_api def create(self, trans, payload, **kwd): """ POST /api/quotas Creates a new quota. """ params = CreateQuotaParams(**payload) return self.service.create(trans, params)
[docs] @web.require_admin @web.expose_api def update(self, trans, id, payload, **kwd): """ PUT /api/quotas/{encoded_quota_id} Modifies a quota. """ params = UpdateQuotaParams(**payload) return self.service.update(trans, id, params)
[docs] @web.require_admin @web.expose_api def delete(self, trans, id, **kwd): """ DELETE /api/quotas/{encoded_quota_id} Deletes a quota """ # a request body is optional here payload = DeleteQuotaPayload(**kwd.get('payload', {})) return self.service.delete(trans, id, payload)
[docs] @web.require_admin @web.expose_api def undelete(self, trans, id, **kwd): """ POST /api/quotas/deleted/{encoded_quota_id}/undelete Undeletes a quota """ return self.service.undelete(trans, id)