separate fees
This commit is contained in:
parent
095156096c
commit
93288946cd
@ -36,7 +36,7 @@ class Participation(object):
|
|||||||
("Phone", "_phone"), ("e-Mail", "_email"),
|
("Phone", "_phone"), ("e-Mail", "_email"),
|
||||||
("Country", "_address_country"), ("Fee", "_role"),
|
("Country", "_address_country"), ("Fee", "_role"),
|
||||||
("Messages", "_message"), ("Food preferences", "_food_preference"),
|
("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)]
|
("Lab Tour (Fri 21 Feb)", "_lab_tour", True)]
|
||||||
|
|
||||||
def __init__(self, email_message):
|
def __init__(self, email_message):
|
||||||
@ -47,6 +47,7 @@ class Participation(object):
|
|||||||
self._email = ""
|
self._email = ""
|
||||||
self._farewell = ""
|
self._farewell = ""
|
||||||
self._gwinner = ""
|
self._gwinner = ""
|
||||||
|
self._icebreaker = ""
|
||||||
self._lab_tour = ""
|
self._lab_tour = ""
|
||||||
self._food_preference = ""
|
self._food_preference = ""
|
||||||
self._food_vegi = False
|
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:
|
if (self._food_vegan or self._food_gluten or self._food_vegi) and self._food_normal:
|
||||||
self._conflicts.append("Possible conflict in food preferences!")
|
self._conflicts.append("Possible conflict in food preferences!")
|
||||||
|
|
||||||
def __calc_fee(self):
|
def __conf_fee(self):
|
||||||
fee = .0
|
fee = .0
|
||||||
early_or_late = "early" if self.registration_date < early_bird else "late"
|
early_or_late = "early" if self.registration_date < early_bird else "late"
|
||||||
pro_or_stud = "senior" if "pro" in self._role else "student"
|
pro_or_stud = "senior" if "pro" in self._role else "student"
|
||||||
fee += reg_fees[early_or_late][self._role]
|
fee += reg_fees[early_or_late][self._role]
|
||||||
fee += farewell_fee[pro_or_stud] if self.farewell_event else 0.0
|
|
||||||
return fee
|
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):
|
def __parse_lines(self, lines, field_map):
|
||||||
assert(len(field_map) >= 2)
|
assert(len(field_map) >= 2)
|
||||||
|
|
||||||
@ -128,9 +134,17 @@ class Participation(object):
|
|||||||
return self._registration_date
|
return self._registration_date
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fee(self):
|
def conference_fee(self):
|
||||||
return self.__calc_fee()
|
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
|
@property
|
||||||
def farewell_event(self):
|
def farewell_event(self):
|
||||||
return len(self._farewell) > 0
|
return len(self._farewell) > 0
|
||||||
@ -147,6 +161,10 @@ class Participation(object):
|
|||||||
def valid(self):
|
def valid(self):
|
||||||
return len(self._conflicts) == 0
|
return len(self._conflicts) == 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def icebreaker(self):
|
||||||
|
return len(self._icebreaker) > 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
return "%s %s" % (self._first_name, self._last_name)
|
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"
|
filename = os.path.join(PARTICIPANTS_FOLDER, "".join(self.name.split())) + ".csv"
|
||||||
|
|
||||||
header = ["LastName", "FirstName", "eMail", "Phone", "Institute", "Street", "City",
|
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"]
|
"FoodVegetarian", "FoodVegan", "FoodGlutenFree", "FoodNoPref"]
|
||||||
values = [self._first_name, self._last_name, self._email, self._phone, self._institution,
|
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._address_street, "%s %s" % (self._address_zip, self._address_city),
|
||||||
self.registration_date.isoformat(), self._role, str(self.fee), str(self.farewell_event),
|
self.registration_date.isoformat(), self._role, str(self.amount_due), str(self.farewell_event),
|
||||||
str(self.gwinner_award), str(self.labtour), str(self._food_vegi), str(self._food_vegan),
|
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)]
|
str(self._food_gluten), str(self._food_normal)]
|
||||||
|
|
||||||
with io.open(filename, mode="w", encoding="UTF8") as fd:
|
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 += "e-Mail: %s\n" % self._email
|
||||||
str += "Career stage: %s %s\n" % ("senior, " if "pro" in self._role else "student, ",
|
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.")
|
"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 += "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 += "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 += "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 "",
|
str += "Food preferences: %s, %s, %s, %s\n" % ("no special preferences" if self._food_normal else "",
|
||||||
"vegetarian" if self._food_vegi else "",
|
"vegetarian" if self._food_vegi else "",
|
||||||
"vegan" if self._food_vegan else "",
|
"vegan" if self._food_vegan else "",
|
||||||
"gluten free" if self._food_gluten 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
|
str += "Message:%s\n" % self._message
|
||||||
if not self.valid:
|
if not self.valid:
|
||||||
str += "Inconsistencies: %s\n" % self.inconsistencies
|
str += "Inconsistencies: %s\n" % self.inconsistencies
|
||||||
@ -334,6 +355,11 @@ def check_for_mails():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
with open('etho_registration.log', 'a', buffering=1) as log_file:
|
with open('etho_registration.log', 'a', buffering=1) as log_file:
|
||||||
|
count = 0
|
||||||
while True:
|
while True:
|
||||||
check_for_mails()
|
check_for_mails()
|
||||||
time.sleep(120)
|
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)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user