Pyros applications

Version 56 (Paul Carensac, 07/18/2016 11:00 am)

1 1 Paul Carensac
h1. Pyros applications
2 1 Paul Carensac
3 2 Paul Carensac
List and details of all the pyros applications.
4 2 Paul Carensac
5 17 Paul Carensac
{{>toc}}
6 17 Paul Carensac
7 2 Paul Carensac
---
8 2 Paul Carensac
9 2 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}pyrosapp%
10 2 Paul Carensac
11 3 Paul Carensac
h3. Purpose
12 2 Paul Carensac
13 2 Paul Carensac
 * Contains all the database Models
14 2 Paul Carensac
 * Basic tests in tests.py
15 2 Paul Carensac
 * Backoffice configuration in admin.py
16 2 Paul Carensac
17 3 Paul Carensac
h3. Notes
18 2 Paul Carensac
19 2 Paul Carensac
20 2 Paul Carensac
---
21 2 Paul Carensac
22 2 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}dashboard%
23 2 Paul Carensac
24 3 Paul Carensac
h3. Purpose
25 2 Paul Carensac
26 2 Paul Carensac
 * Interface for all external users
27 2 Paul Carensac
 * Leads to displays and actions for all the pyros modules (users, requests, system execution, ...)
28 2 Paul Carensac
29 4 Paul Carensac
h3. Evolution
30 4 Paul Carensac
31 4 Paul Carensac
 * Creating application
32 4 Paul Carensac
33 4 Paul Carensac
    * manage.py startapp dashboard
34 5 Paul Carensac
    * added 'dashboard' in settings.py -> INSTALLED_APPS
35 5 Paul Carensac
    * created a urls.py file in dashboard module
36 5 Paul Carensac
    * added _url(r'^dashboard/', include('dashboard.urls'))_ in pyros/urls.py -> urlpatterns
37 5 Paul Carensac
    * created templates/ and templates/dashboard/ folders in dashboard module
38 5 Paul Carensac
39 5 Paul Carensac
 * Main page
40 5 Paul Carensac
41 5 Paul Carensac
    * added 'home' view in views.py
42 5 Paul Carensac
    * linked 'home' view to 8000/dashboard URL
43 5 Paul Carensac
    * created a template for the homepage in templates/dashboard/ (with bootstrap)
44 5 Paul Carensac
    * created views, views linking (urls.py) and templates for the dashboard modules
45 5 Paul Carensac
    * redirected mainpage buttons to Admin interface (temporary)
46 4 Paul Carensac
47 22 Paul Carensac
 * System page (logs)
48 22 Paul Carensac
49 22 Paul Carensac
    * Retrieve logs from the db
50 26 Paul Carensac
    * Print logs and automatically update every second via an ajax request
51 22 Paul Carensac
52 3 Paul Carensac
h3. Notes
53 2 Paul Carensac
54 2 Paul Carensac
 * The buttons lead to the Admin interface for the moment
55 7 Paul Carensac
 * Added bootstrap3 module (see Installation)
56 7 Paul Carensac
 * Added Django Template Editor (see Eclipse configuration)
57 2 Paul Carensac
58 3 Paul Carensac
h3. TODO
59 2 Paul Carensac
60 2 Paul Carensac
 * Create the backoffice views as the modules are integrated in pyros
61 2 Paul Carensac
 * Think about a system of permissions
62 2 Paul Carensac
63 2 Paul Carensac
---
64 8 Paul Carensac
65 8 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}scheduler%
66 8 Paul Carensac
67 8 Paul Carensac
h3. Purpose
68 8 Paul Carensac
69 8 Paul Carensac
 * Creates the planning with the OBSERVABLE sequences
70 40 Paul Carensac
 * Give access to a web page to see the current & old plannings
71 8 Paul Carensac
72 8 Paul Carensac
h3. Evolution
73 8 Paul Carensac
74 8 Paul Carensac
 * Creating application
75 8 Paul Carensac
76 8 Paul Carensac
    * manage.py startapp scheduler
77 8 Paul Carensac
    * added 'scheduler' in settings.py -> INSTALLED_APPS
78 8 Paul Carensac
    * created a urls.py file in scheduler module
79 8 Paul Carensac
    * added _url(r'^scheduler/', include('scheduler.urls'))_ in pyros/urls.py -> urlpatterns
80 8 Paul Carensac
    * created templates/ and templates/scheduler/ folders in scheduler module
81 8 Paul Carensac
82 9 Paul Carensac
 * Model modifications
83 1 Paul Carensac
84 9 Paul Carensac
    * Schedule
85 9 Paul Carensac
86 9 Paul Carensac
        * Remove day_start
87 9 Paul Carensac
        * Remove day_stop
88 9 Paul Carensac
        * Add plan_start
89 13 Paul Carensac
        * Add plan_end
90 9 Paul Carensac
        * Enum system for the status 
91 9 Paul Carensac
    * ScheduleHistory
92 9 Paul Carensac
93 9 Paul Carensac
        * Remove day_start
94 9 Paul Carensac
        * Remove day_stop
95 9 Paul Carensac
        * Add plan_start
96 13 Paul Carensac
        * Add plan_end
97 9 Paul Carensac
    * Sequence
98 9 Paul Carensac
99 9 Paul Carensac
        * Remove exec_start
100 9 Paul Carensac
        * Remove exec_stop
101 9 Paul Carensac
        * Add tsp
102 9 Paul Carensac
        * Add tep
103 9 Paul Carensac
        * Add jd1
104 9 Paul Carensac
        * Add jd2
105 9 Paul Carensac
        * Add deltaTL
106 9 Paul Carensac
        * Add deltaTR
107 9 Paul Carensac
        * Add t_prefered
108 9 Paul Carensac
        * Changed duration from Float to DecimalField (more precise)
109 15 Paul Carensac
        * Add overhead
110 15 Paul Carensac
111 10 Paul Carensac
    * manage.py makemigrations sheduler ; manage.py migrate
112 10 Paul Carensac
113 10 Paul Carensac
 * Creation of Scheduler and Interval classes in models.py
114 10 Paul Carensac
115 10 Paul Carensac
 * Implementation of the Interval class
116 10 Paul Carensac
117 12 Paul Carensac
 * Implementation of the Scheduler's 'make_schedule' function (and children). This is the only entry point for now. This function creates the planning (organizes the observable sequences).
118 9 Paul Carensac
119 14 Paul Carensac
 * Creation of the web interface
120 14 Paul Carensac
121 14 Paul Carensac
    * Added current_schedule.html in template/scheduler folder
122 14 Paul Carensac
    * Created view and url linking to this template (with current planning retrieving)
123 14 Paul Carensac
124 14 Paul Carensac
 * Creation of the simulator
125 14 Paul Carensac
126 14 Paul Carensac
    * Created a second entry point in the Scheduler class (with a few minor adaptations to handle SIMULATION mode)
127 14 Paul Carensac
    * Created a simulator module in the scheduler
128 14 Paul Carensac
        
129 14 Paul Carensac
        * Added the MyHTMLParser class (easy implementation of HTMLParser)
130 23 Paul Carensac
        * Added Simulator class. It parses a file given in parametr to retrieve sequences and create a schedule
131 14 Paul Carensac
    * Created a second view linked to schedule/simulation to show simulation results
132 1 Paul Carensac
 
133 29 Paul Carensac
 * Supression du système d'agent et ajout de la tâche (celery) de scheduling
134 29 Paul Carensac
135 23 Paul Carensac
 * Main update 19/05/2016 : overheads & historic system
136 23 Paul Carensac
137 23 Paul Carensac
    * Deleted ScheduleHistory
138 23 Paul Carensac
    * Transformed the Sequence - Schedule relation to ManyToMany
139 23 Paul Carensac
    * Moved the scheduling information into the M2M relationship class (shs = ScheduleHasSequences)
140 23 Paul Carensac
    * Added a static overhead into scheduling (can be set from the calling code, through scheduler.max_overhead = blabla(float))
141 23 Paul Carensac
142 23 Paul Carensac
h3. Tests
143 23 Paul Carensac
144 30 Paul Carensac
 * Some tests in test.py to test the different functionalities of the scheduler. These tests include the simulation.
145 24 Paul Carensac
 * A simulator at localhost:8000/scheduler/simulation, taking sequences from scheduler/sequences_cador.html
146 24 Paul Carensac
147 8 Paul Carensac
h3. Notes
148 1 Paul Carensac
149 1 Paul Carensac
 * Priorities and quotas are default-calculated (for the moment)
150 9 Paul Carensac
 * What is the 'flag' attribute in the Schedule model ?
151 1 Paul Carensac
152 9 Paul Carensac
h3. TODO
153 13 Paul Carensac
154 38 Paul Carensac
 * views
155 39 Paul Carensac
156 38 Paul Carensac
  * Link the main page to the current schedule instead of the simulation page
157 38 Paul Carensac
  * Show user sequences in the schedules (with links)
158 38 Paul Carensac
  * Give accces to old schedules (day / days before / all end-night plannings / all plannings)
159 38 Paul Carensac
  * Give access to the refused sequences of a schedule, and the reasons of rejects
160 39 Paul Carensac
161 38 Paul Carensac
 * scheduler
162 39 Paul Carensac
163 38 Paul Carensac
  * Change the system to determine night start/end (they must be given in parameter, only if first_schedule is True)
164 55 Paul Carensac
  * Store the reasons of rejects (create a new attribute, in shs ?)
165 38 Paul Carensac
  * What is the 'flag' attribute ? (@AK)
166 38 Paul Carensac
  * Do not create the execute_sequence tasks if it's not the night (- 120 seconds)
167 38 Paul Carensac
  * Priority and quota computing
168 38 Paul Carensac
  * Quotas evolution
169 38 Paul Carensac
  * Blank space filling
170 38 Paul Carensac
  * At the end of a scheduling send, it to the IC ?
171 18 Paul Carensac
172 18 Paul Carensac
---
173 18 Paul Carensac
174 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}alert_manager%
175 18 Paul Carensac
176 18 Paul Carensac
h3. Purpose
177 18 Paul Carensac
178 18 Paul Carensac
 * Listen to VOEvent network
179 18 Paul Carensac
 * Sort interesting events
180 18 Paul Carensac
 * Create requests according to these events
181 18 Paul Carensac
 * Manage the requests created via the alerts
182 35 Paul Carensac
 * Change the observation strategies for alerts
183 18 Paul Carensac
184 18 Paul Carensac
h3. Evolution
185 18 Paul Carensac
186 18 Paul Carensac
 * Creating application
187 18 Paul Carensac
188 18 Paul Carensac
    * See scheduler documentation above
189 18 Paul Carensac
190 18 Paul Carensac
 * Implementation of the agent system
191 18 Paul Carensac
192 18 Paul Carensac
    * Created agent.py whith a "class AlertManagerAgent(Agent):" inside
193 18 Paul Carensac
    * Overriding agent's 'work' and 'shutdown' method
194 18 Paul Carensac
    * Added message(s) to agent.actions_by_message dictionnary, with the functions associated to these messages
195 18 Paul Carensac
    * Added the Agent's launch system in apps.py
196 18 Paul Carensac
 
197 18 Paul Carensac
 * Implementation of the VOEventListener Thread
198 18 Paul Carensac
199 18 Paul Carensac
    * Created a "class VOEventListener(Thread):" in agent.py
200 18 Paul Carensac
    * Overriding the run method
201 18 Paul Carensac
202 28 Paul Carensac
 * 19/05/2016 : deleted the agent system (deleted from the applications below too)
203 1 Paul Carensac
204 27 Paul Carensac
 * Added some VOEvents in events_to_send
205 27 Paul Carensac
206 27 Paul Carensac
 * Installed Comet (see in [[Technical components]] section)
207 1 Paul Carensac
208 28 Paul Carensac
 * Created 2 celery tasks in tesks.py : alert_listener and change_obs_strategy
209 28 Paul Carensac
 
210 28 Paul Carensac
 * Added alert_listener launch at server start
211 28 Paul Carensac
212 28 Paul Carensac
 * Implemented alert_listener : it waits for an event file to be created in events_received, then read it and creates a request
213 28 Paul Carensac
214 28 Paul Carensac
 * Added a simulator system ( see section Tests below )
215 28 Paul Carensac
216 35 Paul Carensac
 * Added the strategy_change page
217 35 Paul Carensac
218 45 Paul Carensac
 * Removed launching at start : it is now started by the monitoring task
219 45 Paul Carensac
220 28 Paul Carensac
h3. Tests
221 28 Paul Carensac
222 28 Paul Carensac
 * Simulator : 
223 28 Paul Carensac
224 28 Paul Carensac
  * You first need to set settings.SIMULATION to True (in pyros/settings.py)
225 28 Paul Carensac
  * Start celery workers (scripts/start_celery_workers.sh)
226 28 Paul Carensac
  * Start server (manage.py runserver)
227 28 Paul Carensac
  * Go to localhost:8000/alert_manager/simulation, and press the button !
228 28 Paul Carensac
  * This will read into the simulation_sequences file.
229 28 Paul Carensac
230 41 Paul Carensac
 * Test AlertListenerTestsCelery.test_alert_reception :
231 28 Paul Carensac
232 28 Paul Carensac
  * Tests if the alert_listener is working well.
233 28 Paul Carensac
  * +Be careful :+ this will act on the production database, and will start the entire alert workflow
234 1 Paul Carensac
  * To start it : script/celery_test.sh alert_manager
235 41 Paul Carensac
236 41 Paul Carensac
 * Tests TestStrategyChange.* :
237 41 Paul Carensac
  * Test the changing of the observation strategy with errors and different parameters
238 28 Paul Carensac
239 27 Paul Carensac
h3. Notes
240 1 Paul Carensac
241 28 Paul Carensac
 * The request created by alert_listener is hard-coded
242 28 Paul Carensac
243 1 Paul Carensac
h3. TODO
244 28 Paul Carensac
245 42 Paul Carensac
 * Web :
246 42 Paul Carensac
247 42 Paul Carensac
  * Print if there is an alert in progress in the main page
248 42 Paul Carensac
  * Link the alerts to their status and results
249 42 Paul Carensac
250 42 Paul Carensac
 * Connect to a real VOEvent broker
251 42 Paul Carensac
252 42 Paul Carensac
 * Determine the communication with FSC for strategy change
253 42 Paul Carensac
254 42 Paul Carensac
 * VOEvents :
255 42 Paul Carensac
256 42 Paul Carensac
  * Extract the good fields (see AK Q&A 07/01/2016)
257 42 Paul Carensac
  * Fill the request & alerts objects
258 42 Paul Carensac
  * Use strategies to build a request
259 56 Paul Carensac
  * Possibility to change the default strategy
260 42 Paul Carensac
  * Handle VOEvent updates
261 42 Paul Carensac
  * Be careful to not create 2 alerts for a same GRB, seen by 2 different satellites 
262 18 Paul Carensac
263 18 Paul Carensac
---
264 18 Paul Carensac
265 20 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}analyzer%
266 18 Paul Carensac
267 18 Paul Carensac
h3. Purpose
268 18 Paul Carensac
269 36 Paul Carensac
 * Apply calibration files to the images taken by the observation manager
270 36 Paul Carensac
 * Analyze the images produced by the calibrations
271 18 Paul Carensac
272 18 Paul Carensac
h3. Evolution
273 18 Paul Carensac
274 18 Paul Carensac
 * Creating application
275 18 Paul Carensac
276 18 Paul Carensac
    * See scheduler documentation above
277 18 Paul Carensac
278 43 Paul Carensac
 * Implemented the skeleton of the module in the task Analysis (call  a function for calibrations then a function for analyses)
279 1 Paul Carensac
280 1 Paul Carensac
h3. Notes
281 1 Paul Carensac
282 36 Paul Carensac
h3. TODO
283 43 Paul Carensac
284 43 Paul Carensac
 * Apply the calibrations in the right function
285 43 Paul Carensac
 * Apply the analyses only if it's a GRB
286 43 Paul Carensac
 * Implement the analyses
287 43 Paul Carensac
 * Send analyses to FSC
288 18 Paul Carensac
289 18 Paul Carensac
---
290 18 Paul Carensac
291 19 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}majordome%
292 18 Paul Carensac
293 18 Paul Carensac
h3. Purpose
294 18 Paul Carensac
295 44 Paul Carensac
 * Handles the execution of the sequences in the right order during the night
296 44 Paul Carensac
 * Handles the system start & stop
297 44 Paul Carensac
 * Handles the changes of observation conditions
298 46 Paul Carensac
 * Stops the celery tasks when needed
299 44 Paul Carensac
300 18 Paul Carensac
h3. Evolution
301 18 Paul Carensac
302 21 Paul Carensac
 * Creating application
303 1 Paul Carensac
304 46 Paul Carensac
  * See scheduler documentation above
305 21 Paul Carensac
306 46 Paul Carensac
  * Created all the tasks in tasks.py
307 21 Paul Carensac
308 46 Paul Carensac
  * Created the TaskManager to stop the sequence & plan executions when an alert / routine is received
