From 93288946cd4f570e238af2d0ca27a3fbcd5d9c93 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 7 Oct 2019 09:22:17 +0200 Subject: [PATCH] separate fees --- email_client.py | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/email_client.py b/email_client.py index e36430e..25e9240 100644 --- a/email_client.py +++ b/email_client.py @@ -36,7 +36,7 @@ class Participation(object): ("Phone", "_phone"), ("e-Mail", "_email"), ("Country", "_address_country"), ("Fee", "_role"), ("Messages", "_message"), ("Food preferences", "_food_preference"), - ("Farewell event", "_farewell"), ("Gwinner", "_gwinner"), + ("Farewell event", "_farewell"), ("Icebreaker", "_icebreaker"), ("Gwinner", "_gwinner"), ("Lab Tour (Fri 21 Feb)", "_lab_tour", True)] def __init__(self, email_message): @@ -47,6 +47,7 @@ class Participation(object): self._email = "" self._farewell = "" self._gwinner = "" + self._icebreaker = "" self._lab_tour = "" self._food_preference = "" self._food_vegi = False @@ -96,14 +97,19 @@ class Participation(object): if (self._food_vegan or self._food_gluten or self._food_vegi) and self._food_normal: self._conflicts.append("Possible conflict in food preferences!") - def __calc_fee(self): + def __conf_fee(self): fee = .0 early_or_late = "early" if self.registration_date < early_bird else "late" pro_or_stud = "senior" if "pro" in self._role else "student" fee += reg_fees[early_or_late][self._role] - fee += farewell_fee[pro_or_stud] if self.farewell_event else 0.0 return fee + def __farewell_event_fee(self): + fee = .0 + pro_or_stud = "senior" if "pro" in self._role else "student" + fee += farewell_fee[pro_or_stud] if self.farewell_event else 0.0 + return fee + def __parse_lines(self, lines, field_map): assert(len(field_map) >= 2) @@ -128,9 +134,17 @@ class Participation(object): return self._registration_date @property - def fee(self): - return self.__calc_fee() + def conference_fee(self): + return self.__conf_fee() + @property + def farewell_event_fee(self): + return self.__farewell_event_fee() + + @property + def amount_due(self): + return self.conference_fee + self.farewell_event_fee + @property def farewell_event(self): return len(self._farewell) > 0 @@ -147,6 +161,10 @@ class Participation(object): def valid(self): return len(self._conflicts) == 0 + @property + def icebreaker(self): + return len(self._icebreaker) > 0 + @property def name(self): return "%s %s" % (self._first_name, self._last_name) @@ -171,12 +189,12 @@ class Participation(object): filename = os.path.join(PARTICIPANTS_FOLDER, "".join(self.name.split())) + ".csv" header = ["LastName", "FirstName", "eMail", "Phone", "Institute", "Street", "City", - "RegDate", "CareerStage", "Fee", "FarewellEvent", "GwinnerAward", "LabTour", + "RegDate", "CareerStage", "Fee", "FarewellEvent", "GwinnerAward", "LabTour", "Icebreaker", "FoodVegetarian", "FoodVegan", "FoodGlutenFree", "FoodNoPref"] values = [self._first_name, self._last_name, self._email, self._phone, self._institution, self._address_street, "%s %s" % (self._address_zip, self._address_city), - self.registration_date.isoformat(), self._role, str(self.fee), str(self.farewell_event), - str(self.gwinner_award), str(self.labtour), str(self._food_vegi), str(self._food_vegan), + self.registration_date.isoformat(), self._role, str(self.amount_due), str(self.farewell_event), + str(self.gwinner_award), str(self.labtour), str(self._icebreaker), str(self._food_vegi), str(self._food_vegan), str(self._food_gluten), str(self._food_normal)] with io.open(filename, mode="w", encoding="UTF8") as fd: @@ -194,15 +212,18 @@ class Participation(object): str += "e-Mail: %s\n" % self._email str += "Career stage: %s %s\n" % ("senior, " if "pro" in self._role else "student, ", "non-member" if "NonMember" in self._role else "member of Ethological Soc.") + str += "Icebreaker and Registration meeting: %s\n" % ("Yes" if self.icebreaker else "No") str += "Farewell event: %s\n" % ("Yes" if self.farewell_event else "No") - str += "Fee: %3.2f EUR\n" % self.fee + str += "Conference Fee: %3.2f EUR\n" % self.conference_fee + str += "Farewell event: %3.2f EUR\n" % self.farewell_event_fee + str += "Amount due: %3.2f EUR\n" % self.amount_due str += "Lab tour: %s\n" % ( "No" if len(self.labtour) == 0 else "Yes, " + ", ".join(self.labtour)) str += "Gwinner award: %s\n" % ("Yes" if self.gwinner_award else "No") str += "Food preferences: %s, %s, %s, %s\n" % ("no special preferences" if self._food_normal else "", "vegetarian" if self._food_vegi else "", "vegan" if self._food_vegan else "", "gluten free" if self._food_gluten else "") - str += "Registration date: %s\n" % self.registration_date.isoformat() + str += "Registration date: %s\n" % (self.registration_date.isoformat().replace("T", " ")) str += "Message:%s\n" % self._message if not self.valid: str += "Inconsistencies: %s\n" % self.inconsistencies @@ -334,6 +355,11 @@ def check_for_mails(): if __name__ == "__main__": with open('etho_registration.log', 'a', buffering=1) as log_file: + count = 0 while True: check_for_mails() time.sleep(120) + count +=1 + if count % 60 == 0: + print("%s\t Still awake and waiting for registrations!" % (dt.datetime.now().isoformat()), file=log_file) +