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

"""
API operations on Quota objects.
"""

import logging

from fastapi.param_functions import Body

from galaxy.managers.context import ProvidesUserContext
from galaxy.quota._schema import (
    CreateQuotaParams,
    CreateQuotaResult,
    DeleteQuotaPayload,
    QuotaDetails,
    QuotaSummaryList,
    UpdateQuotaParams,
)
from galaxy.webapps.galaxy.api import (
    depends,
    DependsOnTrans,
    Router,
)
from galaxy.webapps.galaxy.api.common import QuotaIdPathParam
from galaxy.webapps.galaxy.services.quotas import QuotasService

log = logging.getLogger(__name__)


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


[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}", name="quota", summary="Displays details on a particular active quota.", require_admin=True, ) def show( self, id: QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, ) -> QuotaDetails: """Displays details on a particular active quota.""" return self.service.show(trans, id)
[docs] @router.get( "/api/quotas/deleted/{id}", name="deleted_quota", summary="Displays details on a particular quota that has been deleted.", require_admin=True, ) def show_deleted( self, id: QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, ) -> 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, id: QuotaIdPathParam, payload: UpdateQuotaParams, 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: 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/{id}/purge", summary="Purges a previously deleted quota.", require_admin=True, ) def purge(self, id: QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans) -> str: return self.service.purge(trans, id)
[docs] @router.post( "/api/quotas/deleted/{id}/undelete", summary="Restores a previously deleted quota.", require_admin=True, ) def undelete( self, id: QuotaIdPathParam, trans: ProvidesUserContext = DependsOnTrans, ) -> str: """Restores a previously deleted quota.""" return self.service.undelete(trans, id)