Le repo des sources pour le site web des JM2L
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

163 linhas
7.4 KiB

  1. # -*- coding: utf-8 -*-
  2. <%inherit file="jm2l:templates/Participant/list.mako"/>
  3. <%
  4. import datetime
  5. import itertools
  6. now = datetime.datetime.now()
  7. %>
  8. <form class="filterform" action="#">
  9. <table class="table table-bordered table-hover">
  10. <thead>
  11. <tr>
  12. <th style="width:7em;text-align:center;"></th>
  13. <th style="text-align:center;">en ${for_year}</th>
  14. <th style="width:5em;text-align:center;">Visite</th>
  15. <th style="width:7em;text-align:center;">Activité</th>
  16. <th style="text-align:center;">Arrivée prévue</th>
  17. <th style="width:5em;text-align:center;">${DicRepas['Ven']} Repas Vendredi</th>
  18. <th style="width:5em;text-align:center;">${DicRepas['Midi']} Repas Midi </th>
  19. <th style="width:5em;text-align:center;">${DicRepas['Soir']} Repas Soir</th>
  20. <th style="text-align:center;">Départ prévu</th>
  21. <th style="text-align:center;">Notes</th>
  22. </tr>
  23. </thead>
  24. <tbody id="list">
  25. % for u, s in Users:
  26. % if u.is_IntervenantOnYear(for_year):
  27. <tr style="color:blue">
  28. % elif s or u.Staff:
  29. <tr>
  30. % else:
  31. <tr style="color:lightgray">
  32. % endif
  33. <td style="text-align:center;">
  34. <span class="data">${u.slug}</span>
  35. <a href="/MesJM2L?user=${u.uid}">${u.nom} ${u.prenom}</a><br />
  36. <span style="align:center">
  37. ${u.vote_logo}
  38. <a href="mailto:${u.mail}">
  39. <i class="icon-envelope"></i>
  40. </a>
  41. % if u.Staff==1:
  42. <a href="javascript:alert('${u.nom}, ${u.prenom}\nStaff JM2L');">
  43. <i class="icon-star"></i>
  44. </a>
  45. % endif
  46. % if u.is_IntervenantOnYear(for_year):
  47. <a href="javascript:alert('${u.nom}, ${u.prenom}\nIntervenant');">
  48. <i class="icon-user"></i>
  49. </a>
  50. % endif
  51. % if u.active==0:
  52. <a href="javascript:alert('${u.nom}, ${u.prenom}\nInactive');">
  53. <i class="icon-ban-circle"></i>
  54. </a>
  55. % endif
  56. % if u.phone:
  57. <a href="javascript:alert('${u.nom}, ${u.prenom}\n${u.phone}');">
  58. <i class="icon-headphones"></i>
  59. </a>
  60. % endif
  61. <a href="/user/${u.slug}/badge">
  62. <i class="icon-qrcode"></i>
  63. </a>
  64. </span>
  65. </td>
  66. <td style="text-align:center;">
  67. % if u.is_IntervenantOnYear(for_year):
  68. <span class="data">1</span>Intervenant
  69. % elif s and s.orga_part:
  70. % if u.Staff:
  71. <span class="data">2</span>Staff
  72. % else:
  73. <span class="data">3</span>Bénévole
  74. % endif
  75. % elif u.Staff:
  76. <span class="data">2</span>Staff
  77. % elif s:
  78. <span class="data">4</span>Visiteur
  79. % else:
  80. <span class="data"></span><i>Pas d'informations</i>
  81. % endif
  82. </td>
  83. <td style="text-align:center;">
  84. <span class="data">${(now - u.last_logged).days}</span>${(now - u.last_logged).days} j
  85. </td>
  86. <td style="text-align:center;">
  87. % if u.events:
  88. <span class="data">${len(u.events)}</span>
  89. <select style="width:7em;">
  90. <option><strong>${len(u.events)} Intérv.</strong></option>
  91. % for y, g in itertools.groupby(sorted(u.events, key=lambda k:k.for_year, reverse=True), key=lambda k:k.for_year):
  92. <OPTGROUP LABEL="${y}">
  93. % for event in g:
  94. ${event.for_year}
  95. <OPTION onclick="location='/event/${event.for_year}/${event.slug}';">${event.event_type} - ${event.name}</OPTION>
  96. % endfor
  97. </OPTGROUP>
  98. % endfor
  99. </select>
  100. %else:
  101. <span class="data">0</span>
  102. <i> - </i>
  103. % endif
  104. </td>
  105. <td style="text-align:center;">
  106. % if s and s.arrival_time:
  107. <span class="data">${s.arrival_time.strftime('%m/%d/%Y %H:%M:%S')}</span>
  108. ${s.arrival_time.strftime('%a %d <strong>%H:%M</strong>') | n}<br/>
  109. ${s.arrival_place}
  110. % if s.arrival_text:
  111. - NB: <strong>${s.arrival_text}</strong>
  112. % endif
  113. %else:
  114. <span class="data"></span><i>Pas d'informations</i>
  115. % endif
  116. </td>
  117. % if s and s.repas:
  118. % for i, d in enumerate(['Ven Soir', 'Sam midi', 'Sam soir']):
  119. <td style="text-align:center">
  120. % if (s.repas & 2**i):
  121. <span class="data">Oui</span>Oui
  122. % else:
  123. <span class="data">Non</span>Non
  124. % endif
  125. </td>
  126. % endfor
  127. %else:
  128. <td style="text-align:center;" colspan="3">
  129. <span class="data"></span><i>Pas d'informations</i>
  130. </td>
  131. % endif
  132. <td style="text-align:center;">
  133. % if s and s.depart_time:
  134. <span class="data">${s.depart_time.strftime('%m/%d/%Y %H:%M:%S')}</span>
  135. ${s.depart_time.strftime('%a %d <strong>%H:%M</strong>') | n}<br/>
  136. ${s.depart_place}
  137. % if s.depart_text:
  138. - NB: <strong>${s.arrival_text}</strong>
  139. % endif
  140. %else:
  141. <span class="data"></span>
  142. <i>Pas d'informations</i>
  143. % endif
  144. </td>
  145. <td>
  146. % if s:
  147. % if s.repas_allerg:
  148. <u>Allergies</u> : ${s.repas_allerg}<br/>
  149. % endif
  150. % if s.repas_contr:
  151. <u>Contraintes</u> : ${s.repas_contr}<br/>
  152. % endif
  153. % endif
  154. <span class="data"></span>
  155. </td>
  156. </tr>
  157. % endfor
  158. </tbody>
  159. </table>
  160. </form>