From 0939719bacf0b71652b1dd1aaf918e842705e0fc Mon Sep 17 00:00:00 2001
From: Ismailn16 <ismailnoor.789@gmail.com>
Date: Fri, 1 Mar 2024 03:55:41 +0000
Subject: [PATCH] recent update

sendgrid system fully implemented. Next steps - create react project and create email design for all templates
---
 main.py                  | 305 ++++++++++++++++++++++++++++++++++++---
 main2.py                 |  14 --
 sendgrid.env             | Bin 196 -> 58 bytes
 templates/fakeemail.html |  20 +++
 templates/noinfo.html    |  20 +++
 templates/postemail.html |  19 +++
 templates/test.html      |  24 ++-
 testing.py               |   3 +
 8 files changed, 365 insertions(+), 40 deletions(-)
 delete mode 100644 main2.py
 create mode 100644 templates/fakeemail.html
 create mode 100644 templates/noinfo.html
 create mode 100644 templates/postemail.html
 create mode 100644 testing.py

diff --git a/main.py b/main.py
index e7c308c..237f6e7 100644
--- a/main.py
+++ b/main.py
@@ -1,9 +1,11 @@
-from flask import Flask, render_template, request
-import sendgrid
-from sendgrid.helpers.mail import *
+from flask import Flask, render_template, request, redirect
+import os
+from sendgrid import SendGridAPIClient
+from sendgrid.helpers.mail import Mail
 
 app = Flask(__name__)
-sg = sendgrid.SendGridAPIClient('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')
+sg_api = os.environ.get('SENDGRID_API_KEY')
+sg = SendGridAPIClient(sg_api)
 
 @app.route('/home', methods=['GET', 'POST'])
 @app.route('/')
@@ -11,30 +13,293 @@ sg = sendgrid.SendGridAPIClient('SG.Yk1XrcZySTGZD6rJUXIFaA.ZElsodEc3Pm-Pk1BNwuBZ
 def home():
     return render_template('test.html')
 
+@app.route('/postemail', methods = ['GET', 'POST'])
+def postemail():
+    return render_template('postemail.html')
+
+@app.route('/noinfo', methods = ['GET', 'POST'])
+def noinfo():
+    return render_template('noinfo.html')
+
+@app.route('/fakeemail', methods = ['GET', 'POST'])
+def failemail():
+    return render_template('fakeemail.html')
+
 @app.route('/process_form', methods=['POST'])
-def process_data():
-    user_firstname = request.form['firstname']
-    user_lastname = request.form['lastname']
+def process_form():
     user_email = request.form['UWEemail']
-    user_issue = request.form['issue']
-    user_info = request.form['furtherinfo']
 
     if 'live.uwe.ac.uk' in user_email:
-        result = send_email(user_email, user_firstname, user_lastname)
-        return result
+        user_firstname = request.form['firstname']
+        user_lastname = request.form['lastname']
+        user_issue = request.form['issue']
+        user_spec_issue = request.form['specissue']
+        if user_issue == 'Reset Password':
+            resetpassword_email(user_email, user_firstname, user_lastname, user_issue)
+            return redirect('/postemail')
+        elif user_issue == 'MFA not working':
+            mfa_email(user_email, user_firstname, user_lastname, user_issue)
+            return redirect('/postemail')
+        elif user_issue == 'How to access marks':
+            marks_email(user_email, user_firstname, user_lastname, user_issue)
+            return redirect('/postemail')
+        elif user_issue == 'How to connect to UWEs WiFi':
+            wifi_email(user_email, user_firstname, user_lastname, user_issue)
+        elif (user_issue == 'Not Specified') and (user_spec_issue != ""):
+            spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+            return redirect('/postemail')
+        else:
+            return redirect('/noinfo')
     else:
-        return "This email isn't a UWE Email, Goodbye."
+        return redirect('/fakeemail')
+
+def resetpassword_email(user_email, user_firstname, user_lastname, user_issue):
+    template_id = 'd-ffa70cf693e74289894e9305175a58f1'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_issue': user_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def mfa_email(user_email, user_firstname, user_lastname, user_issue):
+    template_id = 'd-7ddb1ea78ad54e29b1836974946f2d1f'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_issue': user_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def marks_email(user_email, user_firstname, user_lastname, user_issue):
+    template_id = 'd-57fd53429b1a4dc184e4847bd57f1ba5'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_issue': user_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
 
-app.route('/send_email', methods=['POST'])
-def send_email(user_email, user_firstname, user_lastname):
-    from_email = 'uweitstestemail@gmail.com'
-    to_email = To(user_email)
-    subject = "UWE ITS Test Email"
-    content = Content("text/plain", "Hi " + user_firstname + " " + user_lastname + ", This is a test email as we are currently prototyping this system. Thank you for your support!")
-    mail = Mail(from_email, to_email, subject, content)
-    response = sg.client.mail.send.post(request_body=mail.get())
+    response = sg.send(message)
     return "The email has been sent. Please check your junk if it has not appeared in your inbox."
 
+def wifi_email(user_email, user_firstname, user_lastname, user_issue):
+    template_id = 'd-57fd53429b1a4dc184e4847bd57f1ba5'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_issue': user_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    if (user_spec_issue == 'Passwords'):
+        passwords_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'Blackboard'):
+        blackboard_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'Finance'):
+        finance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'Timetable'):
+        timetable_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'Personal Information'):
+        personal_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'WiFi'):
+        wifi_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'Attendance'):
+        attendance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+    elif (user_spec_issue == 'UWE Software'):
+        software_spec_email(user_email, user_firstname, user_lastname, user_spec_issue)
+
+
+
+def passwords_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def blackboard_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def finance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def timetable_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def personal_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def wifi_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def attendance_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
+
+def software_spec_email(user_email, user_firstname, user_lastname, user_spec_issue):
+    template_id = 'euibhckdalihc;kns-9'
+    
+    substitution_data = {
+        'user_firstname': user_firstname,
+        'user_lastname': user_lastname,
+        'user_spec_issue': user_spec_issue
+    }
+
+    message = Mail(from_email='uweitstestemail@gmail.com',
+               to_emails=user_email,
+               )
+    
+    message.template_id = template_id
+    message.dynamic_template_data = substitution_data
+
+    response = sg.send(message)
+    return "The email has been sent. Please check your junk if it has not appeared in your inbox."
 
 
 if __name__ == '__main__':
diff --git a/main2.py b/main2.py
deleted file mode 100644
index b68255b..0000000
--- a/main2.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import sendgrid
-import os
-from sendgrid.helpers.mail import *
-
-sg = sendgrid.SendGridAPIClient('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')
-from_email = Email('uweitstestemail@gmail.com')
-to_email = To('ismailnoor.102@gmail.com')
-subject = "Sending with SendGrid is Fun"
-content = Content("text/plain", "and easy to do anywhere, even with Python")
-mail = Mail(from_email, to_email, subject, content)
-response = sg.client.mail.send.post(request_body=mail.get())
-print(response.status_code)
-print(response.body)
-print(response.headers)
\ No newline at end of file
diff --git a/sendgrid.env b/sendgrid.env
index f3cd8817d358e5aa1922b95483ada2b23fe212ff..9ed928ef9eda737934646cdce1b43cc8d161370d 100644
GIT binary patch
delta 12
TcmX@YXf?rvO`U<4fr|kE6PE%A

delta 151
zcmcCI!Z^XCKA6FsL64!5!IHt4A&0?(A&()2L6;$fp_0LwA)g_bp^71l!J8qS!H~h1
zA%Y=;A&^0jA(z32A%G!`!HXe<p^PDd!H6N0A&4QF!Gpn^!HJ=mA%h`{!JWZ~ApmTW
z2}3D^J3~H$34<Sl34=L9AVV%gDML1c6GJ*ffgnQ;gDFEKgDyiTgE|8*0~Z4T68RYU

diff --git a/templates/fakeemail.html b/templates/fakeemail.html
new file mode 100644
index 0000000..4294cbb
--- /dev/null
+++ b/templates/fakeemail.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en-GB">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+</head>
+
+<body>
+    <div>
+        <form method="post" action="/home">
+            <h1>The email entered is not a UWE email. Please press the button below and enter the correct
+                credentials.</h1>
+            <button>Home</button>
+        </form>
+
+
+    </div>
+</body>
\ No newline at end of file
diff --git a/templates/noinfo.html b/templates/noinfo.html
new file mode 100644
index 0000000..9193540
--- /dev/null
+++ b/templates/noinfo.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en-GB">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+</head>
+
+<body>
+    <div>
+        <form method="post" action="/home">
+            <h1>You have not entered any information. After clicking the 'Home' button below, Please select 'Not
+                Specified' and explain your issue in the text box provided.</h1>
+            <button>Home</button>
+        </form>
+
+
+    </div>
+</body>
\ No newline at end of file
diff --git a/templates/postemail.html b/templates/postemail.html
new file mode 100644
index 0000000..0390cf6
--- /dev/null
+++ b/templates/postemail.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en-GB">
+
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+</head>
+
+<body>
+    <div>
+        <form method="post" action="/home">
+            <h1>The email has been sent. Please check your junk if it has not appeared in your inbox</h1>
+            <button>Home</button>
+        </form>
+
+
+    </div>
+</body>
\ No newline at end of file
diff --git a/templates/test.html b/templates/test.html
index 035f61e..f8d7fc0 100644
--- a/templates/test.html
+++ b/templates/test.html
@@ -24,15 +24,27 @@
         <div>
             <label for="issue">Issue:</label>
             <select name="issue" id-="issue">
-                <option value="issue1">Issue 1</option>
-                <option value="issue2">Issue 2</option>
-                <option value="issue...">Issue...</option>
+                <option value="Reset Password">Reset Password</option>
+                <option value="MFA not working">MFA not working</option>
+                <option value="How to access marks">How to access my marks</option>
+                <option value="How to connect to UWEs WiFi">How to connect to UWE'S WiFi</option>
+                <option value="Not Specified">Not Specified</option>
             </select>
         </div>
         <div>
-            <label for="furtherinfo">Please explain your issue in detail:</label>
-            <input type="text" id="furtherinfo" placeholder="Please explain your issue in detail" name="furtherinfo"
-                maxlength="1000" required>
+            <label for="specissue">If you selected 'Not Specified' in the box above, please select the topic that your
+                issue is most related to:</label>
+            <select name="specissue" id-="specissue">
+                <option value="Passwords">Password Related</option>
+                <option value="Blackboard">Blackboard</option>
+                <option value="Finance">Issues relating to Finance</option>
+                <option value="Timetable">Timetable Related</option>
+                <option value="Personal Information">Personal Information</option>
+                <option value="WiFi">WiFi</option>
+                <option value="Attendance">Issues relating to Attendance</option>
+                <option value="UWE Software">Issues relating to UWE Software</option>
+            </select>
+
         </div>
         <button>Submit</button>
     </form>
diff --git a/testing.py b/testing.py
new file mode 100644
index 0000000..d85c563
--- /dev/null
+++ b/testing.py
@@ -0,0 +1,3 @@
+import os
+api_key = os.environ.get('SENDGRID_API_KEY')
+print(api_key)
\ No newline at end of file
-- 
GitLab