def gravity_log_create(request, sensor_id): # TODO - Add user permissioning # if not request.user.has_perm('app.add_beer'): # messages.error(request, 'Your account is not permissioned to add gravity logs. Please contact an admin') # return redirect("/") # This view is only intended to process data posted, generally from gravity_dashboard. Redirect to the dashboard # if we are accessed directly without post data. if request.POST: form = forms.GravityLogCreateForm(request.POST) if form.is_valid(): new_log, created = GravityLog.objects.get_or_create(name=form.cleaned_data['log_name'], device=form.cleaned_data['device']) if created: # If we just created the log, set the temp format (otherwise, defaults to Fahrenheit) new_log.format = form.cleaned_data['device'].temp_format new_log.save() messages.success(request, u"Successfully created log '{}'.<br>Graph will not appear until the first log points \ have been collected. You will need to refresh the page for it to \ appear.".format(form.cleaned_data['log_name'])) else: messages.success(request, u"Log {} already exists - assigning to device".format(form.cleaned_data['log_name'])) if form.cleaned_data['device'].active_log != new_log: form.cleaned_data['device'].active_log = new_log form.cleaned_data['device'].save() else: messages.error(request, "<p>Unable to create log</p> %s" % form.errors['__all__']) # In all cases, redirect to device dashboard return redirect('gravity_dashboard', sensor_id=sensor_id)
def gravity_dashboard(request, sensor_id, log_id=None): try: active_device = GravitySensor.objects.get(id=sensor_id) except: messages.error( request, u"Unable to load gravity sensor with ID {}".format(sensor_id)) return redirect('gravity_list') log_create_form = forms.GravityLogCreateForm() manual_add_form = forms.ManualPointForm() if log_id is None: active_log = active_device.active_log or None available_logs = GravityLog.objects.filter( device_id=active_device.id ) # TODO - Do I want to exclude the active log? else: try: active_log = GravityLog.objects.get(id=log_id, device_id=active_device.id) except: # If we are given an invalid log ID, let's return an error & drop back to the (valid) dashboard messages.error(request, u'Unable to load log with ID {}'.format(log_id)) return redirect('gravity_dashboard', sensor_id=sensor_id) available_logs = GravityLog.objects.filter( device_id=active_device.id).exclude(id=log_id) if active_log is None: # TODO - Determine if we want to load some fake "example" data (similar to what brewpi-www does) log_file_url = "/data/gravity_fake.csv" else: log_file_url = active_log.data_file_url('base_csv') return render(request, template_name="gravity/gravity_dashboard.html", context={ 'active_device': active_device, 'log_create_form': log_create_form, 'active_log': active_log, 'temp_display_format': config.DATE_TIME_FORMAT_DISPLAY, 'column_headers': GravityLog.column_headers_to_graph_string('base_csv'), 'log_file_url': log_file_url, 'available_logs': available_logs, 'selected_log_id': log_id, 'manual_add_form': manual_add_form })
def gravity_dashboard(request, sensor_id, log_id=None): try: active_device = GravitySensor.objects.get(id=sensor_id) except ObjectDoesNotExist: messages.error(request, u"Unable to load gravity sensor with ID {}".format(sensor_id)) return redirect('gravity_list') if active_device.sensor_type == GravitySensor.SENSOR_TILT: if not bluetooth_loaded and active_device.tilt_configuration.connection_type == TiltConfiguration.CONNECTION_BLUETOOTH: messages.warning(request, 'Bluetooth packages for python have not been installed. Tilt support will not work. ' 'Click <a href=\"http://www.fermentrack.com/help/bluetooth/\">here</a> to learn how ' 'to resolve this issue.') log_create_form = forms.GravityLogCreateForm() manual_add_form = forms.ManualPointForm() if log_id is None: active_log = active_device.active_log or None available_logs = GravityLog.objects.filter(device_id=active_device.id) # TODO - Do I want to exclude the active log? else: try: active_log = GravityLog.objects.get(id=log_id, device_id=active_device.id) except ObjectDoesNotExist: # If we are given an invalid log ID, let's return an error & drop back to the (valid) dashboard messages.error(request, u'Unable to load log with ID {}'.format(log_id)) return redirect('gravity_dashboard', sensor_id=sensor_id) available_logs = GravityLog.objects.filter(device_id=active_device.id).exclude(id=log_id) if active_log is None: # TODO - Determine if we want to load some fake "example" data (similar to what brewpi-www does) log_file_url = "/data/gravity_fake.csv" else: log_file_url = active_log.data_file_url('base_csv') return render(request, template_name="gravity/gravity_dashboard.html", context={'active_device': active_device, 'log_create_form': log_create_form, 'active_log': active_log, 'temp_display_format': config.DATE_TIME_FORMAT_DISPLAY, 'column_headers': GravityLog.column_headers_to_graph_string('base_csv'), 'log_file_url': log_file_url, 'available_logs': available_logs, 'selected_log_id': log_id, 'manual_add_form': manual_add_form})