Skip to content

Commit

Permalink
CM-808 (#79)
Browse files Browse the repository at this point in the history
  • Loading branch information
jdolkowski committed May 17, 2024
1 parent 5f66fc6 commit 572183e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
10 changes: 6 additions & 4 deletions social_protection/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,10 @@ def __init__(self, user):
def import_beneficiaries(self,
import_file: InMemoryUploadedFile,
benefit_plan: BenefitPlan,
workflow: WorkflowHandler):
workflow: WorkflowHandler,
group_aggregation_column: str):
upload = self._save_sources(import_file)
self._create_benefit_plan_data_upload_records(benefit_plan, workflow, upload)
self._create_benefit_plan_data_upload_records(benefit_plan, workflow, upload, group_aggregation_column)
self._trigger_workflow(workflow, upload, benefit_plan)
return {'success': True, 'data': {'upload_uuid': upload.uuid}}

Expand All @@ -150,11 +151,12 @@ def _save_sources(self, import_file):
return upload

@transaction.atomic
def _create_benefit_plan_data_upload_records(self, benefit_plan, workflow, upload):
def _create_benefit_plan_data_upload_records(self, benefit_plan, workflow, upload, group_aggregation_column):
record = BenefitPlanDataUploadRecords(
data_upload=upload,
benefit_plan=benefit_plan,
workflow=workflow.name
workflow=workflow.name,
json_ext={"group_aggregation_column": group_aggregation_column}
)
record.save(username=self.user.username)

Expand Down
12 changes: 9 additions & 3 deletions social_protection/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ def import_beneficiaries(request):
benefit_plan = None
try:
user = request.user
import_file, workflow, benefit_plan = _resolve_import_beneficiaries_args(request)
import_file, workflow, benefit_plan, group_aggregation_column = _resolve_import_beneficiaries_args(request)
_handle_file_upload(import_file, benefit_plan)
result = BeneficiaryImportService(user).import_beneficiaries(import_file, benefit_plan, workflow)
result = BeneficiaryImportService(user).import_beneficiaries(
import_file, benefit_plan, workflow, group_aggregation_column
)
if not result.get('success'):
raise ValueError('{}: {}'.format(result.get("message"), result.get("details")))

Expand Down Expand Up @@ -177,6 +179,7 @@ def _resolve_import_beneficiaries_args(request):
benefit_plan_uuid = request.POST.get('benefit_plan')
workflow_name = request.POST.get('workflow_name')
workflow_group = request.POST.get('workflow_group')
group_aggregation_column = request.POST.get('group_aggregation_column')

if not import_file:
raise ValueError(f'Import file not provided')
Expand All @@ -186,6 +189,9 @@ def _resolve_import_beneficiaries_args(request):
raise ValueError(f'Workflow name not provided')
if not workflow_group:
raise ValueError(f'Workflow group not provided')
if (group_aggregation_column and
BenefitPlan.objects.filter(uuid=benefit_plan_uuid).first().type != BenefitPlan.BenefitPlanType.GROUP_TYPE):
raise ValueError(f'Group aggregation only for group type benefit plans')

result = WorkflowService.get_workflows(workflow_name, workflow_group)
if not result.get('success'):
Expand All @@ -204,7 +210,7 @@ def _resolve_import_beneficiaries_args(request):
if not benefit_plan:
raise ValueError('Benefit Plan not found: {}'.format(benefit_plan_uuid))

return import_file, workflow, benefit_plan
return import_file, workflow, benefit_plan, group_aggregation_column


def _resolve_validate_import_beneficiaries_args(request):
Expand Down

0 comments on commit 572183e

Please sign in to comment.