Skip to content

Commit fd7b966

Browse files
Day 17/
1 parent 800a7c3 commit fd7b966

9 files changed

+422
-0
lines changed

Day 17/hungrypy/custom.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import smtplib
2+
3+
host = "smtp.gmail.com"
4+
port = 587
5+
username = "[email protected]"
6+
password = "iamhungry2016"
7+
from_email = username
8+
to_list = ["[email protected]"]
9+
10+
email_conn = smtplib.SMTP(host, port)
11+
email_conn.ehlo()
12+
email_conn.starttls()
13+
email_conn.login(username, password)
14+
email_conn.sendmail(from_email, to_list, "Hello there this is an email message")
15+
email_conn.quit()
16+
17+
18+
from smtplib import SMTP
19+
20+
21+
ABC = SMTP(host, port)
22+
ABC.ehlo()
23+
ABC.starttls()
24+
ABC.login(username, password)
25+
ABC.sendmail(from_email, to_list, "Hello there this is an email message")
26+
ABC.quit()
27+
28+
29+
from smtplib import SMTP, SMTPAuthenticationError, SMTPException
30+
31+
32+
pass_wrong = SMTP(host, port)
33+
pass_wrong.ehlo()
34+
pass_wrong.starttls()
35+
try:
36+
pass_wrong.login(username, "wrong_password")
37+
pass_wrong.sendmail(from_email, to_list, "Hello there this is an email message")
38+
except SMTPAuthenticationError:
39+
print("Could not login")
40+
except:
41+
print("an error occured")
42+
43+
pass_wrong.quit()
44+
45+
46+

Day 17/hungrypy/data.csv

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
id,name,email,amount,sent,date
2+
1,Justin,[email protected],231,adsd,2016-06-18 21:17:44.378612
3+
2,Justin,[email protected],231,adsd,2016-06-18 21:17:45.074490
4+
3,Justin,[email protected],231,adsd,2016-06-18 21:17:45.570860
5+
4,Justin,[email protected],231,adsd,2016-06-18 21:17:45.986075
6+
5,John,[email protected],asdf,adsd,2016-06-18 21:17:51.059165
7+
6,Justin,[email protected],231,adsd,2016-06-18 21:17:51.509586
8+
7,Justin,[email protected],231,adsd,2016-06-18 21:17:51.935921
9+
8,Justin,[email protected],231,adsd,2016-06-18 21:17:52.364994

Day 17/hungrypy/html_format_email.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from email.mime.multipart import MIMEMultipart
2+
from email.mime.text import MIMEText
3+
import smtplib
4+
5+
6+
host = "smtp.gmail.com"
7+
port = 587
8+
username = "[email protected]"
9+
password = "iamhungry2016"
10+
from_email = username
11+
to_list = ["[email protected]"]
12+
13+
try:
14+
email_conn = smtplib.SMTP(host, port)
15+
email_conn.ehlo()
16+
email_conn.starttls()
17+
email_conn.login(username, password)
18+
the_msg = MIMEMultipart("alternative")
19+
the_msg['Subject'] = "Hello there!"
20+
the_msg["From"] = from_email
21+
#the_msg["To"] = to_list[0]
22+
plain_txt = "Testing the message"
23+
html_txt = """\
24+
<html>
25+
<head></head>
26+
<body>
27+
<p>Hey!<br>
28+
Testing this email <b>message</b>. Made by <a href='http://joincfe.com'>Team CFE</a>.
29+
</p>
30+
</body>
31+
</html>
32+
"""
33+
part_1 = MIMEText(plain_txt, 'plain')
34+
part_2 = MIMEText(html_txt, "html")
35+
the_msg.attach(part_1)
36+
the_msg.attach(part_2)
37+
email_conn.sendmail(from_email, to_list, the_msg.as_string())
38+
email_conn.quit()
39+
except smtplib.SMTPException:
40+
print("error sending message")
41+
42+
43+
44+
45+
46+
47+

