Script to allot accommodation and send mails have been added. anoop
authorMadhusudan.C.S <madhusudancs@gmail.com>
Fri, 06 Aug 2010 14:24:50 +0530
branchanoop
changeset 217 69f9624b0129
parent 216 34512198cad4
child 218 16d1aae679a4
Script to allot accommodation and send mails have been added.
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