Browse Source

Merge branch 'main' of http://git2.simplico.net/tum/coi

tum 6 months ago
parent
commit
3da172d5cb
1 changed files with 22 additions and 3 deletions
  1. 22 3
      app/report/views.py

+ 22 - 3
app/report/views.py

26
 from itertools import chain
26
 from itertools import chain
27
 
27
 
28
 from django_filters.views import FilterView
28
 from django_filters.views import FilterView
29
-from django.db.models import Q
29
+from django.db.models import Q, Func, Value, F
30
 
30
 
31
 
31
 
32
 from django.views.generic import (
32
 from django.views.generic import (
456
     placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
456
     placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
457
     return placeholders
457
     return placeholders
458
 
458
 
459
+def safe_strip(val):
460
+    """Remove '-' or return '' if None."""
461
+    return val.replace('-', '') if val else ''
462
+
459
 def generate_dimension_app_drawing_values(lot_no, code):
463
 def generate_dimension_app_drawing_values(lot_no, code):
460
     """
464
     """
461
     Fetch dimension records from manualSize and DataMs models
465
     Fetch dimension records from manualSize and DataMs models
537
 
541
 
538
     hide_con(placeholders, "v5_1", "27:33")
542
     hide_con(placeholders, "v5_1", "27:33")
539
     
543
     
540
-    drawing_data = ProductDrawing.objects.filter(
541
-        Q(lot_no=lot_no) | Q(code_no=code)).first()
544
+
545
+    norm_lot_no = safe_strip(lot_no)
546
+    norm_code = safe_strip(code)
547
+    
548
+    drawing_qs = ProductDrawing.objects.annotate(
549
+        norm_lot_no=Func(F('lot_no'), Value('-'), Value(''), function='replace'),
550
+        norm_code_no=Func(F('code_no'), Value('-'), Value(''), function='replace')
551
+    )
552
+
553
+    query = Q()
554
+    if norm_lot_no:
555
+        query |= Q(norm_lot_no=norm_lot_no)
556
+    if norm_code:
557
+        query |= Q(norm_code_no=norm_code)
558
+
559
+    drawing_data = drawing_qs.filter(query).first()
560
+    
542
     pprint(f"1.1 = {drawing_data}") 
561
     pprint(f"1.1 = {drawing_data}") 
543
     pprint(f"1.2 = {lot_no} {code}")
562
     pprint(f"1.2 = {lot_no} {code}")
544
     if drawing_data:
563
     if drawing_data: