134 lines
3.2 KiB
Python
134 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import typing as _typing
|
|
import sys as _sys
|
|
import os as _os
|
|
import json as _json
|
|
import argparse as _argparse
|
|
|
|
from log import *
|
|
from conf import *
|
|
from backend import *
|
|
|
|
|
|
def main():
|
|
## args
|
|
argument_parser = _argparse.ArgumentParser(
|
|
prog = "mondvogel",
|
|
description = "CLI-Client-Programm für Espe",
|
|
formatter_class = _argparse.ArgumentDefaultsHelpFormatter
|
|
)
|
|
argument_parser.add_argument(
|
|
type = str,
|
|
dest = "action",
|
|
choices = [
|
|
"member-list",
|
|
"member-project",
|
|
],
|
|
metavar = "<action>",
|
|
help = "auszuführende Aktion; Optionen: 'conf-schema' : JSON-Schema der Konfiguration ausgeben | 'conf-expose' : vervollständigte Konfiguration ausgegeben | 'member-list' : Liste der Mitglieder ausgeben | 'member-project' : ein Mitglied anlegen und die ID des erzeugten Datensatzes ausgeben",
|
|
)
|
|
argument_parser.add_argument(
|
|
"-c",
|
|
"--conf-path",
|
|
type = str,
|
|
dest = "conf_path",
|
|
default = _os.path.join(_os.path.expanduser("~"), ".mondvogel", "conf.json"),
|
|
metavar = "<conf-path>",
|
|
help = "Pfad zur Konfigurations-Datei",
|
|
)
|
|
argument_parser.add_argument(
|
|
"-m",
|
|
"--membership-number",
|
|
type = str,
|
|
dest = "membership_number",
|
|
default = None,
|
|
metavar = "<membership-number>",
|
|
help = "Mitglieds-Nummer des Mitglieds",
|
|
)
|
|
argument_parser.add_argument(
|
|
"-n",
|
|
"--name",
|
|
type = str,
|
|
dest = "name",
|
|
default = None,
|
|
metavar = "<name>",
|
|
help = "Name des Mitglieds",
|
|
)
|
|
argument_parser.add_argument(
|
|
"-e",
|
|
"--email-address",
|
|
type = str,
|
|
dest = "email_address",
|
|
default = None,
|
|
metavar = "<email-address>",
|
|
help = "E-Mail-Adresse des Mitglieds",
|
|
)
|
|
args = argument_parser.parse_args()
|
|
|
|
## conf
|
|
conf_load(args.conf_path)
|
|
log_add_output(
|
|
{
|
|
"format": conf_get()["log"]["format"],
|
|
"min_level": (
|
|
{
|
|
"error": enum_log_level.ERROR,
|
|
"warning": enum_log_level.WARNING,
|
|
"notice": enum_log_level.NOTICE,
|
|
"info": enum_log_level.INFO,
|
|
"debug": enum_log_level.DEBUG,
|
|
}[conf_get()["log"]["min_level"]]
|
|
),
|
|
}
|
|
)
|
|
## exec
|
|
if (args.action == "conf-schema"):
|
|
_sys.stdout.write(_json.dumps(conf_schema(), indent = "\t") + "\n")
|
|
elif (args.action == "conf-expose"):
|
|
_sys.stdout.write(_json.dumps(conf_get(), indent = "\t") + "\n")
|
|
elif (args.action == "member-list"):
|
|
session_key = backend_api_call_session_begin()
|
|
data = backend_api_call_member_list(
|
|
session_key
|
|
)
|
|
backend_api_call_session_end(session_key)
|
|
_sys.stdout.write(_json.dumps(data, indent = "\t") + "\n")
|
|
elif (args.action == "member-project"):
|
|
if (
|
|
(args.membership_number is None)
|
|
or
|
|
(args.name is None)
|
|
or
|
|
(args.email_address is None)
|
|
):
|
|
log_error(
|
|
"mandatory_parameters_missing",
|
|
{
|
|
"parameters": [
|
|
"membership_number",
|
|
"name",
|
|
"email_address",
|
|
]
|
|
}
|
|
)
|
|
else:
|
|
session_key = backend_api_call_session_begin()
|
|
member_id = backend_api_call_member_project(
|
|
session_key,
|
|
args.membership_number,
|
|
args.name,
|
|
args.email_address,
|
|
None
|
|
)
|
|
backend_api_call_session_end(session_key)
|
|
_sys.stdout.write(_json.dumps(member_id, indent = "\t") + "\n")
|
|
else:
|
|
raise NotImplementedError()
|
|
|
|
|
|
try:
|
|
main()
|
|
except ValueError as error:
|
|
_sys.stderr.write(str(error) + "\n")
|
|
_sys.exit(1)
|