Commit 6c3a28d2 authored by John Red Medrano's avatar John Red Medrano

Merge pull request #456 in RMS/api-main-service from red-develop to RMSv2

* commit '10ddff20':
  when user is deleted it will also delete the record on UserHistory
parents 2d47ffc8 10ddff20
......@@ -150,6 +150,8 @@ class UserViewSet(viewsets.ModelViewSet):
instance = self.get_object()
new_instance = model_to_dict(instance)
UserHistory.objects.filter(username=instance.username).delete()
AllowedCompany.objects.filter(id_number=instance.code).delete()
self.perform_destroy(instance)
log_save(
......@@ -250,141 +252,141 @@ class UserViewSet(viewsets.ModelViewSet):
email_users = []
for data, keys in df.iterrows():
# try:
user_department = Department.objects.filter(
Q(name__icontains=keys['department']) &
Q(company__name__icontains=logged_user_company)
).first()
if logged_user_type == 'CUA':
try:
user_department = Department.objects.filter(
Q(name__icontains=keys['department']) &
Q(company__name__icontains=logged_user_company)
).first()
if user_department == None:
msg = f"company is not the same with the logged user at row {data + 2}"
return Response(
{"message": msg},
status=status.HTTP_400_BAD_REQUEST
)
elif logged_user_type == 'DUA':
user_department = Department.objects.get(
name__icontains=logged_user_department
)
elif logged_user_type == 'USR':
return Response(
{"message": "Logged User is not allowed"},
if logged_user_type == 'CUA':
user_department = Department.objects.filter(
Q(name__icontains=keys['department']) &
Q(company__name__icontains=logged_user_company)
).first()
if user_department == None:
msg = f"company is not the same with the logged user at row {data + 2}"
return Response(
{"message": msg},
status=status.HTTP_400_BAD_REQUEST
)
else:
user_department = Department.objects.get(
name__icontains=keys['department']
elif logged_user_type == 'DUA':
user_department = Department.objects.get(
name__icontains=logged_user_department
)
elif logged_user_type == 'USR':
return Response(
{"message": "Logged User is not allowed"},
status=status.HTTP_400_BAD_REQUEST
)
else:
user_department = Department.objects.get(
name__icontains=keys['department']
)
default_app = Application.objects.filter(
excel_code=keys['default_app']
).first()
enums_super = enums.UserTypeEnum.SUPER_USER.value
enums_OUA = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
enums_company = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
enums_department = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
enums_user = enums.UserTypeEnum.USER.value
if keys['user_type'].lower() == 'super user' and logged_user_type == enums_super:
user_type = enums.UserTypeEnum.SUPER_USER.value
elif keys['user_type'].lower() == 'super user' and logged_user_type != enums_super:
return Response(
{"message": f"This user is not allowed to create super user. data error at row {data + 2}"},
status=status.HTTP_201_CREATED
)
elif keys['user_type'].lower() == 'overall user admin':
user_type = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
elif keys['user_type'].lower() == 'company user admin':
user_type = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
elif keys['user_type'].lower() == 'department user admin':
user_type = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
else:
user_type = enums.UserTypeEnum.USER.value
users = {
"username": keys['username'],
"name": keys['name'],
"department": user_department,
"email": keys['email'],
"contact_no": keys['contact_no'],
"default_app": default_app,
"user_type": user_type
}
current_user = User.objects.create(
**users
)
default_app = Application.objects.filter(
excel_code=keys['default_app']
).first()
password = User.objects.make_random_password(length=10)
password_hash = make_password(password)
current_user.password = password_hash
current_user.save()
enums_super = enums.UserTypeEnum.SUPER_USER.value
enums_OUA = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
enums_company = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
enums_department = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
enums_user = enums.UserTypeEnum.USER.value
app = Application.objects.filter(
excel_code__in=keys['application'].split(',')
)
if keys['user_type'].lower() == 'super user' and logged_user_type == enums_super:
user_type = enums.UserTypeEnum.SUPER_USER.value
elif keys['user_type'].lower() == 'super user' and logged_user_type != enums_super:
update_user = current_user.application.set(app)
for instance in keys['privilege'].split(';'):
privilege_list = instance.split(',')
this_company = Company.objects.filter(
name__icontains=privilege_list[0]
).first()
this_department = Department.objects.filter(
name__icontains=privilege_list[1]
).first()
if privilege_list[2] == 0:
privilege_list[2] = False
else:
privilege_list[2] = True
if privilege_list[3] == 0:
privilege_list[3] = False
else:
privilege_list[3] = True
if privilege_list[4] == 0:
privilege_list[4] = False
else:
privilege_list[4] = True
current_user = User.objects.get(id=current_user.id)
try:
privilege_object = {
"id_number": current_user,
"company_pivot": this_company,
"group_pivots": this_department,
"create_change_request": privilege_list[2],
"create_change_request_template": privilege_list[3],
"view_all_change_request": privilege_list[4],
"approve_cr": privilege_list[5]
}
AllowedCompany.objects.create(**privilege_object)
except IntegrityError as e:
return Response(
{"message": f"Duplicate user privilege at row {data + 2}"},
status=status.HTTP_201_CREATED
)
except IntegrityError as e:
return Response(
{"message": f"This user is not allowed to create super user. data error at row {data + 2}"},
{"message": f"Record already exist at row {data + 2}"},
status=status.HTTP_201_CREATED
)
elif keys['user_type'].lower() == 'overall user admin':
user_type = enums.UserTypeEnum.OVERALL_USER_ADMIN.value
elif keys['user_type'].lower() == 'company user admin':
user_type = enums.UserTypeEnum.COMPANY_USER_ADMIN.value
elif keys['user_type'].lower() == 'department user admin':
user_type = enums.UserTypeEnum.DEPARTMENT_USER_ADMIN.value
else:
user_type = enums.UserTypeEnum.USER.value
users = {
"username": keys['username'],
"name": keys['name'],
"department": user_department,
"email": keys['email'],
"contact_no": keys['contact_no'],
"default_app": default_app,
"user_type": user_type
}
current_user = User.objects.create(
**users
)
password = User.objects.make_random_password(length=10)
password_hash = make_password(password)
current_user.password = password_hash
current_user.save()
app = Application.objects.filter(
excel_code__in=keys['application'].split(',')
)
update_user = current_user.application.set(app)
for instance in keys['privilege'].split(';'):
privilege_list = instance.split(',')
this_company = Company.objects.filter(
name__icontains=privilege_list[0]
).first()
this_department = Department.objects.filter(
name__icontains=privilege_list[1]
).first()
if privilege_list[2] == 0:
privilege_list[2] = False
else:
privilege_list[2] = True
if privilege_list[3] == 0:
privilege_list[3] = False
else:
privilege_list[3] = True
if privilege_list[4] == 0:
privilege_list[4] = False
else:
privilege_list[4] = True
current_user = User.objects.get(id=current_user.id)
# try:
privilege_object = {
"id_number": current_user,
"company_pivot": this_company,
"group_pivots": this_department,
"create_change_request": privilege_list[2],
"create_change_request_template": privilege_list[3],
"view_all_change_request": privilege_list[4],
"approve_cr": privilege_list[5]
}
AllowedCompany.objects.create(**privilege_object)
# except IntegrityError as e:
# return Response(
# {"message": f"Duplicate user privilege at row {data + 2}"},
# status=status.HTTP_201_CREATED
# )
# except IntegrityError as e:
# return Response(
# {"message": f"Record already exist at row {data + 2}"},
# status=status.HTTP_201_CREATED
# )
# except KeyError as e:
# return Response(
# {"message": "Missing column user_type"},
# status=status.HTTP_201_CREATED
# )
except KeyError as e:
return Response(
{"message": "Missing column user_type"},
status=status.HTTP_201_CREATED
)
del users['department']
del users['contact_no']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment