Example #1
0
class Helper:
    def __init__(self):
        self.msg = Message()

    def getExactName(self, person):
        if person.startswith(config.WORK_ANNIVERSARY_LABEL_HEADER):
            newPerson = person.replace(config.WORK_ANNIVERSARY_LABEL_HEADER,
                                       "")
            return newPerson.strip()
        elif person.startswith(config.BIRTHDAY_HEADER):
            newPerson = person.replace(config.BIRTHDAY_HEADER, "")
            return newPerson.strip()
        return person.strip()

    def getNamesFromSubject(self, subject):
        birthdayMates, workAnniversaryMates = [], []
        allPeople = subject.rsplit(", ")
        if allPeople[0].startswith(config.BIRTHDAY_HEADER):
            if len(allPeople) > 1:
                for person in allPeople:
                    birthdayMates.append(self.getExactName(person))
            else:
                birthdayMates.append(self.getExactName(allPeople[0]))
        elif allPeople[0].startswith(config.WORK_ANNIVERSARY_LABEL_HEADER):
            if len(allPeople) > 1:
                for person in allPeople:
                    workAnniversaryMates.append(self.getExactName(person))
            else:
                workAnniversaryMates.append(self.getExactName(allPeople[0]))

        return birthdayMates, workAnniversaryMates

    """ Return array of person having birthday and having there work anniversary """

    def getAllNamesFromHeaders(self, arr):
        print(arr)
        for item in arr:
            birthdayMates, workAnniversaryMates = self.getNamesFromSubject(
                item["Subject"])
        return birthdayMates, workAnniversaryMates

    def sendBirthdayMails(self, service, mates):
        for mate in mates:
            toMySelf = self.msg.create_message(
                config.SENDER, config.SENDER,
                "!!!Sent Birthday Mail to %s" % (mate["name"].title()), "")
            message = self.msg.create_message(
                config.SENDER, mate["email"],
                config.BIRTHDAY_SUBJECT_LINE % (mate["name"].title()), "")
            self.msg.send_message(service, message)
            self.msg.send_message(service, toMySelf)

    def sendAnniversaryEmails(self, service, mates):
        for mate in mates:
            toMySelf = self.msg.create_message(
                config.SENDER, config.SENDER,
                "!!!Sent Work Anniversary Mail to %s" % (mate["name"].title()),
                "")
            message = self.msg.create_message(
                config.SENDER, mate["email"],
                config.WORK_ANNIVERSARY_SUBJECT_LINE % (mate["name"].title()),
                "")
            self.msg.send_message(service, toMySelf)
            self.msg.send_message(service, message)

    def plain(self, str):
        str = str.encode("utf-8")
        str = str.lower()
        str = " ".join(str.split())
        return str

    def findEmailInAllPeoples(self, persons, allPeoples):
        mates = []
        for person in persons:
            # print(person)
            for people in allPeoples["connections"]:
                # print(person.encode("utf-8"), people["names"][0]["displayName"].encode("utf-8"), search(person.encode("utf-8"), people["names"][0]["displayName"].encode("utf-8")))
                if (self.plain(person) == self.plain(
                        people["names"][0]["displayName"])):
                    mates.append({
                        "email":
                        self.plain(people["emailAddresses"][0]["value"]),
                        "name":
                        self.plain(person)
                    })
        return mates

    def sendEmailsToAll(self, service, birthdayMates, anniversaryMates,
                        allPeoples):
        if len(birthdayMates):
            allMates = self.findEmailInAllPeoples(birthdayMates, allPeoples)
            self.sendBirthdayMails(service, allMates)
        if len(anniversaryMates):
            allMates = self.findEmailInAllPeoples(anniversaryMates, allPeoples)
            self.sendAnniversaryEmails(service, allMates)

    def markEmailAsRead(self, service, ids):
        if not ids:
            return
        for id in ids:
            self.msg.ModifyMessage(service, "me", id["id"].encode("utf-8"))