Day 17/hungrypy/hungry_data.py

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
import csv
2+
import datetime
3+
import shutil
4+
from tempfile import NamedTemporaryFile
5+
6+
def read_data(user_id=None, email=None):
7+
filename = "data.csv"
8+
with open(filename, "r") as csvfile:
9+
reader = csv.DictReader(csvfile)
10+
items = []
11+
unknown_user_id = None
12+
unknown_email = None
13+
for row in reader:
14+
if user_id is not None:
15+
if int(user_id) == int(row.get("id")):
16+
return row
17+
else:
18+
unknown_user_id = user_id
19+
if email is not None:
20+
if email == row.get("email"):
21+
return row
22+
else:
23+
unknown_email = email
24+
if unknown_user_id is not None:
25+
return "User id {user_id} not found".format(user_id=user_id)
26+
if unknown_email is not None:
27+
return "Email {email} not found".format(email=email)
28+
return None
29+
30+
31+
32+
33+
34+
def get_length(file_path):
35+
with open("data.csv", "r") as csvfile:
36+
reader = csv.reader(csvfile)
37+
reader_list = list(reader)
38+
return len(reader_list)
39+
40+
def append_data(file_path, name, email, amount):
41+
fieldnames = ['id', 'name', 'email', 'amount', 'sent', 'date']
42+
#the number of rows?
43+
next_id = get_length(file_path)
44+
with open(file_path, "a") as csvfile:
45+
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
46+
writer.writerow({
47+
"id": next_id,
48+
"name": name,
49+
"email": email,
50+
"sent": "",
51+
"amount": amount,
52+
"date": datetime.datetime.now()
53+
})
54+
55+
#append_data("data.csv", "Justin", "[email protected]", 123.22)
56+
57+
def edit_data(edit_id=None, email=None, amount=None, sent=None):
58+
filename = "data.csv"
59+
temp_file = NamedTemporaryFile(delete=False)
60+
61+
with open(filename, "rb") as csvfile, temp_file:
62+
reader = csv.DictReader(csvfile)
63+
fieldnames = ['id', 'name', 'email', 'amount', 'sent', 'date']
64+
writer = csv.DictWriter(temp_file, fieldnames=fieldnames)
65+
writer.writeheader()
66+
for row in reader:
67+
#print(row['id'] == 4)
68+
if edit_id is not None:
69+
if int(row['id']) == int(edit_id):
70+
row['amount'] = amount
71+
row['sent'] = sent
72+
elif email is not None and edit_id is None:
73+
if str(row['email']) == str(email):
74+
row['amount'] = amount
75+
row['sent'] = sent
76+
else:
77+
pass
78+
writer.writerow(row)
79+
80+
shutil.move(temp_file.name, filename)
81+
return True
82+
return False
83+
84+
85+
#edit_data(8, 9992.32, "")
86+
#edit_data(email='[email protected]', amount=99.99, sent='')
87+
88+
89+
def new_edit_data(new_data):
90+
filename = "data.csv"
91+
temp_file = NamedTemporaryFile(delete=False)
92+
93+
with open(filename, "rb") as csvfile, temp_file:
94+
reader = csv.DictReader(csvfile)
95+
fieldnames = ['id', 'name', 'email', 'amount', 'sent', 'date']
96+
writer = csv.DictWriter(temp_file, fieldnames=fieldnames)
97+
writer.writeheader()
98+
for row in reader:
99+
#print(row['id'] == 4)
100+
if isinstance(new_data, dict):
101+
print(new_data)
102+
id_ = new_data.get("id", None)
103+
email_ = new_data.get("email", None)
104+
if id_ and int(row['id']) == int(id_):
105+
for key, value in new_data.items():
106+
if key in fieldnames:
107+
row[key] = value
108+
elif str(row['email']) == str(email_) and not id_:
109+
for key, value in new_data.items():
110+
if key in fieldnames:
111+
row[key] = value
112+
writer.writerow(row)
113+
114+
shutil.move(temp_file.name, filename)
115+
return True
116+
return False
117+
118+
119+
#edit_data(8, 9992.32, "")
120+
121+
new_edit_data({"amount": 231, "email": "[email protected]", "sent": "adsd", "house": "NOne"})
122+
123+

Day 17/hungrypy/message_users.py

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import datetime
2+
from email.mime.multipart import MIMEMultipart
3+
from email.mime.text import MIMEText
4+
import smtplib
5+
6+
host = "smtp.gmail.com"
7+
port = 587
8+
username = "[email protected]"
9+
password = "iamhungry2016day14"
10+
from_email = username
11+
to_list = ["[email protected]"]
12+
13+
14+
15+
class MessageUser():
16+
user_details = []
17+
messages = []
18+
email_messages = []
19+
base_message = """Hi {name}!
20+
21+
Thank you for the purchase on {date}.
22+
We hope you are exicted about using it. Just as a
23+
reminder the purcase total was ${total}.
24+
Have a great one!
25+
26+
Team CFE
27+
"""
28+
def add_user(self, name, amount, email=None):
29+
name = name[0].upper() + name[1:].lower()
30+
amount = "%.2f" %(amount)
31+
detail = {
32+
"name": name,
33+
"amount": amount,
34+
}
35+
today = datetime.date.today()
36+
date_text = '{today.month}/{today.day}/{today.year}'.format(today=today)
37+
detail['date'] = date_text
38+
if email is not None: # if email != None
39+
detail["email"] = email
40+
self.user_details.append(detail)
41+
def get_details(self):
42+
return self.user_details
43+
def make_messages(self):
44+
if len(self.user_details) > 0:
45+
for detail in self.get_details():
46+
name = detail["name"]
47+
amount = detail["amount"]
48+
date = detail["date"]
49+
message = self.base_message
50+
new_msg = message.format(
51+
name=name,
52+
date=date,
53+
total=amount
54+
)
55+
user_email = detail.get("email")
56+
if user_email:
57+
user_data = {
58+
"email": user_email,
59+
"message": new_msg
60+
}
61+
self.email_messages.append(user_data)
62+
else:
63+
self.messages.append(new_msg)
64+
return self.messages
65+
return []
66+
def send_email(self):
67+
self.make_messages()
68+
if len(self.email_messages) > 0:
69+
for detail in self.email_messages:
70+
user_email = detail['email']
71+
user_message = detail['message']
72+
try:
73+
email_conn = smtplib.SMTP(host, port)
74+
email_conn.ehlo()
75+
email_conn.starttls()
76+
email_conn.login(username, password)
77+
the_msg = MIMEMultipart("alternative")
78+
the_msg['Subject'] = "Billing Update!"
79+
the_msg["From"] = from_email
80+
the_msg["To"] = user_email
81+
part_1 = MIMEText(user_message, 'plain')
82+
the_msg.attach(part_1)
83+
email_conn.sendmail(from_email, [user_email], the_msg.as_string())
84+
email_conn.quit()
85+
except smtplib.SMTPException:
86+
print("error sending message")
87+
return True
88+
return False
89+
90+
91+
obj = MessageUser()
92+
obj.add_user("Justin", 123.32, email='[email protected]')
93+
obj.add_user("jOhn", 94.23, email='[email protected]')
94+
obj.add_user("Sean", 93.23, email='[email protected]')
95+
obj.add_user("Emilee", 193.23, email='[email protected]')
96+
obj.add_user("Marie", 13.23, email='[email protected]')
97+
obj.get_details()
98+
99+
obj.send_email()

Day 17/hungrypy/rw_csv.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import csv
2+
3+
4+
with open("data.csv", "w+") as csvfile:
5+
writer = csv.writer(csvfile)
6+
writer.writerow(["Col 1", "Col 2"])
7+
writer.writerow(["Data 1", "Data 2"])
8+
9+
10+
11+
with open("data.csv", "r") as csvfile:
12+
reader = csv.reader(csvfile)
13+
for row in reader:
14+
print(row)
15+
16+
17+
18+
with open("data.csv", "a") as csvfile:
19+
writer = csv.writer(csvfile)
20+
writer.writerow(["Data 3", "Data 4"])
21+
22+
23+
24+
with open("data.csv", "r") as csvfile:
25+
reader = csv.DictReader(csvfile)
26+
for row in reader:
27+
print(row)
28+
29+
30+
with open("data.csv", "a") as csvfile:
31+
fieldnames = ["id", "title"]
32+
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
33+
writer.writerow({"id": 123, "title": "New title"})

0 commit comments

Comments
 (0)