feat(api): refactored weekly report

This commit is contained in:
Taha Yassine Kraiem 2022-01-03 11:47:52 +01:00
parent 8f0524a2f6
commit 6b6f23f39d
3 changed files with 14 additions and 28 deletions

View file

@ -1,6 +1,5 @@
from chalicelib.utils import pg_client, helper
from chalicelib.utils import pg_client, helper, email_helper
from chalicelib.utils.TimeUTC import TimeUTC
from decouple import config
from chalicelib.utils.helper import get_issue_title
LOWEST_BAR_VALUE = 3
@ -30,7 +29,7 @@ def edit_config(user_id, weekly_report):
def cron():
with pg_client.PostgresClient() as cur:
with pg_client.PostgresClient(long_query=True) as cur:
params = {"3_days_ago": TimeUTC.midnight(delta_days=-3),
"1_week_ago": TimeUTC.midnight(delta_days=-7),
"2_week_ago": TimeUTC.midnight(delta_days=-14),
@ -83,6 +82,7 @@ def cron():
) AS month_1_issues ON (TRUE)
WHERE projects.deleted_at ISNULL;"""), params)
projects_data = cur.fetchall()
emails_to_send = []
for p in projects_data:
params["project_id"] = p["project_id"]
print(f"checking {p['project_name']} : {p['project_id']}")
@ -227,13 +227,14 @@ def cron():
if j["type"] in keep_types:
keep.append(j)
i["partition"] = keep
helper.async_post(config('email_funnel') % "weekly_report2",
{"email": p.pop("emails"),
"data": {
**p,
"days_partition": days_partition,
"issues_by_type": issues_by_type,
"issues_breakdown_by_day": issues_breakdown_by_day,
"issues_breakdown_list": issues_breakdown_list
}
})
emails_to_send.append({"email": p.pop("emails"),
"data": {
**p,
"days_partition": days_partition,
"issues_by_type": issues_by_type,
"issues_breakdown_by_day": issues_breakdown_by_day,
"issues_breakdown_list": issues_breakdown_list
}})
print(f">>> Sending weekly report to {len(emails_to_send)} email-group")
for e in emails_to_send:
email_helper.weekly_report2(recipients=e["email"], data=e["data"])

View file

@ -567,15 +567,6 @@ def async_send_signup_emails(data: schemas.EmailPayloadSchema = Body(...)):
email_helper.send_assign_session(recipient=data.email, link=data.link, message=data.message)
# TODO: transform this to a background task when you find a way to run it without an attached request
@public_app.post('/async/funnel/weekly_report2', tags=["async mail"])
def async_weekly_report(data: schemas.WeeklyReportPayloadSchema = Body(...)):
print("=========================> Sending weekly report")
if data.auth != config("async_Token"):
return {}
email_helper.weekly_report2(recipients=data.email, data=data.data)
# @public_app.post('/async/basic/member_invitation', tags=["async mail"])
# def async_basic_emails(data: schemas.MemberInvitationPayloadSchema = Body(...)):
# if data.auth != config("async_Token"):

View file

@ -256,12 +256,6 @@ class EmailPayloadSchema(BaseModel):
message: str = Field(...)
class WeeklyReportPayloadSchema(BaseModel):
auth: str = Field(...)
email: EmailStr = Field(...)
data: dict = Field(...)
class MemberInvitationPayloadSchema(BaseModel):
auth: str = Field(...)
email: EmailStr = Field(...)