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
a740e8cf
Commit
a740e8cf
authored
May 15, 2019
by
Ristylou Dolar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added status response in utils, CRUD for services and endpoint models
parent
f7da0abd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
260 additions
and
211 deletions
+260
-211
api/serializers.py
api/serializers.py
+46
-0
api/utils.py
api/utils.py
+11
-0
api/views.py
api/views.py
+202
-210
config/urls.py
config/urls.py
+1
-1
No files found.
api/serializers.py
View file @
a740e8cf
...
...
@@ -123,3 +123,49 @@ class APIEndpointSerializer(serializers.ModelSerializer):
'http_method'
,
'endpoint_url'
,
'is_need_auth'
,
'is_active'
,
'created_at'
,
'updated_at'
,
'deleted_at'
)
read_only_fields
=
(
'id'
,
'api_endpoint_no'
,
'created_at'
,
'updated_at'
,
'deleted_at'
)
def
is_valid
(
self
,
raise_exception
=
False
):
assert
not
hasattr
(
self
,
'restore_object'
),
(
'Serializer `
%
s.
%
s` has old-style version 2 `.restore_object()` '
'that is no longer compatible with REST framework 3. '
'Use the new-style `.create()` and `.update()` methods instead.'
%
(
self
.
__class__
.
__module__
,
self
.
__class__
.
__name__
)
)
assert
hasattr
(
self
,
'initial_data'
),
(
'Cannot call `.is_valid()` as no `data=` keyword argument was '
'passed when instantiating the serializer instance.'
)
if
not
hasattr
(
self
,
'_validated_data'
):
try
:
self
.
_validated_data
=
self
.
run_validation
(
self
.
initial_data
)
except
ValidationError
as
exc
:
self
.
_validated_data
=
{}
self
.
_errors
=
exc
.
detail
else
:
self
.
_errors
=
{}
#if validation failed
if
self
.
_errors
and
raise_exception
:
error_message
=
{}
message
=
str
(
self
.
errors
)
for
k
,
v
in
self
.
errors
.
items
():
message
=
str
(
v
)
start
=
message
.
find
(
'string='
)
+
8
end
=
message
.
find
(
', code='
)
-
1
message
=
message
[
start
:
end
]
error_message
[
str
(
k
)]
=
message
raise
BadRequestException
(
error_message
)
return
not
bool
(
self
.
_errors
)
def
create
(
self
,
validated_data
):
new_endpoint
=
APIEndpoint
.
objects
.
create
(
**
validated_data
)
new_endpoint
.
api_endpoint_no
=
number_generator
(
'ENP'
,
new_endpoint
.
id
)
new_endpoint
.
save
()
return
new_endpoint
api/utils.py
View file @
a740e8cf
...
...
@@ -148,3 +148,14 @@ def number_generator(prefix, id):
autogenerated_no
=
prefix
+
'-'
+
date
+
'-'
+
id_num
return
autogenerated_no
# status message
def
status_message_response
(
code
,
status
,
message
,
results
):
message
=
{
'code'
:
code
,
'status'
:
status
,
'message'
:
message
,
'results'
:
results
}
return
message
api/views.py
View file @
a740e8cf
...
...
@@ -7,7 +7,7 @@ from .models import APIService, APIEndpoint, Application
from
.serializers
import
(
APIServiceSerializer
,
APIEndpointSerializer
,
ApplicationSerializer
)
from
.utils
import
(
APIEndpointFilter
,
Helper
,
CustomPagination
,
BadRequestException
)
from
.utils
import
(
APIEndpointFilter
,
Helper
,
CustomPagination
,
BadRequestException
,
status_message_response
)
...
...
@@ -27,43 +27,23 @@ class ApplicationViewSet(viewsets.ModelViewSet):
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
message
=
{
'code'
:
201
,
'status'
:
'success'
,
'message'
:
'New application created'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
201
,
'success'
,
'New application created'
,
serializer
.
data
)
return
Response
(
message
)
except
BadRequestException
as
e
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
''
+
str
(
e
),
}
message
=
status_message_response
(
400
,
'failed'
,
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW LIST of Applications
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
queryset
=
Application
.
objects
.
filter
(
deleted_at__exact
=
None
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
...
...
@@ -76,11 +56,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW application details
...
...
@@ -89,28 +65,16 @@ class ApplicationViewSet(viewsets.ModelViewSet):
id
=
self
.
kwargs
[
'pk'
]
queryset
=
Application
.
objects
.
filter
(
id
=
id
)
serializer
=
self
.
get_serializer
(
queryset
,
many
=
True
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
message
=
status_message_response
(
404
,
'failed'
,
'No record found'
,
None
)
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
else
:
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Application retrieved'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Application retrieved'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# UPDATE Application
...
...
@@ -123,21 +87,12 @@ class ApplicationViewSet(viewsets.ModelViewSet):
self
.
perform_update
(
serializer
)
if
getattr
(
instance
,
'_prefetched_objects_cache'
,
None
):
instance
.
_prefetched_objects_cache
=
{}
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Application updated'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Application updated'
,
serializer
.
data
)
return
Response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SOFT DELETE / ARCHIVED
...
...
@@ -145,19 +100,12 @@ class ApplicationViewSet(viewsets.ModelViewSet):
try
:
instance
=
self
.
get_object
()
self
.
perform_destroy
(
instance
)
message
=
{
'code'
:
200
,
'status'
:
'Success'
,
'message'
:
'Application deleted'
}
message
=
status_message_response
(
200
,
'success'
,
'Application deleted'
,
None
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
...
...
@@ -168,22 +116,12 @@ class ApplicationViewSet(viewsets.ModelViewSet):
instance
=
self
.
get_object
()
instance
.
deleted_at
=
None
serializer
=
self
.
get_serializer
(
instance
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Archived application restored'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Archived application restored'
,
serializer
.
data
)
instance
.
save
()
return
Response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
...
...
@@ -192,15 +130,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
def
archived
(
self
,
request
,
pk
=
None
):
try
:
queryset
=
Application
.
objects
.
filter
(
deleted_at__isnull
=
False
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
...
...
@@ -213,11 +143,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# Show app services
...
...
@@ -226,34 +152,19 @@ class ApplicationViewSet(viewsets.ModelViewSet):
try
:
services
=
APIService
.
objects
.
filter
(
application
=
pk
)
if
not
services
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
page
=
self
.
paginate_queryset
(
services
)
if
page
is
not
None
:
serializer
=
APIServiceSerializer
(
page
,
many
=
True
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'A
rchived application
s found'
,
'message'
:
'A
pplication service
s found'
,
'results'
:
serializer
.
data
}
return
self
.
get_paginated_response
(
message
)
# serializer = APIServiceSerializer(services, many=True)
# return Response(serializer.data, status=status.HTTP_200_OK)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
...
...
@@ -266,39 +177,26 @@ class APIServiceViewSet(viewsets.ModelViewSet):
lookup_field
=
'pk'
pagination_class
=
CustomPagination
# CREATE
Application
# CREATE
Service
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
message
=
{
'code'
:
201
,
'status'
:
'success'
,
'message'
:
'New service created'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
201
,
'success'
,
'New service created'
,
serializer
.
data
)
return
Response
(
message
)
except
BadRequestException
as
e
:
message
=
{
'code'
:
400
,
'status'
:
'failed'
,
'message'
:
''
+
str
(
e
),
}
message
=
status_message_response
(
400
,
'failed'
,
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW LIST of
Application
s
# SHOW LIST of
service
s
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
queryset
=
APIService
.
objects
.
filter
(
deleted_at__exact
=
None
)
...
...
@@ -322,44 +220,28 @@ class APIServiceViewSet(viewsets.ModelViewSet):
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW
application
details
# SHOW
service
details
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
id
=
self
.
kwargs
[
'pk'
]
queryset
=
APIService
.
objects
.
filter
(
id
=
id
)
serializer
=
self
.
get_serializer
(
queryset
,
many
=
True
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
message
=
status_message_response
(
404
,
'failed'
,
'No record found'
,
None
)
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
else
:
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Service retrieved'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Service retrieved'
,
serializer
.
data
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# UPDATE
Application
# UPDATE
service
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
partial
=
kwargs
.
pop
(
'partial'
,
False
)
...
...
@@ -369,21 +251,12 @@ class APIServiceViewSet(viewsets.ModelViewSet):
self
.
perform_update
(
serializer
)
if
getattr
(
instance
,
'_prefetched_objects_cache'
,
None
):
instance
.
_prefetched_objects_cache
=
{}
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Application updated'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Service updated'
,
serializer
.
data
)
return
Response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SOFT DELETE / ARCHIVED
...
...
@@ -391,62 +264,37 @@ class APIServiceViewSet(viewsets.ModelViewSet):
try
:
instance
=
self
.
get_object
()
self
.
perform_destroy
(
instance
)
message
=
{
'code'
:
200
,
'status'
:
'Success'
,
'message'
:
'Service deleted'
}
message
=
status_message_response
(
200
,
'success'
,
'Service deleted'
,
None
)
return
Response
(
message
,
status
=
status
.
HTTP_200_OK
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# PATCH - RESTORE archived
application
# PATCH - RESTORE archived
service
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
kwargs
[
'partial'
]
=
True
instance
=
self
.
get_object
()
instance
.
deleted_at
=
None
serializer
=
self
.
get_serializer
(
instance
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Archived service restored'
,
'results'
:
serializer
.
data
}
message
=
status_message_response
(
200
,
'success'
,
'Archived service restored'
,
serializer
.
data
)
instance
.
save
()
return
Response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# /archived - show list of archived
application
# /archived - show list of archived
services
@
action
(
methods
=
[
"GET"
],
detail
=
False
)
def
archived
(
self
,
request
,
pk
=
None
):
try
:
queryset
=
APIService
.
objects
.
filter
(
deleted_at__isnull
=
False
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
...
...
@@ -459,30 +307,174 @@ class APIServiceViewSet(viewsets.ModelViewSet):
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
{
'code'
:
500
,
'status'
:
'failed'
,
'message'
:
'Request was not able to process'
+
str
(
e
),
}
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# @action(methods=["GET"], detail=True)
# def endpoints(self, request, id=None):
# service = self.get_object()
# endpoints = APIEndpoint.objects.filter(service=service)
# serializer = APIEndpointSerializer(endpoints, many=True)
# return Response(serializer.data, status=status.HTTP_200_OK)
# Show service endpoints
@
action
(
methods
=
[
'GET'
],
detail
=
True
)
def
endpoints
(
self
,
request
,
pk
):
try
:
endpoints
=
APIEndpoint
.
objects
.
filter
(
service
=
pk
)
page
=
self
.
paginate_queryset
(
endpoints
)
if
page
is
not
None
:
serializer
=
APIEndpointSerializer
(
page
,
many
=
True
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Service endpoints found'
,
'results'
:
serializer
.
data
}
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
class
APIEndpointViewSet
(
viewsets
.
ModelViewSet
):
http_method_names
=
[
'get'
,
'post'
,
'put'
,
'patch'
,
'head'
,
'options'
,
'trace'
'get'
,
'post'
,
'put'
,
'patch'
,
'
delete'
,
'
head'
,
'options'
,
'trace'
]
queryset
=
APIEndpoint
.
objects
.
all
()
.
order_by
(
'service'
)
serializer_class
=
APIEndpointSerializer
lookup_field
=
'
id
'
lookup_field
=
'
pk
'
filter_backends
=
(
DjangoFilterBackend
,
)
filter_class
=
APIEndpointFilter
pagination_class
=
CustomPagination
# CREATE Endpoint
def
create
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
serializer
=
self
.
get_serializer
(
data
=
request
.
data
)
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_create
(
serializer
)
headers
=
self
.
get_success_headers
(
serializer
.
data
)
message
=
status_message_response
(
201
,
'success'
,
'New endpoint created'
,
serializer
.
data
)
return
Response
(
message
)
except
BadRequestException
as
e
:
message
=
status_message_response
(
400
,
'failed'
,
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW LIST of endpoints
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
queryset
=
APIEndpoint
.
objects
.
filter
(
deleted_at__exact
=
None
)
if
not
queryset
.
exists
():
message
=
{
'code'
:
404
,
'status'
:
'failed'
,
'message'
:
'No records found'
}
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'List of endpoints found'
,
'results'
:
serializer
.
data
}
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SHOW endpoint details
def
retrieve
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
id
=
self
.
kwargs
[
'pk'
]
queryset
=
APIEndpoint
.
objects
.
filter
(
id
=
id
)
serializer
=
self
.
get_serializer
(
queryset
,
many
=
True
)
if
not
queryset
.
exists
():
message
=
status_message_response
(
404
,
'failed'
,
'No record found'
,
None
)
return
Response
(
message
,
status
=
status
.
HTTP_404_NOT_FOUND
)
else
:
message
=
status_message_response
(
200
,
'success'
,
'Endpoint retrieved'
,
serializer
.
data
)
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
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# UPDATE endpoint
def
update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
partial
=
kwargs
.
pop
(
'partial'
,
False
)
instance
=
self
.
get_object
()
serializer
=
self
.
get_serializer
(
instance
,
data
=
request
.
data
,
partial
=
partial
)
serializer
.
is_valid
(
raise_exception
=
True
)
self
.
perform_update
(
serializer
)
if
getattr
(
instance
,
'_prefetched_objects_cache'
,
None
):
instance
.
_prefetched_objects_cache
=
{}
message
=
status_message_response
(
200
,
'success'
,
'Endpoint updated'
,
serializer
.
data
)
return
Response
(
message
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# SOFT DELETE / ARCHIVED
def
destroy
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
instance
=
self
.
get_object
()
self
.
perform_destroy
(
instance
)
message
=
status_message_response
(
200
,
'success'
,
'Endpoint deleted'
,
None
)
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
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# PATCH - RESTORE archived endpoint
def
partial_update
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
kwargs
[
'partial'
]
=
True
instance
=
self
.
get_object
()
instance
.
deleted_at
=
None
serializer
=
self
.
get_serializer
(
instance
)
message
=
status_message_response
(
200
,
'success'
,
'Archived endpoint restored'
,
serializer
.
data
)
instance
.
save
()
return
Response
(
message
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
# /archived - show list of archived endpoints
@
action
(
methods
=
[
"GET"
],
detail
=
False
)
def
archived
(
self
,
request
,
pk
=
None
):
try
:
queryset
=
APIEndpoint
.
objects
.
filter
(
deleted_at__isnull
=
False
)
page
=
self
.
paginate_queryset
(
queryset
)
if
page
is
not
None
:
serializer
=
self
.
get_serializer
(
page
,
many
=
True
)
message
=
{
'code'
:
200
,
'status'
:
'success'
,
'message'
:
'Archived endpoints found'
,
'results'
:
serializer
.
data
}
return
self
.
get_paginated_response
(
message
)
except
Exception
as
e
:
message
=
status_message_response
(
500
,
'failed'
,
'Request was not able to process'
+
str
(
e
),
None
)
return
Response
(
message
,
status
=
status
.
HTTP_500_INTERNAL_SERVER_ERROR
)
class
APIGatewayList
(
APIView
):
...
...
config/urls.py
View file @
a740e8cf
...
...
@@ -20,5 +20,5 @@ swagger = get_swagger_view(title='API Main End Point')
urlpatterns
=
[
path
(
'docs/'
,
swagger
),
path
(
''
,
include
(
'api.urls'
)),
path
(
'
api/v1/
'
,
include
(
'api.urls'
)),
]
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