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
5456b122
Commit
5456b122
authored
Mar 19, 2020
by
Gladys Forte
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
{devbugfix} asset group view, (asset type, asset group crud)
parent
5f350587
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
237 additions
and
104 deletions
+237
-104
app/applicationlayer/ams/asset/views.py
app/applicationlayer/ams/asset/views.py
+29
-16
app/applicationlayer/ams/asset_group/serializers.py
app/applicationlayer/ams/asset_group/serializers.py
+41
-2
app/applicationlayer/ams/asset_group/table_filters.py
app/applicationlayer/ams/asset_group/table_filters.py
+1
-1
app/applicationlayer/ams/asset_group/views.py
app/applicationlayer/ams/asset_group/views.py
+51
-3
app/applicationlayer/ams/asset_stock/views.py
app/applicationlayer/ams/asset_stock/views.py
+28
-12
app/applicationlayer/ams/asset_type/views.py
app/applicationlayer/ams/asset_type/views.py
+30
-38
app/applicationlayer/ams/audit_trail/serializers.py
app/applicationlayer/ams/audit_trail/serializers.py
+0
-0
app/applicationlayer/ams/audit_trail/table_filters.py
app/applicationlayer/ams/audit_trail/table_filters.py
+0
-0
app/applicationlayer/ams/audit_trail/views.py
app/applicationlayer/ams/audit_trail/views.py
+0
-0
app/applicationlayer/ams/report/views.py
app/applicationlayer/ams/report/views.py
+29
-13
app/applicationlayer/ams/report_type/views.py
app/applicationlayer/ams/report_type/views.py
+28
-13
app/entities/models.py
app/entities/models.py
+0
-6
No files found.
app/applicationlayer/ams/asset/views.py
View file @
5456b122
...
...
@@ -143,29 +143,44 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
@
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
.
AMSAsset
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
try
:
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSAsset
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Asset restored'
,
''
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
@
action
(
methods
=
[
'GET'
],
detail
=
True
,
url_path
=
'stock-list'
,
url_name
=
'stock_list'
)
url_path
=
'stock-list'
,
url_name
=
'stock_list'
)
def
stock_list
(
self
,
request
,
code
):
self
.
serializer_class
=
AMSAssetStockSerializer
queryset
=
self
.
get_object
()
.
ams_asset_to_assetdetail
.
all
()
...
...
@@ -193,8 +208,6 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
#comment
@
action
(
methods
=
[
'GET'
],
detail
=
False
,
url_path
=
'archived'
,
url_name
=
'archived'
...
...
app/applicationlayer/ams/asset_group/serializers.py
View file @
5456b122
from
app.entities
import
models
from
rest_framework
import
serializers
from
app.applicationlayer.utils
import
model_to_dict
from
django.db.models
import
Q
class
AssetGroupSerializerList
(
serializers
.
ModelSerializer
):
def
to_representation
(
self
,
instance
):
ret
=
super
()
.
to_representation
(
instance
)
asset_stocks
=
models
.
AMSAssetStock
.
objects
.
filter
(
asset_group
=
instance
.
code
)
asset_counter
=
0
asset_type_counter
=
0
for
asset_stock
in
asset_stocks
:
asset_counter
=
asset_counter
+
models
.
AMSAsset
.
objects
.
filter
(
code
=
asset_stock
.
asset
.
code
)
.
count
()
asset_type_counter
=
asset_type_counter
+
1
ret
[
'asset_type_count'
]
=
asset_type_counter
# recheck
ret
[
'asset_count'
]
=
instance
.
ams_asset_to_assetgroup
.
count
()
# recheck
ret
[
'asset_stock_count'
]
=
instance
.
ams_asset_to_assetgroup
.
count
()
return
ret
class
Meta
:
model
=
models
.
AMSAssetGroup
fields
=
'__all__'
read_only_fields
=
[
'created'
,
'created_by'
,
'code'
]
class
AssetGroupSerializer
(
serializers
.
ModelSerializer
):
...
...
@@ -16,10 +42,23 @@ class AssetGroupSerializer(serializers.ModelSerializer):
asset_counter
=
asset_counter
+
models
.
AMSAsset
.
objects
.
filter
(
code
=
asset_stock
.
asset
.
code
)
.
count
()
asset_type_counter
=
asset_type_counter
+
1
ret
[
'asset_type_count'
]
=
asset_type_counter
ret
[
'asset_count'
]
=
asset_counter
ret
[
'asset_type_count'
]
=
asset_type_counter
# recheck
ret
[
'asset_count'
]
=
instance
.
ams_asset_to_assetgroup
.
count
()
# recheck
ret
[
'asset_stock_count'
]
=
instance
.
ams_asset_to_assetgroup
.
count
()
ret
[
'own'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
acquisition_type
=
'Owned'
)
.
count
()
ret
[
'loan'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
acquisition_type
=
'Loan'
)
.
count
()
ret
[
'in_qty'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'In-Store'
)
.
count
()
ret
[
'out_qty'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'Deployed'
)
.
count
()
ret
[
'unavailable'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status__in
=
[
'Faulty'
,
'Returned'
,
'Written Off'
]
)
.
count
()
ret
[
'in_store'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'In-Store'
)
.
count
()
ret
[
'deployed'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'Deployed'
)
.
count
()
ret
[
'returned'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'Returned'
)
.
count
()
ret
[
'written_off'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'Written Off'
)
.
count
()
ret
[
'faulty'
]
=
instance
.
ams_asset_to_assetgroup
.
filter
(
status
=
'Faulty'
)
.
count
()
return
ret
class
Meta
:
...
...
app/applicationlayer/ams/asset_group/table_filters.py
View file @
5456b122
...
...
@@ -6,4 +6,4 @@ class AssetGroupFilter(filters.FilterSet):
class
Meta
:
model
=
AMSAssetGroup
fields
=
'__all__'
\ No newline at end of file
fields
=
'__all__'
app/applicationlayer/ams/asset_group/views.py
View file @
5456b122
...
...
@@ -12,6 +12,8 @@ from app.applicationlayer.utils import (
from
app.helper
import
decorators
from
django.db
import
transaction
from
rest_framework.decorators
import
action
from
app.applicationlayer.utils
import
log_save
,
enums
from
app.applicationlayer.utils
import
model_to_dict
class
AssetGroupViewset
(
viewsets
.
ModelViewSet
):
...
...
@@ -30,8 +32,7 @@ class AssetGroupViewset(viewsets.ModelViewSet):
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
# serializer.is_valid(raise_exception=True)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
(
created_by
=
self
.
request
.
user
)
...
...
@@ -48,6 +49,7 @@ class AssetGroupViewset(viewsets.ModelViewSet):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
serializer_class
=
serializers
.
AssetGroupSerializerList
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
page
=
self
.
paginate_queryset
(
queryset
)
...
...
@@ -80,7 +82,17 @@ class AssetGroupViewset(viewsets.ModelViewSet):
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
instance
=
self
.
get_object
()
self
.
perform_destroy
(
instance
)
instance
.
is_active
=
False
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
enums
.
LogEntitiesEnum
.
AMSAssetGroup
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
...
...
@@ -113,3 +125,39 @@ class AssetGroupViewset(viewsets.ModelViewSet):
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'restore'
,
url_name
=
'restore'
)
def
restore
(
self
,
request
,
code
=
None
):
try
:
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSAssetGroup
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Asset Group restored'
,
''
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
app/applicationlayer/ams/asset_stock/views.py
View file @
5456b122
...
...
@@ -170,17 +170,33 @@ class AMSAssetStockViewSet(viewsets.ModelViewSet):
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
.
AMSAsset
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
try
:
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSAssetStock
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Asset Stock restored'
,
''
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
app/applicationlayer/ams/asset_type/views.py
View file @
5456b122
...
...
@@ -13,8 +13,8 @@ from app.helper import decorators
from
django.db
import
transaction
from
rest_framework.decorators
import
action
from
app.applicationlayer.utils
import
model_to_dict
from
app.applicationlayer.utils
import
log_save
from
app.
entities
import
enums
from
app.applicationlayer.utils
import
log_save
,
enums
from
app.
applicationlayer.utils
import
model_to_dict
class
AssetTypeViewset
(
viewsets
.
ModelViewSet
):
...
...
@@ -33,16 +33,7 @@ class AssetTypeViewset(viewsets.ModelViewSet):
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
# serializer.is_valid(raise_exception=True)
# if requestor == poc:
# message = {
# 'code': 400,
# 'status': 'failed',
# 'message': 'Cannot assign same user on point of contact and requestor',
# }
# return Response(message, status=status.HTTP_400_BAD_REQUEST)
if
serializer
.
is_valid
(
raise_exception
=
True
):
serializer
.
save
(
created_by
=
self
.
request
.
user
)
self
.
perform_create
(
serializer
)
...
...
@@ -59,17 +50,7 @@ class AssetTypeViewset(viewsets.ModelViewSet):
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
queryset
=
self
.
filter_queryset
(
self
.
get_queryset
())
# queryset = models.AMSAssetType.objects.annotate(
# view_count=Sum(
# When(relations_item__has_viewed=True, then=1),
# output_field=IntegerField(),
# ),
# love_count=Sum(
# When(relations_item__has_loved=True, then=1),
# output_field=IntegerField(),
# ),
# )
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
...
...
@@ -102,15 +83,15 @@ class AssetTypeViewset(viewsets.ModelViewSet):
instance
=
self
.
get_object
()
instance
.
is_active
=
False
instance
.
save
()
#
new_instance = model_to_dict(instance)
new_instance
=
model_to_dict
(
instance
)
#
log_save(
#
enums.LogEnum.DELETED.value,
# enums.LogEntitiesEnum.
,
#
new_instance['id'],
#
new_instance,
#
''
#
)
log_save
(
enums
.
LogEnum
.
DELETED
.
value
,
enums
.
LogEntitiesEnum
.
AMSAssetType
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
...
...
@@ -144,15 +125,26 @@ class AssetTypeViewset(viewsets.ModelViewSet):
status
=
status
.
HTTP_200_OK
)
#restore archived asset_type
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
@
action
(
methods
=
[
'PATCH'
],
detail
=
True
,
url_path
=
'restore'
,
url_name
=
'restore'
)
def
restore
(
self
,
request
,
code
=
None
):
try
:
kwargs
[
'partial'
]
=
True
code
=
self
.
kwargs
[
'code'
]
instance
=
models
.
AMSAssetType
.
objects
.
filter
(
code
=
code
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSAssetType
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
instance
.
update
(
is_active
=
True
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Asset Type restored'
,
...
...
@@ -160,7 +152,7 @@ class AssetTypeViewset(viewsets.ModelViewSet):
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
...
...
app/applicationlayer/ams/audit_trail/serializers.py
0 → 100644
View file @
5456b122
app/applicationlayer/ams/audit_trail/table_filters.py
0 → 100644
View file @
5456b122
app/applicationlayer/ams/audit_trail/views.py
0 → 100644
View file @
5456b122
app/applicationlayer/ams/report/views.py
View file @
5456b122
...
...
@@ -167,17 +167,33 @@ class AMSReportViewset(viewsets.ModelViewSet):
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
)
try
:
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
,
''
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Report restored'
,
''
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
app/applicationlayer/ams/report_type/views.py
View file @
5456b122
...
...
@@ -160,23 +160,38 @@ class AMSReportTypeViewset(viewsets.ModelViewSet):
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
,
''
)
try
:
instance
=
self
.
get_object
()
instance
.
is_active
=
True
instance
.
save
()
new_instance
=
model_to_dict
(
instance
)
return
Response
(
status
=
status
.
HTTP_204_NO_CONTENT
)
log_save
(
enums
.
LogEnum
.
UPDATE
.
value
,
enums
.
LogEntitiesEnum
.
AMSReportType
.
value
,
new_instance
[
'id'
],
new_instance
,
''
)
message
=
status_message_response
(
200
,
'success'
,
'Archived Report Type restored'
,
''
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
[]
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
app/entities/models.py
View file @
5456b122
...
...
@@ -1286,7 +1286,6 @@ class AMSAssetGroup(models.Model):
related_name
=
'ams_asset_group_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
:
...
...
@@ -1325,7 +1324,6 @@ class AMSAssetType(models.Model):
related_name
=
'ams_asset_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
:
...
...
@@ -1360,7 +1358,6 @@ class AMSAsset(models.Model):
to_field
=
'code'
,
related_name
=
'ams_asset_type'
)
# asset_type = models.ManyToManyField(AMSAssetType)
description
=
models
.
CharField
(
blank
=
True
,
null
=
True
,
...
...
@@ -1372,7 +1369,6 @@ class AMSAsset(models.Model):
related_name
=
'ams_asset_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
:
...
...
@@ -1443,7 +1439,6 @@ class AMSAssetStock(models.Model):
related_name
=
'ams_asset_to_assetgroup'
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
# deleted_at = models.DateTimeField(null=True, blank=True)
is_active
=
models
.
BooleanField
(
default
=
True
)
class
Meta
:
...
...
@@ -1489,7 +1484,6 @@ class AMSAssetStockSupport(models.Model):
to_field
=
'code'
)
created
=
models
.
DateTimeField
(
auto_now_add
=
True
)
# deleted_at = models.DateTimeField(null=True, blank=True)
is_active
=
models
.
BooleanField
(
default
=
True
)
class
Meta
:
...
...
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