TODO

Version 70 (Etienne Pallier, 09/30/2016 06:35 pm)

1 1 Paul Carensac
h1. TODO
2 1 Paul Carensac
3 1 Paul Carensac
List of tasks by application, and general tasks (organization, tools, ...)
4 1 Paul Carensac
5 51 Etienne Pallier
*ATTENTION, IL FAUT EFFACER LES ITEMS DE CETTE TODOLIST AU FUR ET A MESURE QU'ILS SONT MIS DANS LES DEMANDES REDMINE*
6 51 Etienne Pallier
7 1 Paul Carensac
{{>toc}}
8 51 Etienne Pallier
9 1 Paul Carensac
10 1 Paul Carensac
---
11 1 Paul Carensac
12 52 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}General tasks (notes Etienne Pallier)%
13 1 Paul Carensac
14 70 Etienne Pallier
* Observer:
15 70 Etienne Pallier
16 70 Etienne Pallier
 * Refactoriser tasks.execute_plan{vis,nir}
17 70 Etienne Pallier
18 70 Etienne Pallier
19 65 Etienne Pallier
* Sequence:
20 65 Etienne Pallier
21 69 Etienne Pallier
 * Priority:
22 69 Etienne Pallier
Une request est créée par un User qui appartient à un SP (Scientific Program).
23 69 Etienne Pallier
La priorité de la Request est celle du SP.
24 69 Etienne Pallier
Par contre, au sein de la Request, on pourra moduler la priorité de chaque séquence (cf /Sequence), afin de prioriser certaines sequences par rapport aux autres. Par défaut, cette variation de priorité sera nulle (0) pour chaque Sequence.
25 69 Etienne Pallier
Par exemple, on pourra faire varier la priorité d’une Sequence de +ou- 5 par rapport à la priorité de la Request.
26 69 Etienne Pallier
27 69 Etienne Pallier
 * Quota:
28 69 Etienne Pallier
Les quotas sont attribués par le TAC (Time Allocation Committee) tous les 6 mois, pour chaque thème ou programme scientifique.
29 69 Etienne Pallier
Le TAC attribue une lettre A (prioritaire), B (si il reste de la place), C (rejeté).
30 69 Etienne Pallier
Au niveau du GFT, on traduit ces lettres en “grande priorité”, “priorité moyenne”, et “petite priorité” (le C n’est pas rejeté).
31 69 Etienne Pallier
On estime alors le temps nécessaire pour le SP, et on le traduit en pourcentage.
32 69 Etienne Pallier
On pourra donc attribuer un quota (en %) à chaque SP.
33 69 Etienne Pallier
=> Le temps total de toutes les Requests (toutes leurs séquences) de tous les Users d’un même SP ne devra pas dépasser le quota du SP.
34 69 Etienne Pallier
35 67 Jeremy Barneron
 * -Date: on doit pouvoir la donner sous 2 formes:-
36 65 Etienne Pallier
37 67 Jeremy Barneron
  * -“Tonight” => nuit en cours ou bien nuit qui arrive-
38 67 Jeremy Barneron
  * -Date précise JJ/MM/AAAA (maximum à now + 7 nuits)-
39 65 Etienne Pallier
40 65 Etienne Pallier
 * Execution strategies:
41 65 Etienne Pallier
42 67 Jeremy Barneron
  * -Request level:-
43 67 Jeremy Barneron
-(default) "Best effort, do as much sequences as you can"-
44 67 Jeremy Barneron
-=> option: "All or nothing": if ANY sequence fails, request fails-
45 65 Etienne Pallier
46 67 Jeremy Barneron
  * -Sequence level-
47 67 Jeremy Barneron
-(default) “Optional sequence”-
48 67 Jeremy Barneron
-=> option “Mandatory sequence”: if THIS sequence fails, request fails-
49 67 Jeremy Barneron
-(default) “This night only”-
50 67 Jeremy Barneron
-=> option, “Reportable à la nuit suivante” (jusqu’à 7 nuits maxi)-
51 65 Etienne Pallier
52 67 Jeremy Barneron
 * -Période de visibilité JD1-JD2:-
53 65 Etienne Pallier
54 68 Jeremy Barneron
  * -Donnée par le logiciel ETC/IS-
