Skip to content

Commit 39a7108

Browse files
committed
site to property on consent def
1 parent b2fa1d4 commit 39a7108

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

edc_consent/consent_definition.py

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
)
2222

2323
if TYPE_CHECKING:
24-
from edc_sites.single_site import SingleSite
25-
2624
from .model_mixins import ConsentModelMixin
2725

2826
class ConsentLikeModel(NonUniqueSubjectIdentifierModelMixin, ConsentModelMixin):
@@ -46,7 +44,7 @@ class ConsentDefinition:
4644
gender: list[str] | None = field(default_factory=list, compare=False)
4745
updates_versions: list[str] | None = field(default_factory=list, compare=False)
4846
subject_type: str = field(default="subject", compare=False)
49-
sites: list[SingleSite] = field(default_factory=list, compare=False)
47+
site_ids: list[int] = field(default_factory=list, compare=False)
5048
country: str | None = field(default=None, compare=False)
5149
name: str = field(init=False, compare=True)
5250
sort_index: str = field(init=False)
@@ -55,7 +53,6 @@ def __post_init__(self):
5553
self.name = f"{self.model}-{self.version}"
5654
self.sort_index = self.name
5755
self.gender = [MALE, FEMALE] if not self.gender else self.gender
58-
self._init_sites()
5956
if MALE not in self.gender and FEMALE not in self.gender:
6057
raise ConsentDefinitionError(f"Invalid gender. Got {self.gender}.")
6158
if not self.start.tzinfo:
@@ -64,26 +61,21 @@ def __post_init__(self):
6461
raise ConsentDefinitionError(f"Naive datetime not allowed Got {self.end}.")
6562
self.check_date_within_study_period()
6663

67-
def _init_sites(self) -> None:
68-
"""Updates and/or validates sites.
69-
70-
In order for this to work, edc_sites should be done
71-
registering sites.
72-
"""
73-
if not self.sites:
74-
if not site_sites.loaded:
75-
raise ConsentDefinitionError(
76-
"No registered sites found or edc_sites.sites not loaded yet. "
77-
"Perhaps place `edc_sites` before `edc_consent` "
78-
"in INSTALLED_APPS."
79-
)
80-
if self.country:
81-
self.sites = site_sites.get_by_country(self.country, aslist=True)
82-
else:
83-
self.sites = [s for s in site_sites.all(aslist=True)]
64+
@property
65+
def sites(self):
66+
if not site_sites.loaded:
67+
raise ConsentDefinitionError(
68+
"No registered sites found or edc_sites.sites not loaded yet. "
69+
"Perhaps place `edc_sites` before `edc_consent` "
70+
"in INSTALLED_APPS."
71+
)
72+
if self.country:
73+
sites = site_sites.get_by_country(self.country, aslist=True)
74+
elif self.site_ids:
75+
sites = [s for s in site_sites.all(aslist=True) if s.site_id in self.site_ids]
8476
else:
85-
for site in self.sites:
86-
site_sites.get(site.site_id)
77+
sites = [s for s in site_sites.all(aslist=True)]
78+
return sites
8779

8880
def get_consent_for(
8981
self, subject_identifier: str = None, report_datetime: datetime | None = None

0 commit comments

Comments
 (0)