@@ -21,21 +21,36 @@ def load_user(user_id):
2121 return User .query .get (int (user_id ))
2222
2323
24- def get_admin_emails_for_email_alerts ( ):
24+ def get_email_addresses ( user_level = None , receive_email_alerts = True , fetch_all_users = False ):
2525 with app .app_context ():
26- admin_emails = User .query .filter_by (user_level = 'admin' , receive_email_alerts = True ).all ()
27- print (admin_emails )
28- if not admin_emails :
29- return None
30- return [admin .email for admin in admin_emails ]
31-
32- def get_all_users_emails (receive_email_alerts = True ):
33- with app .app_context ():
34- users = User .query .filter_by (receive_email_alerts = receive_email_alerts ).all ()
26+ # Build query filter based on the presence of `user_level`
27+ filters = []
28+ if user_level :
29+ filters .append (User .user_level == user_level )
30+ if not fetch_all_users :
31+ filters .append (User .receive_email_alerts == receive_email_alerts )
32+
33+ # Query the database with the constructed filters
34+ users = User .query .filter (* filters ).all ()
35+
36+ # Check if no users were found
3537 if not users :
3638 return None
39+
40+ # Return list of email addresses
3741 return [user .email for user in users ]
3842
43+ # Get Admin Emails with Alerts Enabled:
44+ # admin_emails = get_email_addresses(user_level='admin', receive_email_alerts=True)
45+ # Get All Admin Emails Regardless of Alert Preference:
46+ # all_admin_emails = get_email_addresses(user_level='admin', fetch_all_users=True)
47+
48+ # Get All Users with Alerts Enabled:
49+ # all_user_emails = get_email_addresses(receive_email_alerts=True)
50+ # Get All Users Regardless of Alert Preference:
51+ # all_users_emails = get_email_addresses(fetch_all_users=True)
52+
53+
3954
4055
4156@app .route ('/login' , methods = ['GET' , 'POST' ])
@@ -46,7 +61,8 @@ def login():
4661 user = User .query .filter_by (username = username ).first ()
4762 if user and check_password_hash (user .password , password ):
4863 login_user (user )
49- admin_email_address = get_admin_emails_for_email_alerts ()
64+ # Get Admin Emails with Alerts Enabled:
65+ admin_email_address = get_email_addresses (user_level = 'admin' , receive_email_alerts = True )
5066 if admin_email_address :
5167 send_email (admin_email_address , 'Login Alert' , f'{ user .username } logged in to the system.' )
5268
@@ -73,7 +89,8 @@ def signup():
7389 hashed_password = generate_password_hash (password )
7490 new_user = User (username = username , password = hashed_password )
7591
76- admin_email_address = get_admin_emails_for_email_alerts ()
92+ # Get Admin Emails with Alerts Enabled:
93+ admin_email_address = get_email_addresses (user_level = 'admin' , receive_email_alerts = True )
7794 # extends the signup user to send an email to the admin
7895 if admin_email_address :
7996 send_email (admin_email_address , 'New User Alert' , f'{ username } has signed up to the system.' )
@@ -199,16 +216,25 @@ def send_email_page():
199216 receiver_email = request .form .get ("recipient" )
200217 subject = request .form .get ("subject" )
201218 body = request .form .get ("body" )
219+ priority = request .form .get ("priority" )
202220 attachment = request .files .get ("attachment" )
203221
204222 if not receiver_email or not subject or not body :
205223 flash ("Please provide recipient, subject, and body." , "danger" )
206224 return redirect (url_for ('send_email_page' ))
207225
208- if receiver_email == "all_users" :
209- receiver_email = get_all_users_emails ()
210- elif receiver_email == "admin_users" :
211- receiver_email = get_admin_emails_for_email_alerts ()
226+ # on high priority, send to all users or admin users even the receive_email_alerts is False
227+ if priority == "high" and receiver_email == "all_users" :
228+ receiver_email = get_email_addresses (fetch_all_users = True )
229+ elif priority == "high" and receiver_email == "admin_users" :
230+ receiver_email = get_email_addresses (user_level = 'admin' , fetch_all_users = True )
231+
232+ # priority is low, send to users with receive_email_alerts is True
233+ if priority == "low" and receiver_email == "all_users" :
234+ receiver_email = get_email_addresses (receive_email_alerts = True )
235+ elif priority == "low" and receiver_email == "admin_users" :
236+ receiver_email = get_email_addresses (user_level = 'admin' , receive_email_alerts = True )
237+
212238
213239 if not receiver_email :
214240 flash ("No users found to send email to." , "danger" )
0 commit comments