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