Le repo des sources pour le site web des JM2L
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

101 lignes
4.2 KiB

  1. from .models import DBSession, JM2L_Year, Sejour
  2. from datetime import timedelta, datetime
  3. import itertools
  4. class Sejour_helpers:
  5. def __init__(self, event):
  6. self.Me = event['request'].user
  7. self.CurrentEventYear = DBSession.query(JM2L_Year).filter(JM2L_Year.state=='Ongoing').first()
  8. self.Sejour = None
  9. if self.Me:
  10. self.Sejour = DBSession.query(Sejour)\
  11. .filter(Sejour.user_id==self.Me.uid)\
  12. .filter(Sejour.for_year==self.CurrentEventYear.year_uid)\
  13. .first()
  14. if self.Sejour and self.Sejour.arrival_time is None:
  15. self.Sejour = None
  16. def StartEvent(self):
  17. # This function return the start of the event
  18. return self.CurrentYear
  19. def PossibleDate(self, typedate="arrival"):
  20. arrival, departure = False, False
  21. TabResult = list()
  22. if typedate == "arrival":
  23. # Let's say people should arrive until 2 day before
  24. arrival = True
  25. myDayRange = xrange(2,-1,-1)
  26. elif typedate == "departure":
  27. # Let's say people should go back home until 2 day after
  28. departure = True
  29. myDayRange = xrange(3)
  30. else:
  31. return TabResult
  32. if self.Sejour:
  33. ArrDate = datetime.strftime(self.Sejour.arrival_time,"%d %B %Y")
  34. DepDate = datetime.strftime(self.Sejour.depart_time,"%d %B %Y")
  35. else:
  36. ArrDate = datetime.strftime( self.CurrentEventYear.start_time,"%d %B %Y" )
  37. DepDate = datetime.strftime( self.CurrentEventYear.end_time,"%d %B %Y" )
  38. for oneday in myDayRange:
  39. if arrival:
  40. TmpDay = self.CurrentEventYear.end_time - timedelta(days=oneday)
  41. elif departure:
  42. TmpDay = self.CurrentEventYear.start_time + timedelta(days=oneday)
  43. DayName = datetime.strftime(TmpDay,"%A")
  44. DayNum = datetime.strftime(TmpDay,"%d/%m/%y")
  45. DayString = datetime.strftime(TmpDay,"%d %B %Y")
  46. if arrival and ArrDate==DayString:
  47. TabResult.append((DayNum, DayName, 'selected="selected"'))
  48. elif departure and DepDate==DayString:
  49. TabResult.append((DayNum, DayName, 'selected="selected"'))
  50. else:
  51. TabResult.append((DayNum, DayName, ""))
  52. return TabResult
  53. def PossibleTime(self, typedate="arrival"):
  54. ArrTime, DepTime = "10:00", "19:00"
  55. TabResult = list()
  56. if self.Sejour:
  57. ArrTime = datetime.strftime(self.Sejour.arrival_time,"%H:%M")
  58. DepTime = datetime.strftime(self.Sejour.depart_time,"%H:%M")
  59. for hour in range(24):
  60. for minutes in range(0,60,10):
  61. StrTime = "%.2d:%.2d" % (hour, minutes)
  62. DispTime = "%dh%.2d" % (hour, minutes)
  63. if typedate == "arrival" and StrTime==ArrTime:
  64. TabResult.append( (StrTime, DispTime, 'selected="selected"') )
  65. elif typedate == "departure" and StrTime==DepTime:
  66. TabResult.append( (StrTime, DispTime, 'selected="selected"') )
  67. else:
  68. TabResult.append( (StrTime, DispTime, "") )
  69. return TabResult
  70. def IsCheck(self, InputControl):
  71. ListControlA = ['Arrival', 'Departure']
  72. ListControlB = ['PMR', 'Cov', 'Bras', 'Other']
  73. if InputControl not in map(':'.join, itertools.product(ListControlA, ListControlB)):
  74. return ""
  75. if self.Sejour:
  76. if InputControl.startswith('Arrival'):
  77. CtrlVal = 2**ListControlB.index(InputControl[8:])
  78. if self.Sejour.arrival_check & CtrlVal == CtrlVal:
  79. return "checked=\"checked\""
  80. else:
  81. return ""
  82. elif InputControl.startswith('Departure'):
  83. CtrlVal = 2**ListControlB.index(InputControl[10:])
  84. if self.Sejour.depart_check & CtrlVal == CtrlVal:
  85. return "checked=\"checked\""
  86. else:
  87. return ""
  88. else:
  89. return ""
  90. else:
  91. return ""