Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
R
red-ci-cd
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
red-group-test
red-ci-cd
Commits
a6d7327f
Commit
a6d7327f
authored
Jan 06, 2020
by
John Red Medrano
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #581 in RMS/api-main-service from red-develop to RMSv2
* commit '
f0c821a8
': red-develop
parents
45083098
f0c821a8
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
116 additions
and
635 deletions
+116
-635
app/accesslayer/views.py
app/accesslayer/views.py
+1
-1
app/applicationlayer/management/account/serializer.py
app/applicationlayer/management/account/serializer.py
+115
-1
app/applicationlayer/management/account/views.py
app/applicationlayer/management/account/views.py
+0
-188
app/applicationlayer/management/user/apps.py
app/applicationlayer/management/user/apps.py
+0
-5
app/applicationlayer/management/user/serializers.py
app/applicationlayer/management/user/serializers.py
+0
-163
app/applicationlayer/management/user/table_filters.py
app/applicationlayer/management/user/table_filters.py
+0
-17
app/applicationlayer/management/user/views.py
app/applicationlayer/management/user/views.py
+0
-260
No files found.
app/accesslayer/views.py
View file @
a6d7327f
...
@@ -9,7 +9,7 @@ from rest_framework.authentication import TokenAuthentication
...
@@ -9,7 +9,7 @@ from rest_framework.authentication import TokenAuthentication
from
rest_framework.permissions
import
AllowAny
from
rest_framework.permissions
import
AllowAny
from
django.db
import
transaction
from
django.db
import
transaction
from
app.helper
import
decorators
from
app.helper
import
decorators
from
app.applicationlayer.management.
user.serializers
import
(
from
app.applicationlayer.management.
account.serializer
import
(
UserManagementRetreiveSerializer
UserManagementRetreiveSerializer
)
)
from
app.entities.models
import
User
,
AuthToken
from
app.entities.models
import
User
,
AuthToken
...
...
app/applicationlayer/management/account/serializer.py
View file @
a6d7327f
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
app.entities.models
import
User
,
Department
,
UserImage
import
ast
import
ast
from
django.contrib.auth.hashers
import
make_password
,
check_password
from
django.contrib.auth.hashers
import
make_password
,
check_password
import
re
import
re
from
django.contrib.auth
import
authenticate
from
django.contrib.auth
import
authenticate
from
app.applicationlayer.utils
import
model_to_dict
from
app.applicationlayer.utils
import
model_to_dict
from
app.entities
import
enums
from
django.db.models
import
Q
from
app.applicationlayer.management.module.serializer
import
ModuleSerializer
from
app.entities.models
import
(
User
,
Department
,
UserImage
,
AllowedCompany
,
Application
,
Module
)
class
UserManagementRetreiveSerializer
(
serializers
.
ModelSerializer
):
image
=
serializers
.
SerializerMethodField
()
applications
=
serializers
.
SerializerMethodField
()
department
=
serializers
.
SerializerMethodField
()
company
=
serializers
.
SerializerMethodField
()
create_form
=
serializers
.
SerializerMethodField
()
create_template
=
serializers
.
SerializerMethodField
()
class
Meta
:
model
=
User
fields
=
(
'id'
,
'create_form'
,
'create_template'
,
'code'
,
'name'
,
'username'
,
'contact_no'
,
'image'
,
'company'
,
'department'
,
'applications'
,
'email'
,
'default_app'
,
'user_type'
,
'is_active'
,
'doa'
,
)
# exclude = ['password', 'application', 'groups', 'user_permissions']
def
get_department
(
self
,
user
):
data
=
{
"id"
:
user
.
department
.
id
,
"code"
:
user
.
department
.
code
,
"name"
:
user
.
department
.
name
}
return
data
def
get_company
(
self
,
user
):
data
=
{
"id"
:
user
.
department
.
company
.
id
,
"code"
:
user
.
department
.
company
.
code
,
"name"
:
user
.
department
.
company
.
name
}
return
data
def
get_create_form
(
self
,
user
):
check_user
=
AllowedCompany
.
objects
.
filter
(
Q
(
id_number
=
user
.
code
)
&
Q
(
create_change_request
=
True
)
)
.
count
()
if
check_user
<=
0
:
permission
=
False
else
:
permission
=
True
return
permission
def
get_create_template
(
self
,
user
):
check_user
=
AllowedCompany
.
objects
.
filter
(
Q
(
id_number
=
user
.
code
)
&
Q
(
create_change_request_template
=
True
)
)
.
count
()
if
check_user
<=
0
:
permission
=
False
else
:
permission
=
True
return
permission
def
get_image
(
self
,
user
):
request
=
self
.
context
.
get
(
'request'
)
primayPic
=
user
.
user_images
.
filter
(
is_primary
=
True
)
.
first
()
if
primayPic
:
return
request
.
build_absolute_uri
(
primayPic
.
image
.
url
)
else
:
return
request
.
build_absolute_uri
(
'/media/no-user.png'
)
def
get_applications
(
self
,
user
):
if
user
.
user_type
.
upper
()
==
enums
.
UserTypeEnum
.
USER
.
value
:
app
=
user
.
application
.
exclude
(
id
=
1
)
else
:
rms
=
Application
.
objects
.
filter
(
id
=
1
)
app
=
user
.
application
.
all
()
app
=
app
.
union
(
app
,
rms
)
list_app
=
[]
for
data
in
app
.
order_by
(
'id'
):
if
data
.
id
==
1
and
user
.
user_type
.
upper
()
==
enums
.
UserTypeEnum
.
SUPER_USER
.
value
:
mod
=
data
.
modules
.
all
()
elif
data
.
id
==
1
and
user
.
user_type
.
upper
()
!=
enums
.
UserTypeEnum
.
USER
.
value
:
mod
=
Module
.
objects
.
filter
(
name__icontains
=
"user"
)
else
:
mod
=
data
.
modules
.
all
()
if
user
.
user_type
.
upper
()
!=
enums
.
UserTypeEnum
.
USER
.
value
:
user_module
=
Module
.
objects
.
filter
(
name__icontains
=
"user"
)
mod
=
mod
.
union
(
mod
,
user_module
)
else
:
mod
=
mod
mod
=
mod
.
order_by
(
"parent"
,
"sort_id"
)
mod
=
ModuleSerializer
(
data
=
mod
,
many
=
True
)
mod
.
is_valid
()
app_body
=
{}
app_body
[
'app_code'
]
=
data
.
code
app_body
[
'name'
]
=
data
.
name
app_body
[
'modules'
]
=
mod
.
data
list_app
.
append
(
app_body
)
return
list_app
class
UserSerializer
(
serializers
.
ModelSerializer
):
class
UserSerializer
(
serializers
.
ModelSerializer
):
...
...
app/applicationlayer/management/account/views.py
View file @
a6d7327f
...
@@ -232,194 +232,6 @@ class UserViewSet(viewsets.ModelViewSet):
...
@@ -232,194 +232,6 @@ class UserViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
status
=
status
.
HTTP_200_OK
)
)
# @rms.user_create
# @action(detail=False,
# methods=['put'],
# url_path='batch-upload',
# name="upload User")
# @decorators.error_safe
# @transaction.atomic
# def BatchUpload(self, request):
# csv_file = request.FILES['file']
# df = pd.read_csv(csv_file, sep=',', skiprows=0)
# logged_user_type = request.user.user_type
# logged_user_company = request.user.department.company.name
# logged_user_department = request.user.department.name
# logged_user_email = request.user.email
# 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':
# 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"},
# 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
# )
# 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_400_BAD_REQUEST
# )
# except IntegrityError as e:
# return Response(
# {"message": f"Record already exist at row {data + 2}"},
# status=status.HTTP_400_BAD_REQUEST
# )
# except KeyError as e:
# return Response(
# {"message": "Missing column user_type"},
# status=status.HTTP_400_BAD_REQUEST
# )
# del users['department']
# del users['contact_no']
# del users['default_app']
# del users['user_type']
# users['password'] = password
# UserHistory.objects.create(
# **users
# )
# users['admin'] = logged_user_email
# send_mail = UserHistory.objects.filter(sent=False)[0:100].values(
# 'name', 'username', 'email', 'password'
# )
# df = pd.DataFrame(send_mail)
# df.to_csv("users.csv", index=False)
# args = ["users.csv", logged_user_email]
# main_threading(args, sender.batch_email_admin)
# args = [send_mail, logged_user_email]
# main_threading(args, sender.batch_email_users)
# return Response(
# {"message": "File already uploaded"},
# status=status.HTTP_201_CREATED
# )
@
action
(
detail
=
True
,
@
action
(
detail
=
True
,
methods
=
[
'put'
],
methods
=
[
'put'
],
url_path
=
'reset-password'
,
url_path
=
'reset-password'
,
...
...
app/applicationlayer/management/user/apps.py
deleted
100644 → 0
View file @
45083098
from
django.apps
import
AppConfig
class
UserManagementConfig
(
AppConfig
):
name
=
'user_management'
app/applicationlayer/management/user/serializers.py
deleted
100644 → 0
View file @
45083098
from
rest_framework
import
serializers
from
app.applicationlayer
import
serializers
as
app_serializers
from
app.entities
import
models
from
django.db.models
import
Q
from
app.applicationlayer.management.module.serializer
import
ModuleSerializer
from
app.entities
import
enums
# Used for Create and Update
class
UserManagementSerializer
(
serializers
.
ModelSerializer
):
image
=
serializers
.
SerializerMethodField
()
class
Meta
:
model
=
models
.
User
exclude
=
[
'password'
]
def
get_image
(
self
,
user
):
request
=
self
.
context
.
get
(
'request'
)
primayPic
=
user
.
user_images
.
filter
(
is_primary
=
True
)
.
first
()
if
primayPic
:
return
request
.
build_absolute_uri
(
primayPic
.
image
.
url
)
else
:
return
request
.
build_absolute_uri
(
'/media/no-user.png'
)
# Used for Retrieve and List
class
UserManagementRoleSerializer
(
serializers
.
ModelSerializer
):
permissions
=
serializers
.
SlugRelatedField
(
many
=
True
,
read_only
=
True
,
slug_field
=
'code'
)
class
Meta
:
model
=
models
.
Role
fields
=
'__all__'
read_only_fields
=
[
'createdby'
,
'modifiedby'
,
'created'
,
'modified'
]
# Used for Retrieve and List
class
UserManagementRetreiveSerializer
(
serializers
.
ModelSerializer
):
image
=
serializers
.
SerializerMethodField
()
applications
=
serializers
.
SerializerMethodField
()
department
=
serializers
.
SerializerMethodField
()
company
=
serializers
.
SerializerMethodField
()
create_form
=
serializers
.
SerializerMethodField
()
create_template
=
serializers
.
SerializerMethodField
()
class
Meta
:
model
=
models
.
User
fields
=
(
'id'
,
'create_form'
,
'create_template'
,
'code'
,
'name'
,
'username'
,
'contact_no'
,
'image'
,
'company'
,
'department'
,
'applications'
,
'email'
,
'default_app'
,
'user_type'
,
'is_active'
,
'doa'
,
)
# exclude = ['password', 'application', 'groups', 'user_permissions']
def
get_department
(
self
,
user
):
data
=
{
"id"
:
user
.
department
.
id
,
"code"
:
user
.
department
.
code
,
"name"
:
user
.
department
.
name
}
return
data
def
get_company
(
self
,
user
):
data
=
{
"id"
:
user
.
department
.
company
.
id
,
"code"
:
user
.
department
.
company
.
code
,
"name"
:
user
.
department
.
company
.
name
}
return
data
def
get_create_form
(
self
,
user
):
check_user
=
models
.
AllowedCompany
.
objects
.
filter
(
Q
(
id_number
=
user
.
code
)
&
Q
(
create_change_request
=
True
)
)
.
count
()
if
check_user
<=
0
:
permission
=
False
else
:
permission
=
True
return
permission
def
get_create_template
(
self
,
user
):
check_user
=
models
.
AllowedCompany
.
objects
.
filter
(
Q
(
id_number
=
user
.
code
)
&
Q
(
create_change_request_template
=
True
)
)
.
count
()
if
check_user
<=
0
:
permission
=
False
else
:
permission
=
True
return
permission
def
get_image
(
self
,
user
):
request
=
self
.
context
.
get
(
'request'
)
primayPic
=
user
.
user_images
.
filter
(
is_primary
=
True
)
.
first
()
if
primayPic
:
return
request
.
build_absolute_uri
(
primayPic
.
image
.
url
)
else
:
return
request
.
build_absolute_uri
(
'/media/no-user.png'
)
def
get_applications
(
self
,
user
):
if
user
.
user_type
.
upper
()
==
enums
.
UserTypeEnum
.
USER
.
value
:
app
=
user
.
application
.
exclude
(
id
=
1
)
else
:
rms
=
models
.
Application
.
objects
.
filter
(
id
=
1
)
app
=
user
.
application
.
all
()
app
=
app
.
union
(
app
,
rms
)
list_app
=
[]
for
data
in
app
.
order_by
(
'id'
):
if
data
.
id
==
1
and
user
.
user_type
.
upper
()
==
enums
.
UserTypeEnum
.
SUPER_USER
.
value
:
mod
=
data
.
modules
.
all
()
elif
data
.
id
==
1
and
user
.
user_type
.
upper
()
!=
enums
.
UserTypeEnum
.
USER
.
value
:
mod
=
models
.
Module
.
objects
.
filter
(
name__icontains
=
"user"
)
else
:
mod
=
data
.
modules
.
all
()
if
user
.
user_type
.
upper
()
!=
enums
.
UserTypeEnum
.
USER
.
value
:
user_module
=
models
.
Module
.
objects
.
filter
(
name__icontains
=
"user"
)
mod
=
mod
.
union
(
mod
,
user_module
)
else
:
mod
=
mod
mod
=
mod
.
order_by
(
"parent"
,
"sort_id"
)
mod
=
ModuleSerializer
(
data
=
mod
,
many
=
True
)
mod
.
is_valid
()
app_body
=
{}
app_body
[
'app_code'
]
=
data
.
code
app_body
[
'name'
]
=
data
.
name
app_body
[
'modules'
]
=
mod
.
data
list_app
.
append
(
app_body
)
return
list_app
class
ChangePasswordSerializer
(
serializers
.
Serializer
):
old_password
=
serializers
.
CharField
(
max_length
=
100
,
required
=
True
)
new_password
=
serializers
.
CharField
(
max_length
=
100
,
required
=
True
)
new_password_confirm
=
serializers
.
CharField
(
max_length
=
100
,
required
=
True
)
class
Meta
:
fields
=
'__all__'
# class UserSpecialPermissionSerializer(serializers.Serializer):
# special_permissions = app_serializers.PermissionSerializer(required=True,
# many=True)
# class Meta:
# fields = '__all__'
app/applicationlayer/management/user/table_filters.py
deleted
100644 → 0
View file @
45083098
from
django_filters
import
rest_framework
as
filters
from
django.db.models
import
Count
from
app.entities
import
models
from
django.db.models
import
Q
class
UserManagementFilter
(
filters
.
FilterSet
):
search
=
filters
.
CharFilter
(
method
=
'search_bar'
,
label
=
'search'
)
def
search_bar
(
self
,
queryset
,
name
,
value
):
return
queryset
.
filter
(
Q
(
username__icontains
=
value
)
|
Q
(
first_name__icontains
=
value
)
|
Q
(
last_name__icontains
=
value
))
class
Meta
:
model
=
models
.
User
fields
=
'__all__'
app/applicationlayer/management/user/views.py
deleted
100644 → 0
View file @
45083098
import
copy
import
json
from
app.entities
import
enums
# from app.businesslayer import log_save
from
app.applicationlayer.utils
import
model_to_dict
from
django.shortcuts
import
render
from
rest_framework.response
import
Response
from
app.entities
import
models
from
django.db
import
transaction
from
app.helper
import
decorators
from
rest_framework
import
viewsets
,
status
from
rest_framework.decorators
import
action
from
app.applicationlayer.management.user
import
table_filters
from
django_filters.rest_framework
import
DjangoFilterBackend
from
app.applicationlayer
import
paginators
from
app.applicationlayer
import
serializers
as
app_serializers
from
.
import
serializers
,
table_filters
from
django.conf
import
settings
from
django.contrib.auth
import
authenticate
from
app.helper.file_manager
import
FileHelper
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
,
log_save
,
QuerySetHelper
)
from
django.db.models
import
(
Q
,
F
,
Sum
,
OuterRef
,
Subquery
,
Q
,
Case
,
When
,
Value
,
Func
,
Count
,
CharField
,
IntegerField
,
DecimalField
,
BooleanField
)
# Create your views here.
class
UsersManagementViewSet
(
viewsets
.
ModelViewSet
):
"""ViewSet for the Requisition"""
queryset
=
models
.
User
.
objects
.
all
()
serializer_class
=
serializers
.
UserManagementSerializer
filter_backends
=
(
DjangoFilterBackend
,)
filter_class
=
table_filters
.
UserManagementFilter
pagination_class
=
CustomPagination
@
transaction
.
atomic
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
new_instance
=
model_to_dict
(
instance
)
instance
.
applications
.
remove
()
self
.
perform_destroy
(
instance
)
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
enums
.
LogEntitiesEnum
.
USER
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@
decorators
.
error_safe
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
serializers
.
UserManagementRetreiveSerializer
return
super
(
UsersManagementViewSet
,
self
)
.
list
(
request
)
@
decorators
.
error_safe
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
serializers
.
UserManagementRetreiveSerializer
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
pk
=
serializer
.
data
[
'id'
]
createdUser
=
models
.
User
.
objects
.
filter
(
id
=
pk
)
.
first
()
createdUser
.
set_password
(
settings
.
USER_DEFAULT_PASSWORD
)
createdUser
.
save
()
# LOG ADD
log_save
.
log_save
(
enums
.
LogEnum
.
ADD
.
value
,
enums
.
LogEntitiesEnum
.
USER
.
value
,
model_to_dict
(
createdUser
))
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
perform_update
(
self
,
serializer
):
fromObj
=
copy
.
copy
(
serializer
.
instance
)
serializer
.
save
()
toObj
=
copy
.
copy
(
serializer
.
instance
)
log_save
.
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
USER
.
value
,
model_to_dict
(
fromObj
),
model_to_dict
(
toObj
))
@
action
(
detail
=
True
,
methods
=
[
'put'
],
url_path
=
'upload-profile-picture'
,
name
=
"Uploads Profile Picture of User"
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
UploadProfilePicture
(
self
,
request
,
pk
=
None
):
existingUser
=
models
.
User
.
objects
.
filter
(
id
=
pk
)
.
first
()
if
existingUser
:
eximages
=
models
.
UserImage
.
objects
.
filter
(
user_id
=
pk
)
if
(
eximages
):
for
item
in
eximages
:
item
.
delete
()
# DELETE FROM PHYSICAL
FileHelper
.
DeleteFile
(
path
=
item
.
image
.
path
)
self
.
serializer_class
=
app_serializers
.
UserImageSerializer
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
else
:
raise
Exception
(
'User not found'
)
return
Response
(
data
=
{
"detail"
:
"Success"
})
@
action
(
detail
=
True
,
methods
=
[
'put'
],
url_path
=
'reset-password'
,
name
=
"Reset Password of User"
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
ResetPassword
(
self
,
request
,
pk
=
None
):
existingUser
=
models
.
User
.
objects
.
filter
(
id
=
pk
)
.
first
()
if
existingUser
:
existingUser
.
set_password
(
settings
.
USER_DEFAULT_PASSWORD
)
fromObj
=
copy
.
copy
(
existingUser
)
existingUser
.
save
()
toObj
=
copy
.
copy
(
existingUser
)
log_save
.
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
ROBOT
.
value
,
model_to_dict
(
fromObj
),
model_to_dict
(
toObj
))
else
:
raise
Exception
(
'User not found'
)
return
Response
(
data
=
{
"detail"
:
"Success"
})
@
action
(
detail
=
True
,
methods
=
[
'put'
],
url_path
=
'change-password'
,
name
=
"Change Password of User"
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
ChangePassword
(
self
,
request
,
pk
=
None
):
self
.
serializer_class
=
serializers
\
.
ChangePasswordSerializer
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
if
serializer
.
is_valid
():
form
=
copy
.
deepcopy
(
serializer
.
validated_data
)
if
form
[
'new_password'
]
!=
form
[
'new_password_confirm'
]:
raise
Exception
(
'Passwords must match'
)
existingUser
=
models
.
User
.
objects
.
filter
(
id
=
pk
)
.
first
()
if
existingUser
:
user
=
authenticate
(
username
=
existingUser
.
username
,
password
=
form
[
'old_password'
])
if
user
:
existingUser
.
set_password
(
form
[
'new_password_confirm'
])
fromObj
=
copy
.
copy
(
existingUser
)
existingUser
.
save
()
toObj
=
copy
.
copy
(
existingUser
)
log_save
.
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
ROBOT
.
value
,
model_to_dict
(
fromObj
),
model_to_dict
(
toObj
))
return
Response
(
data
=
{
"detail"
:
"Success"
},
status
=
200
)
else
:
raise
Exception
(
"Invalid Old Password"
)
else
:
raise
Exception
(
'User not found'
)
else
:
serializer
.
is_valid
(
raise_exception
=
True
)
return
Response
(
data
=
{
"detail"
:
"Error"
},
status
=
500
)
@
action
(
detail
=
True
,
methods
=
[
'put'
],
url_path
=
'add-special-permissions'
,
name
=
"Adds special permissions to user"
)
@
decorators
.
error_safe
@
transaction
.
atomic
def
UserSpecialPermissions
(
self
,
request
,
pk
=
None
):
user
=
models
.
User
.
objects
.
filter
(
id
=
pk
)
.
first
()
if
not
user
:
raise
Exception
(
'User not found'
)
# CLEARES ALL USER'S SPECIAL PERMISSION'
for
i
in
user
.
special_permissions
.
all
():
i
.
delete
()
user
.
save
()
# LOAD NEW USER'S NEW SPECIAL PERMISSIONS
form
=
copy
.
deepcopy
(
request
.
data
)
for
spid
in
form
[
'special_permissions'
]:
sp
=
models
.
Permission
.
objects
.
filter
(
id
=
spid
)
.
first
()
if
not
sp
:
raise
Exception
(
F
"{spid} does not exists"
)
return
Response
(
data
=
{
"detail"
:
"Success"
},
status
=
200
)
# # Lists ALL Application Permissions (No Pagination)
# @action(detail=False,
# methods=['get'],
# url_path='all-permissions',
# name="Lists all Application's Permissions")
# @decorators.error_safe
# def AllPermissions(self, request, *args, **kwargs):
# return Response(
# models.Permission.objects.values(
# permissionId=F('id'),
# permissionCode=F('code')
# )
# )
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment