2009-07-12 23 views
6

Attualmente sto lavorando a un'applicazione che consente alle persone di programmare "Spettacoli" per una stazione radio online.Ripetizione di "Eventi" (Calendario)

Voglio la possibilità per l'utente di impostare un evento ripetuto, diciamo per esempio: -

spettacolo "Manic Lunedi" - Ogni Lunedi Da 9-11 "Mid Mese Madness" - Ogni secondo Giovedi del Mese "Questo mese nuova musica" - 1 ° di ogni mese.

Qual è, secondo la vostra opinione, il modo migliore per modellarlo (basato su una struttura MVC/MTV).

Nota: in realtà sto codificando questo in Django. Ma sono più interessato alla teoria che sta dietro, piuttosto che ai dettagli specifici dell'implementazione.

risposta

9

Ah, eventi ripetuti - uno dei divieti della mia vita, insieme ai fusi orari. Il calendario è rigido.

È possibile modellare questo in termini di RFC2445. Tuttavia, questo potrebbe darti molta più flessibilità e complessità di quanto tu voglia veramente.

Un paio di cose da considerare:

  • Avete bisogno qualsiasi granularità più fine di un certo periodo di tempo su determinate date? Se è necessario ripetere in base al tempo, diventa più complicato.
  • Considerare casi di angolo di data come "il 30 di ogni mese" e cosa significhi per gli anni bisestili
  • Considerare i casi dell'angolo di tempo come "1.30am ogni giorno" - a volte le 1.30 di mattina possono accadere due volte, ea volte può non si verifica affatto, a causa dell'ora legale
  • Hai bisogno di condividere il programma con persone in altri fusi orari? Ciò rende la vita ancora più complicata
  • Hai bisogno di rappresentare il numero di volte in cui si verifica un evento o una data finale in cui si verifica? ("Conte" o "Fino" fondamentalmente.) Potresti non averne bisogno, o potresti aver bisogno di uno o entrambi.

Mi rendo conto che questo è un elenco di cose a cui pensare più di una risposta definitiva, ma penso che sia importante definire i parametri del problema prima di provare a elaborare una soluzione.

+0

Alcuni grandi commenti ... anche se non una risposta definitiva. – Mez

0

Ho pensato che gli eventi ripetuti dovrebbero essere generati quando l'evento originale viene salvato, con un nuovo modello. Ciò significa che non sto eseguendo un'elaborazione casuale ogni volta che il calendario è caricato (e significa che posso anche, per esempio, cancellare uno "Show" in una serie) ma significa anche che devo limitarlo a un certo intervallo di tempo, quindi se qualcuno dicesse, un anno nel futuro, non vedrebbero questi spettacoli ripetuti. Ma a un certo punto, dovrebbero (potenzialmente) essere rigenerati.

+1

Normalmente si annulla/cambia un evento in una ricorrenza utilizzando un evento di "eccezione". –

+0

Hmm .. non ci avevo pensato! – Mez

Problemi correlati