summaryrefslogtreecommitdiff
path: root/workshop_app/send_mails.py
diff options
context:
space:
mode:
Diffstat (limited to 'workshop_app/send_mails.py')
-rw-r--r--workshop_app/send_mails.py158
1 files changed, 108 insertions, 50 deletions
diff --git a/workshop_app/send_mails.py b/workshop_app/send_mails.py
index 32d6f71..a53625e 100644
--- a/workshop_app/send_mails.py
+++ b/workshop_app/send_mails.py
@@ -1,26 +1,30 @@
__author__ = "Akshen Doke"
+import hashlib
+import logging
+import logging.config
+import yaml
+import re
from django.core.mail import send_mail
from textwrap import dedent
from random import randint
from smtplib import SMTP
-import hashlib
from django.utils.crypto import get_random_string
from string import punctuation, digits
try:
- from string import letters
+ from string import letters
except ImportError:
- from string import ascii_letters as letters
+ from string import ascii_letters as letters
from workshop_portal.settings import (
- EMAIL_HOST,
- EMAIL_PORT,
- EMAIL_HOST_USER,
- EMAIL_HOST_PASSWORD,
- EMAIL_USE_TLS,
- PRODUCTION_URL,
- SENDER_EMAIL,
- ADMIN_EMAIL
- )
+ EMAIL_HOST,
+ EMAIL_PORT,
+ EMAIL_HOST_USER,
+ EMAIL_HOST_PASSWORD,
+ EMAIL_USE_TLS,
+ PRODUCTION_URL,
+ SENDER_EMAIL,
+ ADMIN_EMAIL
+ )
from django.core.mail import EmailMultiAlternatives
from django.conf import settings
from os import listdir, path
@@ -31,12 +35,22 @@ from email import encoders
from time import sleep
from .models import WorkshopType
+
+def validateEmail(email):
+ if len(email) > 7:
+ if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$",
+ email) != None:
+ return 1
+ return 0
+
+
def generate_activation_key(username):
"""Generates hashed secret key for email activation"""
chars = letters + digits + punctuation
secret_key = get_random_string(randint(10,40), chars)
return hashlib.sha256((secret_key + username).encode('utf-8')).hexdigest()
+
def send_smtp_email(request=None, subject=None, message=None,
user_position=None, workshop_date=None,
workshop_title=None, user_name=None,
@@ -64,8 +78,8 @@ def send_smtp_email(request=None, subject=None, message=None,
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s " % f)
msg.attach(part)
-
-
+
+
server = SMTP(EMAIL_HOST, EMAIL_PORT)
server.ehlo()
server.starttls()
@@ -84,33 +98,40 @@ def send_email( request, call_on,
institute=None, key=None
):
'''
- Email sending function while registration and
+ Email sending function while registration and
booking confirmation.
'''
+ with open(path.join(settings.LOG_FOLDER, 'emailconfig.yaml'), 'r') as configfile:
+ config_dict = yaml.load(configfile)
+
+ logging.config.dictConfig(config_dict)
+
+
if call_on == "Registration":
message = dedent("""\
- Thank you for registering as a coordinator with us.
+ Thank you for registering as a coordinator with us.
- Please click on the below link to
+ Please click on the below link to
activate your account
{0}/activate_user/{1}
-
- After activation you can proceed to book your dates for
+
+ After activation you can proceed to book your dates for
the workshop(s).
- In case of queries regarding workshop booking(s),
+ In case of queries regarding workshop booking(s),
revert to this email.""".format(PRODUCTION_URL, key))
+ logging.info("New Registration from: %s", request.user.email)
try:
send_mail(
- "Coordinator Registration at FOSSEE, IIT Bombay", message, SENDER_EMAIL,
+ "Coordinator Registration at FOSSEE, IIT Bombay", message, SENDER_EMAIL,
[request.user.email], fail_silently=True
)
except Exception:
- send_smtp_email(request=request,
- subject="Coordinator Registration - FOSSEE, IIT Bombay",
+ send_smtp_email(request=request,
+ subject="Coordinator Registration - FOSSEE, IIT Bombay",
message=message, other_email=request.user.email,
)
@@ -124,41 +145,43 @@ def send_email( request, call_on,
Workshop date:{4}
Workshop title:{5}
- You may accept or reject this booking
+ You may accept or reject this booking
{6}/my_workshops/ .""".format(
- user_name, request.user.email,
+ user_name, request.user.email,
request.user.profile.phone_number,
request.user.profile.institute,
- workshop_date, workshop_title,
+ workshop_date, workshop_title,
PRODUCTION_URL
))
+ logging.info("Booking Done by{0} for {1} ".format(request.user.email,
+ other_email))
try:
send_mail(
- "New FOSSEE Workshop booking on {0}".format(workshop_date),
- message, SENDER_EMAIL, [other_email],
- fail_silently=True
- )
+ "New FOSSEE Workshop booking on {0}".format(workshop_date),
+ message, SENDER_EMAIL, [other_email],
+ fail_silently=True
+ )
except Exception:
- send_smtp_email(request=request,
+ send_smtp_email(request=request,
subject="New FOSSEE Workshop booking on {0}"
.format(workshop_date),
message=message, other_email=other_email,
)
else:
message = dedent("""\
- Thank You for New FOSSEE Workshop booking.
+ Thank You for New FOSSEE Workshop booking.
Workshop date:{0}
Workshop title:{1}
- Your request has been received and is awaiting instructor
+ Your request has been received and is awaiting instructor
approval/disapproval. You will be notified about the status
via email and on {2}/my_workshops/
- Please Note: Unless you get a confirmation email for this workshop with
+ Please Note: Unless you get a confirmation email for this workshop with
the list of instructions, your workshop shall be in the waiting list.
-
+
In case of queries regarding workshop booking(s), revert
to this email.""".format(
workshop_date, workshop_title, PRODUCTION_URL
@@ -167,11 +190,11 @@ def send_email( request, call_on,
try:
send_mail(
"Pending Request for New FOSSEE Workshop booking on {0}"
- .format(workshop_date), message, SENDER_EMAIL,
+ .format(workshop_date), message, SENDER_EMAIL,
[request.user.email], fail_silently=True
)
except Exception:
- send_smtp_email(request=request,
+ send_smtp_email(request=request,
subject="Pending Request for New FOSSEE Workshop booking \
on {0}".format(workshop_date),
message=message, other_email=request.user.email,
@@ -188,9 +211,11 @@ def send_email( request, call_on,
Workshop title:{5}
You have accepted this booking. Detailed instructions have
- been sent to the coordinator. """.format(user_name, other_email,
+ been sent to the coordinator. """.format(user_name, other_email,
phone_number, institute, workshop_date, workshop_title))
+ logging.info("Booking Confirmed by {0} for {1} ".format(request.user.email,
+ other_email))
subject = "FOSSEE Workshop booking confirmation on {0}".\
format(workshop_date)
@@ -215,12 +240,12 @@ def send_email( request, call_on,
Workshop date:{3}
Workshop title:{4}
- Your workshop booking has been accepted. Detailed
- instructions are attached below.
+ Your workshop booking has been accepted. Detailed
+ instructions are attached below.
- In case of queries regarding the workshop
+ In case of queries regarding the workshop
instructions/schedule revert to this email.""".format(
- request.user.username, request.user.email,
+ request.user.username, request.user.email,
phone_number, workshop_date, workshop_title
))
@@ -254,12 +279,15 @@ def send_email( request, call_on,
phone_number, institute,
workshop_date, workshop_title))
+ logging.info("Booking Rejected by {0} for {1} ".format(request.user.email,
+ other_email))
+
try:
send_mail("FOSSEE Workshop booking rejected for {0}"
- .format(workshop_date), message, SENDER_EMAIL,
+ .format(workshop_date), message, SENDER_EMAIL,
[request.user.email], fail_silently=True)
except Exception:
- send_smtp_email(request=request,
+ send_smtp_email(request=request,
subject="FOSSEE Workshop booking rejected for {0}".
format(workshop_date), message=message,
other_email=request.user.email
@@ -271,17 +299,17 @@ def send_email( request, call_on,
We regret to inform you that your workshop booking
has been rejected due to unavailability of the
- instructor. You may try booking other available
+ instructor. You may try booking other available
slots {2}/book/ or you can also Propose a workshop
based on your available date."""
.format(workshop_date, workshop_title, PRODUCTION_URL))
try:
send_mail("FOSSEE Workshop booking rejected for {0}".
- format(workshop_date), message, SENDER_EMAIL,
+ format(workshop_date), message, SENDER_EMAIL,
[other_email], fail_silently=True)
except Exception:
- send_smtp_email(request=request,
+ send_smtp_email(request=request,
subject="FOSSEE Workshop booking rejected for {0}".
format(workshop_date), message=message,
other_email=other_email
@@ -294,12 +322,15 @@ def send_email( request, call_on,
Workshop date:{0}
Workshop title:{1}"""
.format(workshop_date, workshop_title))
+
+ logging.info("Workshop Deleted by {0} for {1} ".format(request.user.email,
+ workshop_date))
try:
send_mail("FOSSEE workshop deleted for {0}".format(workshop_date),
- message, SENDER_EMAIL, [request.user.email],
+ message, SENDER_EMAIL, [request.user.email],
fail_silently=True)
except Exception:
- send_smtp_email(request=request,
+ send_smtp_email(request=request,
subject="FOSSEE Workshop deleted for {0}".
format(workshop_date), message=message,
other_email=request.user.email
@@ -324,6 +355,33 @@ def send_email( request, call_on,
phone_number, institute,
workshop_date, workshop_title,
PRODUCTION_URL))
+
+ logging.info("Workshop Proposed by {0} for {1} ".format(request.user.email,
+ workshop_date))
+
send_mail("Proposed Workshop on {0}".
format(workshop_date), message, SENDER_EMAIL,
- [other_email], fail_silently=False) \ No newline at end of file
+ [other_email], fail_silently=False)
+
+ elif call_on == 'ShareMail':
+
+ for eid in other_email:
+ if validateEmail(eid):
+ message = dedent("""\
+ Hi {0},
+
+ I am Sharing with you FOSSEE's Python Workshop List
+ {1}/view_workshoptype_details
+ You can register {2}/register and start booking/proposing
+ workshops for your school, college, university/company.
+
+ Regards,
+ {3}
+ """.format(eid, PRODUCTION_URL, PRODUCTION_URL,
+ request.user.email)
+ )
+ logging.info("Sharing Email Send to: %s ", eid)
+ send_mail("Hey Checkout FOSSEE's Python Workshop List", message,
+ SENDER_EMAIL, [eid])
+ else:
+ logging.warning("Invalid EmailId: %s ", eid)