Pyros applications

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