add more multiuser support

This commit is contained in:
Ross
2026-06-16 13:14:24 +01:00
parent 6ebe74d785
commit dbb762bb09
13 changed files with 790 additions and 4 deletions
+37 -1
View File
@@ -3,6 +3,7 @@ import json
import os
import pathlib
from typing import Tuple
import uuid
from django.http import Http404, HttpRequest
from generic.mixins import AuthorMixin, QuestionMixin
@@ -879,6 +880,30 @@ class Case(models.Model, AuthorMixin, QuestionMixin):
self._ordered_series_cache = ordered
return ordered
def get_case_named_stacks(self):
stacks = []
for series in self.get_ordered_series():
series_images = list(series.get_images())
series_images_with_urls = [(img, f"{REMOTE_URL}{img.image.url}") for img in series_images]
images = [url for _, url in series_images_with_urls]
declared_groups = _build_declared_series_groups(series, series_images_with_urls)
stacks.append(
{
"name": str(series),
"imageIds": images,
"seriesId": series.pk,
"series": declared_groups,
}
)
results = [
{
"caseId": f"CASE-{self.pk}",
"studyId": "Current Case",
"stacks": stacks,
}
]
return json.dumps(results)
@staticmethod
def _parse_dicom_date(value):
if not value:
@@ -2949,4 +2974,15 @@ class PrerequisiteRequired(Exception):
def __init__(self, message=None, *, prereq=None):
super().__init__(message or "Prerequisite required")
self.prereq = prereq
self.prereq = prereq
class MultiuserSession(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255, blank=True)
creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="created_multiuser_sessions")
active_case = models.ForeignKey(Case, on_delete=models.SET_NULL, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Session {self.name or str(self.id)[:8]} by {self.creator}"