Skip to content

Commit ab38bbd

Browse files
committed
fix: 315764 simplify create_rdp
1 parent 44f97b4 commit ab38bbd

1 file changed

Lines changed: 56 additions & 34 deletions

File tree

  • src/country_workspace/workspaces/admin/cleaners

src/country_workspace/workspaces/admin/cleaners/actions.py

Lines changed: 56 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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"])
337386
def 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

Comments
 (0)