Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
trends_dashboard
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
suryakant
trends_dashboard
Commits
71ffa69f
Commit
71ffa69f
authored
Mar 06, 2024
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Trends Dashboard
parent
de578ed5
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
239 additions
and
82 deletions
+239
-82
.env
.env
+2
-1
scripts/configurations/__init__.py
scripts/configurations/__init__.py
+1
-0
scripts/constants/__init__.py
scripts/constants/__init__.py
+28
-17
scripts/core/db/postgres/psql_query.py
scripts/core/db/postgres/psql_query.py
+26
-4
scripts/core/handler/trends_handler.py
scripts/core/handler/trends_handler.py
+156
-32
scripts/core/schemas/api/__init__.py
scripts/core/schemas/api/__init__.py
+4
-0
scripts/core/schemas/api/trends_schema.py
scripts/core/schemas/api/trends_schema.py
+9
-12
scripts/core/schemas/postgres/postgres_tables.py
scripts/core/schemas/postgres/postgres_tables.py
+4
-8
scripts/core/service/trends_service.py
scripts/core/service/trends_service.py
+5
-4
scripts/core/utilities/common_utility.py
scripts/core/utilities/common_utility.py
+4
-4
No files found.
.env
View file @
71ffa69f
...
@@ -4,7 +4,8 @@ PORT = 80
...
@@ -4,7 +4,8 @@ PORT = 80
# POSTGRES DETAILS
# POSTGRES DETAILS
POSTGRES_URI = postgresql://admin:UtAdm#Post265399@20.221.119.96:5335/project_101__ilens_assistant
POSTGRES_URI = postgresql://admin:UtAdm#Post265399@20.221.119.96:5335/project_101__ilens_assistant
POSTGRES_MASTER_TBL = public.trends_master_tbl_
POSTGRES_MASTER_TBL = public.trends_master_tbl
POSTGRES_DATA_TBL = public.trends_form_tbl
# LOG DETAILS
# LOG DETAILS
LOG_BASE_PATH=logs/
LOG_BASE_PATH=logs/
...
...
scripts/configurations/__init__.py
View file @
71ffa69f
...
@@ -27,6 +27,7 @@ class PostgresDetails(BaseSettings):
...
@@ -27,6 +27,7 @@ class PostgresDetails(BaseSettings):
uri
:
str
uri
:
str
master_tbl
:
str
master_tbl
:
str
data_tbl
:
str
class
Config
:
class
Config
:
env_prefix
=
"POSTGRES_"
env_prefix
=
"POSTGRES_"
...
...
scripts/constants/__init__.py
View file @
71ffa69f
...
@@ -24,7 +24,7 @@ class MainConstants:
...
@@ -24,7 +24,7 @@ class MainConstants:
META_TAG_JSON
=
{
META_TAG_JSON
=
{
"name"
:
"PepsiCO: Trends Dashboard"
,
"name"
:
"PepsiCO: Trends Dashboard"
,
"description"
:
"Service for pushing data into the Postgres table"
,
"description"
:
"Service for pushing
each_
data into the Postgres table"
,
}
}
DESCRIPTION_KEY
=
"Trends Dashboard"
DESCRIPTION_KEY
=
"Trends Dashboard"
TOKEN_KEY
=
"token"
TOKEN_KEY
=
"token"
...
@@ -36,7 +36,7 @@ class Constants:
...
@@ -36,7 +36,7 @@ class Constants:
"""
"""
EXCEPTION_RAISER
=
"Exception ->{}"
EXCEPTION_RAISER
=
"Exception ->{}"
TRENDS_HANDLING_ENDPOINT
=
"Trends Handler Endpoints"
TRENDS_HANDLING_ENDPOINT
=
"Trends Handler Endpoints"
DATA
=
"data"
DATA
=
"
each_
data"
LINE
=
"line"
LINE
=
"line"
DEPARTMENT
=
"department"
DEPARTMENT
=
"department"
FORM
=
"form"
FORM
=
"form"
...
@@ -44,21 +44,32 @@ class Constants:
...
@@ -44,21 +44,32 @@ class Constants:
VALUES
=
"values"
VALUES
=
"values"
FILTER_NAME
=
"filter_name"
FILTER_NAME
=
"filter_name"
MAPPING_JSON
=
{
HEADER_CONTENT
=
[
0
:
"function"
,
{
1
:
"form"
,
"key"
:
"date"
,
2
:
"l1"
,
"label"
:
"Date"
3
:
"l2"
,
},
4
:
"l3"
,
{
5
:
"l4"
,
"key"
:
"parameter"
,
6
:
"l5"
,
"label"
:
"Parameter"
7
:
"l6"
,
},
8
:
"l7"
,
{
9
:
"l8"
,
"key"
:
"value"
,
10
:
"l9"
,
"label"
:
"Value"
11
:
"l10"
,
},
{
"key"
:
"mean"
,
"label"
:
"Mean"
},
{
"key"
:
"upper_limit"
,
"label"
:
"Upper Limit"
},
{
"key"
:
"lower_limit"
,
"label"
:
"Lower Limit"
}
}
]
class
LoggerConstants
:
class
LoggerConstants
:
...
...
scripts/core/db/postgres/psql_query.py
View file @
71ffa69f
...
@@ -80,13 +80,35 @@ def get_filter_query(
...
@@ -80,13 +80,35 @@ def get_filter_query(
return
query
,
clause
return
query
,
clause
def
get_parameters
(
where_clause
):
def
get_parameters
(
table
,
where_clause
):
return
f
"""
return
f
"""
SELECT
SELECT
DISTINCT PARAMETER
DISTINCT PARAMETER
, PARAMETER_TYPE, MAPPING_ID
FROM
FROM
PUBLIC.TRENDS_MASTER_TBL_
{table}
{where_clause}
{where_clause}
ORDER BY
ORDER BY
PARAMETER
PARAMETER, PARAMETER_TYPE
"""
def
get_form_data
(
metadata_tbl
,
data_tbl
,
mapping_id
,
start_date
,
end_date
):
return
f
"""
SELECT
FT.TIME_STAMP,
MT.PARAMETER,
FT.VALUE,
MT.UPPER_VALUE,
MT.LOWER_LIMIT
FROM
{data_tbl} FT
JOIN
{metadata_tbl} MT
ON
FT.MAPPING_ID = MT.MAPPING_ID
WHERE
FT.MAPPING_ID = '{mapping_id}'
AND
FT.TIME_STAMP
BETWEEN '{start_date}' AND '{end_date}'
"""
"""
scripts/core/handler/trends_handler.py
View file @
71ffa69f
import
copy
"""
from
datetime
import
datetime
Project: Trends Dashboard Handler
Description:
This module contains a class responsible for creating tables and performing
calculations for PepsiCo metrics.
It provides methods to retrieve metadata and data for the Trends dashboard.
Author: [H115-301: Suryakant Soni]
"""
from
scripts.configurations
import
postgres_details
from
scripts.configurations
import
postgres_details
from
scripts.constants
import
Constants
from
scripts.constants
import
Constants
from
scripts.core.db.postgres
import
database_init
from
scripts.core.db.postgres
import
database_init
from
scripts.core.db.postgres.psql_query
import
(
from
scripts.core.db.postgres.psql_query
import
(
get_departments
,
get_parameters
,
get_filter_query
get_departments
,
get_parameters
,
get_filter_query
,
get_form_data
)
)
from
scripts.core.schemas.postgres
import
TableObject
from
scripts.core.schemas.postgres
import
TableObject
from
scripts.core.logging.application_logging
import
logger
from
scripts.core.logging.application_logging
import
logger
from
scripts.core.exception.app_exceptions
import
GeneralException
from
scripts.core.schemas.postgres.postgres_tables
import
\
from
scripts.core.schemas.postgres.postgres_tables
import
\
TrendsMasterTable
,
TrendsFormTable
TrendsMasterTable
,
TrendsFormTable
...
@@ -22,19 +30,28 @@ class TrendsDashboardHandler:
...
@@ -22,19 +30,28 @@ class TrendsDashboardHandler:
def
get_trends_metadata
(
self
,
request_data
):
def
get_trends_metadata
(
self
,
request_data
):
"""
"""
get_trends_metadata
Retrieve metadata for trends dashboard.
Parameters:
request_data : Object containing request parameters.
Returns:
dict: Metadata for trends dashboard.
"""
"""
logger
.
info
(
"Getting Metadata"
)
final_metadata_json
=
dict
()
final_metadata_json
=
dict
()
clause
=
None
clause
=
None
logger
.
info
(
"Database initialization"
)
logger
.
info
(
"Database initialization"
)
db_init
=
database_init
()
db_init
=
database_init
()
# Creating table object
logger
.
info
(
"Initiating table object"
)
trends_master_tbl_obj
=
TableObject
(
trends_master_tbl_obj
=
TableObject
(
db
=
db_init
,
table_name
=
TrendsMasterTable
db
=
db_init
,
table_name
=
TrendsMasterTable
)
)
logger
.
info
(
f
"Current level: {request_data.current_level}"
)
if
request_data
.
current_level
or
request_data
.
current_level
==
0
:
if
request_data
.
current_level
or
request_data
.
current_level
==
0
:
final_metadata_json
[
"current_level"
]
=
request_data
.
current_level
+
1
final_metadata_json
[
"current_level"
]
=
request_data
.
current_level
+
1
filter_query
,
clause
=
get_filter_query
(
filter_query
,
clause
=
get_filter_query
(
...
@@ -51,7 +68,7 @@ class TrendsDashboardHandler:
...
@@ -51,7 +68,7 @@ class TrendsDashboardHandler:
table
=
TrendsMasterTable
table
=
TrendsMasterTable
)
)
# Getting response from the Trends Master Table
logger
.
info
(
"Getting response from the Trends Master Table"
)
response_data
=
trends_master_tbl_obj
.
execute_query
(
response_data
=
trends_master_tbl_obj
.
execute_query
(
query
=
filter_query
query
=
filter_query
)
)
...
@@ -65,7 +82,9 @@ class TrendsDashboardHandler:
...
@@ -65,7 +82,9 @@ class TrendsDashboardHandler:
)
)
if
parameter_flag
:
if
parameter_flag
:
filter_query
=
get_parameters
(
where_clause
=
clause
)
filter_query
=
get_parameters
(
table
=
postgres_details
.
master_tbl
,
where_clause
=
clause
)
# Getting response from the Trends Master Table
# Getting response from the Trends Master Table
response_data
=
trends_master_tbl_obj
.
execute_query
(
response_data
=
trends_master_tbl_obj
.
execute_query
(
query
=
filter_query
query
=
filter_query
...
@@ -76,19 +95,124 @@ class TrendsDashboardHandler:
...
@@ -76,19 +95,124 @@ class TrendsDashboardHandler:
final_metadata_json
=
final_metadata_json
,
final_metadata_json
=
final_metadata_json
,
parameter_flag
=
parameter_flag
parameter_flag
=
parameter_flag
)
)
return
final_metadata_json
return
final_metadata_json
def
get_trends_data
(
self
,
request_data
):
def
get_trends_data
(
self
,
request_data
):
"""
"""
Docstring
Retrieve data for trends dashboard.
Parameters:
request_data : Object containing request parameters.
Returns:
dict: Data for trends dashboard.
"""
"""
return
True
logger
.
info
(
"Getting data from form table"
)
final_data_json
=
dict
()
logger
.
info
(
"Database initialization"
)
db_init
=
database_init
()
# Creating table object
trends_data_tbl_obj
=
TableObject
(
db
=
db_init
,
table_name
=
TrendsFormTable
)
if
request_data
.
start_date
and
request_data
.
end_date
\
and
request_data
.
mapping_id
:
data_query
=
get_form_data
(
metadata_tbl
=
postgres_details
.
master_tbl
,
data_tbl
=
postgres_details
.
data_tbl
,
mapping_id
=
request_data
.
mapping_id
,
start_date
=
request_data
.
start_date
,
end_date
=
request_data
.
end_date
)
# Getting response from the Trends Master Table
response_data
=
trends_data_tbl_obj
.
execute_query
(
query
=
data_query
)
if
response_data
:
logger
.
info
(
"Calculate mean value"
)
total_value
=
sum
(
entry
[
'value'
]
for
entry
in
response_data
)
mean_value
=
round
((
total_value
/
len
(
response_data
)),
2
)
logger
.
info
(
"Creating the required JSON format"
)
final_data_json
=
{
"header_content"
:
Constants
.
HEADER_CONTENT
,
"body_content"
:
[
{
"date"
:
entry
[
'time_stamp'
]
.
strftime
(
"
%
m-
%
d-
%
Y
%
H:
%
M:
%
S"
),
"parameter"
:
entry
[
'parameter'
],
"value"
:
entry
[
'value'
],
"mean"
:
mean_value
,
"upper_limit"
:
entry
[
'upper_value'
],
"lower_limit"
:
entry
[
'lower_limit'
]
}
for
entry
in
response_data
],
"upper_limit"
:
response_data
[
0
][
'upper_value'
],
"lower_limit"
:
response_data
[
0
][
'lower_limit'
],
"mean"
:
mean_value
}
else
:
logger
.
info
(
"No data in database"
)
final_data_json
=
{
"header_content"
:
Constants
.
HEADER_CONTENT
,
"body_content"
:
[],
"upper_limit"
:
0
,
"lower_limit"
:
0
,
"mean"
:
0
}
return
final_data_json
def
get_response_data
(
self
,
response_data
,
final_metadata_json
,
parameter_flag
):
def
get_response_data
(
self
,
response_data
,
final_metadata_json
,
parameter_flag
):
"""
Process response data.
Parameters:
response_data (list): List of response data.
final_metadata_json (dict): Final metadata JSON.
parameter_flag (bool): Flag indicating parameter presence.
Returns:
tuple: Tuple containing updated metadata JSON and parameter flag.
"""
values
=
[]
values
=
[]
if
parameter_flag
:
logger
.
info
(
"Getting parameter data from metadata table"
)
filter_data
=
{}
# Iterate through the response_data list
for
each_data
in
response_data
:
parameter_name
=
each_data
[
'parameter'
]
parameter_type
=
each_data
[
'parameter_type'
]
# If the parameter doesn't exist in filter_data, add it
if
parameter_name
not
in
filter_data
:
filter_data
[
parameter_name
]
=
{
"key"
:
parameter_name
,
"label"
:
parameter_name
,
"mapping_id"
:
each_data
[
"mapping_id"
],
"type"
:
[]
}
# Add the parameter_type to the type list if it doesn't exist
if
parameter_type
not
in
[
t
[
"key"
]
for
t
in
filter_data
[
parameter_name
][
"type"
]]:
filter_data
[
parameter_name
][
"type"
]
.
append
({
"key"
:
parameter_type
,
"label"
:
parameter_type
})
final_metadata_json
.
update
({
"filter_name"
:
"parameter"
,
"values"
:
list
(
filter_data
.
values
())
})
else
:
logger
.
info
(
"Getting filter values from metadata table"
)
for
each_data
in
response_data
:
for
each_data
in
response_data
:
if
len
(
each_data
)
>
1
:
if
not
parameter_flag
and
len
(
each_data
)
>
1
:
filter_name
=
list
(
each_data
.
items
())
filter_name
=
list
(
each_data
.
items
())
if
filter_name
[
1
][
1
]:
if
filter_name
[
1
][
1
]:
values
.
append
({
values
.
append
({
...
@@ -100,7 +224,7 @@ class TrendsDashboardHandler:
...
@@ -100,7 +224,7 @@ class TrendsDashboardHandler:
break
break
final_metadata_json
[
"filter_name"
]
=
filter_name
[
0
][
1
]
final_metadata_json
[
"filter_name"
]
=
filter_name
[
0
][
1
]
final_metadata_json
[
"values"
]
=
values
final_metadata_json
[
"values"
]
=
values
elif
len
(
each_data
)
==
1
:
elif
not
parameter_flag
and
len
(
each_data
)
==
1
:
filter_name
=
list
(
each_data
.
keys
())[
0
]
filter_name
=
list
(
each_data
.
keys
())[
0
]
values
.
append
({
values
.
append
({
"key"
:
each_data
[
filter_name
],
"key"
:
each_data
[
filter_name
],
...
...
scripts/core/schemas/api/__init__.py
View file @
71ffa69f
from
.trends_schema
import
(
from
.trends_schema
import
(
DashboardFilterInput
,
DashboardFilterInput
,
DashboardFilterOutput
,
DashboardFilterOutput
,
DashboardFormInput
,
DashboardFormOutput
)
)
trends_request
=
DashboardFilterInput
trends_request
=
DashboardFilterInput
trends_response
=
DashboardFilterOutput
trends_response
=
DashboardFilterOutput
trends_form_request
=
DashboardFormInput
trends_form_response
=
DashboardFormOutput
scripts/core/schemas/api/trends_schema.py
View file @
71ffa69f
from
__future__
import
annotations
from
__future__
import
annotations
import
json
from
typing
import
Optional
from
datetime
import
datetime
from
typing
import
Optional
,
Any
from
pydantic
import
BaseModel
from
pydantic
import
BaseModel
...
@@ -20,15 +18,14 @@ class DashboardFilterOutput(BaseModel):
...
@@ -20,15 +18,14 @@ class DashboardFilterOutput(BaseModel):
class
DashboardFormInput
(
BaseModel
):
class
DashboardFormInput
(
BaseModel
):
start_date
:
Optional
[
str
]
=
None
start_date
:
Optional
[
str
]
end_date
:
Optional
[
str
]
=
None
end_date
:
Optional
[
str
]
mapping_id
:
Optional
[
str
]
=
None
mapping_id
:
Optional
[
str
]
department
:
Optional
[
str
]
=
None
function
:
Optional
[
str
]
=
None
form
:
Optional
[
str
]
=
None
parameter
:
Optional
[
str
]
=
None
class
DashboardFormOutput
(
BaseModel
):
class
DashboardFormOutput
(
BaseModel
):
filter_name
:
str
header_content
:
list
values
:
list
body_content
:
list
upper_limit
:
float
lower_limit
:
float
mean
:
float
scripts/core/schemas/postgres/postgres_tables.py
View file @
71ffa69f
...
@@ -5,7 +5,7 @@ Base = declarative_base()
...
@@ -5,7 +5,7 @@ Base = declarative_base()
class
TrendsMasterTable
(
Base
):
class
TrendsMasterTable
(
Base
):
__tablename__
=
"trends_master_tbl
_
"
__tablename__
=
"trends_master_tbl"
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
mapping_id
=
Column
(
VARCHAR
,
nullable
=
True
)
mapping_id
=
Column
(
VARCHAR
,
nullable
=
True
)
...
@@ -14,20 +14,16 @@ class TrendsMasterTable(Base):
...
@@ -14,20 +14,16 @@ class TrendsMasterTable(Base):
form
=
Column
(
VARCHAR
,
nullable
=
True
)
form
=
Column
(
VARCHAR
,
nullable
=
True
)
filter
=
Column
(
JSON
,
nullable
=
True
)
filter
=
Column
(
JSON
,
nullable
=
True
)
parameter
=
Column
(
VARCHAR
,
nullable
=
True
)
parameter
=
Column
(
VARCHAR
,
nullable
=
True
)
parameter_type
=
Column
(
VARCHAR
,
nullable
=
True
)
trend_captured
=
Column
(
BOOLEAN
,
nullable
=
True
)
trend_captured
=
Column
(
BOOLEAN
,
nullable
=
True
)
lower_limit
=
Column
(
FLOAT
,
nullable
=
True
)
lower_limit
=
Column
(
FLOAT
,
nullable
=
True
)
upper_value
=
Column
(
FLOAT
,
nullable
=
True
)
upper_value
=
Column
(
FLOAT
,
nullable
=
True
)
# index_name = Index("trends_master_tbl_", mapping_id, department,
# function, form, filter, parameter)
class
TrendsFormTable
(
Base
):
class
TrendsFormTable
(
Base
):
__tablename__
=
"trends_form_tbl
_
"
__tablename__
=
"trends_form_tbl"
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
mapping_id
=
Column
(
VARCHAR
,
nullable
=
True
)
mapping_id
=
Column
(
VARCHAR
,
nullable
=
True
)
time_stamp
=
Column
(
TIMESTAMP
)
time_stamp
=
Column
(
TIMESTAMP
)
value
=
Column
(
VARCHAR
,
nullable
=
True
)
value
=
Column
(
FLOAT
,
nullable
=
True
)
# index_name = Index("trends_form_tbl_", mapping_id, time_stamp)
scripts/core/service/trends_service.py
View file @
71ffa69f
...
@@ -17,7 +17,8 @@ from fastapi.responses import JSONResponse
...
@@ -17,7 +17,8 @@ from fastapi.responses import JSONResponse
from
scripts.constants
import
Constants
,
APIConstants
from
scripts.constants
import
Constants
,
APIConstants
from
scripts.core.logging.application_logging
import
logger
from
scripts.core.logging.application_logging
import
logger
from
scripts.core.schemas.api
import
(
from
scripts.core.schemas.api
import
(
trends_request
,
trends_response
trends_request
,
trends_response
,
trends_form_request
,
trends_form_response
)
)
from
scripts.core.handler.trends_handler
import
TrendsDashboardHandler
from
scripts.core.handler.trends_handler
import
TrendsDashboardHandler
...
@@ -66,15 +67,15 @@ async def dashboard_metadata(
...
@@ -66,15 +67,15 @@ async def dashboard_metadata(
@
downday_router
.
post
(
APIConstants
.
DASHBOARD_DATA_ENDPOINT
,
@
downday_router
.
post
(
APIConstants
.
DASHBOARD_DATA_ENDPOINT
,
response_model
=
trends_response
)
response_model
=
trends_
form_
response
)
async
def
dashboard_data
(
async
def
dashboard_data
(
request_data
:
trends_request
request_data
:
trends_
form_
request
):
):
"""
"""
Initiate postgres db and create tables
Initiate postgres db and create tables
Args:
Args:
request_data (DashboardF
ilter
Input): Request body containing the
request_data (DashboardF
orm
Input): Request body containing the
necessary form parameters.
necessary form parameters.
Returns:
Returns:
...
...
scripts/core/utilities/common_utility.py
View file @
71ffa69f
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
# - headers (dict): The headers to be included in the GET request.
# - headers (dict): The headers to be included in the GET request.
#
#
# Returns:
# Returns:
# - dict or None: The JSON response data if successful, or None if there is an
# - dict or None: The JSON response
each_
data if successful, or None if there is an
# error.
# error.
# """
# """
# response_data = None
# response_data = None
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
# params=params,
# params=params,
# headers=headers).json()
# headers=headers).json()
# except GeneralException as err:
# except GeneralException as err:
# logger.error(f"Exception in GET API data: {err}")
# logger.error(f"Exception in GET API
each_
data: {err}")
# return response_data
# return response_data
#
#
# def request_post(self, url, headers):
# def request_post(self, url, headers):
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
# - headers (dict): The JSON payload to be included in the POST request.
# - headers (dict): The JSON payload to be included in the POST request.
#
#
# Returns:
# Returns:
# - dict or None: The JSON response data if successful, or None if there is an
# - dict or None: The JSON response
each_
data if successful, or None if there is an
# error.
# error.
# """
# """
# response_data = None
# response_data = None
...
@@ -50,5 +50,5 @@
...
@@ -50,5 +50,5 @@
# url=url,
# url=url,
# json=headers).json()
# json=headers).json()
# except GeneralException as err:
# except GeneralException as err:
# logger.error(f"Exception in POST API data: {err}")
# logger.error(f"Exception in POST API
each_
data: {err}")
# return response_data
# return response_data
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