Enhance get_series_images_nested method to support excluding specific series IDs and improve query efficiency

This commit is contained in:
Ross
2025-09-15 11:43:18 +01:00
parent 298493a390
commit 50f5813a75
+12 -3
View File
@@ -565,15 +565,19 @@ class Case(models.Model, AuthorMixin, QuestionMixin):
return True return True
return False return False
def get_series_images_nested(self, as_json=True): def get_series_images_nested(self, as_json: bool =True, exclude_series_ids: None | list[int] = None):
""" """
Returns a list of lists, where each inner list contains the image URLs Returns a list of lists, where each inner list contains the image URLs
for a single series in this case, in the order of the series. for a single series in this case, in the order of the series.
""" """
series_qs = self.series.all()
if exclude_series_ids is not None:
series_qs = self.series.exclude(id__in=exclude_series_ids)
images = [ images = [
[image.image.url for image in series.images.all()] [image.image.url for image in series.images.all()]
for series in self.series.all() for series in series_qs.order_by('seriesdetail__sort_order').prefetch_related('images')
] ]
if as_json: if as_json:
@@ -1232,6 +1236,11 @@ class CaseDetail(models.Model):
return self.case.history return self.case.history
return "" return ""
def get_case_series_nested(self, include_priors=True):
case = self.case
class CasePrior(models.Model): class CasePrior(models.Model):
case_detail = models.ForeignKey(CaseDetail, on_delete=models.CASCADE) case_detail = models.ForeignKey(CaseDetail, on_delete=models.CASCADE)
prior_case = models.ForeignKey(Case, on_delete=models.CASCADE, related_name="prior_case") prior_case = models.ForeignKey(Case, on_delete=models.CASCADE, related_name="prior_case")