55 67 Jeremy Barneron
  * -c’est pour UNE NUIT (celle en cours, la prochaine, ou bien une date ultérieure pas trop loin pour que les users ne planifient pas trop en avance). Si la séquence n’a pas pu être exécutée pour cette nuit, il faut essayer de la -reprogrammer pour la nuit suivante (si le user a coché cette option) => il faudra donc recalculer le JD1-JD2 qui sera un peu différent pour chaque nuit, et ainsi de suite, jusqu’à ce qu’on arrive à une période de visibilité VIDE car- -le target n’est alors plus visible du tout-
56 67 Jeremy Barneron
  * -D’autre part, il peut y en avoir plusieurs dans la nuit, et il faudra que l’ETC/IS les donne TOUTES:-
57 65 Etienne Pallier
58 67 Jeremy Barneron
   * -2 pour un target naturel (par exemple, il se couche en début de nuit, et se lève en fin de nuit, donc 2 périodes)-
59 67 Jeremy Barneron
   * -Jusqu’à 12 pour l’ISS-
60 67 Jeremy Barneron
   * -=> prévoir donc N périodes (au moins 2)-
61 67 Jeremy Barneron
   * -=> obliger l’astronome à en CHOISIR une seule (s’il le souhaite, il pourra de toutes façons faire une autre séquence avec la 2ème période de visibilité…):-
62 65 Etienne Pallier
63 65 Etienne Pallier
64 64 Jeremy Barneron
* -Workflow du "démarrage du système" à documenter (tout se qui se déclenche quand on lance le logiciel pour la toute première fois...) : lancement du monitoring, qui à son tour lance un scheduling, …-
65 62 Etienne Pallier
66 64 Jeremy Barneron
* -public/ : faut-il garder ce dossier qui ne contient qu’un seul dossier static/ ? (ce dossier static/ est-il utile à qqch ?)-
67 62 Etienne Pallier
68 64 Jeremy Barneron
* -Démarrage: Ce n’est pas Monitoring mais Majordome qui doit lancer le 1er scheduling en début de nuit-
69 62 Etienne Pallier
70 64 Jeremy Barneron
* -Fin de nuit: Majordome fait un system.pause(), ensuite une task de calibration est lancée qui doit vérifier que tout est ok avant de faire START (dome fermé, Tele fermé, …)-
71 62 Etienne Pallier
72 64 Jeremy Barneron
* -Créer un mode DEV : jouer avec la variable DEBUG (ou autre ?) dans src/pyros/settings.py pour mettre à TRUE en mode DEV afin d’éviter d’avoir à commenter certaines lignes lors du lancement du workflow (sinon, c’est trop long)-
73 62 Etienne Pallier
74 64 Jeremy Barneron
* -User : faire une view pour le profil-
75 62 Etienne Pallier
76 64 Jeremy Barneron
* -RoutineManager : Faire un TEST import/export d’une requete-
77 62 Etienne Pallier
78 64 Jeremy Barneron
* -Roue à filtre : doit pouvoir être associée à Camera ou bien à Tele (c’est prévu dans la BD ou pas ?)-
79 62 Etienne Pallier
80 56 Jeremy Barneron
* -Observation_manager/Tasks : créer une classe mère héritant de Task, dont les classes filles (plan_vis et plan_ir) vont hériter-
81 3 Etienne Pallier
82 56 Jeremy Barneron
* -Architecture projet (organisation dossiers):-
83 39 Etienne Pallier
84 56 Jeremy Barneron
 * -src/ : laisser seulement les applications, et mettre tous les autres dossiers (fixtures/, images/, ...) dans un dossier MISC/)-
85 39 Etienne Pallier
86 44 Etienne Pallier
* RUN :
87 44 Etienne Pallier
88 56 Jeremy Barneron
 * -S'assurer que tous les prérequis sont présents et démarrés avant de lancer Pyros (sinon, générer un message d'erreur expliquant le problème):-
89 44 Etienne Pallier
 
90 56 Jeremy Barneron
  * -RabbitMQ-
91 56 Jeremy Barneron
  * -Mysql (sauf si on a choisi sqlite)-
92 44 Etienne Pallier
93 44 Etienne Pallier
94 44 Etienne Pallier
95 45 Etienne Pallier
* TESTS (intégration continue):
96 1 Paul Carensac
97 56 Jeremy Barneron
 * -Même remarque que pour le "RUN" ci-dessous concernant le check des prérequis-
98 56 Jeremy Barneron
 * -Inclure "trial comet" dans les tests pour s'assurer que Comet est bien installé (+ "rm -r _trial_temp/" ensuite pour faire le ménage après le test)-
99 56 Jeremy Barneron
 * -Mettre en place une exécution systématique des tests à chaque commit (unitaires + fonctionnels)-
100 56 Jeremy Barneron
-(pour faire plus simple, on peut imaginer que le serveur de test linux fasse un "git pull" toutes les 30mn, puis une exécution des tests, et l'envoi d'un email en cas de problème)-
101 36 Etienne Pallier
102 35 Etienne Pallier
103 35 Etienne Pallier
* Installation script:
104 35 Etienne Pallier
105 56 Jeremy Barneron
 * -Si l'environnement virtuel existe déjà, demander s'il doit être recréé (par défaut "Non")-
106 56 Jeremy Barneron
 * -(NEW) Renommer le script install_requirements.sh en install.sh-
107 56 Jeremy Barneron
 * -(NEW) Faciliter l'installation du logiciel complet avec CONDA, qui gère toutes les dépendances du logiciel, même les dépendances non Python (mysql, rabbitmq, ...), et c'est du multi-plateforme : (cf -https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions)-
108 35 Etienne Pallier
109 25 Etienne Pallier
* Pyros : 
110 1 Paul Carensac
111 56 Jeremy Barneron
 * -Doit pouvoir être démarré indifféremment AVANT (par défaut) les devices, ou APRES (actuellement, le AVANT est TODO)-
112 56 Jeremy Barneron
 * -De manière générale, doit être le plus possible "tolérant aux pannes"-
113 56 Jeremy Barneron
 * -Doit être le plus générique et donc paramétrable possible-
114 1 Paul Carensac
115 25 Etienne Pallier
116 23 Etienne Pallier
* Django : 
117 12 Etienne Pallier
118 56 Jeremy Barneron
 * -Upgrade to Django 1.10-
