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
1fbc31ca
Commit
1fbc31ca
authored
Mar 10, 2020
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RMS-PRD-66 - AMS User Privilege Section + DB Schema
parent
6eedb12e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
269 additions
and
30 deletions
+269
-30
app/applicationlayer/ams/ams_privilege/serializer.py
app/applicationlayer/ams/ams_privilege/serializer.py
+19
-0
app/applicationlayer/ams/ams_privilege/table_filter.py
app/applicationlayer/ams/ams_privilege/table_filter.py
+10
-0
app/applicationlayer/ams/ams_privilege/views.py
app/applicationlayer/ams/ams_privilege/views.py
+105
-0
app/applicationlayer/ams/ams_user_type/views.py
app/applicationlayer/ams/ams_user_type/views.py
+32
-0
app/applicationlayer/ams/urls_ams.py
app/applicationlayer/ams/urls_ams.py
+4
-0
app/entities/enums.py
app/entities/enums.py
+13
-1
app/entities/migrations/0005_amsprivilege.py
app/entities/migrations/0005_amsprivilege.py
+30
-0
app/entities/models.py
app/entities/models.py
+56
-29
No files found.
app/applicationlayer/ams/ams_privilege/serializer.py
0 → 100644
View file @
1fbc31ca
from
rest_framework
import
serializers
from
app.entities.models
import
AMSPrivilege
from
app.applicationlayer.utils
import
model_to_dict
class
AMSPrivilegeSerializer
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
ret
[
'id_number'
]
=
model_to_dict
(
instance
.
id_number
)
ret
[
'department'
]
=
model_to_dict
(
instance
.
department
)
ret
[
'company'
]
=
model_to_dict
(
instance
.
department
.
company
)
ret
[
'ams_user_type'
]
=
instance
.
ams_user_type
return
ret
class
Meta
:
model
=
AMSPrivilege
fields
=
'__all__'
app/applicationlayer/ams/ams_privilege/table_filter.py
0 → 100644
View file @
1fbc31ca
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
AMSPrivilege
from
django.db.models
import
Q
class
AMSPrivilegeFilterSet
(
filters
.
FilterSet
):
class
Meta
:
model
=
AMSPrivilege
fields
=
'__all__'
app/applicationlayer/ams/ams_privilege/views.py
0 → 100644
View file @
1fbc31ca
from
rest_framework
import
status
,
viewsets
from
rest_framework.response
import
Response
from
app.entities.models
import
AMSPrivilege
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
)
from
django_filters
import
rest_framework
as
filters
from
django_filters.rest_framework
import
DjangoFilterBackend
from
rest_framework.filters
import
SearchFilter
,
OrderingFilter
from
app.applicationlayer.ams.ams_privilege.serializer
import
(
AMSPrivilegeSerializer
)
from
app.applicationlayer.ams.ams_privilege.table_filter
import
(
AMSPrivilegeFilterSet
)
from
django.db
import
transaction
from
rest_framework.exceptions
import
ValidationError
from
django.db
import
IntegrityError
class
AMSPrivilegeViewSet
(
viewsets
.
ModelViewSet
):
queryset
=
AMSPrivilege
.
objects
.
select_related
(
'id_number'
,
'department'
)
.
all
()
serializer_class
=
AMSPrivilegeSerializer
pagination_class
=
CustomPagination
lookup_field
=
'id_number'
filter_backends
=
(
DjangoFilterBackend
,
SearchFilter
,
OrderingFilter
)
filterset_class
=
AMSPrivilegeFilterSet
ordering_fields
=
'__all__'
search_fields
=
(
'id_number__code'
,
'department__code'
,
'ams_user_type'
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
message
=
status_message_response
(
200
,
'success'
,
'list of AMS Privilege found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
body_data
=
request
.
data
[
'body_data'
]
id_number
=
body_data
[
0
][
'id_number'
]
AMSPrivilege
.
objects
.
filter
(
id_number
=
id_number
)
.
delete
()
serializer
=
AMSPrivilegeSerializer
(
data
=
body_data
,
many
=
True
)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
()
message
=
{
'code'
:
201
,
'status'
:
'success'
,
'message'
:
'AMS User Privilege successfully saved!'
,
'results'
:
serializer
.
data
}
return
Response
(
message
,
status
=
status
.
HTTP_201_CREATED
)
except
ValidationError
as
e
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
str
(
e
),
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
IntegrityError
as
e
:
error
=
'Adding the same Department under the same Company is not allowed'
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
error
,
}
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
str
(
e
),
}
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
app/applicationlayer/ams/ams_user_type/views.py
0 → 100644
View file @
1fbc31ca
from
rest_framework.views
import
APIView
from
rest_framework.response
import
Response
from
app.entities
import
enums
class
AMSUserTypeViewSet
(
APIView
):
def
get
(
self
,
request
,
format
=
None
):
manager_value
=
enums
.
AMSUserTypeEnum
.
MANAGER
.
value
user_client_value
=
enums
.
AMSUserTypeEnum
.
USER_CLIENT
.
value
support_value
=
enums
.
AMSUserTypeEnum
.
SUPPORT
.
value
viewer_value
=
enums
.
AMSUserTypeEnum
.
VIEWER
.
value
manager_key
=
str
(
enums
.
AMSUserTypeEnum
.
MANAGER
.
name
)
.
capitalize
()
user_client_key
=
str
(
enums
.
AMSUserTypeEnum
.
USER_CLIENT
.
name
)
.
replace
(
'_'
,
'/'
)
.
title
()
support_key
=
str
(
enums
.
AMSUserTypeEnum
.
SUPPORT
.
name
)
.
capitalize
()
viewer_key
=
str
(
enums
.
AMSUserTypeEnum
.
VIEWER
.
name
)
.
capitalize
()
data
=
{
"code"
:
"200"
,
"status"
:
"success"
,
"message"
:
"list of ams user types"
,
"results"
:
{
manager_key
:
manager_value
,
user_client_key
:
user_client_value
,
support_key
:
support_value
,
viewer_key
:
viewer_value
}
}
return
Response
(
data
)
\ No newline at end of file
app/applicationlayer/ams/urls_ams.py
View file @
1fbc31ca
...
...
@@ -4,11 +4,15 @@ from django.conf.urls import url
from
rest_framework.urlpatterns
import
format_suffix_patterns
from
app.applicationlayer.ams.asset_group
import
views
as
assetgroup
from
app.applicationlayer.ams.ams_privilege
import
views
as
amsprivilege
from
app.applicationlayer.ams.ams_user_type.views
import
AMSUserTypeViewSet
router
=
routers
.
DefaultRouter
()
router
.
register
(
r'asset-group'
,
assetgroup
.
AssetGroupViewset
)
router
.
register
(
r'ams-privilege'
,
amsprivilege
.
AMSPrivilegeViewSet
)
urlpatterns
=
[
path
(
''
,
include
(
router
.
urls
)),
url
(
r'^ams-user-types/$'
,
AMSUserTypeViewSet
.
as_view
(),
name
=
"ams-user-types"
),
]
\ No newline at end of file
app/entities/enums.py
View file @
1fbc31ca
...
...
@@ -114,4 +114,16 @@ NOTIFICATION ENUMS
class
NotifTypeEnum
(
Enum
):
REMINDER
=
"REMINDER"
ACTIVITY
=
"ACTIVITY"
TASK
=
"TASK"
\ No newline at end of file
TASK
=
"TASK"
'''
*********
AMS ENUMS
*********
'''
class
AMSUserTypeEnum
(
Enum
):
MANAGER
=
"MANAGER"
USER_CLIENT
=
"USER_CLIENT"
SUPPORT
=
"SUPPORT"
VIEWER
=
"VIEWER"
app/entities/migrations/0005_amsprivilege.py
0 → 100644
View file @
1fbc31ca
# Generated by Django 2.2 on 2020-03-10 14:23
from
django.conf
import
settings
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0004_auto_20200309_1843'
),
]
operations
=
[
migrations
.
CreateModel
(
name
=
'AMSPrivilege'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
auto_created
=
True
,
primary_key
=
True
,
serialize
=
False
,
verbose_name
=
'ID'
)),
(
'ams_user_type'
,
models
.
CharField
(
choices
=
[(
'MANAGER'
,
'MANAGER'
),
(
'USERCLIENT'
,
'USERCLIENT'
),
(
'SUPPORT'
,
'SUPPORT'
),
(
'VIEWER'
,
'VIEWER'
)],
default
=
'MANAGER'
,
max_length
=
100
)),
(
'created_at'
,
models
.
DateTimeField
(
auto_now_add
=
True
)),
(
'deleted_at'
,
models
.
DateTimeField
(
blank
=
True
,
null
=
True
)),
(
'department'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
related_name
=
'ams_privilege_departments'
,
to
=
'entities.Department'
,
to_field
=
'code'
)),
(
'id_number'
,
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
related_name
=
'ams_privilege_id_number'
,
to
=
settings
.
AUTH_USER_MODEL
,
to_field
=
'code'
)),
],
options
=
{
'db_table'
:
'ams_privileges'
,
'unique_together'
:
{(
'department'
,
'id_number'
)},
},
),
]
app/entities/models.py
View file @
1fbc31ca
...
...
@@ -1200,7 +1200,46 @@ class OverdueTrigger(models.Model):
class
Meta
:
db_table
=
'trigger_overdue'
# comment
class
ChangeRequestSettings
(
models
.
Model
):
code
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
active_user
=
models
.
ForeignKey
(
User
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
,
related_name
=
'cms_settings_active_users'
)
behalf_user
=
models
.
ForeignKey
(
User
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
,
related_name
=
'cms_settings_behalf_users'
)
behalf_approved
=
models
.
BooleanField
(
default
=
False
)
behalf_accepted
=
models
.
BooleanField
(
default
=
False
)
behalf_rejected
=
models
.
BooleanField
(
default
=
False
)
behalf_implemented
=
models
.
BooleanField
(
default
=
False
)
behalf_completed
=
models
.
BooleanField
(
default
=
False
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
class
Meta
:
db_table
=
'change_request_settings'
ordering
=
[
'-created'
]
unique_together
=
[
'active_user'
,
'behalf_user'
]
def
__str__
(
self
):
return
f
'{self.code}'
def
save
(
self
,
*
args
,
**
kwargs
):
super
(
ChangeRequestSettings
,
self
)
.
save
(
*
args
,
**
kwargs
)
code
=
number_generator
(
enums
.
GenerateCode
.
CMS_SETTINGS
.
value
,
self
.
id
)
if
self
.
code
==
''
:
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
save
()
"""
**********************
*** AMS TABLES ***
...
...
@@ -1238,41 +1277,29 @@ class AssetGroup(models.Model):
self
.
save
()
class
ChangeRequestSettings
(
models
.
Model
):
code
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
active_user
=
models
.
ForeignKey
(
class
AMSPrivilege
(
models
.
Model
):
id_number
=
models
.
ForeignKey
(
User
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
,
related_name
=
'
cms_settings_active_users
'
related_name
=
'
ams_privilege_id_number
'
)
behalf_user
=
models
.
ForeignKey
(
User
,
department
=
models
.
ForeignKey
(
Department
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code
'
,
related_name
=
'cms_settings_behalf_users
'
related_name
=
'ams_privilege_departments
'
,
to_field
=
'code
'
)
behalf_approved
=
models
.
BooleanField
(
default
=
False
)
behalf_accepted
=
models
.
BooleanField
(
default
=
False
)
behalf_rejected
=
models
.
BooleanField
(
default
=
False
)
behalf_implemented
=
models
.
BooleanField
(
default
=
False
)
behalf_completed
=
models
.
BooleanField
(
default
=
False
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
ams_user_type
=
models
.
CharField
(
choices
=
[(
tag
.
value
,
tag
.
value
)
for
tag
in
enums
.
AMSUserTypeEnum
],
default
=
enums
.
AMSUserTypeEnum
.
MANAGER
.
value
,
max_length
=
100
)
created
_at
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
class
Meta
:
db_table
=
'change_request_settings'
ordering
=
[
'-created'
]
unique_together
=
[
'active_user'
,
'behalf_user'
]
def
__str__
(
self
):
return
f
'{self.code}'
db_table
=
'ams_privileges'
unique_together
=
[
'department'
,
'id_number'
]
def
save
(
self
,
*
args
,
**
kwargs
):
super
(
ChangeRequestSettings
,
self
)
.
save
(
*
args
,
**
kwargs
)
code
=
number_generator
(
enums
.
GenerateCode
.
CMS_SETTINGS
.
value
,
self
.
id
)
if
self
.
code
==
''
:
self
.
code
=
code
self
.
created
=
datetime
.
now
()
self
.
save
()
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