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
13be3fe6
Commit
13be3fe6
authored
Mar 18, 2020
by
Gladys Forte
Browse files
Options
Browse Files
Download
Plain Diff
comment
parents
4f1ffa57
334df0f9
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1025 additions
and
6 deletions
+1025
-6
app/applicationlayer/ams/asset/views.py
app/applicationlayer/ams/asset/views.py
+1
-0
app/applicationlayer/ams/report/serializers.py
app/applicationlayer/ams/report/serializers.py
+21
-0
app/applicationlayer/ams/report/table_filters.py
app/applicationlayer/ams/report/table_filters.py
+9
-0
app/applicationlayer/ams/report/views.py
app/applicationlayer/ams/report/views.py
+183
-0
app/applicationlayer/ams/report_type/serializers.py
app/applicationlayer/ams/report_type/serializers.py
+15
-0
app/applicationlayer/ams/report_type/table_filters.py
app/applicationlayer/ams/report_type/table_filters.py
+9
-0
app/applicationlayer/ams/report_type/views.py
app/applicationlayer/ams/report_type/views.py
+183
-0
app/applicationlayer/ams/urls_ams.py
app/applicationlayer/ams/urls_ams.py
+4
-0
app/entities/enums.py
app/entities/enums.py
+3
-0
app/entities/migrations/0011_auto_20200318_1220.py
app/entities/migrations/0011_auto_20200318_1220.py
+57
-0
app/entities/models.py
app/entities/models.py
+10
-6
requirements/RMSv2.postman_collection.json
requirements/RMSv2.postman_collection.json
+530
-0
No files found.
app/applicationlayer/ams/asset/views.py
View file @
13be3fe6
...
...
@@ -84,6 +84,7 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
#comment
@
action
(
methods
=
[
'GET'
],
detail
=
False
,
url_path
=
'archived'
,
url_name
=
'archived'
...
...
app/applicationlayer/ams/report/serializers.py
0 → 100644
View file @
13be3fe6
from
app.entities
import
models
from
rest_framework
import
serializers
from
app.applicationlayer.utils
import
model_to_dict
class
AMSReportSerializer
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
ret
[
'added_by'
]
=
instance
.
created_by
.
name
ret
[
'report_type'
]
=
instance
.
report_type
.
name
ret
[
'unique_identifier'
]
=
instance
.
asset_stock
.
unique_identifier
ret
[
'asset'
]
=
instance
.
asset_stock
.
asset
.
name
ret
[
'asset_type'
]
=
instance
.
asset_stock
.
asset
.
asset_type
.
name
del
ret
[
'asset_stock'
]
del
ret
[
'created_by'
]
return
ret
class
Meta
:
model
=
models
.
AMSReport
fields
=
'__all__'
\ No newline at end of file
app/applicationlayer/ams/report/table_filters.py
0 → 100644
View file @
13be3fe6
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
AMSReport
class
AMSReportFilter
(
filters
.
FilterSet
):
class
Meta
:
model
=
AMSReport
fields
=
'__all__'
\ No newline at end of file
app/applicationlayer/ams/report/views.py
0 → 100644
View file @
13be3fe6
from
app.entities
import
models
from
rest_framework
import
viewsets
,
status
from
rest_framework.response
import
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.report.table_filters
import
AMSReportFilter
from
app.applicationlayer.ams.report
import
serializers
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
)
from
app.helper
import
decorators
from
django.db
import
transaction
from
app.applicationlayer.utils
import
model_to_dict
from
app.applicationlayer.utils
import
log_save
,
enums
from
django.db
import
IntegrityError
from
rest_framework.decorators
import
action
class
AMSReportViewset
(
viewsets
.
ModelViewSet
):
queryset
=
models
.
AMSReport
.
objects
.
all
()
serializer_class
=
serializers
.
AMSReportSerializer
pagination_class
=
CustomPagination
lookup_field
=
"code"
filter_backends
=
(
DjangoFilterBackend
,
SearchFilter
,
OrderingFilter
)
ordering_fields
=
'__all__'
search_fields
=
(
'code'
,
'name'
)
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
form
=
request
.
data
form
[
'created_by'
]
=
request
.
user
.
code
serializer
=
self
.
get_serializer
(
data
=
form
)
# serializer.is_valid(raise_exception=True)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
(
created_by
=
self
.
request
.
user
)
self
.
perform_create
(
serializer
)
message
=
status_message_response
(
201
,
'success'
,
'New Report created'
,
serializer
.
data
)
return
Response
(
message
)
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
form
=
request
.
data
form
[
'created_by'
]
=
request
.
user
.
code
serializer
=
self
.
get_serializer
(
instance
,
data
=
form
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReport
.
value
,
old_instance
[
'id'
],
old_instance
,
new_instance
)
return
Response
(
serializer
.
data
)
except
IntegrityError
as
e
:
print
(
e
)
return
Response
(
{
"message"
:
"Cannot delete or update this reocrd it has foreign key constraint to other tables"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
.
filter
(
is_active
=
True
)
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 Report found!'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
@
transaction
.
atomic
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
instance
.
is_active
=
False
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReport
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@
action
(
methods
=
[
'GET'
],
detail
=
False
,
url_path
=
'archived'
,
url_name
=
'archived'
)
def
archived
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
serializers
.
AMSReportSerializer
queryset
=
self
.
filter_queryset
(
self
.
queryset
)
.
filter
(
is_active
=
False
)
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 Archived Report found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'restore'
,
url_name
=
'restore'
)
def
restore
(
self
,
request
,
code
=
None
):
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReport
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
app/applicationlayer/ams/report_type/serializers.py
0 → 100644
View file @
13be3fe6
from
app.entities
import
models
from
rest_framework
import
serializers
from
app.applicationlayer.utils
import
model_to_dict
class
AMSReportTypeSerializer
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
ret
[
'added_by'
]
=
instance
.
created_by
.
name
return
ret
class
Meta
:
model
=
models
.
AMSReportType
fields
=
'__all__'
\ No newline at end of file
app/applicationlayer/ams/report_type/table_filters.py
0 → 100644
View file @
13be3fe6
from
django_filters
import
rest_framework
as
filters
from
app.entities.models
import
AMSReportType
class
AMSReportTypeFilter
(
filters
.
FilterSet
):
class
Meta
:
model
=
AMSReportType
fields
=
'__all__'
\ No newline at end of file
app/applicationlayer/ams/report_type/views.py
0 → 100644
View file @
13be3fe6
from
app.entities
import
models
from
rest_framework
import
viewsets
,
status
from
rest_framework.response
import
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.report_type.table_filters
import
AMSReportTypeFilter
from
app.applicationlayer.ams.report_type
import
serializers
from
app.applicationlayer.utils
import
(
CustomPagination
,
status_message_response
)
from
app.helper
import
decorators
from
django.db
import
transaction
from
app.applicationlayer.utils
import
model_to_dict
from
app.applicationlayer.utils
import
log_save
,
enums
from
django.db
import
IntegrityError
from
rest_framework.decorators
import
action
class
AMSReportTypeViewset
(
viewsets
.
ModelViewSet
):
queryset
=
models
.
AMSReportType
.
objects
.
all
()
serializer_class
=
serializers
.
AMSReportTypeSerializer
pagination_class
=
CustomPagination
lookup_field
=
"code"
filter_backends
=
(
DjangoFilterBackend
,
SearchFilter
,
OrderingFilter
)
ordering_fields
=
'__all__'
search_fields
=
(
'code'
,
'name'
)
@
transaction
.
atomic
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
form
=
request
.
data
form
[
'created_by'
]
=
request
.
user
.
code
serializer
=
self
.
get_serializer
(
data
=
form
)
# serializer.is_valid(raise_exception=True)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
(
created_by
=
self
.
request
.
user
)
self
.
perform_create
(
serializer
)
message
=
status_message_response
(
201
,
'success'
,
'New Report Type created'
,
serializer
.
data
)
return
Response
(
message
)
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
form
=
request
.
data
form
[
'created_by'
]
=
request
.
user
.
code
serializer
=
self
.
get_serializer
(
instance
,
data
=
form
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
old_instance
=
model_to_dict
(
instance
)
self
.
perform_update
(
serializer
)
new_instance
=
serializer
.
data
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReportType
.
value
,
old_instance
[
'id'
],
old_instance
,
new_instance
)
return
Response
(
serializer
.
data
)
except
IntegrityError
as
e
:
print
(
e
)
return
Response
(
{
"message"
:
"Cannot delete or update this reocrd it has foreign key constraint to other tables"
},
status
=
status
.
HTTP_400_BAD_REQUEST
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
.
filter
(
is_active
=
True
)
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 Report Types found!'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
)
return
Response
(
serializer
.
data
)
@
transaction
.
atomic
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
instance
.
is_active
=
False
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReportType
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@
action
(
methods
=
[
'GET'
],
detail
=
False
,
url_path
=
'archived'
,
url_name
=
'archived'
)
def
archived
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
serializers
.
AMSReportTypeSerializer
queryset
=
self
.
filter_queryset
(
self
.
queryset
)
.
filter
(
is_active
=
False
)
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 Archived Report type found'
,
serializer
.
data
)
return
self
.
get_paginated_response
(
message
)
serializer
=
self
.
get_serializer
(
self
.
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'restore'
,
url_name
=
'restore'
)
def
restore
(
self
,
request
,
code
=
None
):
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReportType
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
app/applicationlayer/ams/urls_ams.py
View file @
13be3fe6
...
...
@@ -9,6 +9,8 @@ from app.applicationlayer.ams.ams_user_type.views import AMSUserTypeViewSet
from
app.applicationlayer.ams.asset_type
import
views
as
assettype
from
app.applicationlayer.ams.asset.views
import
AMSAssetViewSet
from
app.applicationlayer.ams.asset_stock.views
import
AMSAssetStockViewSet
from
app.applicationlayer.ams.report_type.views
import
AMSReportTypeViewset
from
app.applicationlayer.ams.report.views
import
AMSReportViewset
router
=
routers
.
DefaultRouter
()
...
...
@@ -17,6 +19,8 @@ router.register(r'asset-type', assettype.AssetTypeViewset)
router
.
register
(
r'ams-privilege'
,
amsprivilege
.
AMSPrivilegeViewSet
)
router
.
register
(
r'assets'
,
AMSAssetViewSet
)
router
.
register
(
r'assets-stock-list'
,
AMSAssetStockViewSet
)
router
.
register
(
r'report-type'
,
AMSReportTypeViewset
)
router
.
register
(
r'report'
,
AMSReportViewset
)
urlpatterns
=
[
path
(
''
,
include
(
router
.
urls
)),
...
...
app/entities/enums.py
View file @
13be3fe6
...
...
@@ -76,6 +76,9 @@ class LogEntitiesEnum(Enum):
ChangeRequestFormDetails
=
"ChangeRequestFormDetails"
ChangeRequestSettings
=
'ChangeRequestSettings'
AMSReportType
=
'AMSReportType'
AMSReport
=
'AMSReport'
'''
*********
CR HISTORY ENUMS
...
...
app/entities/migrations/0011_auto_20200318_1220.py
0 → 100644
View file @
13be3fe6
# Generated by Django 2.2 on 2020-03-18 12:20
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'entities'
,
'0010_auto_20200318_1046'
),
]
operations
=
[
migrations
.
RemoveField
(
model_name
=
'amsreport'
,
name
=
'deleted_at'
,
),
migrations
.
RemoveField
(
model_name
=
'amsreporttype'
,
name
=
'deleted_at'
,
),
migrations
.
AddField
(
model_name
=
'amsreport'
,
name
=
'is_active'
,
field
=
models
.
BooleanField
(
default
=
True
),
),
migrations
.
AddField
(
model_name
=
'amsreporttype'
,
name
=
'is_active'
,
field
=
models
.
BooleanField
(
default
=
True
),
),
migrations
.
AlterField
(
model_name
=
'amsreport'
,
name
=
'asset_stock'
,
field
=
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
related_name
=
'report_to_asset_stock'
,
to
=
'entities.AMSAssetStock'
,
to_field
=
'code'
),
),
migrations
.
AlterField
(
model_name
=
'amsreport'
,
name
=
'code'
,
field
=
models
.
CharField
(
default
=
''
,
max_length
=
255
,
unique
=
True
),
),
migrations
.
AlterField
(
model_name
=
'amsreport'
,
name
=
'report_type'
,
field
=
models
.
ForeignKey
(
on_delete
=
django
.
db
.
models
.
deletion
.
CASCADE
,
related_name
=
'report_to_report_type'
,
to
=
'entities.AMSReportType'
,
to_field
=
'code'
),
),
migrations
.
AlterField
(
model_name
=
'amsreporttype'
,
name
=
'code'
,
field
=
models
.
CharField
(
default
=
''
,
max_length
=
255
,
unique
=
True
),
),
migrations
.
AlterField
(
model_name
=
'entitylog'
,
name
=
'entity'
,
field
=
models
.
CharField
(
choices
=
[(
'USER'
,
'USER'
),
(
'APPLICATION'
,
'APPLICATION'
),
(
'COMPANY'
,
'COMPANY'
),
(
'DEPARTMENT'
,
'DEPARTMENT'
),
(
'MODULE'
,
'MODULE'
),
(
'DELEGATION'
,
'DELEGATION'
),
(
'ChangeRequestTemplateHeader'
,
'ChangeRequestTemplateHeader'
),
(
'ChangeRequestTemplateApprovers'
,
'ChangeRequestTemplateApprovers'
),
(
'ChangeRequestTemplateStakeHolders'
,
'ChangeRequestTemplateStakeHolders'
),
(
'ChangeRequestTemplateAttachments'
,
'ChangeRequestTemplateAttachments'
),
(
'ChangeRequestTemplateDetails'
,
'ChangeRequestTemplateDetails'
),
(
'ChangeRequestFormHeader'
,
'ChangeRequestFormHeader'
),
(
'ChangeRequestFormApprovers'
,
'ChangeRequestFormApprovers'
),
(
'ChangeRequestFormStakeHolders'
,
'ChangeRequestFormStakeHolders'
),
(
'ChangeRequestFormAttachments'
,
'ChangeRequestFormAttachments'
),
(
'ChangeRequestFormDetails'
,
'ChangeRequestFormDetails'
),
(
'ChangeRequestSettings'
,
'ChangeRequestSettings'
),
(
'AMSReportType'
,
'AMSReportType'
),
(
'AMSReport'
,
'AMSReport'
)],
default
=
'Add'
,
max_length
=
50
),
),
]
app/entities/models.py
View file @
13be3fe6
...
...
@@ -1513,7 +1513,8 @@ class AMSReportType(models.Model):
code
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
max_length
=
255
,
default
=
''
)
name
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
...
...
@@ -1532,7 +1533,7 @@ class AMSReportType(models.Model):
related_name
=
'ams_report_type_created_by'
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
is_active
=
models
.
BooleanField
(
default
=
True
)
class
Meta
:
db_table
=
'ams_report_types'
...
...
@@ -1555,7 +1556,8 @@ class AMSReport(models.Model):
code
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
max_length
=
255
,
default
=
''
)
name
=
models
.
CharField
(
unique
=
True
,
max_length
=
255
)
...
...
@@ -1566,12 +1568,14 @@ class AMSReport(models.Model):
report_type
=
models
.
ForeignKey
(
AMSReportType
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
to_field
=
'code'
,
related_name
=
'report_to_report_type'
)
asset_stock
=
models
.
ForeignKey
(
AMSAssetStock
,
on_delete
=
models
.
CASCADE
,
to_field
=
'code'
to_field
=
'code'
,
related_name
=
'report_to_asset_stock'
)
created_by
=
models
.
ForeignKey
(
User
,
...
...
@@ -1580,7 +1584,7 @@ class AMSReport(models.Model):
related_name
=
'ams_report_created_by'
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
deleted_at
=
models
.
DateTimeField
(
null
=
True
,
blank
=
True
)
is_active
=
models
.
BooleanField
(
default
=
True
)
class
Meta
:
db_table
=
'ams_reports'
...
...
requirements/RMSv2.postman_collection.json
View file @
13be3fe6
This diff is collapsed.
Click to expand it.
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