import os
import smtplib


class NotificationService(object):
    """This is a nopaque notifcation service object."""

    def __init__(self, execute_flag):
        super(NotificationService, self).__init__()
        self.execute_flag = execute_flag  # If True mails are sent normaly
        # If False mails are not sent. Used to avoid sending mails for jobs
        # that have been completed a long time ago. Use this if you implement
        # notify into an already existing nopaque instance.  Change it to True
        # after the daemon has run one time with the flag set to False
        self.not_sent = {}  # Holds due to an error unsent email notifications
        self.mail_limit_exceeded = False  # Bool to show if the mail server
        # stoped sending mails due to exceeding its sending limit

    def get_smtp_configs(self):
        self.password = os.environ.get('MAIL_PASSWORD')
        self.port = os.environ.get('MAIL_PORT')
        self.server_str = os.environ.get('MAIL_SERVER')
        self.tls = os.environ.get('MAIL_USE_TLS')
        self.username = os.environ.get('MAIL_USERNAME').split("@")[0]
        self.email_address = os.environ.get('MAIL_USERNAME')

    def set_server(self):
        self.smtp_server = smtplib.SMTP(host=self.server_str, port=self.port)

    def login(self):
        self.smtp_server.starttls()
        self.smtp_server.login(self.username, self.password)

    def send(self, email):
        if self.execute_flag:
            self.smtp_server.send_message(email)
        else:
            return

    def quit(self):
        self.smtp_server.quit()