Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kl_task8_aggregations
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
arun.uday
kl_task8_aggregations
Commits
b3b11c19
Commit
b3b11c19
authored
Jan 31, 2023
by
arun.uday
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit2
parent
99ff5a5c
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
119 additions
and
73 deletions
+119
-73
.idea/sonarlint/issuestore/index.pb
+4
-0
app.py
+1
-1
conf/applications.conf
+5
-1
data.xlsx
+0
-0
scripts/config/applications_config.py
+5
-2
scripts/core/handlers/generate_excel_file.py
+3
-3
scripts/core/handlers/no_violations_data.py
+5
-23
scripts/core/handlers/result_generate.py
+5
-10
scripts/core/handlers/violation_find.py
+5
-29
scripts/services/app_services_run.py
+5
-4
scripts/utils/mongo_operations.py
+81
-0
No files found.
.idea/sonarlint/issuestore/index.pb
View file @
b3b11c19
No preview for this file type
app.py
View file @
b3b11c19
# using
redis database
# using
mongo aggregation operations
import
uvicorn
import
uvicorn
...
...
conf/applications.conf
View file @
b3b11c19
...
@@ -3,7 +3,10 @@ base_path = scripts/
...
@@ -3,7 +3,10 @@ base_path = scripts/
sub_path
=
temp
/
sub_path
=
temp
/
[
file
]
[
file
]
file_name_
json
=
data
.
json
file_name_
xlsx
=
data
.
xlsx
[
connection
]
[
connection
]
mongodb
=
mongodb
://
localhost
:
27017
mongodb
=
mongodb
://
localhost
:
27017
[
mongodb
]
project
= $
project
\ No newline at end of file
data.xlsx
deleted
100644 → 0
View file @
99ff5a5c
File deleted
scripts/config/applications_config.py
View file @
b3b11c19
...
@@ -12,8 +12,11 @@ sub_path = config.get("path", "sub_path")
...
@@ -12,8 +12,11 @@ sub_path = config.get("path", "sub_path")
# file name
# file name
file_name_
json
=
config
.
get
(
"file"
,
"file_name_json
"
)
file_name_
xlsx
=
config
.
get
(
"file"
,
"file_name_xlsx
"
)
full_path_
json
=
base_path
+
sub_path
+
file_name_json
full_path_
xlsx
=
base_path
+
sub_path
+
file_name_xlsx
# db connection
# db connection
client_connect
=
config
.
get
(
"connection"
,
"mongodb"
)
client_connect
=
config
.
get
(
"connection"
,
"mongodb"
)
# mongo
project
=
config
.
get
(
"mongodb"
,
"project"
)
scripts/core/handlers/generate_excel_file.py
View file @
b3b11c19
import
pandas
as
pd
import
pandas
as
pd
def
generate_excel
(
cursor_data
):
def
generate_excel
(
path_xlsx
,
cursor_data
):
data_list
=
[]
data_list
=
[]
if
cursor_data
.
alive
>
0
:
if
cursor_data
.
alive
>
0
:
for
business_names
in
cursor_data
:
for
business_names
in
cursor_data
:
data_list
.
append
(
business_names
)
data_list
.
append
(
business_names
)
data_frame
=
pd
.
DataFrame
(
data_list
)
data_frame
=
pd
.
DataFrame
(
data_list
,
columns
=
[
'result'
,
'business_name'
,
'date'
]
)
data_frame
.
to_excel
(
"data.xlsx"
,
index
=
False
)
data_frame
.
to_excel
(
path_xlsx
,
index
=
False
)
else
:
else
:
print
(
"Error"
)
print
(
"Error"
)
scripts/core/handlers/no_violations_data.py
View file @
b3b11c19
from
scripts.utils.mongo_operations
import
MongoDb
def
db_select_no_violate
(
db
):
def
db_select_no_violate
(
db
):
cursor_data
=
db
.
aggregate
([
mongo_obj
=
MongoDb
()
{
cursor_data
=
mongo_obj
.
no_violations_db
(
db
)
'$group'
:
{
'_id'
:
'$business_name'
,
'violations'
:
{
'$sum'
:
{
'$cond'
:
[
{
'$eq'
:
[
'$result'
,
'No Violation Issued'
]
},
1
,
0
]
}
}
}
},
{
'$project'
:
{
'business_name'
:
'$_id'
,
'_id'
:
0
}
}
])
if
cursor_data
.
alive
>
0
:
if
cursor_data
.
alive
>
0
:
print
(
"Data collected...."
)
print
(
"Data collected...."
)
for
business_names
in
cursor_data
:
for
business_names
in
cursor_data
:
...
...
scripts/core/handlers/result_generate.py
View file @
b3b11c19
from
scripts.utils.mongo_operations
import
MongoDb
def
results_data
(
db
):
def
results_data
(
db
):
cursor_data
=
db
.
aggregate
([
mongo_obj
=
MongoDb
()
{
cursor_data
=
mongo_obj
.
view_db_data
(
db
)
'$project'
:
{
'_id'
:
0
,
'result'
:
1
,
'business_name'
:
1
,
'date'
:
1
}
}
])
if
cursor_data
.
alive
>
0
:
if
cursor_data
.
alive
>
0
:
print
(
"Data collected...."
)
print
(
"Data collected...."
)
return
cursor_data
return
cursor_data
...
...
scripts/core/handlers/violation_find.py
View file @
b3b11c19
from
scripts.utils.mongo_operations
import
MongoDb
def
db_select_violate
(
db
):
def
db_select_violate
(
db
):
cursor_data
=
db
.
aggregate
([
mongo_obj
=
MongoDb
()
{
cursor_data
=
mongo_obj
.
violations_db
(
db
)
'$group'
:
{
'_id'
:
'$business_name'
,
'violations'
:
{
'$sum'
:
{
'$cond'
:
[
{
'$eq'
:
[
'$result'
,
'Violation Issued'
]
},
1
,
0
]
}
}
}
},
{
'$sort'
:
{
'violations'
:
-
1
}
},
{
'$limit'
:
1
},
{
'$project'
:
{
'business_name'
:
'$_id'
,
'_id'
:
0
}
}
])
if
cursor_data
.
alive
>
0
:
if
cursor_data
.
alive
>
0
:
print
(
"Data collected...."
)
print
(
"Data collected...."
)
print
(
cursor_data
.
next
())
print
(
cursor_data
.
next
())
...
...
scripts/services/app_services_run.py
View file @
b3b11c19
from
fastapi
import
FastAPI
,
Request
,
UploadFile
,
File
from
fastapi
import
FastAPI
,
Request
,
UploadFile
,
File
from
fastapi.templating
import
Jinja2Templates
from
fastapi.templating
import
Jinja2Templates
from
fastapi.responses
import
HTMLResponse
from
fastapi.responses
import
HTMLResponse
from
scripts.config.applications_config
import
full_path_json
from
scripts.config.applications_config
import
full_path_xlsx
from
scripts.core.handlers.generate_excel_file
import
generate_excel
from
scripts.core.handlers.generate_excel_file
import
generate_excel
from
scripts.core.handlers.uploaded_file_
import
extract_uploaded_data
from
scripts.core.handlers.uploaded_file_
import
extract_uploaded_data
from
scripts.services.mongo_db_operations
import
MongoDbStart
from
scripts.services.mongo_db_operations
import
MongoDbStart
...
@@ -16,12 +17,12 @@ def template_render(request: Request):
...
@@ -16,12 +17,12 @@ def template_render(request: Request):
return
templates
.
TemplateResponse
(
"upload_file.html"
,
{
"request"
:
request
})
return
templates
.
TemplateResponse
(
"upload_file.html"
,
{
"request"
:
request
})
# handling the form submit using api
# handling the form submit using api
and aggregations
@app.post
(
"/submit_file/"
)
@app.post
(
"/submit_file/"
)
async
def
submit_file_data
(
file_data
:
UploadFile
=
File
(
...
)):
async
def
submit_file_data
(
file_data
:
UploadFile
=
File
(
...
)):
try
:
try
:
data_read
=
await
file_data
.
read
()
data_read
=
await
file_data
.
read
()
decoded_data
=
extract_uploaded_data
(
full_path_json
,
data_read
)
decoded_data
=
extract_uploaded_data
(
data_read
)
db_class
=
MongoDbStart
()
db_class
=
MongoDbStart
()
db_created
=
db_class
.
mongo_create
()
db_created
=
db_class
.
mongo_create
()
db_class
.
mongo_insert
(
db_created
,
decoded_data
)
db_class
.
mongo_insert
(
db_created
,
decoded_data
)
...
@@ -31,7 +32,7 @@ async def submit_file_data(file_data: UploadFile = File(...)):
...
@@ -31,7 +32,7 @@ async def submit_file_data(file_data: UploadFile = File(...)):
db_class
.
mongo_no_violation
(
db_created
)
db_class
.
mongo_no_violation
(
db_created
)
print
(
"
\n
Generating Excel file"
)
print
(
"
\n
Generating Excel file"
)
cursor_data
=
db_class
.
mongo_view_results
(
db_created
)
cursor_data
=
db_class
.
mongo_view_results
(
db_created
)
generate_excel
(
cursor_data
)
generate_excel
(
full_path_xlsx
,
cursor_data
)
except
Exception
as
e
:
except
Exception
as
e
:
print
(
e
)
print
(
e
)
else
:
else
:
...
...
scripts/utils/mongo_operations.py
0 → 100644
View file @
b3b11c19
# class for mongo operations
from
scripts.config.applications_config
import
project
class
MongoDb
:
# find business name with most violations
@staticmethod
def
violations_db
(
db
):
cursor_data
=
db
.
aggregate
([
{
'$group'
:
{
'_id'
:
'$business_name'
,
'violations'
:
{
'$sum'
:
{
'$cond'
:
[
{
'$eq'
:
[
'$result'
,
'Violation Issued'
]
},
1
,
0
]
}
}
}
},
{
'$sort'
:
{
'violations'
:
-
1
}
},
{
'$limit'
:
1
},
{
project
:
{
'business_name'
:
'$_id'
,
'_id'
:
0
}
}
])
return
cursor_data
# business names with no violations
@staticmethod
def
no_violations_db
(
db
):
cursor_data
=
db
.
aggregate
([
{
'$group'
:
{
'_id'
:
'$business_name'
,
'violations'
:
{
'$sum'
:
{
'$cond'
:
[
{
'$eq'
:
[
'$result'
,
'No Violation Issued'
]
},
1
,
0
]
}
}
}
},
{
project
:
{
'business_name'
:
'$_id'
,
'_id'
:
0
}
}
])
return
cursor_data
# business name and dates based on results
@staticmethod
def
view_db_data
(
db
):
cursor_data
=
db
.
aggregate
([
{
project
:
{
'_id'
:
0
,
'result'
:
1
,
'business_name'
:
1
,
'date'
:
1
}
}
])
return
cursor_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