33
44from genlab_bestilling .models import Area , Order
55
6- from ..tables import AssignedOrderTable , NewOrderTable , UrgentOrderTable
6+ from ..tables import (
7+ AssignedOrderTable ,
8+ NewSeenOrderTable ,
9+ NewUnseenOrderTable ,
10+ UrgentOrderTable ,
11+ )
712
813register = template .Library ()
914
1015
1116@register .inclusion_tag ("staff/components/order_table.html" , takes_context = True )
1217def urgent_orders_table (context : dict , area : Area | None = None ) -> dict :
13- urgent_orders = Order .objects .filter (
14- is_urgent = True ,
15- status__in = [Order .OrderStatus .PROCESSING , Order .OrderStatus .DELIVERED ],
16- ).select_related ("genrequest" )
18+ urgent_orders = (
19+ Order .objects .filter (
20+ is_urgent = True ,
21+ )
22+ .exclude (status = Order .OrderStatus .DRAFT )
23+ .select_related ("genrequest" )
24+ )
1725
1826 if area :
1927 urgent_orders = urgent_orders .filter (genrequest__area = area )
2028
21- urgent_orders = urgent_orders .only (
22- "id" , "genrequest__name" , "genrequest__expected_samples_delivery_date" , "status"
23- ).order_by (
29+ urgent_orders = urgent_orders .order_by (
2430 models .Case (
2531 models .When (status = Order .OrderStatus .PROCESSING , then = 0 ),
2632 models .When (status = Order .OrderStatus .DELIVERED , then = 1 ),
@@ -40,18 +46,43 @@ def urgent_orders_table(context: dict, area: Area | None = None) -> dict:
4046
4147
4248@register .inclusion_tag ("staff/components/order_table.html" , takes_context = True )
43- def new_orders_table (context : dict , area : Area | None = None ) -> dict :
49+ def new_seen_orders_table (context : dict , area : Area | None = None ) -> dict :
4450 new_orders = (
45- Order .objects .filter (status = Order .OrderStatus .DELIVERED )
51+ Order .objects .filter (status = Order .OrderStatus .DELIVERED , is_seen = True )
52+ .exclude (is_urgent = True )
4653 .select_related ("genrequest" )
47- .annotate (sample_count = models .Count ("extractionorder__samples" ))
48- .only (
49- "id" ,
50- "genrequest__name" ,
51- "genrequest__expected_samples_delivery_date" ,
52- "status" ,
54+ .annotate (
55+ sample_count = models .Count ("extractionorder__samples" ),
5356 )
54- .order_by ("status" )
57+ .annotate (
58+ priority = models .Case (
59+ models .When (is_urgent = True , then = Order .OrderPriority .URGENT ),
60+ models .When (is_prioritized = True , then = Order .OrderPriority .PRIORITIZED ),
61+ default = 1 ,
62+ )
63+ )
64+ )
65+
66+ if area :
67+ new_orders = new_orders .filter (genrequest__area = area )
68+
69+ new_orders = new_orders .order_by ("-priority" , "-created_at" )
70+
71+ return {
72+ "title" : "New seen orders" ,
73+ "table" : NewSeenOrderTable (new_orders ),
74+ "count" : new_orders .count (),
75+ "request" : context .get ("request" ),
76+ }
77+
78+
79+ @register .inclusion_tag ("staff/components/order_table.html" , takes_context = True )
80+ def new_unseen_orders_table (context : dict , area : Area | None = None ) -> dict :
81+ new_orders = (
82+ Order .objects .filter (status = Order .OrderStatus .DELIVERED , is_seen = False )
83+ .exclude (is_urgent = True )
84+ .select_related ("genrequest" )
85+ .annotate (sample_count = models .Count ("extractionorder__samples" ))
5586 )
5687
5788 if area :
@@ -60,8 +91,8 @@ def new_orders_table(context: dict, area: Area | None = None) -> dict:
6091 new_orders = new_orders .order_by ("-created_at" )
6192
6293 return {
63- "title" : "New orders" ,
64- "table" : NewOrderTable (new_orders ),
94+ "title" : "New unseen orders" ,
95+ "table" : NewUnseenOrderTable (new_orders ),
6596 "count" : new_orders .count (),
6697 "request" : context .get ("request" ),
6798 }
@@ -81,11 +112,12 @@ def assigned_orders_table(context: dict) -> dict:
81112 .annotate (
82113 sample_count = models .Count ("extractionorder__samples" ),
83114 )
84- .only (
85- "id" ,
86- "genrequest__name" ,
87- "genrequest__expected_samples_delivery_date" ,
88- "status" ,
115+ .annotate (
116+ priority = models .Case (
117+ models .When (is_urgent = True , then = Order .OrderPriority .URGENT ),
118+ models .When (is_prioritized = True , then = Order .OrderPriority .PRIORITIZED ),
119+ default = 1 ,
120+ )
89121 )
90122 .order_by (
91123 models .Case (
@@ -95,6 +127,7 @@ def assigned_orders_table(context: dict) -> dict:
95127 default = 3 ,
96128 output_field = models .IntegerField (),
97129 ),
130+ "-priority" ,
98131 "-created_at" ,
99132 )
100133 )
0 commit comments