309 21 Paul Carensac
310 46 Paul Carensac
  * Implemented execute_sequence (not finished)
311 1 Paul Carensac
312 1 Paul Carensac
h3. Notes
313 1 Paul Carensac
314 1 Paul Carensac
h3. TODO
315 46 Paul Carensac
316 46 Paul Carensac
 * TaskManager
317 46 Paul Carensac
318 46 Paul Carensac
  * When a sequence is cancelled, give back the quota to the user
319 46 Paul Carensac
  * In case of alert, do not stop the ongoing plan, and make the instruments abort
320 46 Paul Carensac
321 46 Paul Carensac
 * execute_sequence
322 46 Paul Carensac
323 46 Paul Carensac
  * Add the PLC checks at start (to see if we do the slew)
324 46 Paul Carensac
  * Use the global telescope (instead of creating one here)
325 46 Paul Carensac
  * Give first_schedule as false when a scheduling is launched
326 46 Paul Carensac
  * Remove the default countdown (1, for tests)
327 46 Paul Carensac
328 46 Paul Carensac
 * system_pause
329 46 Paul Carensac
330 46 Paul Carensac
  * Abort the isntruments
331 46 Paul Carensac
  * Stop the execution tasks
332 46 Paul Carensac
333 46 Paul Carensac
 * system_restart
334 46 Paul Carensac
335 46 Paul Carensac
  * Start a scheduling
336 46 Paul Carensac
337 46 Paul Carensac
 * change_obs_conditions
338 46 Paul Carensac
339 46 Paul Carensac
  * Change sequences status (if  needed)
340 46 Paul Carensac
  * If some status changed, re-launch a scheduling
341 18 Paul Carensac
342 18 Paul Carensac
---
343 18 Paul Carensac
344 19 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}monitoring%
345 18 Paul Carensac
346 18 Paul Carensac
h3. Purpose
347 18 Paul Carensac
348 47 Paul Carensac
 * It is the only tasks launched at the system's start
349 47 Paul Carensac
 * Make all the starting actions : instruments configuration, connection to the PLC, updating software versions, determine night start/end & start a scheduling
350 47 Paul Carensac
 * Starts the alert_listener
351 47 Paul Carensac
 * Infinite loop to regularly check the instruments and PLC status (and send them to the IC)
352 47 Paul Carensac
 * Handles night start & end
353 47 Paul Carensac
354 18 Paul Carensac
h3. Evolution
355 18 Paul Carensac
356 1 Paul Carensac
 * Creating application
357 21 Paul Carensac
358 1 Paul Carensac
    * See scheduler documentation above
359 1 Paul Carensac
360 47 Paul Carensac
 * System to launch the task at the system's start
361 1 Paul Carensac
362 47 Paul Carensac
 * Implement skeleton of task
363 1 Paul Carensac
364 47 Paul Carensac
 * Implement starting actions (with some empty functions)
365 47 Paul Carensac
366 47 Paul Carensac
 * Main loop to check PLC, instruments and night start / end (not finished)
367 18 Paul Carensac
 
368 18 Paul Carensac
h3. Notes
369 18 Paul Carensac
370 18 Paul Carensac
h3. TODO
371 18 Paul Carensac
372 48 Paul Carensac
 * views
373 48 Paul Carensac
374 48 Paul Carensac
  * Move the dashboard here
375 48 Paul Carensac
  * Print the instrument status
376 48 Paul Carensac
  * Print PLC informations (with the evolution)
377 48 Paul Carensac
  * In the dashboard screens, put scroll on each screen to see the old logs
378 48 Paul Carensac
379 48 Paul Carensac
 * Monitoring task
380 48 Paul Carensac
 
381 48 Paul Carensac
  * Uncomment the scheduling at the beginning
382 48 Paul Carensac
  * Implement night start/end computation
383 48 Paul Carensac
  * Initialize communication with the instruments
384 48 Paul Carensac
  * Configure intruments at start
385 48 Paul Carensac
  * Send software versions to the IC
386 48 Paul Carensac
  * Initialize connection with PLC
387 48 Paul Carensac
  * After the starting actions, loop to wait for the instruments configuration to be finished
388 48 Paul Carensac
  * Ask PLC for status
389 48 Paul Carensac
  * Ask filter wheel for status
390 48 Paul Carensac
  * Store the instruments & PLC status
391 48 Paul Carensac
  * Send all status to IC
392 48 Paul Carensac
  * Analyse PLC status (obs conditions, ...)
393 48 Paul Carensac
  * Create tasks of obs condition changes
394 48 Paul Carensac
395 19 Paul Carensac
---
396 18 Paul Carensac
397 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}observation_manager%
398 18 Paul Carensac
399 18 Paul Carensac
h3. Purpose
400 18 Paul Carensac
401 49 Paul Carensac
 * Give orders the instruments to execute the plans
402 49 Paul Carensac
 * Take the calibration images and computes the 'super' calibration images
403 49 Paul Carensac
404 18 Paul Carensac
h3. Evolution
405 1 Paul Carensac
406 18 Paul Carensac
 * Creating application
407 1 Paul Carensac
408 21 Paul Carensac
    * See scheduler documentation above
409 1 Paul Carensac
410 49 Paul Carensac
 * Created the tasks : execute_plan_(nir/vis) & create_calibrations
411 1 Paul Carensac
412 49 Paul Carensac
 * Implemented the execute_plan tasks with some incomplete functions
413 1 Paul Carensac
 
414 1 Paul Carensac
h3. Notes
415 1 Paul Carensac
416 1 Paul Carensac
h3. TODO
417 49 Paul Carensac
418 49 Paul Carensac
 * execute_plan :
419 49 Paul Carensac
420 49 Paul Carensac
  * Use the cameras at a global level instead of creating them here (same for the filter wheels)
421 49 Paul Carensac
  * Uncomment the instruments_ready waiting function
422 49 Paul Carensac
  * Uncomment the observation_ending waiting function
423 49 Paul Carensac
  * Try to remove code duplication
424 49 Paul Carensac
  * Determine what needs to be done at the end of an observation
425 49 Paul Carensac
426 49 Paul Carensac
 * create_calibrations :
427 49 Paul Carensac
428 49 Paul Carensac
  * Make the calibration images
429 49 Paul Carensac
  * Generate super images
430 49 Paul Carensac
  * Send them to the IC
431 18 Paul Carensac
432 18 Paul Carensac
---
433 18 Paul Carensac
434 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}routine_manager%
435 18 Paul Carensac
436 18 Paul Carensac
h3. Purpose
437 18 Paul Carensac
438 50 Paul Carensac
 * Enables astronomers to create routines via the website
439 50 Paul Carensac
 * Import / export of routines (XML)
440 50 Paul Carensac
 * Display observation results for routines
441 50 Paul Carensac
442 18 Paul Carensac
h3. Evolution
443 18 Paul Carensac
444 18 Paul Carensac
 * Creating application
445 18 Paul Carensac
446 18 Paul Carensac
    * See scheduler documentation above
447 18 Paul Carensac
448 50 Paul Carensac
 * Created forms online for routine creation
449 50 Paul Carensac
450 50 Paul Carensac
 * Added import / export
451 50 Paul Carensac
452 50 Paul Carensac
 * Added routine submit / unsubmit
453 18 Paul Carensac
 
454 52 Paul Carensac
h3. Tests
455 52 Paul Carensac
456 52 Paul Carensac
 * Import fake file
457 52 Paul Carensac
 * Import invalid file
458 52 Paul Carensac
 * Import good file
459 52 Paul Carensac
 * Export incomplete
460 52 Paul Carensac
 * Export valid
461 52 Paul Carensac
462 18 Paul Carensac
h3. Notes
463 18 Paul Carensac
464 19 Paul Carensac
h3. TODO
465 50 Paul Carensac
466 51 Paul Carensac
 * Web
467 50 Paul Carensac
468 51 Paul Carensac
  * Put the goods fields (for coordinates etc)
469 51 Paul Carensac
  * Only propose the objects that matches the conditions (ex: scientific programs of the user only)
470 51 Paul Carensac
  * Do all the needed checks
471 51 Paul Carensac
  * Add automatic computation of JD1/JD2
472 51 Paul Carensac
  * Add checkbox for JD / GD
473 51 Paul Carensac
  * Add options : copy my sequence on x days, and authorise report
474 51 Paul Carensac
  * Add ETC-IS simulation
475 51 Paul Carensac
  * Add help for new users (and for it the first time an account come on the page)
476 51 Paul Carensac
 
477 51 Paul Carensac
 * Do more checks at unserialization
478 51 Paul Carensac
479 51 Paul Carensac
 * views
480 51 Paul Carensac
481 51 Paul Carensac
  * When saving, do more checks on coordinates, jd1/2 etc
482 51 Paul Carensac
  * Uncomment filter for alerts removing
483 51 Paul Carensac
  * When submitting, use the monitoring to determine sequences status
484 51 Paul Carensac
  * When submitting, modify the first_schedule to False, when scheduling
485 51 Paul Carensac
  * When unsubmitting, uncomment the check for EXED and EXING removing
486 51 Paul Carensac
  * When unsubmitting, uncomment the scheduling and change the first_schedule to False
487 18 Paul Carensac
488 18 Paul Carensac
---
489 18 Paul Carensac
490 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}user_manager%
491 18 Paul Carensac
492 31 Paul Carensac
h3. Purpose
493 31 Paul Carensac
494 31 Paul Carensac
 * Handle user create / delete / login / logout
495 18 Paul Carensac
 * Allow to see user profile and make password recovery
496 18 Paul Carensac
497 18 Paul Carensac
h3. Evolution
498 18 Paul Carensac
499 18 Paul Carensac
 * Creating application
500 18 Paul Carensac
501 32 Paul Carensac
    * See scheduler documentation above
502 32 Paul Carensac
503 32 Paul Carensac
 * Taking and adapting templates from Alexandru project
504 32 Paul Carensac
505 32 Paul Carensac
 * User creation
506 33 Paul Carensac
507 33 Paul Carensac
  * Form in admin.py
508 33 Paul Carensac
  * Functions to verify if email doesn't exist and if passwords match
509 18 Paul Carensac
  * Added check to pass login page if user is already autheticated
510 18 Paul Carensac
  * Restricted access to all pyros views to authenticated users (except from user creation and login) with @login_required
511 18 Paul Carensac
 
512 53 Paul Carensac
h3. Tests
513 53 Paul Carensac
514 53 Paul Carensac
 * Creation
515 53 Paul Carensac
 * Login
516 53 Paul Carensac
 * wrong email
517 53 Paul Carensac
 * wrong password
518 53 Paul Carensac
 * logout
519 53 Paul Carensac
520 18 Paul Carensac
h3. Notes
521 31 Paul Carensac
522 31 Paul Carensac
h3. TODO
523 31 Paul Carensac
524 31 Paul Carensac
 * Password recovery
525 18 Paul Carensac
 * Profile page
526 18 Paul Carensac
 * User validation by administrator / commission
527 53 Paul Carensac
 * Handle permissions and access
528 53 Paul Carensac
529 18 Paul Carensac
530 20 Paul Carensac
---
531 18 Paul Carensac
532 18 Paul Carensac
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}common%
533 18 Paul Carensac
534 18 Paul Carensac
h3. Purpose
535 18 Paul Carensac
536 18 Paul Carensac
 * Regroups common data and functions shared by applications
537 18 Paul Carensac
538 25 Paul Carensac
h3. Content
539 18 Paul Carensac
540 25 Paul Carensac
 * RequestBuilder - class to build and save in DB the requests
541 25 Paul Carensac
542 25 Paul Carensac
  * You can start a request, then add sequences, albums and plans, given their parent class (ex: you need to give a sequence id to create an album)
543 18 Paul Carensac
  * Each function returns the ID of the element it created (to give it to the children classes)
544 18 Paul Carensac
  * To save a request, you need to use validate_request
545 54 Paul Carensac
546 54 Paul Carensac
 * Device and children
547 54 Paul Carensac
548 54 Paul Carensac
  * Implementation of devices communication, messages and initialization
549 54 Paul Carensac
  * All classes inherit from the Device class
550 54 Paul Carensac
  * All classes re-implement the list of messages
551 25 Paul Carensac
 
552 54 Paul Carensac
h3. Tests
553 54 Paul Carensac
554 54 Paul Carensac
 * Test the creation of a full request by the RequestBuilder
555 54 Paul Carensac
556 25 Paul Carensac
h3. Notes
557 18 Paul Carensac
558 18 Paul Carensac
 * Will probably contain the DB models at last ...
559 1 Paul Carensac
560 1 Paul Carensac
h3. TODO
561 54 Paul Carensac
562 54 Paul Carensac
 * Network communication for every instrument
563 54 Paul Carensac
 * Change the 'first_schedule' to False at the end of RequestBuilder.validate()