Commit 0e04ae63 authored by vaisakh.nair's avatar vaisakh.nair 🎯

new changes to dockerfile

parent cfa9e671
...@@ -6,9 +6,13 @@ MONGO_CLIENT=mongodb://admin:iLens%241234@192.168.3.181:2717/admin?connectTimeou ...@@ -6,9 +6,13 @@ MONGO_CLIENT=mongodb://admin:iLens%241234@192.168.3.181:2717/admin?connectTimeou
MONGO_PORT=2717 MONGO_PORT=2717
MONGO_DATABASE=ilens_ai MONGO_DATABASE=ilens_ai
MONGO_COLLECTION=eventLogs MONGO_COLLECTION=eventLogs
MONGO_COLLECTION_EMAIL= URL_WITH_ATTACH=https://cloud.ilens.io/sms-util/api/v1/eim/email/form/send
SMTP_HOST= URL_WITHOUT_ATTACH=https://cloud.ilens.io/sms-util/api/v1/eim/email/send
SMTP_PORT= AUTHORIZATION=Basic QWxsR29vZE5hbWVzUkdvbmU6Y29tQlJBTlNlQU50YW1hc0ViSUNhUGVD
SMTP_USERNAME= FROM_ADDRESS=no-reply@ilens.io
SMTP_PASSWORD= MONGO_COLLECTION_EMAIL=email_ids
SENDER_EMAIL= # SMTP_HOST=
\ No newline at end of file # SMTP_PORT=
# SMTP_USERNAME=
# SMTP_PASSWORD=
# SENDER_EMAIL=
\ No newline at end of file
...@@ -10,9 +10,6 @@ COPY . /app ...@@ -10,9 +10,6 @@ COPY . /app
# Install the project dependencies # Install the project dependencies
RUN pip install -r requirements.txt RUN pip install -r requirements.txt
# Set the working directory to the app folder
WORKDIR /app/utils
# Expose the port on which your application runs (if needed) # Expose the port on which your application runs (if needed)
# EXPOSE <port_number> # EXPOSE <port_number>
......
import logging import logging
from utils.create_report import DailyReportGenerator from utils.create_report_sample import DailyReportGenerator
# Configure logging # Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def generate_daily_report(): def generate_daily_report():
# Create an instance of DailyReportGenerator # Create an instance of DailyReportGenerator
report_generator = DailyReportGenerator() report_generator = DailyReportGenerator()
...@@ -12,8 +13,12 @@ def generate_daily_report(): ...@@ -12,8 +13,12 @@ def generate_daily_report():
# Generate the daily report # Generate the daily report
report_path = report_generator.create_excel_report() report_path = report_generator.create_excel_report()
# Send the email with the report
report_generator.send_email_from_ut(filepath=report_path)
return report_path return report_path
if __name__ == "__main__": if __name__ == "__main__":
try: try:
report_path = generate_daily_report() report_path = generate_daily_report()
......
...@@ -14,3 +14,12 @@ cameras: ...@@ -14,3 +14,12 @@ cameras:
packer_name: Packer 6 packer_name: Packer 6
- camera_name: camera_47 - camera_name: camera_47
packer_name: Packer 7 packer_name: Packer 7
subject: Daily Report
body: |
Dear recipient,
Please find attached the daily report for your review.
Thank you.
\ No newline at end of file
...@@ -2,3 +2,4 @@ pandas==1.1.5 ...@@ -2,3 +2,4 @@ pandas==1.1.5
pymongo==3.11.4 pymongo==3.11.4
PyYAML==6.0 PyYAML==6.0
openpyxl==3.1.2 openpyxl==3.1.2
requests==2.29.0
...@@ -76,7 +76,7 @@ class DailyReportGenerator: ...@@ -76,7 +76,7 @@ class DailyReportGenerator:
# Calculate the previous day's date # Calculate the previous day's date
previous_day = current_time - timedelta(days=1) previous_day = current_time - timedelta(days=1)
report_date = previous_day.strftime("%Y-%m-%d") report_date = previous_day.strftime("%Y-%m-%d")
report_file = f"daily_report_{report_date}.xlsx" #report_file = f"daily_report_{report_date}.xlsx"
wb = load_workbook(self.template_file) wb = load_workbook(self.template_file)
sheet = wb.active sheet = wb.active
......
...@@ -8,11 +8,12 @@ import yaml ...@@ -8,11 +8,12 @@ import yaml
from dotenv import load_dotenv from dotenv import load_dotenv
from collections import defaultdict from collections import defaultdict
import smtplib import smtplib
from email.mime.multipart import MIMEMultipart # from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText # from email.mime.text import MIMEText
from email.mime.base import MIMEBase # from email.mime.base import MIMEBase
from email import encoders # from email import encoders
import requests
import logging
load_dotenv(dotenv_path='.env') load_dotenv(dotenv_path='.env')
...@@ -81,7 +82,7 @@ class DailyReportGenerator: ...@@ -81,7 +82,7 @@ class DailyReportGenerator:
# Calculate the previous day's date # Calculate the previous day's date
previous_day = current_time - timedelta(days=1) previous_day = current_time - timedelta(days=1)
report_date = previous_day.strftime("%Y-%m-%d") report_date = previous_day.strftime("%Y-%m-%d")
report_file = f"daily_report_{report_date}.xlsx" #report_file = f"daily_report_{report_date}.xlsx"
wb = load_workbook(self.template_file) wb = load_workbook(self.template_file)
sheet = wb.active sheet = wb.active
...@@ -156,34 +157,36 @@ class DailyReportGenerator: ...@@ -156,34 +157,36 @@ class DailyReportGenerator:
return emails return emails
def send_email(self, report_path):
# Email configuration def send_email_from_ut(self,filename="daily_report", filepath=None):
smtp_host = os.environ["SMTP_HOST"]
smtp_port = os.environ["SMTP_PORT"] logging.info("Sending email to {}".format(self.get_receiver_emails()))
smtp_username = os.environ["SMTP_USERNAME"] payload = dict()
smtp_password = os.environ["SMTP_PASSWORD"] payload['from_name'] = os.environ["FROM_ADDRESS"]
sender_email = os.environ["SENDER_EMAIL"] payload['receiver_list'] = self.get_receiver_emails()
receiver_emails = self.get_receiver_emails() # Fetch receiver email addresses payload['subject'] = self.config['subject']
payload['content'] = self.config['body']
# Create a multipart message headers = {'authorization': os.environ["AUTHORIZATION"]}
msg = MIMEMultipart() count = 0
msg["From"] = sender_email while count < 3:
msg["To"] = ", ".join(receiver_emails) try:
msg["Subject"] = "Daily Report" if filename and filepath:
files = [('attachments', (filename, open(filepath, 'rb'), 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'))]
# Attach the report file # print(payload)
attachment = open(report_path, "rb") # print(os.environ["URL_WITH_ATTACH"])
part = MIMEBase("application", "octet-stream") response = requests.request("POST", os.environ["URL_WITH_ATTACH"], data=payload,
part.set_payload(attachment.read()) headers=headers, files=files, timeout=10)
encoders.encode_base64(part) print(response.text)
part.add_header("Content-Disposition", f"attachment; filename= {report_path}") logging.info(f"Response status code for request is: {response.status_code}")
msg.attach(part) if response.status_code == 200:
return True
# Send the email else:
with smtplib.SMTP(smtp_host, smtp_port) as smtp: response = requests.request("POST", os.environ["URL_WITHOUT_ATTACH"], json=payload,
smtp.starttls() headers=headers, timeout=10)
smtp.login(smtp_username, smtp_password) logging.info(f"Response status code for request is: {response.status_code}")
smtp.send_message(msg) if response.status_code == 200:
return True
# Close the attachment file except Exception as e:
attachment.close() logging.error(e)
count += 1
return False
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment