From 8b801c7d84a95a69068f7900662026d2f7c49c53 Mon Sep 17 00:00:00 2001 From: Vasek Sraier Date: Mon, 1 Apr 2019 11:53:51 +0200 Subject: [PATCH] upgraded URLs pointing to our Gitea, generalized few validation functions... --- .gitignore | 3 ++- Pipfile | 2 +- Pipfile.lock | 12 ++++++------ README.md | 2 +- register.py | 26 +++++++++++++++----------- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 232d6e4..d204ee7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ tmp/ .idea/ .idea/ .mypy_cache/ -config.py \ No newline at end of file +config.py +__pycache__/ diff --git a/Pipfile b/Pipfile index 3198a08..c84975d 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ beautifulsoup4 = "*" six = "*" termcolor = "*" lxml = "*" -swagger_client = { git = "https://gitea-gimli.kam.mff.cuni.cz/vasek/gitea-swagger-client" } +swagger_client = { git = "https://gitea.ks.matfyz.cz/vasek/gitea-swagger-client" } [requires] python_version = "3" diff --git a/Pipfile.lock b/Pipfile.lock index 8676b9b..0802755 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "ee32788aeebfec6cf37be58728aa8f66afdc8783d61e401722317295a45b5e03" + "sha256": "a5459836de6fd359bbfc6b9783a5c4f2e451a48bfefd7b633d48b3d55ab73c48" }, "pipfile-spec": 6, "requires": { @@ -104,14 +104,14 @@ }, "soupsieve": { "hashes": [ - "sha256:afa56bf14907bb09403e5d15fbed6275caa4174d36b975226e3b67a3bb6e2c4b", - "sha256:eaed742b48b1f3e2d45ba6f79401b2ed5dc33b2123dfe216adb90d4bfa0ade26" + "sha256:3aef141566afd07201b525c17bfaadd07580a8066f82b57f7c9417f26adbd0a3", + "sha256:e41a65e99bd125972d84221022beb1e4b5cfc68fa12c170c39834ce32d1b294c" ], - "version": "==1.8" + "version": "==1.9" }, "swagger-client": { - "git": "https://gitea-gimli.kam.mff.cuni.cz/vasek/gitea-swagger-client", - "ref": "2a6ff3b1aaf0a2fe27453c8f4fdde23feb3a640f" + "git": "https://gitea.ks.matfyz.cz/vasek/gitea-swagger-client", + "ref": "ed03b192ca0ba6fa7fb9bfacd567b8fbfb306355" }, "termcolor": { "hashes": [ diff --git a/README.md b/README.md index 363d76b..6d4bad8 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ standardní vygenerovaný webový interface ke specifikaci. Specifikace samotná `/swagger.v1.json`. K tomuto API je vygenerován klient aktuálně se nacházející - [zde](https://gitea-gimli.kam.mff.cuni.cz/vasek/gitea-swagger-client). Kód je v podstatě čistě vygenerovaný nástrojem + [zde](https://gitea.ks.matfyz.cz/vasek/gitea-swagger-client). Kód je v podstatě čistě vygenerovaný nástrojem `swagger-codegen` (link v repozitáři s klientem). Obsahuje akorát dva drobné patche, protože bez nich vůbec nejde naimportovat. diff --git a/register.py b/register.py index bd2ef9e..2aabf01 100644 --- a/register.py +++ b/register.py @@ -14,6 +14,8 @@ import string # load configuration +from typing import List + try: import config except ImportError: @@ -63,20 +65,22 @@ def does_organization_exist(org_api: OrganizationApi, orgname: str) -> bool: raise e -def does_organization_have_org_team(org_api: OrganizationApi, orgname: str) -> bool: - teams = org_api.org_list_teams(orgname) - for t in teams: - if 'org' == t.name: - return True - return False +def does_organization_have_team_with_name(org_api: OrganizationApi, orgname: str, teamname: str) -> bool: + try: + get_team_id_by_name(org_api, orgname, teamname) + return True + except AssertionError: + return False + +def get_team_id_by_name(org_api: OrganizationApi, orgname: str, teamname: str) -> int: + """Vraci bud ID teamu, nebo hazi AssertionError, pokud team neexistuje.""" -def get_org_team_id(org_api: OrganizationApi, orgname: str) -> int: teams = org_api.org_list_teams(orgname) for t in teams: - if 'org' == t.name: + if teamname == t.name: return t.id - raise AssertionError('Tento kod mel byt unreachable. Zmizel tym orgu za behu skriptu?') + raise AssertionError("Team se jmenem '{}' v organizaci '{}' neexistuje!".format(teamname, orgname)) def validate(func_check, message: str): @@ -169,11 +173,11 @@ def register(username: str, seminar: str, fullname: str, email: str, host, admin # kontrola predpokladu o stavu systemu validate(lambda: not does_user_exist(user_api, username), "Uzivatelske jmeno je volne...") validate(lambda: does_organization_exist(org_api, seminar), "Organizace pro seminar existuje...") - validate(lambda: does_organization_have_org_team(org_api, seminar), "V danem seminari existuje team 'org'...") + validate(lambda: does_organization_have_team_with_name(org_api, seminar, 'org'), "V danem seminari existuje team 'org'...") print(text_green('Zakladni predpoklady pro uspesne zalozeni uctu splneny!\n')) # nasbirame vsechny potrebne informace - org_team_id = get_org_team_id(org_api, seminar) + org_team_id = get_team_id_by_name(org_api, seminar, 'org') # pripravime si uzivatele na zalozeni create_user_req = CreateUserOption(email=email, full_name=fullname, username=username,