Пример #1
0
    def notStudent(self, senderNameAndEmail):
        print("NOT STUDENT '{}'".format(senderNameAndEmail["email"]))

        msg = "Hi! Your mail was not sent from the domain {}. This service exists solely for the".format(
            HHSTUDENTMAILDOMAIN)
        mail = Mail(senderNameAndEmail["email"], msg)
        mail._send()
Пример #2
0
    def getMails(self):
        """
        Internal method used to select relevant rows and wrap getMsg in a HTML-template.
        Returns a list of Mails.
        """

        key_cols = ["courseCode", "examWriteDate"]
        tmp_df = self.state_df.merge(self.df, on=key_cols)
        # keep only those rows that have not already been mailed
        tmp_df = tmp_df[~tmp_df[self.booleanColumn]]

        # run through filter
        tmp_df = self.df_filter(tmp_df)

        # if empty, return empty list
        if tmp_df.empty:
            return []

        tmp_df["body"] = tmp_df.apply(self.getMsg, axis=1)

        # Also marks the correct values in state.csv to True
        shouldMailTo = tmp_df[key_cols + ["email"]]
        for i in shouldMailTo.iterrows():
            mask = (i[1] == self.state_df[key_cols + ["email"]]).all(axis=1)
            self.state_df.loc[mask, self.booleanColumn] = True

        set_state_df(self.state_df)

        return [
            Mail(*i[1:]) for i in list(tmp_df[["email", "body"]].itertuples())
        ]
Пример #3
0
    def deleteStudent(self, senderNameAndEmail):
        print("DELETE for {}".format(senderNameAndEmail["email"]))
        state = pd.read_csv("lib/state.csv")
        mask = state[state.email == senderNameAndEmail["email"]]
        vask = state[mask]

        msg = "Deleted the following rows from the database: {}".format(
            vask.to_html())
        mail = Mail(senderNameAndEmail["email"], msg)
        mail._send()

        state[~mask].to_csv("lib/state.csv", index=False)
Пример #4
0
    def studentStatus(self, senderNameAndEmail):
        print("STATUS for {}".format(senderNameAndEmail["email"]))

        state = pd.read_csv("lib/state.csv")
        rows = state[state.email == senderNameAndEmail["email"]]

        if rows.empty:
            msg = "Hi! The database doesn't have anything at all on you. Cheers!"

        else:
            msg = "Hello {}, here's what the database has about you.<br>{}<br>Cheers!".format(
                senderNameAndEmail["name"].split(" ")[0], rows.to_html())

        mail = Mail(senderNameAndEmail["email"], msg)
        mail._send()
Пример #5
0
    def execute(self):
        try:
            self.backup_resources()
        except Exception:
            # Replace mysqldump password if existed
            stack = re.sub('\-\-password=.*\-\-default\-character\-set=',
                           '--password=?????\', \'--default-charcter-set=',
                           traceback.format_exc(),
                           flags=re.MULTILINE)
            print(stack)

            # Send mail if some error occured
            if 'mail_recipient_address' in self.config:
                mail = Mail(self.config)
                mail.send(
                    os.path.basename(__file__) + " encountered an error\n",
                    stack)
        finally:
            # Restore LocalSettings if succeeded
            if not self.backup_local_settings_file == None:
                print("Restoreing LocalSettings file")
                shutil.copyfile(self.backup_local_settings_file,
                                self.current_local_settings_file)
                os.remove(self.backup_local_settings_file)
Пример #6
0
    return decorated_auth


def requires_admin(f):
    @wraps(f)
    def decoracted_admin(*args, **kwargs):
        if not users.isAdmin():
            return redirect(url_for('page_routes.index'))
        return f(*args, **kwargs)

    return decoracted_admin


users = Users()
mail = Mail()

page_routes = Blueprint('page_routes', __name__, template_folder='templates')


@page_routes.before_request
def before_request():
    if 'username' in session:
        users.updateLastseen()
    pass


#Main routes
@page_routes.route('/')
@requires_auth
def index():
Пример #7
0
	def __init__(self):
		self.db = Database()
		self.mail = Mail()
		self.rounds = 10
Пример #8
0
    # read config
    configObj = Config(BASE_PATH)
    logObj = Log(configObj)
    logger = logObj.get_logger()

    #debug print
    logger.debug('MAIL_ENABLE {}'.format(configObj.MAIL_ENABLE))
    logger.debug('MAIL_TO {}'.format(configObj.MAIL_TO))
    logger.debug('MAIL_USER {}'.format(configObj.MAIL_USER))
    logger.debug('MAIL_HOST {}'.format(configObj.MAIL_HOST))
    logger.debug('MAIL_PORT {}'.format(configObj.MAIL_PORT))
    logger.debug('LOG_PATH {}'.format(configObj.LOG_PATH))
    logger.debug('LOG_FILE {}'.format(configObj.LOG_FILE))
    logger.debug('LOG_MAX_SIZE {}'.format(configObj.LOG_MAX_SIZE))
    logger.debug('LOG_BACKUP_COUNT {}'.format(configObj.LOG_BACKUP_COUNT))

    # argc check
    if len(sys.argv) != 2:
        logger.error('Need User')
        sys.exit(configObj.ERROR_PROC_EXIST)

    sysuser = sys.argv[1]

    # initial ddnsObj
    mailObj = Mail(configObj, logger, sysuser)
    mailObj.send()

    # success exit
    sys.exit(configObj.SUCCESS_EXIT)
Пример #9
0
 def infoMailAdmin(self, mailText, receiver=None):
     if receiver == None:
         receiver = self.ownerEmails[0]
     mail = Mail(receiver, mailText)
     mail._send()