|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- from .models import DBSession, JM2L_Year, Sejour
- from datetime import timedelta, datetime
- import itertools
-
- class Sejour_helpers:
-
- def __init__(self, event):
- self.Me = event['request'].user
- self.CurrentEventYear = DBSession.query(JM2L_Year).filter(JM2L_Year.state=='Ongoing').first()
- self.Sejour = None
- if self.Me:
- self.Sejour = DBSession.query(Sejour)\
- .filter(Sejour.user_id==self.Me.uid)\
- .filter(Sejour.for_year==self.CurrentEventYear.year_uid)\
- .first()
- if self.Sejour and self.Sejour.arrival_time is None:
- self.Sejour = None
-
- def StartEvent(self):
- # This function return the start of the event
- return self.CurrentYear
-
- def PossibleDate(self, typedate="arrival"):
- arrival, departure = False, False
- TabResult = list()
- if typedate == "arrival":
- # Let's say people should arrive until 2 day before
- arrival = True
- myDayRange = xrange(2,-1,-1)
- elif typedate == "departure":
- # Let's say people should go back home until 2 day after
- departure = True
- myDayRange = xrange(3)
- else:
- return TabResult
-
- if self.Sejour:
- ArrDate = datetime.strftime(self.Sejour.arrival_time,"%d %B %Y")
- DepDate = datetime.strftime(self.Sejour.depart_time,"%d %B %Y")
- else:
- ArrDate = datetime.strftime( self.CurrentEventYear.start_time,"%d %B %Y" )
- DepDate = datetime.strftime( self.CurrentEventYear.end_time,"%d %B %Y" )
-
- for oneday in myDayRange:
- if arrival:
- TmpDay = self.CurrentEventYear.end_time - timedelta(days=oneday)
- elif departure:
- TmpDay = self.CurrentEventYear.start_time + timedelta(days=oneday)
- DayName = datetime.strftime(TmpDay,"%A")
- DayNum = datetime.strftime(TmpDay,"%d/%m/%y")
- DayString = datetime.strftime(TmpDay,"%d %B %Y")
- if arrival and ArrDate==DayString:
- TabResult.append((DayNum, DayName, 'selected="selected"'))
- elif departure and DepDate==DayString:
- TabResult.append((DayNum, DayName, 'selected="selected"'))
- else:
- TabResult.append((DayNum, DayName, ""))
- return TabResult
-
- def PossibleTime(self, typedate="arrival"):
- ArrTime, DepTime = "10:00", "19:00"
- TabResult = list()
-
- if self.Sejour:
- ArrTime = datetime.strftime(self.Sejour.arrival_time,"%H:%M")
- DepTime = datetime.strftime(self.Sejour.depart_time,"%H:%M")
-
- for hour in range(24):
- for minutes in range(0,60,10):
- StrTime = "%.2d:%.2d" % (hour, minutes)
- DispTime = "%dh%.2d" % (hour, minutes)
- if typedate == "arrival" and StrTime==ArrTime:
- TabResult.append( (StrTime, DispTime, 'selected="selected"') )
- elif typedate == "departure" and StrTime==DepTime:
- TabResult.append( (StrTime, DispTime, 'selected="selected"') )
- else:
- TabResult.append( (StrTime, DispTime, "") )
- return TabResult
-
- def IsCheck(self, InputControl):
- ListControlA = ['Arrival', 'Departure']
- ListControlB = ['PMR', 'Cov', 'Bras', 'Other']
- if InputControl not in map(':'.join, itertools.product(ListControlA, ListControlB)):
- return ""
- if self.Sejour:
- if InputControl.startswith('Arrival'):
- CtrlVal = 2**ListControlB.index(InputControl[8:])
- if self.Sejour.arrival_check & CtrlVal == CtrlVal:
- return "checked=\"checked\""
- else:
- return ""
- elif InputControl.startswith('Departure'):
- CtrlVal = 2**ListControlB.index(InputControl[10:])
- if self.Sejour.depart_check & CtrlVal == CtrlVal:
- return "checked=\"checked\""
- else:
- return ""
- else:
- return ""
- else:
- return ""
|