Skip to content

Commit

Permalink
IDPF-340: Update peoplefinder team service (#121)
Browse files Browse the repository at this point in the history
  • Loading branch information
oyeniyipa authored Mar 6, 2025
1 parent 9caf069 commit f596148
Show file tree
Hide file tree
Showing 7 changed files with 277 additions and 101 deletions.
15 changes: 14 additions & 1 deletion conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from profiles.models.combined import Profile
from profiles.models.generic import Country, Email, UkStaffLocation
from profiles.models.peoplefinder import PeopleFinderProfile
from profiles.models.peoplefinder import PeopleFinderProfile, PeopleFinderTeam
from profiles.models.staff_sso import StaffSSOProfile, StaffSSOProfileEmail


Expand Down Expand Up @@ -82,6 +82,19 @@ def peoplefinder_profile(basic_user):
)


@pytest.fixture(scope="function")
def peoplefinder_team():
return PeopleFinderTeam.objects.create(
slug="9c8d532c-3d44-40fd-a512-debd26af007f",
name="Team1Name",
abbreviation="T1N",
description="Team description",
leaders_ordering="alphabetical",
cost_code="CC1",
team_type="standard",
)


@pytest.fixture(autouse=True, scope="function")
def default_country():
return Country.objects.create(
Expand Down
66 changes: 43 additions & 23 deletions core/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,49 @@ def get_peoplefinder_profile_by_slug(slug: str) -> PeopleFinderProfile:
return profile_services.get_peoplefinder_profile_by_slug(slug=slug)


def create_peoplefinder_team(
slug: str,
name: str,
abbreviation: str,
description: str,
leaders_ordering: str | PeopleFinderTeamLeadersOrdering,
cost_code: str,
team_type: str | PeopleFinderTeamType,
) -> PeopleFinderTeam:
"""
Function to create a people finder team
"""
return profile_services.create_peoplefinder_team(
slug=slug,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)


def update_peoplefinder_team(
slug: str,
name: Optional[str | Unset] = None,
abbreviation: Optional[str | Unset] = None,
description: Optional[str | Unset] = None,
leaders_ordering: Optional[str | PeopleFinderTeamLeadersOrdering | Unset] = None,
cost_code: Optional[str | Unset] = None,
team_type: Optional[str | PeopleFinderTeamType | Unset] = None,
) -> None:
profile_services.update_peoplefinder_team(
slug=slug,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)


def get_countries() -> list[Country]:
"""
Function for getting a list of all countries
Expand Down Expand Up @@ -331,26 +374,3 @@ def get_professions() -> list[tuple[Profession, str]]:
Function for getting a list of all professions
"""
return profile_services.get_professions()


def create_peoplefinder_team(
slug: str,
name: str,
abbreviation: str,
description: str,
leaders_ordering: str | PeopleFinderTeamLeadersOrdering,
cost_code: str,
team_type: str | PeopleFinderTeamType,
) -> PeopleFinderTeam:
"""
Function to create a people finder team
"""
return profile_services.create_peoplefinder_team(
slug=slug,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)
20 changes: 20 additions & 0 deletions core/tests/test_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,3 +249,23 @@ def test_create_peoplefinder_team_core_services():
)

assert ex.value.args[0] == "Team has been previously created"


def test_update_peoplefinder_team(peoplefinder_team):
services.update_peoplefinder_team(
slug=peoplefinder_team.slug,
name="New Name",
abbreviation="NABV",
description="New Desc",
leaders_ordering="custom",
cost_code="CC123",
team_type="directorate",
)

peoplefinder_team.refresh_from_db()
assert peoplefinder_team.name == "New Name"
assert peoplefinder_team.abbreviation == "NABV"
assert peoplefinder_team.description == "New Desc"
assert peoplefinder_team.cost_code == "CC123"
assert peoplefinder_team.leaders_ordering == "custom"
assert peoplefinder_team.team_type == "directorate"
67 changes: 44 additions & 23 deletions profiles/services/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,50 @@ def get_peoplefinder_profile_by_slug(slug: str) -> PeopleFinderProfile:
return peoplefinder.get_by_slug(slug=slug)


def create_peoplefinder_team(
slug: str,
name: str,
abbreviation: str,
description: str,
leaders_ordering: str | PeopleFinderTeamLeadersOrdering,
cost_code: str,
team_type: str | PeopleFinderTeamType,
) -> PeopleFinderTeam:
"""
Creates a people finder team
"""
return peoplefinder.create_team(
slug=slug,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)


def update_peoplefinder_team(
slug: str,
name: Optional[str | Unset] = None,
abbreviation: Optional[str | Unset] = None,
description: Optional[str | Unset] = None,
leaders_ordering: Optional[str | Unset] = None,
cost_code: Optional[str | Unset] = None,
team_type: Optional[str | Unset] = None,
) -> None:
peoplefinder_team = peoplefinder.get_team_by_slug(slug=slug)
peoplefinder.update_team(
peoplefinder_team=peoplefinder_team,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)


def get_countries() -> list[Country]:
"""
Gets all countries service
Expand Down Expand Up @@ -448,26 +492,3 @@ def get_professions() -> list[tuple[Profession, str]]:
Gets all professions
"""
return peoplefinder.get_professions()


def create_peoplefinder_team(
slug: str,
name: str,
abbreviation: str,
description: str,
leaders_ordering: str | PeopleFinderTeamLeadersOrdering,
cost_code: str,
team_type: str | PeopleFinderTeamType,
) -> PeopleFinderTeam:
"""
Creates a people finder team
"""
return peoplefinder.create_team(
slug=slug,
name=name,
abbreviation=abbreviation,
description=description,
leaders_ordering=leaders_ordering,
cost_code=cost_code,
team_type=team_type,
)
Loading

0 comments on commit f596148

Please sign in to comment.