##// END OF EJS Templates
Add 'reset pedestal' option
eynilupu -
r444:d8e453ba0459
parent child
Show More
@@ -39,6 +39,18 def pedestal_start(self, id_exp):
39 exp.pedestal.start_device(name_experiment=name)
39 exp.pedestal.start_device(name_experiment=name)
40 self.stdout.write(f'"{exp.name}" experiment: Pedestal acquisition was restarted')
40 self.stdout.write(f'"{exp.name}" experiment: Pedestal acquisition was restarted')
41
41
42 def pedestal_reset(self, id_exp):
43 all_status = Experiment.objects.filter(status=2)
44 check_id = False
45
46 if len(all_status) > 0:
47 check_id = all_status[0].pk
48
49 if check_id and check_id == id_exp:
50 exp = get_object_or_404(Experiment, pk=id_exp)
51 exp.pedestal.reset_device()
52 self.stdout.write(f'"{exp.name}" experiment: Pedestal acquisition is resetting')
53
42 def pedestal_stop(self, id_exp):
54 def pedestal_stop(self, id_exp):
43 all_status = Experiment.objects.filter(status=2)
55 all_status = Experiment.objects.filter(status=2)
44 check_id = False
56 check_id = False
@@ -49,7 +61,7 def pedestal_stop(self, id_exp):
49 if check_id and check_id == id_exp:
61 if check_id and check_id == id_exp:
50 exp = get_object_or_404(Experiment, pk=id_exp)
62 exp = get_object_or_404(Experiment, pk=id_exp)
51 exp.pedestal.stop_device()
63 exp.pedestal.stop_device()
52 self.stdout.write(f'"{exp.name}" experiment: Pedestal acquisition "{exp.name}" was stopped')
64 self.stdout.write(f'"{exp.name}" experiment: Pedestal acquisition was stopped')
53
65
54 def hdf5_list_content(get_file):
66 def hdf5_list_content(get_file):
55 table_records = np.array(get_file).tolist()
67 table_records = np.array(get_file).tolist()
@@ -180,8 +192,6 def restart_pedestal(self):
180
192
181 pedestal_stop(self, id_exp)
193 pedestal_stop(self, id_exp)
182 time.sleep(14)
194 time.sleep(14)
183 #pedestal_reset(self, id_exp)
184 #time.sleep(2)
185 pedestal_start(self, id_exp)
195 pedestal_start(self, id_exp)
186
196
187 else:
197 else:
@@ -190,10 +200,10 def restart_pedestal(self):
190 else:
200 else:
191 self.stdout.write(f'No file increment, retry')
201 self.stdout.write(f'No file increment, retry')
192
202
203 pedestal_reset(self, id_exp)
204 time.sleep(14)
193 pedestal_stop(self, id_exp)
205 pedestal_stop(self, id_exp)
194 time.sleep(14)
206 time.sleep(14)
195 #pedestal_reset(self, id_exp)
196 #time.sleep(2)
197 pedestal_start(self, id_exp)
207 pedestal_start(self, id_exp)
198
208
199 else:
209 else:
@@ -37,11 +37,15 def acquisition_start(self, id_exp):
37 name = '{}-R@{}'.format(exp.name, datetime.now().strftime('%Y-%m-%dT%H-%M-%S'))
37 name = '{}-R@{}'.format(exp.name, datetime.now().strftime('%Y-%m-%dT%H-%M-%S'))
38 exp.reception_rx.start_device(name_experiment = name, restart = True)
38 exp.reception_rx.start_device(name_experiment = name, restart = True)
39 self.stdout.write(f'"{exp.name}" experiment: Data acquisition was restarted')
39 self.stdout.write(f'"{exp.name}" experiment: Data acquisition was restarted')
40
40 self.stdout.write(f'Restarting schain...')
41 self.stdout.write(f'Restarting schain...')
42 datadir_exp = exp.reception_rx.datadir
43 datadir_exp = datadir_exp.replace(os.environ.get('EXPOSE_NAS', '/DATA_RM/DATA') + '/', '')
44 datadir_exp = datadir_exp.replace('/rawdata', '')
41
45
42 r = requests.get('http://'+os.environ.get('SCHAIN_SITE', 'sophy-schain')+'/stop')
46 r = requests.get('http://'+os.environ.get('SCHAIN_SITE', 'sophy-schain')+'/stop')
43 time.sleep(1)
47 time.sleep(1)
44 r = requests.post('http://'+os.environ.get('SCHAIN_SITE', 'sophy-schain')+'/start', json={'name': exp.name})
48 r = requests.post('http://'+os.environ.get('SCHAIN_SITE', 'sophy-schain')+'/start', json={'name': datadir_exp})
45
49
46 def acquisition_stop(self, id_exp):
50 def acquisition_stop(self, id_exp):
47 all_status = Experiment.objects.filter(status=2)
51 all_status = Experiment.objects.filter(status=2)
@@ -342,6 +342,8 class Experiment(PolymorphicModel):
342 time.sleep(0.1)
342 time.sleep(0.1)
343 self.reception_rx.stop_device()
343 self.reception_rx.stop_device()
344 time.sleep(0.1)
344 time.sleep(0.1)
345 self.pedestal.reset_device()
346 time.sleep(14)
345 self.pedestal.stop_device()
347 self.pedestal.stop_device()
346 time.sleep(0.1)
348 time.sleep(0.1)
347 proc_url = 'http://'+os.environ['PROC_SITE']+'/stop'
349 proc_url = 'http://'+os.environ['PROC_SITE']+'/stop'
@@ -118,7 +118,25 class PedestalConfiguration(Configuration):
118 self.device.save()
118 self.device.save()
119 return True
119 return True
120
120
121 def reset_device(self, axi, angle):
121 def reset_device(self):
122
123 try:
124 r = requests.get(self.device.url() + 'reset')
125
126 if r:
127 #self.device.status = 3
128 #self.device.save()
129 self.message = 'Pedestal restarted'
130 else:
131 return False
132
133 except Exception as e:
134 self.message = "Pedestal can't restarted: {}".format(str(e))
135 return False
136
137 return True
138
139 def initial_device(self, axi, angle):
122
140
123 try:
141 try:
124 url = self.device.url() + "position?params="
142 url = self.device.url() + "position?params="
@@ -153,12 +171,12 class PedestalConfiguration(Configuration):
153 if r:
171 if r:
154 self.device.status = 3
172 self.device.status = 3
155 self.device.save()
173 self.device.save()
156 self.message = 'Pedestal reset'
174 self.message = 'Pedestal - initial position'
157 else:
175 else:
158 return False
176 return False
159
177
160 except Exception as e:
178 except Exception as e:
161 self.message = 'Pedestal reset: {}'.format(str(e))
179 self.message = 'Pedestal - initial position: {}'.format(str(e))
162 return False
180 return False
163
181
164 return True
182 return True
@@ -173,7 +191,7 class PedestalConfiguration(Configuration):
173 AX = {'az':'azimuth', 'el':'elevation'}
191 AX = {'az':'azimuth', 'el':'elevation'}
174 axis = [AX[x.lower().strip()] for x in self.axis.split(',')]
192 axis = [AX[x.lower().strip()] for x in self.axis.split(',')]
175 list_of_floats = [float(x.strip()) for x in self.angle.split(",")]
193 list_of_floats = [float(x.strip()) for x in self.angle.split(",")]
176 self.reset_device(axis[0], list_of_floats[0])
194 self.initial_device(axis[0], list_of_floats[0])
177
195
178 if r:
196 if r:
179 self.device.status = 4
197 self.device.status = 4
@@ -293,4 +311,7 class PedestalConfiguration(Configuration):
293 return payload
311 return payload
294
312
295 def get_absolute_url_import(self):
313 def get_absolute_url_import(self):
296 return reverse('url_import_pedestal_conf', args=[str(self.id)]) No newline at end of file
314 return reverse('url_import_pedestal_conf', args=[str(self.id)])
315
316 def get_absolute_url_reset(self):
317 return reverse('url_reset_pedestal_conf', args=[str(self.id)]) No newline at end of file
@@ -3,6 +3,10
3 {% load bootstrap4 %}
3 {% load bootstrap4 %}
4 {% load main_tags %}
4 {% load main_tags %}
5
5
6 {% block extra-menu-actions %}
7 <li><a href="{{ dev_conf.get_absolute_url_reset }}"><span class="fas fa-spinner" aria-hidden="true"></span> Reset </a></li>
8 {% endblock %}
9
6 {% block content-detail %}
10 {% block content-detail %}
7
11
8 <h2>Pedestal</h2>
12 <h2>Pedestal</h2>
@@ -6,6 +6,7 urlpatterns = (
6 path('<int:conf_id>/', views.conf, name='url_pedestal_conf'),
6 path('<int:conf_id>/', views.conf, name='url_pedestal_conf'),
7 path('<int:conf_id>/import/', views.import_file, name='url_import_pedestal_conf'),
7 path('<int:conf_id>/import/', views.import_file, name='url_import_pedestal_conf'),
8 path('<int:conf_id>/edit/', views.conf_edit, name='url_edit_pedestal_conf'),
8 path('<int:conf_id>/edit/', views.conf_edit, name='url_edit_pedestal_conf'),
9 path('<int:conf_id>/reset/', views.conf_reset, name='url_reset_pedestal_conf'),
9 #url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_pedestal_conf'),
10 #url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_pedestal_conf'),
10 #url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_pedestal_conf'),
11 #url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_pedestal_conf'),
11 )
12 )
@@ -114,6 +114,18 def import_file(request, conf_id):
114
114
115 return render(request, 'pedestal_import.html', kwargs)
115 return render(request, 'pedestal_import.html', kwargs)
116
116
117 @login_required
118 def conf_reset(request, conf_id):
119
120 conf = get_object_or_404(PedestalConfiguration, pk=conf_id)
121
122 if conf.reset_device():
123 messages.success(request, conf.message)
124 else:
125 messages.error(request, conf.message)
126
127 return redirect(conf.get_absolute_url())
128
117 def conf_raw(request, conf_id):
129 def conf_raw(request, conf_id):
118 conf = get_object_or_404(PedestalConfiguration, pk=conf_id)
130 conf = get_object_or_404(PedestalConfiguration, pk=conf_id)
119 raw = conf.write_device(raw=True)
131 raw = conf.write_device(raw=True)
General Comments 0
You need to be logged in to leave comments. Login now