Le repo des sources pour le site web des JM2L
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 

101 Zeilen
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 ""