1
0
فهرست منبع

alcune stanze hanno room: * per bloccare tutto l'orario

boyska 7 سال پیش
والد
کامیت
4ef4445387

+ 22 - 12
plugins/talks.py

@@ -224,7 +224,11 @@ class TalkGridDirective(Directive):
             if not talks:
                 continue
             talks = [get_talk_data(t) for t in talks]
-            rooms = tuple(sorted(unique_attr(talks, 'room')))
+            rooms = list(sorted(unique_attr(talks, 'room')))
+            # room=* is not a real room.
+            # Remove it unless that day only has special rooms
+            if '*' in rooms and len(rooms) > 1:
+                del rooms[rooms.index('*')]
             mintime = min({talk['time'].hour * 60 +
                            talk['time'].minute
                            for talk in talks}) // GRID_STEP * GRID_STEP
@@ -240,17 +244,23 @@ class TalkGridDirective(Directive):
                 talktime = talk['time'].hour * 60 + talk['time'].minute
                 position = talktime // GRID_STEP * GRID_STEP  # round
                 assert position in times
-                roomnum = rooms.index(talk['room'])
-                if times[position][roomnum] is not None:
-                    logging.error("Talk {} and {} overlap! "
-                                  .format(times[position][roomnum]['id'],
-                                          talk['id']))
-                    continue
-                times[position][roomnum] = copy(talk)
-                times[position][roomnum]['skip'] = False
-                for i in range(1, talk['duration'] // GRID_STEP):
-                    times[position + i*GRID_STEP][roomnum] = copy(talk)
-                    times[position + i*GRID_STEP][roomnum]['skip'] = True
+                if talk['room'] == '*':
+                    roomnums = range(len(rooms))
+                else:
+                    roomnums = [rooms.index(talk['room'])]
+                for roomnum in roomnums:
+                    if times[position][roomnum] is not None:
+                        logging.error("Talk %s and %s overlap! (room %s)",
+                                      times[position][roomnum]['id'],
+                                      talk['id'],
+                                      rooms[roomnum]
+                                      )
+                        continue
+                    times[position][roomnum] = copy(talk)
+                    times[position][roomnum]['skip'] = False
+                    for i in range(1, talk['duration'] // GRID_STEP):
+                        times[position + i*GRID_STEP][roomnum] = copy(talk)
+                        times[position + i*GRID_STEP][roomnum]['skip'] = True
 
             render = tmpl.render(times=times,
                                  rooms=rooms,

+ 6 - 2
talks/_templates/grid.html

@@ -51,10 +51,14 @@ td.talk > a {
         <tr>
             <td>{{time//60}}:{{ "%02d" % (time % 60)}}</td>
             {% for talk in times[time / timestep * timestep] %}
-                {% if talk == None %}
+                {% if not loop.first and talk.room == '*' %}
+                    {# skip: covered by colspan #}
+                {% elif talk == None %}
                     <td></td>
                 {% elif not talk.skip %}
-                    <td class="talk" rowspan="{{talk.duration // timestep}}">
+                    <td class="talk {% if talk.room == '*' -%}allrooms{%-endif-%}" rowspan="{{talk.duration // timestep}}"
+                                                                                       {% if talk.room == '*'
+                                                                               %}colspan="{{rooms|length}}"{%endif%}>
                         <a href="#talk-{{talk.id}}"
                            title="{{talk.tags|join(",")}}"
                            >{{talk.title}}</a>

+ 0 - 48
talks/app_e_ribbon_XM24/meta.yaml

@@ -1,48 +0,0 @@
-# File di esempio; copialo e cambialo
-title: "App android e ribbon WP per XM24"
-text: |
-    Quando ti connetti ad Internet, l'app scarica i contenuti dal
-    sito web di XM24 https://www.ecn.org/xm24/ e salva quelli che ti interessano sul tuo device. In questo modo
-    puoi leggerti quando vuoi i comunicati e rimanere sempre aggiornato
-    sugli orari dei laboratori settimanali e sulle date dei concerti. L'app
-    permette anche di ricevere notifiche degli eventi Battaglia per XM.
-    XM24 significa ex mercato ortrofutticolo n°24, da 15 anni significa
-    anche autogestione, antifascismo, transfemminismo, organizzazione senza
-    gerarchie, cultura libera, accesso alla terra, pratiche di socialità e
-    di comunicazione dal basso, antiproibizionismo, hacking ed
-    internazionalismo. Quest'app è scritta da noi in software libero
-    (licenza GPL3) e il codice è su: git.lattuga.net
-    Hem, ve lo state chiedendo vero?..
-    sì, Cordova (licenza Apache v2) è un pacchetto per Nodejs (licenza MIT).
-
-# Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
-# cose del genere, che ci si incasina tutto
-room: A
-
-# duration è la durata in minuti del talk
-duration: 60
-
-# Ci vanno le virgolette intorno! altrimenti 17.30 viene interpretato come un numero decimale
-time: "17.00"
-# day è il giorno in cui avverrà il talk. Finché non decommenti il talk non sarà schedulato
-# 0=giovedì, 1=venerdì, 2=sabato, 3=domenica
-day: 2
-
-#tags:
-#    - tante
-#    - cose
-#    - belle
-# Devono essere dei link validi!
-links:
-    - https://it.wordpress.org/plugins/i-love-xm24-ribbon/
-    - https://play.google.com/store/apps/details?id=xm24.digitigrafo.it
-
-# mail dovrebbe contenere un link alla mail con cui il talk è stato proposto
-# così si può sapere chi contattare e se c'è stata una discussione
-mail: "https://lists.autistici.org/message/20170518.174733.31877df3.it.html"
-#contacts:
-#    - tizio
-#    - caio
-
-# Devi usare UTF-8, non t'inventare scuse, sappiamo ndo abiti
-# vim: set fileencoding=utf-8:

+ 1 - 1
talks/assembleaD/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 60

+ 1 - 1
talks/assembleaG/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 60

+ 1 - 1
talks/assembleaS/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 30

+ 1 - 1
talks/assembleaV/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 30

+ 1 - 1
talks/cenaG/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 180

+ 1 - 1
talks/cenaS/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 120

+ 1 - 1
talks/cenaV/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 120

+ 1 - 1
talks/pranzoS/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 120

+ 1 - 1
talks/pranzoV/meta.yaml

@@ -5,7 +5,7 @@ text: |
 
 # Se ancora non è stata assegnata una stanza al talk, commentala. Non usare un valore tipo "qualunque" o
 # cose del genere, che ci si incasina tutto
-room: A
+room: "*"
 
 # duration è la durata in minuti del talk
 duration: 120