89 lines
2.1 KiB
Python
89 lines
2.1 KiB
Python
import os
|
|
import smtplib
|
|
import ssl
|
|
|
|
from config import Config
|
|
from email.message import EmailMessage
|
|
|
|
from config import Config
|
|
from log import log
|
|
|
|
from typing import Any, List
|
|
|
|
from PyQt5.QtWidgets import QMessageBox
|
|
|
|
|
|
def ask_yes_no(title: str, question: str) -> bool:
|
|
"""Ask question; return True for yes, False for no"""
|
|
|
|
button_reply = QMessageBox.question(None, title, question)
|
|
|
|
return button_reply == QMessageBox.Yes
|
|
|
|
|
|
def format_display_name(account) -> str:
|
|
"""
|
|
Format account display name according to whether we follow that account
|
|
or not.
|
|
"""
|
|
|
|
username = account.display_name
|
|
if account.followed:
|
|
colour = Config.FOLLOWED_COLOUR
|
|
else:
|
|
colour = Config.NORMAL_COLOUR
|
|
|
|
return '<span style="color:' + colour + '">' + username + '</span>'
|
|
|
|
|
|
def index_ojects_by_parameter(object_list: List, param: Any):
|
|
"""
|
|
Create a dictionary from passed list where each list entry is keyed
|
|
by passed param
|
|
n
|
|
"""
|
|
|
|
results = {}
|
|
for obj in object_list:
|
|
results[getattr(obj, param)] = obj
|
|
|
|
return results
|
|
|
|
|
|
def send_mail(to_addr, from_addr, subj, body):
|
|
# From https://docs.python.org/3/library/email.examples.html
|
|
|
|
# Create a text/plain message
|
|
msg = EmailMessage()
|
|
msg.set_content(body)
|
|
|
|
msg['Subject'] = subj
|
|
msg['From'] = from_addr
|
|
msg['To'] = to_addr
|
|
|
|
# Send the message via SMTP server.
|
|
context = ssl.create_default_context()
|
|
try:
|
|
s = smtplib.SMTP(host=Config.MAIL_SERVER, port=Config.MAIL_PORT)
|
|
if Config.MAIL_USE_TLS:
|
|
s.starttls(context=context)
|
|
if Config.MAIL_USERNAME and Config.MAIL_PASSWORD:
|
|
s.login(Config.MAIL_USERNAME, Config.MAIL_PASSWORD)
|
|
s.send_message(msg)
|
|
except Exception as e:
|
|
print(e)
|
|
finally:
|
|
s.quit()
|
|
|
|
|
|
def show_OK(title: str, msg: str) -> None:
|
|
"""Display a message to user"""
|
|
|
|
QMessageBox.information(None, title, msg, buttons=QMessageBox.Ok)
|
|
|
|
|
|
def show_warning(title: str, msg: str) -> None:
|
|
"""Display a warning to user"""
|
|
|
|
QMessageBox.warning(None, title, msg, buttons=QMessageBox.Cancel)
|