Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions src/actinia_module_plugin/api/modules/grass.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
__copyright__ = "Copyright 2019 - 2022, mundialis GmbH & Co. KG"
__maintainer__ = "mundialis GmbH & Co. KG"


from actinia_rest_lib.resource_base import ResourceBase
from flask import jsonify, make_response, request
from flask_restful_swagger_2 import swagger
from actinia_rest_lib.resource_base import ResourceBase


from actinia_module_plugin.apidocs import modules
from actinia_module_plugin.core.filter import filter
Expand All @@ -28,8 +28,8 @@
from actinia_module_plugin.core.modules.grass import createGrassModule
from actinia_module_plugin.core.modules.grass import createFullModuleList
from actinia_module_plugin.core.modules.grass import installGrassAddon
from actinia_module_plugin.core.modules.accessible_modules_kvdb_interface import (
addGrassAddonToModuleListKvdb,
from actinia_module_plugin.core.modules import (
accessible_modules_kvdb_interface as kvdb,
)
from actinia_module_plugin.model.modules import ModuleList
from actinia_module_plugin.model.responseModels import (
Expand All @@ -38,13 +38,22 @@


class ListModules(ResourceBase):
"""List all GRASS modules"""
"""List all GRASS modules."""

@swagger.doc(modules.listModules_get_docs)
def get(self):
"""Get a list of all GRASS GIS modules."""

module_list = createModuleList(self)
module_list = [
module
for module in module_list
if not (
module["id"].startswith("d.")
or module["id"] == "g.gui"
or module["id"].startswith("g.gui.")
)
]
if self.user_role == "user" or self.user_role == "guest":
# admins have access to all modules
user_list = createModuleUserList(self)
Expand All @@ -63,9 +72,8 @@ def get(self):


class DescribeModule(ResourceBase):
"""
Definition for endpoint @app.route('grass_modules/<grassmodule>') to
desctibe one module
"""Definition for endpoint @app.route('grass_modules/<grassmodule>') to
desctibe one module.

Contains HTTP GET endpoint
Contains swagger documentation
Expand All @@ -89,18 +97,17 @@ def get(self, grassmodule):

def post(self, grassmodule):
"""Install an official GRASS GIS Addon."""

response = installGrassAddon(self, grassmodule)

if response["status"] == "finished":
addGrassAddonToModuleListKvdb(self, grassmodule)
kvdb.addGrassAddonToModuleListKvdb(self, grassmodule)
msg = "Successfully installed GRASS addon " + grassmodule + "."
status_code = 201
else:
msg = "Error installing GRASS addon " + grassmodule + "."
status_code = 400

res = jsonify(
SimpleStatusCodeResponseModel(status=status_code, message=msg)
SimpleStatusCodeResponseModel(status=status_code, message=msg),
)
return make_response(res, status_code)