Skip to content
Snippets Groups Projects
observing_capabilities.py 4.02 KiB
Newer Older
Andrzej Obracaj's avatar
Andrzej Obracaj committed
from flask import Blueprint, request, abort
from flask_login import login_required
from web.helpers.responses import Responses
from .observing_capabilities_handler import ObservingCapabilitiesHandler
from .delete_handler import DeleteHandler
from .update_handler import UpdateHandler
Andrzej Obracaj's avatar
Andrzej Obracaj committed
from .meta_handler import MetaHandler
Andrzej Obracaj's avatar
Andrzej Obracaj committed
from web.helpers.model_binder import ModelBinder as Binder
from werkzeug.exceptions import InternalServerError
from web.helpers.permission_enum import PermissionEnum
from web.helpers.accesscontrol import AccessHandler
Andrzej Obracaj's avatar
Andrzej Obracaj committed

observing_capabilities = Blueprint("management_observing_capabilities", __name__)

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route("/api/management/observing_capabilities", methods=["GET"])
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def observing_capabilities_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = ObservingCapabilitiesHandler.handle()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))
Andrzej Obracaj's avatar
Andrzej Obracaj committed

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/pt", methods=["GET"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def pt_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = MetaHandler.handlePT()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/rn", methods=["GET"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def rn_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = MetaHandler.handleRN()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/sp", methods=["GET"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def sp_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = MetaHandler.handleSP()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/pr", methods=["GET"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def pr_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = MetaHandler.handlePR()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/s", methods=["GET"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def s_get():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    try:
        observing_capabilities = MetaHandler.handleS()
        return Responses.json(observing_capabilities)
    except Exception as e:
        raise InternalServerError(description=str(e))
Andrzej Obracaj's avatar
Andrzej Obracaj committed

Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed

@observing_capabilities.route(
    "/api/management/observing_capabilities/delete", methods=["POST"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def observing_capabilities_delete():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    p = Binder.bind_and_validate(DeleteHandler.get_validation_rules())
    rows = 0

    try:
        rows = DeleteHandler.handle(p)
    except Exception as e:
        raise InternalServerError(description=str(e))

    if rows == 0:
        raise BadRequest(description="Could not delete.")

    return Responses.json({"deleted": rows})


Rune Åvar Ødegård's avatar
Rune Åvar Ødegård committed
@observing_capabilities.route(
    "/api/management/observing_capabilities/update", methods=["POST"]
)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
@login_required
def observing_capabilities_update():
    AccessHandler.has_permission(PermissionEnum.observations)
Andrzej Obracaj's avatar
Andrzej Obracaj committed
    p = Binder.bind_and_validate(UpdateHandler.get_validation_rules())
    rows = 0

    try:
        rows = UpdateHandler.handle(p)
    except Exception as e:
        raise InternalServerError(description=str(e))

    if rows == 0:
        raise BadRequest(description="Could not update.")

    return Responses.json({"updated": rows})