Commit 5e3aeb8f by ajil.k

updated

parent a8372920
# importing necessary libraries
from scripts.services.mailing import send_mails
from scripts.config.application_config import sender_password
# Sender Password : qdxdqahjeqbneaci
# sender_password = input("Enter the Password to send the mail: ")
sender_password = "qdxdqahjeqbneaci"
# calling mailing function and check the mail is sent or not
mail_status = send_mails(sender_password)
if mail_status:
print("Mail sent")
......
[REQUIREMENTS]
# Sender Password
sender_password = qdxdqahjeqbneaci
# Sender Email Id
sender_email_id = ajil.intern.knowledgelens@gmail.com
# Excel file path
file_path_name = scripts/utils/task3.xlsx
# Subject of the mail
subject = Email with xlsx Attachment
import configparser
config = configparser.ConfigParser()
config.read("conf/application.conf")
subject = config.get('REQUIREMENTS', 'subject')
sender_email_id = config.get('REQUIREMENTS', 'sender_email_id')
receiver_email_ids = receiver_email_ids = ["ajilkunjumon2000@gmail.com",
"2150@tkmce.ac.in"]
file_path_name = (config.get('REQUIREMENTS', 'file_path_name'))
sender_password = (config.get('REQUIREMENTS', 'sender_password'))
# Google's PORT Number for emailing
port_no = 465
# Google's SMTP
mailing_server = 'smtp.gmail.com'
import pandas as pd
from scripts.core.handlers.tabulize_data import format_data_frames
def data_format(column_mean, max_col, min_col):
# using generators to split the dictionary values
mean_column = (col for col in column_mean.items())
max_column = (col for col in max_col.items())
min_column = (col for col in min_col.items())
# creating dataframes form generators
mean_tab = pd.DataFrame(mean_column, columns=['Column_Names', 'Mean'])
max_tab = pd.DataFrame(max_column, columns=['Column_Names', 'tab_Max'])
min_tab = pd.DataFrame(min_column, columns=['Column_Names', 'tab_Min'])
# splitting list in to separate columns
max_tab[['Timestamp', 'Max_Values']] = max_tab['tab_Max'].apply(pd.Series)
max_tab = max_tab.drop(columns=['tab_Max'], axis=1)
min_tab[['Timestamp', 'Min_Values']] = min_tab['tab_Min'].apply(pd.Series)
min_frame = min_tab.drop(columns=['tab_Min'], axis=1)
return format_data_frames(mean_tab, max_tab, min_tab)
import pandas as pd
from scripts.core.handlers.exceptions import NoDataErrorException
from scripts.core.handlers.content_formatter import data_format
dict_max = {}
dict_min = {}
dict_mean = {}
data_xlsx = pd.read_excel("scripts/utils/task3.xlsx")
def average_data():
try:
average_columns = [data_xlsx['kWh'].mean(),
data_xlsx['kVAh'].mean(),
data_xlsx['kW'].mean(),
data_xlsx['kVA'].mean(),
data_xlsx['current'].mean()]
return average_columns
except NoDataErrorException:
print("NoDataErrorException Occurred")
def max_data():
def body_content(file_path_name):
try:
max_columns = [data_xlsx['kWh'].max(),
data_xlsx[data_xlsx['kWh'] == data_xlsx['kWh'].max()]['Timestamp'],
data_xlsx['kVAh'].max(),
data_xlsx[data_xlsx['kVAh'] == data_xlsx['kVAh'].max()]['Timestamp'],
data_xlsx['kW'].max(),
data_xlsx[data_xlsx['kW'] == data_xlsx['kW'].max()]['Timestamp'],
data_xlsx['kVA'].max(),
data_xlsx[data_xlsx['kVA'] == data_xlsx['kVA'].max()]['Timestamp'],
data_xlsx['current'].max(),
data_xlsx[data_xlsx['current'] == data_xlsx['current'].max()]['Timestamp']]
return max_columns
except NoDataErrorException:
print("NoDataErrorException Occurred")
data_xlsx = pd.read_excel(file_path_name)
for columns in data_xlsx.columns:
if columns == "Timestamp":
continue
else:
# timestamp of max values
timestamp_max = data_xlsx['Timestamp'][data_xlsx[columns].idxmax()]
# timestamp of min values
timestamp_min = data_xlsx['Timestamp'][data_xlsx[columns].idxmin()]
# max values of each column
max_val = round(data_xlsx[columns][data_xlsx[columns].idxmax()], 2)
# min values of each column
min_val = round(data_xlsx[columns][data_xlsx[columns].idxmin()], 2)
# appending mean, max, min in to dictionaries
dict_mean.update({columns: round(data_xlsx[columns].mean(), 2)})
dict_max.update({columns: [timestamp_max, max_val]})
dict_min.update({columns: [timestamp_min, min_val]})
def min_data():
try:
min_columns = [data_xlsx['kWh'].min(),
data_xlsx[data_xlsx['kWh'] == data_xlsx['kWh'].min()]['Timestamp'],
data_xlsx['kVAh'].min(),
data_xlsx[data_xlsx['kVAh'] == data_xlsx['kVAh'].min()]['Timestamp'],
data_xlsx['kW'].min(),
data_xlsx[data_xlsx['kW'] == data_xlsx['kW'].min()]['Timestamp'],
data_xlsx['kVA'].min(),
data_xlsx[data_xlsx['kVA'] == data_xlsx['kVA'].min()]['Timestamp'],
data_xlsx['current'].min(),
data_xlsx[data_xlsx['current'] == data_xlsx['current'].min()]['Timestamp']]
return min_columns
except NoDataErrorException:
print("NoDataErrorException Occurred")
return data_format(dict_mean, dict_max, dict_min)
# importing library
from tabulate import tabulate
def format_data_frames(mean_tab, max_tab, min_tab):
mean_tab = tabulate(mean_tab, headers=mean_tab.columns)
max_tab = tabulate(max_tab, headers=max_tab.columns)
min_tab = tabulate(min_tab, headers=min_tab.columns)
return f'Mean Values \n{mean_tab} \n\n Max values of each columns \n{max_tab}\n\n' \
f' Min values of each columns\n{min_tab}'
# importing the library needed by the program
import smtplib
from email.message import EmailMessage
from scripts.config.application_config import subject, sender_email_id, receiver_email_ids, file_path_name
from scripts.core.handlers.exceptions import MailSentException
from scripts.core.handlers.mailing_content import average_data, min_data, max_data
from scripts.constants.port_number import port_no
from scripts.core.handlers.mailing_content import body_content
from scripts.constants.server_constants import port_no, mailing_server
# mailing function
def send_mails(sender_password):
try:
sender_email_id = "ajil.intern.knowledgelens@gmail.com"
receiver_email_ids = ["ajilkunjumon2000@gmail.com",
"2150@tkmce.ac.in", ""]
message = EmailMessage()
message['Subject'] = "Email with xlsx Attachment"
message['Subject'] = subject
message['From'] = sender_email_id
message['To'] = receiver_email_ids
file_path_name = "scripts/utils/task3.xlsx"
average_list = average_data()
min_list = min_data()
max_list = max_data()
# for i in average_list:
body = f"Average of List: {average_list}" \
f"\nMin of List: {min_list}" \
f"\nMax of List: {max_list}"
body = body.replace("Name: Timestamp, dtype: datetime64[ns]", " ")
body = body.replace("[", "\n")
body = body.replace("]", "\n")
body = body_content(file_path_name)
message.set_content(body)
# code for attaching file
with open(file_path_name, "rb") as f:
file_data = f.read()
file_name = f.name
message.add_attachment(file_data, maintype='application',
subtype='xlsx', filename=file_name)
with smtplib.SMTP_SSL('smtp.gmail.com', port_no) as server:
server = smtplib.SMTP_SSL('smtp.gmail.com', port_no)
# code for login and sending email using smtp and ssl
with smtplib.SMTP_SSL(mailing_server, port_no) as server:
server = smtplib.SMTP_SSL(mailing_server, port_no)
server.login(sender_email_id, sender_password)
server.send_message(message)
return True
......
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