119 56 Jeremy Barneron
 * -Remplacer le serveur web de "dev" (manage runserver, sur port 8000) par un vrai serveur web pour la "prod" (Apache pour les fichiers statiques sur port 80 + serveur d'application Python pour le code Python, par exemple gunicorn)-
120 56 Jeremy Barneron
-(cf https://projects.irap.omp.eu/projects/pyros/wiki/Project_Development#Serveur-Web)-
121 23 Etienne Pallier
122 56 Jeremy Barneron
* -Comet installation : Include in the install_requirements.sh script (by using stable official version for Python 3 (when available) on Linux (and Mac) and Windows 10-
123 1 Paul Carensac
124 56 Jeremy Barneron
* -git : Create a "dev" branch (do not write anymore on the "master" branch)-
125 1 Paul Carensac
126 25 Etienne Pallier
* Simulators : 
127 1 Paul Carensac
128 61 Jeremy Barneron
 * -on doit se rendre compte qu'ils sont "vivants" (ils seront progressivement remplacés par les vrais devices, mais resteront toujours utilisables à leur place)-
129 25 Etienne Pallier
130 61 Jeremy Barneron
  * -Le Monitoring doit les interroger régulièrement sur leur statut (check_status, DONE)-
131 61 Jeremy Barneron
  * -Il doit stocker les statuts dans la BD (TODO)-
132 61 Jeremy Barneron
  * -Ces statuts doivent être affichés au fur et à mesure sur la page web du "device" correspondant (Devices, Site, Weather) (TODO)-
133 25 Etienne Pallier
134 61 Jeremy Barneron
 * -quels sont les devices bloquants et non bloquants ?-
135 25 Etienne Pallier
136 60 Jeremy Barneron
  * -Bloquants: si indisponibles (en panne ou pas démarrés), Pyros met en pause le sous-système d'observation-
137 60 Jeremy Barneron
-Seules 3 fonctions restent toujours actives: alertes, monitoring, et serveur web (pour les routines et la surveillance)-
138 25 Etienne Pallier
139 60 Jeremy Barneron
   * -Telescope-
140 60 Jeremy Barneron
   * -Camera VIS (???)-
141 60 Jeremy Barneron
   * -PLC (weather + observation conditions + site)-
142 25 Etienne Pallier
143 60 Jeremy Barneron
  * -Non bloquants: si indisponibles (en panne ou pas démarrés), Pyros se contente d'en prendre note, et continue son fonctionnement normal tout en restant dans l'attente de leur redémarrage pour les réintégrer-
144 25 Etienne Pallier
145 60 Jeremy Barneron
   * -Camera VIS (???)-
146 60 Jeremy Barneron
   * -Camera NIR-
147 25 Etienne Pallier
148 23 Etienne Pallier
149 56 Jeremy Barneron
* -Users: gérer les 3 profils (admin, expert, user)-
150 23 Etienne Pallier
151 50 Etienne Pallier
* Scheduler : 
152 52 Etienne Pallier
   
153 56 Jeremy Barneron
  * -Eviter que la vue du Scheduler s'affiche avec une erreur (IndexError) quand il n'y a aucun schedule dans la BD (http://127.0.0.1:8000/scheduler/) => idem pour toutes les autres vues de tous les modules-
154 56 Jeremy Barneron
  * -Affichage d'un schedule : pour chaque ligne (séquence), ajouter une colonne à gauche qui donne le nom (short name) de la Request dont la séquence fait partie (quand on clique sur ce nom, on va vers une vue de la Request qui sera- -soit une AlertRequest soit une RoutineRequest)-
155 56 Jeremy Barneron
  * -(non prioritaire, c'est juste un souhait) le rendre complètement autonome, indépendant du projet, afin qu'on puisse facilement le sortir du projet, et le proposer comme un composant générique utilisable dans n'importe quel autre- -logiciel ; il devra donc gérer ces communications avec les autres modules via des interfaces-
156 52 Etienne Pallier
157 50 Etienne Pallier
158 49 Etienne Pallier
159 14 Etienne Pallier
* Doc :
160 17 Etienne Pallier
161 14 Etienne Pallier
 * TEST:
162 14 Etienne Pallier
  
163 56 Jeremy Barneron
  * -Unit tests : test of each module-
164 56 Jeremy Barneron
  * -Functional tests (with Celery and simulators): complete workflow-
165 14 Etienne Pallier
166 14 Etienne Pallier
 * LAUNCH:
167 14 Etienne Pallier
168 56 Jeremy Barneron
  * -Start simulators-
169 56 Jeremy Barneron
  * -Start Celery-
170 56 Jeremy Barneron
  * -Start pyros-
171 14 Etienne Pallier
172 14 Etienne Pallier
 * USE:
173 14 Etienne Pallier
174 56 Jeremy Barneron
  * -Administration of the database: http://localhost:8000/admin-
175 56 Jeremy Barneron
  * -Interacting with Pyros: http://localhost:8000-
176 15 Etienne Pallier
  
177 56 Jeremy Barneron
   * -Watch the environment: Devices, Site, Weather-
178 56 Jeremy Barneron
   * -Watch the schedule: Schedule-
179 56 Jeremy Barneron
   * -Watch the data processing (workflow): System (Dashboard)-
180 56 Jeremy Barneron
   * -Submit a Routine Request (and get results): Routines-
181 56 Jeremy Barneron
   * -Watch alerts: Alerts-
182 56 Jeremy Barneron
   * -Simulate an Alert: Alerts (TODO: Un user "admin" doit pouvoir déclencher une alerte type depuis la page web Alerts)-
183 56 Jeremy Barneron
   * -Manual operations on the Telescope : Devices/Telescope (TODO)-
184 58 Jeremy Barneron
   * -Manage users : Users-
185 22 Etienne Pallier
186 14 Etienne Pallier
187 1 Paul Carensac
188 1 Paul Carensac
---
189 1 Paul Carensac
190 53 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}Applications tasks (notes Paul Carensac)%
191 2 Paul Carensac
192 2 Paul Carensac
h3. Dashboard
193 2 Paul Carensac
194 59 Jeremy Barneron
 * -Create the backoffice views as the modules are integrated in pyros-
195 59 Jeremy Barneron
 * -Think about a system of permissions-
196 2 Paul Carensac
197 2 Paul Carensac
h3. Scheduler
198 2 Paul Carensac
199 2 Paul Carensac
 * views
200 2 Paul Carensac
201 59 Jeremy Barneron
  * -Link the main page to the current schedule instead of the simulation page-
202 59 Jeremy Barneron
  * -Show user sequences in the schedules (with links)-
203 59 Jeremy Barneron
  * -Give accces to old schedules (day / days before / all end-night plannings / all plannings)-
204 59 Jeremy Barneron
  * -Give access to the refused sequences of a schedule, and the reasons of rejects-
205 2 Paul Carensac
206 2 Paul Carensac
 * scheduler
207 2 Paul Carensac
208 59 Jeremy Barneron
  * -Verification when there are not fields in the scheduler tables (index out of range)-
209 59 Jeremy Barneron
  * -Change the system to determine night start/end (they must be given in parameter, only if first_schedule is True)-
210 59 Jeremy Barneron
  * -Store the reasons of rejects (create a new attribute, in shs ?)-
211 59 Jeremy Barneron
  * -What is the 'flag' attribute ? (@AK)-
212 59 Jeremy Barneron
  * -Do not create the execute_sequence tasks if it's not the night (- 120 seconds)-
213 59 Jeremy Barneron
  * -Priority and quota computing-
214 59 Jeremy Barneron
  * -Quotas evolution-
215 59 Jeremy Barneron
  * -Blank space filling-
216 59 Jeremy Barneron
  * -At the end of a scheduling send, it to the IC ?-
217 2 Paul Carensac
218 2 Paul Carensac
h3. Alert Manager
219 2 Paul Carensac
220 2 Paul Carensac
 * Web :
221 2 Paul Carensac
222 59 Jeremy Barneron
  * -Print if there is an alert in progress in the main page-
223 59 Jeremy Barneron
  * -Link the alerts to their status and results-
224 2 Paul Carensac
225 59 Jeremy Barneron
 * -Connect to a real VOEvent broker-
226 2 Paul Carensac
227 59 Jeremy Barneron
 * -Determine the communication with FSC for strategy change-
228 2 Paul Carensac
229 2 Paul Carensac
 * VOEvents :
230 2 Paul Carensac
231 59 Jeremy Barneron
  * -Extract the good fields (see AK Q&A 07/01/2016)-
232 59 Jeremy Barneron
  * -Fill the request & alerts objects-
233 59 Jeremy Barneron
  * -Use strategies to build a request-
234 59 Jeremy Barneron
  * -Possibility to change the default strategy-
235 59 Jeremy Barneron
  * -Handle VOEvent updates-
236 59 Jeremy Barneron
  * -Be careful to not create 2 alerts for a same GRB, seen by 2 different satellites-
237 2 Paul Carensac
238 2 Paul Carensac
239 2 Paul Carensac
h3. Analyzer
240 2 Paul Carensac
241 59 Jeremy Barneron
 * -Apply the calibrations in the right function-
242 59 Jeremy Barneron
 * -Apply the analyses only if it's a GRB-
243 59 Jeremy Barneron
 * -Implement the analyses-
244 59 Jeremy Barneron
 * -Send analyses to FSC-
245 2 Paul Carensac
246 2 Paul Carensac
247 2 Paul Carensac
h3. Majordome
248 2 Paul Carensac
249 2 Paul Carensac
 * TaskManager
250 2 Paul Carensac
251 59 Jeremy Barneron
  * -When a sequence is cancelled, give back the quota to the user-
252 59 Jeremy Barneron
  * -In case of alert, do not stop the ongoing plan, and make the instruments abort-
253 2 Paul Carensac
254 2 Paul Carensac
 * execute_sequence
255 2 Paul Carensac
256 59 Jeremy Barneron
  * -Add the PLC checks at start (to see if we do the slew)-
257 59 Jeremy Barneron
  * -Use the global telescope (instead of creating one here)-
258 59 Jeremy Barneron
  * -Give first_schedule as false when a scheduling is launched-
259 59 Jeremy Barneron
  * -Remove the default countdown (1, for tests)-
260 2 Paul Carensac
261 2 Paul Carensac
 * system_pause
262 2 Paul Carensac
263 59 Jeremy Barneron
  * -Abort the instruments-
264 59 Jeremy Barneron
  * -Stop the execution tasks-
265 2 Paul Carensac
266 2 Paul Carensac
 * system_restart
267 2 Paul Carensac
268 59 Jeremy Barneron
  * -Start a scheduling-
269 2 Paul Carensac
270 2 Paul Carensac
 * change_obs_conditions
271 2 Paul Carensac
272 59 Jeremy Barneron
  * -Change sequences status (if  needed)-
273 59 Jeremy Barneron
  * -If some status changed, re-launch a scheduling-
274 2 Paul Carensac
275 2 Paul Carensac
h3. Monitoring
276 2 Paul Carensac
277 2 Paul Carensac
 * views
278 2 Paul Carensac
279 59 Jeremy Barneron
  * -Move the dashboard here-
280 59 Jeremy Barneron
  * -Print the instrument status-
281 59 Jeremy Barneron
  * -Print PLC informations (with the evolution)-
282 59 Jeremy Barneron
  * -In the dashboard screens, put scroll on each screen to see the old logs-
283 2 Paul Carensac
284 2 Paul Carensac
 * Monitoring task
285 2 Paul Carensac
 
286 59 Jeremy Barneron
  * -Uncomment the scheduling at the beginning-
287 59 Jeremy Barneron
  * -Implement night start/end computation-
288 59 Jeremy Barneron
  * -Initialize communication with the instruments-
289 59 Jeremy Barneron
  * -Configure intruments at start-
290 59 Jeremy Barneron
  * -Send software versions to the IC-
291 59 Jeremy Barneron
  * -Initialize connection with PLC-
292 59 Jeremy Barneron
  * -After the starting actions, loop to wait for the instruments configuration to be finished-
293 59 Jeremy Barneron
  * -Ask PLC for status-
294 59 Jeremy Barneron
  * -Ask filter wheel for status-
295 59 Jeremy Barneron
  * -Store the instruments & PLC status-
296 59 Jeremy Barneron
  * -Send all status to IC-
297 59 Jeremy Barneron
  * -Analyse PLC status (obs conditions, ...)-
298 59 Jeremy Barneron
  * -Create tasks of obs condition changes-
299 59 Jeremy Barneron
  * -At the beginning of the loop, ping the DISABLED devices. If they answer, change their status (TBD), and do their initialization (ex: If it's a camera, set its temperature to -150°)-
300 2 Paul Carensac
301 2 Paul Carensac
h3. Observation Manager
302 2 Paul Carensac
303 2 Paul Carensac
 * execute_plan :
304 2 Paul Carensac
305 59 Jeremy Barneron
  * -Uncomment the instruments_ready waiting function-
306 59 Jeremy Barneron
  * -Uncomment the observation_ending waiting function-
307 59 Jeremy Barneron
  * -Try to remove code duplication (plan_execution_vis & plan_execution_nir)-
308 59 Jeremy Barneron
  * -Determine what needs to be done at the end of an observation-
309 2 Paul Carensac
310 2 Paul Carensac
 * create_calibrations :
311 2 Paul Carensac
312 59 Jeremy Barneron
  * -Make the calibration images-
313 59 Jeremy Barneron
  * -Generate super images-
314 59 Jeremy Barneron
  * -Send them to the IC-
315 2 Paul Carensac
316 2 Paul Carensac
h3. Routine Manager
317 2 Paul Carensac
318 2 Paul Carensac
 * Web
319 2 Paul Carensac
320 59 Jeremy Barneron
  * -Put the goods fields (for coordinates etc)-
321 59 Jeremy Barneron
  * -Only propose the objects that matches the conditions (ex: scientific programs of the user only)-
322 59 Jeremy Barneron
  * -Do all the needed checks-
323 59 Jeremy Barneron
  * -Add automatic computation of JD1/JD2-
324 59 Jeremy Barneron
  * -Add checkbox for JD / GD-
325 59 Jeremy Barneron
  * -Add options : copy my sequence on x days, and authorise report-
326 59 Jeremy Barneron
  * -Add ETC-IS simulation-
327 59 Jeremy Barneron
  * -Add help for new users (and for it the first time an account come on the page)-
328 2 Paul Carensac
 
329 2 Paul Carensac
 * Do more checks at unserialization
330 2 Paul Carensac
331 2 Paul Carensac
 * views
332 2 Paul Carensac
333 59 Jeremy Barneron
  * -When saving, do more checks on coordinates, jd1/2 etc-
334 59 Jeremy Barneron
  * -Uncomment filter for alerts removing-
335 59 Jeremy Barneron
  * -When submitting, use the monitoring to determine sequences status-
336 59 Jeremy Barneron
  * -When submitting, modify the first_schedule to False, when scheduling-
337 59 Jeremy Barneron
  * -When unsubmitting, uncomment the check for EXED and EXING removing-
338 59 Jeremy Barneron
  * -When unsubmitting, uncomment the scheduling and change the first_schedule to False-
339 2 Paul Carensac
340 2 Paul Carensac
341 2 Paul Carensac
h3. User Manager
342 2 Paul Carensac
343 59 Jeremy Barneron
 * -Password recovery-
344 59 Jeremy Barneron
 * -Profile page-
345 59 Jeremy Barneron
 * -User validation by administrator / commission-
346 59 Jeremy Barneron
 * -Handle permissions and access-
347 2 Paul Carensac
348 2 Paul Carensac
h3. Common
349 2 Paul Carensac
350 59 Jeremy Barneron
 * -Change the 'first_schedule' to False at the end of RequestBuilder.validate()-
351 32 Paul Carensac
352 32 Paul Carensac
h3. Devices
353 32 Paul Carensac
354 59 Jeremy Barneron
 * -When a socket connection fails (exception thrown), set the device to DISABLED (or that kind of status) in the DB, and create a system_pause task (majordome)-