@@ -333,6 +333,55 @@ def _handle_confirm_push(
333333 return render (request , "workspace/actions/create_rdp_push_threshold.html" , ctx )
334334
335335
336+ class _CreateRdpSubmitContext (NamedTuple ):
337+ program : Any
338+ form : CreateRDPForm
339+ show_push_option : bool
340+
341+
342+ def _handle_create_rdp_submit (
343+ model_admin : "BeneficiaryBaseAdmin" ,
344+ request : HttpRequest ,
345+ queryset : "QuerySet[Beneficiary]" ,
346+ ctx : _CreateRdpSubmitContext ,
347+ ) -> HttpResponse :
348+ form = ctx .form
349+ push_to_hope = form .cleaned_data .get ("push_to_hope" , False )
350+ if not push_to_hope :
351+ _queue_create_rdp_job (
352+ model_admin ,
353+ request ,
354+ queryset ,
355+ _CreateRdpJobSpec (
356+ program = ctx .program ,
357+ batch_name = form .cleaned_data ["batch_name" ],
358+ push_to_hope = False ,
359+ ),
360+ )
361+ return redirect ("workspace:workspaces_countryrdp_changelist" )
362+
363+ if not ctx .show_push_option :
364+ model_admin .message_user (
365+ request ,
366+ "You do not have permission to push RDP to HOPE." ,
367+ messages .ERROR ,
368+ )
369+ page_ctx = model_admin .get_common_context (request , title = create_rdp .short_description , form = form )
370+ return render (request , "workspace/actions/create_rdp.html" , page_ctx )
371+
372+ threshold_form = CreateRDPushThresholdForm (
373+ initial = {
374+ "action" : form .cleaned_data ["action" ],
375+ "select_across" : form .cleaned_data ["select_across" ],
376+ "_selected_action" : _post_selected_actions (request ),
377+ "batch_name" : form .cleaned_data .get ("batch_name" , "" ),
378+ "push_to_hope" : "on" ,
379+ },
380+ )
381+ page_ctx = _create_rdp_push_threshold_context (model_admin , request , form = threshold_form )
382+ return render (request , "workspace/actions/create_rdp_push_threshold.html" , page_ctx )
383+
384+
336385@admin .action (description = "Create RDP" , permissions = ["create_rdp" ])
337386def create_rdp (
338387 model_admin : "BeneficiaryBaseAdmin" ,
@@ -341,51 +390,24 @@ def create_rdp(
341390) -> HttpResponse :
342391 if model_admin ._check_empty_queryset (request , queryset ):
343392 return redirect ("." )
393+
344394 program = model_admin .get_selected_program (request )
345395 show_push_option = model_admin .has_push_rdp_to_hope_permission (request ) and program .biometric_deduplication_enabled
346396
347- if (
348- request .method == "POST"
349- and "_confirm_push" in request .POST
350- and (response := _handle_confirm_push (model_admin , request , queryset , program , show_push_option )) is not None
351- ):
352- return response
397+ if request .method == "POST" and "_confirm_push" in request .POST :
398+ response = _handle_confirm_push (model_admin , request , queryset , program , show_push_option )
399+ if response is not None :
400+ return response
353401
354402 if request .method == "POST" and "_create" in request .POST :
355403 form = CreateRDPForm (request .POST , show_push_option = show_push_option )
356404 if form .is_valid ():
357- push_to_hope = form .cleaned_data .get ("push_to_hope" , False )
358- if push_to_hope and not show_push_option :
359- model_admin .message_user (
360- request ,
361- "You do not have permission to push RDP to HOPE." ,
362- messages .ERROR ,
363- )
364- ctx = model_admin .get_common_context (request , title = create_rdp .short_description , form = form )
365- return render (request , "workspace/actions/create_rdp.html" , ctx )
366- if push_to_hope :
367- threshold_form = CreateRDPushThresholdForm (
368- initial = {
369- "action" : form .cleaned_data ["action" ],
370- "select_across" : form .cleaned_data ["select_across" ],
371- "_selected_action" : _post_selected_actions (request ),
372- "batch_name" : form .cleaned_data .get ("batch_name" , "" ),
373- "push_to_hope" : "on" ,
374- },
375- )
376- ctx = _create_rdp_push_threshold_context (model_admin , request , form = threshold_form )
377- return render (request , "workspace/actions/create_rdp_push_threshold.html" , ctx )
378- _queue_create_rdp_job (
405+ return _handle_create_rdp_submit (
379406 model_admin ,
380407 request ,
381408 queryset ,
382- _CreateRdpJobSpec (
383- program = program ,
384- batch_name = form .cleaned_data ["batch_name" ],
385- push_to_hope = False ,
386- ),
409+ _CreateRdpSubmitContext (program = program , form = form , show_push_option = show_push_option ),
387410 )
388- return redirect ("workspace:workspaces_countryrdp_changelist" )
389411
390412 form = CreateRDPForm (
391413 initial = {
0 commit comments