66from track import orders
77from django .contrib import messages
88from track import gbf
9+ from track .log_manager import LogManager
910
1011logger = logging .getLogger (__name__ )
1112
1213
1314# Register your models here.
1415class OrderAdmin (admin .ModelAdmin ):
1516 change_list_template = "track/check_orders.html"
16-
17- list_display = ["record_id" , "order_number" , "tracking_nrs" , "return_tracking_nrs" , "tube_serials" , "order_status" , "ship_date" ]
18- actions = ['check_orders_status' ]
17+ list_display = [
18+ "record_id" ,
19+ "order_number" ,
20+ "tracking_nrs" ,
21+ "return_tracking_nrs" ,
22+ "tube_serials" ,
23+ "order_status" ,
24+ "ship_date"
25+ ]
26+ actions = ["check_orders_status" ]
1927
2028 def get_actions (self , request ):
2129 actions = super ().get_actions (request )
2230 return actions
2331
2432 def check_orders_status (self , request , queryset ):
33+ """
34+ Checks shipping status for the selected orders without forcing their
35+ status to Order.INITIATED. Also logs the process using log_manager.
36+ """
2537 if not queryset :
2638 self .message_user (request , "No orders selected to check status." , messages .WARNING )
2739 return
28-
40+
41+ log_manager = LogManager ()
2942 try :
30- order_numbers = list (queryset .values_list ('order_number' , flat = True ))
31- queryset .update (order_status = Order .INITIATED )
43+ order_numbers = list (queryset .values_list ("order_number" , flat = True ))
3244
33- # Check shipping info for selected orders only
45+ # START LOG for each order before checking status
46+ for order_number in order_numbers :
47+ log_manager .start_order_log (order_number )
48+
49+ # retrieve shipping info from GBF
3450 tracking_info = gbf .get_order_confirmations (order_numbers )
3551 if tracking_info :
3652 orders ._update_orders_with_shipping_info (tracking_info )
3753 message = f"Successfully checked shipping status for orders: { ', ' .join (order_numbers )} "
3854 self .message_user (request , message , messages .SUCCESS )
3955 else :
4056 self .message_user (request , "No shipping information available for the selected orders." , messages .INFO )
41-
57+
58+ # COMPLETE LOG for each order after processing
59+ for order_number in order_numbers :
60+ log_manager .complete_log (order_number )
61+
4262 except Exception as e :
4363 logger .error (f"Error checking order status: { str (e )} " )
4464 self .message_user (request , f"Error checking order status: { str (e )} " , messages .ERROR )
45-
65+
66+ for order_number in order_numbers :
67+ log_manager .append_to_gbf_log (LogManager .LEVEL_ERROR , f"Error checking order status: { str (e )} " , order_number )
68+
4669 check_orders_status .short_description = "Check shipping status for selected orders"
4770
4871class ConfirmationCheckLogAdmin (admin .ModelAdmin ):
@@ -52,12 +75,12 @@ class ConfirmationCheckLogAdmin(admin.ModelAdmin):
5275 def get_urls (self ):
5376 urls = super ().get_urls ()
5477 my_urls = [
55- path (' check_order_status/' , self .call_check_order_status ),
78+ path (" check_order_status/" , self .call_check_order_status ),
5679 ]
5780 return my_urls + urls
5881
5982 def call_check_order_status (self , request ):
60- logger .info ("Initiatied check for tracking info" )
83+ logger .info ("Initiated check for tracking info" )
6184 orders .check_orders_shipping_info ()
6285 logger .info ("Tracking info check completed." )
6386 return HttpResponseRedirect ("../" )
0 commit comments