# HG changeset patch # User Madhusudan.C.S # Date 1281084890 -19800 # Node ID 69f9624b0129fe22ddcb9e1aaee17bd2eefe8212 # Parent 34512198cad4155d7cb6a083bccc5fa596bd04bc Script to allot accommodation and send mails have been added. diff -r 34512198cad4 -r 69f9624b0129 scripts/allot_acco.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/allot_acco.py Fri Aug 06 14:24:50 2010 +0530 @@ -0,0 +1,103 @@ +# Note: Most of the code below is hard coded with values. Please change it +# required. Reprensented as (HC) for Hard Coded values. + +from sage_days.sdi.events import send_acco_confirm_mail +from sage_days.sdi.events import send_acco_reject_mail +from sage_days.sdi.models import ParticipantInfo, RegistrantInfo + + +def allot(): + """Performs the allotment of accomodation based on availability for the + participants who have requested accommodation. + """ + + # (HC) + # Availability for number of people at various locations. Here in the + # Order of IITB Hostel, IITB Guest house and then NITIE + availability = [30, 20, 20] + + # (HC) + acco_info = ParticipantInfo.objects.filter( + participant__acco_required=True) + acco_given = acco_info[:65] + acco_rejected = acco_info[65:] + + for participant in acco_given: + if availability[0] <= 0: + break + if participant.will_sprint == '3' or participant.will_sprint == '2': + if participant.participant.profession.lower() == 'student': + reg_info = participant.participant.registrantinfo_set.get() + reg_info.status_of_accomodation = '2' + reg_info.acco_location = '0' + availability[0] -= 1 + reg_info.save() + + for participant in acco_given: + if availability[1] <= 0: + break + if participant.participant.gender == 'F': + reg_info = participant.participant.registrantinfo_set.get() + reg_info.status_of_accomodation = '2' + reg_info.acco_location = '1' + availability[1] -= 1 + reg_info.save() + if participant.participant.gender == 'M': + if (participant.will_sprint == '3' or + participant.will_sprint == '2'): + if participant.participant.profession.lower() != 'student': + reg_info = participant.participant.registrantinfo_set.get() + reg_info.status_of_accomodation = '2' + reg_info.acco_location = '1' + availability[1] -= 1 + reg_info.save() + + for participant in acco_given: + if availability[2] <= 0: + break + if (participant.will_sprint == '1' + and participant.participant.gender == 'M'): + reg_info = participant.participant.registrantinfo_set.get() + reg_info.status_of_accomodation = '2' + reg_info.acco_location = '2' + availability[2] -= 1 + reg_info.save() + + for participant in acco_given: + reg_info = participant.participant.registrantinfo_set.get() + reg_info.status_of_accomodation = '3' + reg_info.save() + +def send_mails(): + """Sends mails to all those who have been alloted accommodation. + """ + + hostel_participants = RegistrantInfo.objects.filter( + status_of_accomodation=2, acco_location=0) + ghouse_partiticpants = RegistrantInfo.objects.filter( + status_of_accomodation=2, acco_location=1) + nitie_participants = RegistrantInfo.objects.filter( + status_of_accomodation=2, acco_location=2) + acco_rejected = RegistrantInfo.objects.filter( + status_of_accomodation=3) + + for p in hostel_participants: + send_acco_confirm_mail(p.registrant, 'IIT Bombay Hostel', + '150', True) + + for p in ghouse_partiticpants: + send_acco_confirm_mail(p.registrant, 'IIT Bombay Guest House', '300') + + for p in nitie_participants: + send_acco_confirm_mail(p.registrant, 'NITIE House', '500') + + for p in acco_rejected: + send_acco_reject_mail(p.registrant) + + +#65 +#Participants attending sprints: 21 +#Female participants attending sprints: 2 +#Male participants attending sprints: 19 +#Female participants may be attending sprints: 4 +#Male participants may beattending sprints: 21