endoreg-db 0.8.5.2__py3-none-any.whl → 0.8.5.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of endoreg-db might be problematic. Click here for more details.

@@ -215,7 +215,7 @@ def create_pseudo_examiner_logic(instance: "SensitiveMeta") -> "Examiner":
215
215
  )
216
216
  # Ensure default center exists or handle appropriately
217
217
  try:
218
- default_center = Center.objects.get_by_natural_key("endoreg_db_demo")
218
+ default_center = Center.objects.get(name="endoreg_db_demo")
219
219
  except Center.DoesNotExist:
220
220
  logger.error(
221
221
  "Default center 'endoreg_db_demo' not found. Cannot create default examiner."
@@ -448,7 +448,50 @@ def perform_save_logic(instance: "SensitiveMeta") -> "Examiner":
448
448
  def create_sensitive_meta_from_dict(
449
449
  cls: Type["SensitiveMeta"], data: Dict[str, Any]
450
450
  ) -> "SensitiveMeta":
451
- """Logic to create a SensitiveMeta instance from a dictionary."""
451
+ """
452
+ Create a SensitiveMeta instance from a dictionary.
453
+
454
+ **Center handling:**
455
+ This function accepts TWO ways to specify the center:
456
+ 1. `center` (Center object) - Directly pass a Center instance
457
+ 2. `center_name` (string) - Pass the center name as a string (will be resolved to Center object)
458
+
459
+ At least ONE of these must be provided.
460
+
461
+ **Example usage:**
462
+ ```python
463
+ # Option 1: With Center object
464
+ data = {
465
+ "patient_first_name": "Patient",
466
+ "patient_last_name": "Unknown",
467
+ "patient_dob": date(1990, 1, 1),
468
+ "examination_date": date.today(),
469
+ "center": center_obj, # ← Center object
470
+ }
471
+ sm = SensitiveMeta.create_from_dict(data)
472
+
473
+ # Option 2: With center name string
474
+ data = {
475
+ "patient_first_name": "Patient",
476
+ "patient_last_name": "Unknown",
477
+ "patient_dob": date(1990, 1, 1),
478
+ "examination_date": date.today(),
479
+ "center_name": "university_hospital_wuerzburg", # ← String
480
+ }
481
+ sm = SensitiveMeta.create_from_dict(data)
482
+ ```
483
+
484
+ Args:
485
+ cls: The SensitiveMeta class
486
+ data: Dictionary containing field values
487
+
488
+ Returns:
489
+ SensitiveMeta: The created instance
490
+
491
+ Raises:
492
+ ValueError: If neither center nor center_name is provided
493
+ ValueError: If center_name does not match any Center in database
494
+ """
452
495
 
453
496
  field_names = {
454
497
  f.name
@@ -585,15 +628,29 @@ def create_sensitive_meta_from_dict(
585
628
  )
586
629
  selected_data.pop("examination_date", None)
587
630
 
588
- # Handle Center
631
+ # Handle Center - accept both center_name (string) and center (object)
632
+ from ..administration import Center
633
+
634
+ center = data.get("center") # First try direct Center object
589
635
  center_name = data.get("center_name")
590
- if not center_name:
591
- raise ValueError("center_name is required in data dictionary.")
592
- try:
593
- center = Center.objects.get_by_natural_key(center_name)
636
+
637
+ if center is not None:
638
+ # Center object provided directly - validate it's a Center instance
639
+ if not isinstance(center, Center):
640
+ raise ValueError(f"'center' must be a Center instance, got {type(center)}")
594
641
  selected_data["center"] = center
595
- except Center.DoesNotExist as exc:
596
- raise ValueError(f"Center with name '{center_name}' does not exist.") from exc
642
+ elif center_name:
643
+ # center_name string provided - resolve to Center object
644
+ try:
645
+ center = Center.objects.get(name=center_name)
646
+ selected_data["center"] = center
647
+ except Center.DoesNotExist:
648
+ raise ValueError(f"Center with name '{center_name}' does not exist.")
649
+ else:
650
+ # Neither center nor center_name provided
651
+ raise ValueError(
652
+ "Either 'center' (Center object) or 'center_name' (string) is required in data dictionary."
653
+ )
597
654
 
598
655
  # Handle Names and Gender
599
656
  first_name = selected_data.get("patient_first_name") or DEFAULT_UNKNOWN_NAME
@@ -712,9 +769,9 @@ def update_sensitive_meta_from_dict(
712
769
  center_name = data.get("center_name")
713
770
  if center_name:
714
771
  try:
715
- center = Center.objects.get_by_natural_key(center_name)
772
+ center = Center.objects.get(name=center_name)
716
773
  instance.center = center # Update center directly
717
- except Center.DoesNotExist as exc:
774
+ except Center.DoesNotExist:
718
775
  logger.warning(
719
776
  f"Center '{center_name}' not found during update. Keeping existing center."
720
777
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: endoreg-db
3
- Version: 0.8.5.2
3
+ Version: 0.8.5.3
4
4
  Summary: EndoReg Db Django App
5
5
  Project-URL: Homepage, https://info.coloreg.de
6
6
  Project-URL: Repository, https://github.com/wg-lux/endoreg-db
@@ -468,7 +468,7 @@ endoreg_db/models/metadata/model_meta.py,sha256=F_r-PTLeNi4J-4EaGCQkGIguhdl7Bwba
468
468
  endoreg_db/models/metadata/model_meta_logic.py,sha256=vAbNDaoZygH8xOCulWlXoHoR1T0BSvr9kIloxjzhfjo,12533
469
469
  endoreg_db/models/metadata/pdf_meta.py,sha256=BTmpSgqxmPKi0apcNjyrZAS4AFKCPXVdBd6VBeyyv6E,3174
470
470
  endoreg_db/models/metadata/sensitive_meta.py,sha256=ekLHrW-b5uYcjfkRd0EW5ncx5ef8Bu-K6msDkpWCAbk,13034
471
- endoreg_db/models/metadata/sensitive_meta_logic.py,sha256=s5wf_oPXhOuk0ReDE7SblRWO_thkq1ixCerc-xwWRB0,40100
471
+ endoreg_db/models/metadata/sensitive_meta_logic.py,sha256=3JXkLpynNbvE3NVHpkhI8purvdHXpkeA-ut1chkLskE,42001
472
472
  endoreg_db/models/metadata/video_meta.py,sha256=c6xWdLW3uNqJ5VPJXHCxXA3mbXw-b0uR54-TOS3qL2Q,14966
473
473
  endoreg_db/models/metadata/video_prediction_logic.py,sha256=j5N82mHtiomeeIaf1HA65kT5d0htQfJmbI2bJb8mpxQ,7677
474
474
  endoreg_db/models/metadata/video_prediction_meta.py,sha256=EyfctAAAVcW9L0gf76ZBc9-G8MLMcD-tc2kkjaaLH4w,10592
@@ -788,7 +788,7 @@ endoreg_db/views/video/video_meta.py,sha256=C1wBMTtQb_yzEUrhFGAy2UHEWMk_CbU75WXX
788
788
  endoreg_db/views/video/video_processing_history.py,sha256=mhFuS8RG5GV8E-lTtuD0qrq-bIpnUFp8vy9aERfC-J8,770
789
789
  endoreg_db/views/video/video_remove_frames.py,sha256=2FmvNrSPM0fUXiBxINN6vBUUDCqDlBkNcGR3WsLDgKo,1696
790
790
  endoreg_db/views/video/video_stream.py,sha256=kLyuf0ORTmsLeYUQkTQ6iRYqlIQozWhMMR3Lhfe_trk,12148
791
- endoreg_db-0.8.5.2.dist-info/METADATA,sha256=U-mn6p7DpJNoCpAn01fAr14bYmJKzpwfbx2nDOuz_Qs,14719
792
- endoreg_db-0.8.5.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
793
- endoreg_db-0.8.5.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
794
- endoreg_db-0.8.5.2.dist-info/RECORD,,
791
+ endoreg_db-0.8.5.3.dist-info/METADATA,sha256=ojjMkB3oG0VaXKZODsX9LuGiObuhKCLfKdyFXGiGvTM,14719
792
+ endoreg_db-0.8.5.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
793
+ endoreg_db-0.8.5.3.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
794
+ endoreg_db-0.8.5.3.dist-info/RECORD,,