Compare commits
No commits in common. "3c703270a7cced9c9667c77cb865fdaa4c7752d8" and "a2c4660eee727a3677d1562288dca3e5bec3bc45" have entirely different histories.
3c703270a7
...
a2c4660eee
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## Beschreibung
|
## Beschreibung
|
||||||
|
|
||||||
- Kommandozeilen-Client für das [Espe](/espe/meta)
|
- Kommandozeilen-Client für das [Espe](/misc/espe-meta)
|
||||||
|
|
||||||
|
|
||||||
## Erstellung
|
## Erstellung
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ def backend_api_call_generic(
|
||||||
"with_session_key": (not (session_key is None)),
|
"with_session_key": (not (session_key is None)),
|
||||||
"http_method": http_method,
|
"http_method": http_method,
|
||||||
"path": action_path,
|
"path": action_path,
|
||||||
"data": data,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
target = string_coin(
|
target = string_coin(
|
||||||
|
|
@ -128,19 +127,9 @@ def backend_api_call_wrapped(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def backend_api_call_group_list(
|
|
||||||
):
|
|
||||||
return backend_api_call_wrapped(
|
|
||||||
False,
|
|
||||||
"GET",
|
|
||||||
"/group/list",
|
|
||||||
None
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def backend_api_call_session_end(
|
def backend_api_call_session_end(
|
||||||
):
|
):
|
||||||
return backend_api_call_wrapped(
|
return backend_api_call_generic(
|
||||||
True,
|
True,
|
||||||
"DELETE",
|
"DELETE",
|
||||||
"/session/end",
|
"/session/end",
|
||||||
|
|
@ -189,35 +178,35 @@ def backend_api_call_invitation_create(
|
||||||
email_address_value,
|
email_address_value,
|
||||||
groups_changeable,
|
groups_changeable,
|
||||||
groups_value,
|
groups_value,
|
||||||
expiry,
|
expiry
|
||||||
options = None
|
|
||||||
):
|
):
|
||||||
options = (
|
print({
|
||||||
{
|
"name_changeable": name_changeable,
|
||||||
"send_immediatly": True,
|
"name_value": name_value,
|
||||||
}
|
"label_changeable": label_changeable,
|
||||||
|
|
"label_value": label_value,
|
||||||
(options or {})
|
"email_address_changeable": email_address_changeable,
|
||||||
)
|
"email_address_value": email_address_value,
|
||||||
result = backend_api_call_wrapped(
|
"groups_changeable": groups_changeable,
|
||||||
|
"groups_value": groups_value,
|
||||||
|
"expiry": expiry,
|
||||||
|
})
|
||||||
|
return None
|
||||||
|
return backend_api_call_wrapped(
|
||||||
True,
|
True,
|
||||||
"POST",
|
"POST",
|
||||||
"/invitation/create",
|
"/invitation/create",
|
||||||
{
|
{
|
||||||
"data": {
|
"name_changeable": name_changeable,
|
||||||
"name_changeable": name_changeable,
|
"name_value": name_value,
|
||||||
"name_value": name_value,
|
"label_changeable": label_changeable,
|
||||||
"label_changeable": label_changeable,
|
"label_value": label_value,
|
||||||
"label_value": label_value,
|
"email_address_changeable": email_address_changeable,
|
||||||
"email_address_changeable": email_address_changeable,
|
"email_address_value": email_address_value,
|
||||||
"email_address_value": email_address_value,
|
"groups_changeable": groups_changeable,
|
||||||
"groups_changeable": groups_changeable,
|
"groups_value": groups_value,
|
||||||
"groups_value": groups_value,
|
"expiry": expiry,
|
||||||
"expiry": expiry,
|
|
||||||
},
|
|
||||||
"send_immediatly": options["send_immediatly"],
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
131
source/main.py
131
source/main.py
|
|
@ -27,11 +27,10 @@ def main():
|
||||||
"member-list",
|
"member-list",
|
||||||
"member-read",
|
"member-read",
|
||||||
"member-delete",
|
"member-delete",
|
||||||
"invite-single",
|
"invite",
|
||||||
"invite-mass",
|
|
||||||
],
|
],
|
||||||
metavar = "<action>",
|
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-read' : Daten eines Mitglieds ausgeben | 'member-delete' : einer Mitglieder-Datensatz löschen | 'invite-single' : einzelne Einladung erstellen | 'invite-mass' : Massen-Einladungen erstellen",
|
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-read' : Daten eines Mitglieds ausgeben | 'member-delete' : einer Mitglieder-Datensatz löschen | 'invite' : Einladung erstellen",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-c",
|
"-c",
|
||||||
|
|
@ -42,15 +41,6 @@ def main():
|
||||||
metavar = "<conf-path>",
|
metavar = "<conf-path>",
|
||||||
help = "Pfad zur Konfigurations-Datei",
|
help = "Pfad zur Konfigurations-Datei",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
|
||||||
"-d",
|
|
||||||
"--data-path",
|
|
||||||
type = str,
|
|
||||||
dest = "data_path",
|
|
||||||
default = None,
|
|
||||||
metavar = "<data-path>",
|
|
||||||
help = "Pfad zu Daten für Massen-Einladung",
|
|
||||||
)
|
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-i",
|
"-i",
|
||||||
"--id",
|
"--id",
|
||||||
|
|
@ -60,6 +50,12 @@ def main():
|
||||||
metavar = "<id>",
|
metavar = "<id>",
|
||||||
help = "ID des Mitglieds",
|
help = "ID des Mitglieds",
|
||||||
)
|
)
|
||||||
|
argument_parser.add_argument(
|
||||||
|
"-N",
|
||||||
|
"--fixed-name",
|
||||||
|
dest = "fixed_name",
|
||||||
|
action = 'store_true',
|
||||||
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-n",
|
"-n",
|
||||||
"--name",
|
"--name",
|
||||||
|
|
@ -70,11 +66,10 @@ def main():
|
||||||
help = "Anmelde-Name des Mitglieds; Leerzeichen sind durch '_' zu ersetzen",
|
help = "Anmelde-Name des Mitglieds; Leerzeichen sind durch '_' zu ersetzen",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-N",
|
"-L",
|
||||||
"--fixed-name",
|
"--fixed-label",
|
||||||
dest = "fixed_name",
|
dest = "fixed_label",
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
help = "ob der Anmelde-Name einer Einladung geändert werden kann",
|
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-l",
|
"-l",
|
||||||
|
|
@ -86,11 +81,10 @@ def main():
|
||||||
help = "Anzeige-Name des Mitglieds",
|
help = "Anzeige-Name des Mitglieds",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-L",
|
"-E",
|
||||||
"--fixed-label",
|
"--fixed-email-address",
|
||||||
dest = "fixed_label",
|
dest = "fixed_email_address",
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
help = "ob der Anzeige-Name einer Einladung geändert werden kann",
|
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-e",
|
"-e",
|
||||||
|
|
@ -102,11 +96,10 @@ def main():
|
||||||
help = "E-Mail-Adresse des Mitglieds",
|
help = "E-Mail-Adresse des Mitglieds",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-E",
|
"-G",
|
||||||
"--fixed-email-address",
|
"--fixed-groups",
|
||||||
dest = "fixed_email_address",
|
dest = "fixed_groups",
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
help = "ob der E-Mail-Adresse einer Einladung geändert werden kann",
|
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-g",
|
"-g",
|
||||||
|
|
@ -117,13 +110,6 @@ def main():
|
||||||
metavar = "<groups>",
|
metavar = "<groups>",
|
||||||
help = "Gruppen, zu welchen das Mitglied hinzugefügt werden soll, als Komma-getrennte Liste",
|
help = "Gruppen, zu welchen das Mitglied hinzugefügt werden soll, als Komma-getrennte Liste",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
|
||||||
"-G",
|
|
||||||
"--fixed-groups",
|
|
||||||
dest = "fixed_groups",
|
|
||||||
action = 'store_true',
|
|
||||||
help = "ob die Gruppen einer Einladung geändert werden kann",
|
|
||||||
)
|
|
||||||
argument_parser.add_argument(
|
argument_parser.add_argument(
|
||||||
"-x",
|
"-x",
|
||||||
"--expiry",
|
"--expiry",
|
||||||
|
|
@ -133,13 +119,6 @@ def main():
|
||||||
metavar = "<expiry>",
|
metavar = "<expiry>",
|
||||||
help = "UNIX-Timestamp des Ablaufdatums der Einladung",
|
help = "UNIX-Timestamp des Ablaufdatums der Einladung",
|
||||||
)
|
)
|
||||||
argument_parser.add_argument(
|
|
||||||
"-s",
|
|
||||||
"--send",
|
|
||||||
dest = "send",
|
|
||||||
action = 'store_true',
|
|
||||||
help = "ob eine Einladung nach Einarbeitung ins Backend an die angegebene E-Mail-Adresse gesendet werden soll",
|
|
||||||
)
|
|
||||||
args = argument_parser.parse_args()
|
args = argument_parser.parse_args()
|
||||||
|
|
||||||
## conf
|
## conf
|
||||||
|
|
@ -160,42 +139,19 @@ def main():
|
||||||
)
|
)
|
||||||
|
|
||||||
## exec
|
## exec
|
||||||
groups = convey(
|
|
||||||
backend_api_call_group_list(),
|
|
||||||
[
|
|
||||||
lambda x: map(
|
|
||||||
lambda entry: (entry["preview"]["name"], entry["id"], ),
|
|
||||||
x
|
|
||||||
),
|
|
||||||
dict,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
data = {
|
data = {
|
||||||
"id": args.id,
|
"id": args.id,
|
||||||
"name_changeable": (not args.fixed_name),
|
"name_changeable": (not args.fixed_name),
|
||||||
"name_value": args.name,
|
"name_value": args.name.replace("_", " "),
|
||||||
"label_changeable": (not args.fixed_label),
|
"label_changeable": (not args.fixed_label),
|
||||||
"label_value": (
|
"label_value": args.label,
|
||||||
None
|
|
||||||
if (args.label is None) else
|
|
||||||
args.label.replace("_", " ")
|
|
||||||
),
|
|
||||||
"email_address_changeable": (not args.fixed_email_address),
|
"email_address_changeable": (not args.fixed_email_address),
|
||||||
"email_address_value": args.email_address,
|
"email_address_value": args.email_address,
|
||||||
"groups_changeable": (not args.fixed_groups),
|
"groups_changeable": (not args.fixed_groups),
|
||||||
"groups_value": (
|
"groups_value": ([] if (args.groups is None) else args.groups.split(",")),
|
||||||
[]
|
|
||||||
if (args.groups is None) else
|
|
||||||
convey(
|
|
||||||
args.groups.split(","),
|
|
||||||
[
|
|
||||||
lambda x: map(lambda group_name: groups[group_name], x),
|
|
||||||
list,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
),
|
|
||||||
"expiry": args.expiry,
|
"expiry": args.expiry,
|
||||||
}
|
}
|
||||||
|
_sys.stderr.write(_json.dumps(data) + "\n")
|
||||||
if (args.action == "conf-schema"):
|
if (args.action == "conf-schema"):
|
||||||
_sys.stdout.write(_json.dumps(conf_schema(), indent = "\t") + "\n")
|
_sys.stdout.write(_json.dumps(conf_schema(), indent = "\t") + "\n")
|
||||||
elif (args.action == "conf-expose"):
|
elif (args.action == "conf-expose"):
|
||||||
|
|
@ -237,11 +193,15 @@ def main():
|
||||||
member_id = backend_api_call_member_delete(
|
member_id = backend_api_call_member_delete(
|
||||||
data["id"]
|
data["id"]
|
||||||
)
|
)
|
||||||
elif (args.action == "invite-single"):
|
elif (args.action == "invite"):
|
||||||
if (
|
if (
|
||||||
(data["name_value"] is None)
|
(data["name_value"] is None)
|
||||||
or
|
or
|
||||||
(data["label_value"] is None)
|
(data["label_value"] is None)
|
||||||
|
or
|
||||||
|
(data["email_address_value"] is None)
|
||||||
|
or
|
||||||
|
(data["groups_value"] is None)
|
||||||
):
|
):
|
||||||
log_error(
|
log_error(
|
||||||
"mandatory_parameters_missing",
|
"mandatory_parameters_missing",
|
||||||
|
|
@ -249,11 +209,13 @@ def main():
|
||||||
"parameters": [
|
"parameters": [
|
||||||
"name",
|
"name",
|
||||||
"label",
|
"label",
|
||||||
|
"email_address",
|
||||||
|
"groups",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
result = backend_api_call_invitation_create(
|
link = backend_api_call_invitation_create(
|
||||||
data["name_changeable"],
|
data["name_changeable"],
|
||||||
data["name_value"],
|
data["name_value"],
|
||||||
data["label_changeable"],
|
data["label_changeable"],
|
||||||
|
|
@ -262,40 +224,8 @@ def main():
|
||||||
data["email_address_value"],
|
data["email_address_value"],
|
||||||
data["groups_changeable"],
|
data["groups_changeable"],
|
||||||
data["groups_value"],
|
data["groups_value"],
|
||||||
data["expiry"],
|
data["expiry"]
|
||||||
{
|
|
||||||
"send_immediatly": args.send,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
key = result["key"]
|
|
||||||
url = result["url"]
|
|
||||||
_sys.stdout.write(url + "\n")
|
|
||||||
elif (args.action == "invite-mass"):
|
|
||||||
invitation_data = _json.loads(file_text_read(args.data_path))
|
|
||||||
for entry in invitation_data:
|
|
||||||
result = backend_api_call_invitation_create(
|
|
||||||
entry.get("name_changeable", True),
|
|
||||||
entry["name_value"],
|
|
||||||
entry.get("label_changeable", True),
|
|
||||||
entry["label_value"],
|
|
||||||
entry.get("email_address_changeable", True),
|
|
||||||
entry["email_address_value"],
|
|
||||||
entry.get("groups_changeable", True),
|
|
||||||
convey(
|
|
||||||
entry.get("groups_value", []),
|
|
||||||
[
|
|
||||||
lambda x: map(lambda group_name: groups[group_name], x),
|
|
||||||
list,
|
|
||||||
]
|
|
||||||
),
|
|
||||||
# todo: assign default?
|
|
||||||
entry.get("expiry", None),
|
|
||||||
{
|
|
||||||
"send_immediatly": args.send,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
# _sys.stdout.write(result["url"] + "\n")
|
|
||||||
# todo: delay
|
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
@ -305,4 +235,3 @@ try:
|
||||||
except ValueError as error:
|
except ValueError as error:
|
||||||
_sys.stderr.write(str(error) + "\n")
|
_sys.stderr.write(str(error) + "\n")
|
||||||
_sys.exit(1)
|
_sys.exit(1)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue