Skip to content
Merged
34 changes: 15 additions & 19 deletions backend/api/v1/v1_users/tests/tests_user_invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,7 @@ def test_add_edit_user(self):
'phone_number', 'designation', 'forms', 'approval_assignment',
'pending_approval', 'data'
], list(responses))
self.assertEqual(responses["forms"], [{
'id': 1,
'name': 'Test Form'
}])
self.assertEqual(responses["forms"], [{'id': 1, 'name': 'Test Form'}])

def test_get_user_profile(self):
call_command("administration_seeder", "--test")
Expand Down Expand Up @@ -236,24 +233,25 @@ def test_config_js(self):

def test_get_email_template(self):
# test get user_register template
response = self.client.get(
'/api/v1/email_template?type=user_register',
content_type='application/json')
response = self.client.get('/api/v1/email_template?type=user_register',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get user_approval template
response = self.client.get(
'/api/v1/email_template?type=user_approval',
content_type='application/json')
response = self.client.get('/api/v1/email_template?type=user_approval',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get user_forgot_password template
response = self.client.get(
'/api/v1/email_template?type=user_forgot_password',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get user_invite template
response = self.client.get('/api/v1/email_template?type=user_invite',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get data_approval template
response = self.client.get(
'/api/v1/email_template?type=data_approval',
content_type='application/json')
response = self.client.get('/api/v1/email_template?type=data_approval',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get data_rejection template
response = self.client.get(
Expand All @@ -276,14 +274,12 @@ def test_get_email_template(self):
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get upload_error template
response = self.client.get(
'/api/v1/email_template?type=upload_error',
content_type='application/json')
response = self.client.get('/api/v1/email_template?type=upload_error',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get new_request template
response = self.client.get(
'/api/v1/email_template?type=new_request',
content_type='application/json')
response = self.client.get('/api/v1/email_template?type=new_request',
content_type='application/json')
self.assertEqual(response.status_code, 200)
# test get unchanged_data template
response = self.client.get(
Expand Down
7 changes: 5 additions & 2 deletions backend/api/v1/v1_users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ def list_levels(request, version):
},
tags=['User'],
description='Role Choice are SuperAdmin:1,Admin:2,Approver:3,'
'User:4',
'User:4,ReadOnly:5',
summary='To add user')
@api_view(['POST'])
@permission_classes([IsAuthenticated, IsSuperAdmin | IsAdmin])
Expand All @@ -227,7 +227,10 @@ def add_user(request, version):
return Response(
{'message': validate_serializers_message(serializer.errors)},
status=status.HTTP_400_BAD_REQUEST)
serializer.save()
user = serializer.save()
url = f"{webdomain}/login/{signing.dumps(user.pk)}"
data = {'button_url': url, 'send_to': [user.email]}
send_email(type=EmailTypes.user_invite, context=data)
return Response({'message': 'User added successfully'},
status=status.HTTP_200_OK)

Expand Down
16 changes: 16 additions & 0 deletions backend/utils/email_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class EmailTypes:
user_register = 'user_register'
user_approval = 'user_approval'
user_forgot_password = 'user_forgot_password'
user_invite = 'user_invite'
data_approval = 'data_approval'
data_rejection = 'data_rejection'
batch_approval = 'batch_approval'
Expand All @@ -25,6 +26,7 @@ class EmailTypes:
user_register: 'user_register',
user_approval: 'user_approval',
user_forgot_password: 'user_forgot_password',
user_invite: 'user_invite',
data_approval: 'data_approval',
data_rejection: 'data_rejection',
batch_approval: 'batch_approval',
Expand Down Expand Up @@ -92,6 +94,20 @@ def email_context(context: dict, type: str):
"button_url": button_url,
"button_text": "Reset Password"
})
if type == EmailTypes.user_invite:
button_url = "#"
if context.get("button_url"):
button_url = context.get("button_url")
context.update({
"subject": "Set Password",
"body": '''You have invited to the National Sanitation and Hygiene
Real-Time Monitoring System. Please click on the button
below to set your password and finalise your account.''',
"explore_button": False,
"button": True,
"button_url": button_url,
"button_text": "Set Password"
})
if type == EmailTypes.data_approval:
context.update({
"subject": "Data Upload Approved",
Expand Down