From 598f84f2bed3a70661a8628fab89b1ee4e2edd43 Mon Sep 17 00:00:00 2001 From: Neda Moeini <neda.moeini@geant.org> Date: Wed, 18 Sep 2024 11:56:58 +0200 Subject: [PATCH] Improve patner workflows to use partner_choice method for list of partners. --- gso/workflows/tasks/delete_partners.py | 11 +++-------- gso/workflows/tasks/modify_partners.py | 10 ++-------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/gso/workflows/tasks/delete_partners.py b/gso/workflows/tasks/delete_partners.py index 6eac752b..8a557c99 100644 --- a/gso/workflows/tasks/delete_partners.py +++ b/gso/workflows/tasks/delete_partners.py @@ -7,23 +7,18 @@ from orchestrator.targets import Target from orchestrator.types import FormGenerator, State, UUIDstr from orchestrator.workflow import StepList, begin, done, step, workflow from pydantic import ConfigDict, EmailStr, field_validator -from pydantic_forms.validators import Choice -from gso.services.partners import delete_partner, get_all_partners, get_partner_by_name +from gso.services.partners import delete_partner, get_partner_by_name from gso.services.subscriptions import get_subscriptions +from gso.utils.helpers import partner_choice def initial_input_form_generator() -> FormGenerator: """Gather input from the user needed for deleting a partner.""" - partners = {} - for partner in get_all_partners(): - partners[partner["partner_id"]] = partner["name"] - - partner_choice = Choice("Select a partner", zip(partners.values(), partners.items(), strict=True)) # type: ignore[arg-type] class SelectPartnerForm(FormPage): model_config = ConfigDict(title="Delete a Partner") - partners: partner_choice # type: ignore[valid-type] + partners: partner_choice() # type: ignore[valid-type] @field_validator("partners") def validate_partners(cls, value: Enum) -> Enum: diff --git a/gso/workflows/tasks/modify_partners.py b/gso/workflows/tasks/modify_partners.py index cb2dadda..c557203e 100644 --- a/gso/workflows/tasks/modify_partners.py +++ b/gso/workflows/tasks/modify_partners.py @@ -5,30 +5,24 @@ from orchestrator.targets import Target from orchestrator.types import FormGenerator, State, UUIDstr from orchestrator.workflow import StepList, begin, done, step, workflow from pydantic import ConfigDict, EmailStr, field_validator -from pydantic_forms.validators import Choice from gso.services.partners import ( ModifiedPartnerSchema, edit_partner, filter_partners_by_email, filter_partners_by_name, - get_all_partners, get_partner_by_name, ) +from gso.utils.helpers import partner_choice def initial_input_form_generator() -> FormGenerator: """Gather input from the user needed for modifying a partner.""" - partners = {} - for partner in get_all_partners(): - partners[partner["partner_id"]] = partner["name"] - - partner_choice = Choice("Select a partner", zip(partners.values(), partners.items(), strict=True)) # type: ignore[arg-type] class SelectPartnerForm(FormPage): model_config = ConfigDict(title="Choose a Partner") - partners: partner_choice # type: ignore[valid-type] + partners: partner_choice() # type: ignore[valid-type] initial_user_input = yield SelectPartnerForm -- GitLab