def dashboard_add(): """Add a dashboard""" error = [] last_dashboard = Dashboard.query.order_by( Dashboard.id.desc()).first() new_dash = Dashboard() new_dash.name = '{} {}'.format(TRANSLATIONS['dashboard']['title'], last_dashboard.id + 1) if not error: new_dash.save() flash(gettext( "Dashboard with ID %(id)s successfully added", id=new_dash.id), "success") return new_dash.unique_id
except Exception: msg = "ERROR: post-alembic revision {}: {}".format( each_revision, traceback.format_exc()) error.append(msg) print(msg) elif each_revision == '55aca47c2362': print("Executing post-alembic code for revision {}".format( each_revision)) try: from mycodo.databases.models import Widget from mycodo.databases.models import Dashboard with session_scope(MYCODO_DB_PATH) as session: new_dash = Dashboard() new_dash.name = 'Default Dashboard' session.add(new_dash) for each_widget in session.query(Widget).all(): each_widget.dashboard_id = new_dash.unique_id session.commit() if not error: session.commit() else: for each_error in error: print("Error: {}".format(each_error)) except Exception: msg = "ERROR: post-alembic revision {}: {}".format( each_revision, traceback.format_exc()) error.append(msg)
def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format(action=gettext("Add"), controller=gettext("Dashboard")) error = [] dashboard_type = '' new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_base.width.data and form_base.height.data and form_object.xaxis_duration.data and form_base.refresh_duration.data)): dashboard_type = 'Graph' error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: math_ids_joined = ";".join(form_object.math_ids.data) new_graph.math_ids = math_ids_joined if form_object.pid_ids.data: pid_ids_joined = ";".join(form_object.pid_ids.data) new_graph.pid_ids = pid_ids_joined if form_object.output_ids.data: output_ids_joined = ";".join(form_object.output_ids.data) new_graph.output_ids = output_ids_joined if form_object.input_ids.data: input_ids_joined = ";".join(form_object.input_ids.data) new_graph.input_ids_measurements = input_ids_joined new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data # Gauge elif form_base.dashboard_type.data == 'gauge': dashboard_type = 'Gauge' error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '20,#33CCFF;40,#55BF3B;60,#DDDF0D;80,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.input_ids_measurements = form_object.input_ids.data new_graph.enable_timestamp = form_object.enable_timestamp.data # Measurement elif form_base.dashboard_type.data == 'measurement': dashboard_type = 'Measurement' error = measurement_error_check(form_object, error) new_graph.graph_type = 'measurement' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.input_ids_measurements = form_object.measurement_id.data # Output elif form_base.dashboard_type.data == 'output': dashboard_type = 'Output' error = output_error_check(form_object, error) new_graph.graph_type = 'output' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.enable_output_controls = form_object.enable_output_controls.data new_graph.decimal_places = form_object.decimal_places.data new_graph.output_ids = form_object.output_id.data # PID Control elif form_base.dashboard_type.data == 'pid_control': dashboard_type = 'PID Control' error = pid_error_check(form_object, error) new_graph.graph_type = 'pid_control' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.show_pid_info = form_object.show_pid_info.data new_graph.show_set_setpoint = form_object.show_set_setpoint.data new_graph.pid_ids = form_object.pid_id.data # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): dashboard_type = 'Camera' new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data else: flash_form_errors(form_base) return try: if not error: new_graph.save() flash( gettext("{dev} with ID %(id)s successfully added".format( dev=dashboard_type), id=new_graph.id), "success") DisplayOrder.query.first().dashboard = add_display_order( display_order, new_graph.unique_id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) flash_success_errors(error, action, url_for('routes_page.page_dashboard'))
def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format( action=TRANSLATIONS['add']['title'], controller=TRANSLATIONS['dashboard']['title']) error = [] new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_base.width.data and form_base.height.data and form_object.xaxis_duration.data and form_base.refresh_duration.data)): dashboard_type = 'Graph' error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: new_graph.math_ids = ";".join(form_object.math_ids.data) if form_object.pid_ids.data: new_graph.pid_ids = ";".join(form_object.pid_ids.data) if form_object.output_ids.data: new_graph.output_ids = ";".join(form_object.output_ids.data) if form_object.input_ids.data: new_graph.input_ids_measurements = ";".join(form_object.input_ids.data) if form_object.note_tag_ids.data: new_graph.note_tag_ids = ";".join(form_object.note_tag_ids.data) new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data # Gauge elif form_base.dashboard_type.data == 'gauge': dashboard_type = 'Gauge' error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '20,#33CCFF;40,#55BF3B;60,#DDDF0D;80,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.input_ids_measurements = form_object.input_ids.data new_graph.enable_timestamp = form_object.enable_timestamp.data # Indicator elif form_base.dashboard_type.data == 'indicator': dashboard_type = 'Indicator' error = measurement_error_check(form_object, error) new_graph.graph_type = 'indicator' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.input_ids_measurements = form_object.measurement_id.data # Measurement elif form_base.dashboard_type.data == 'measurement': dashboard_type = 'Measurement' error = measurement_error_check(form_object, error) new_graph.graph_type = 'measurement' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.input_ids_measurements = form_object.measurement_id.data # Output elif form_base.dashboard_type.data == 'output': dashboard_type = 'Output' error = output_error_check(form_object, error) new_graph.graph_type = 'output' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.enable_output_controls = form_object.enable_output_controls.data new_graph.decimal_places = form_object.decimal_places.data new_graph.output_ids = form_object.output_id.data # PID Control elif form_base.dashboard_type.data == 'pid_control': dashboard_type = 'PID Control' error = pid_error_check(form_object, error) new_graph.graph_type = 'pid_control' new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.font_em_value = form_object.font_em_value.data new_graph.font_em_timestamp = form_object.font_em_timestamp.data new_graph.decimal_places = form_object.decimal_places.data new_graph.show_pid_info = form_object.show_pid_info.data new_graph.show_set_setpoint = form_object.show_set_setpoint.data new_graph.pid_ids = form_object.pid_id.data # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): dashboard_type = 'Camera' new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_base.width.data new_graph.height = form_base.height.data new_graph.refresh_duration = form_base.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data else: flash_form_errors(form_base) return try: if not error: new_graph.save() flash(gettext( "{dev} with ID %(id)s successfully added".format(dev=dashboard_type), id=new_graph.id), "success") DisplayOrder.query.first().dashboard = add_display_order( display_order, new_graph.unique_id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) flash_success_errors(error, action, url_for('routes_page.page_dashboard'))
def dashboard_add(form_base, form_object, display_order): """ Add an item to the dashboard Either Graph, Gauge, or Camera """ action = '{action} {controller}'.format(action=gettext("Add"), controller=gettext("Dashboard")) error = [] new_graph = Dashboard() new_graph.name = form_base.name.data # Graph if (form_base.dashboard_type.data == 'graph' and (form_base.name.data and form_object.width.data and form_object.height.data and form_object.xaxis_duration.data and form_object.refresh_duration.data)): error = graph_error_check(form_object, error) new_graph.graph_type = form_base.dashboard_type.data if form_object.math_ids.data: math_ids_joined = ";".join(form_object.math_ids.data) new_graph.math_ids = math_ids_joined if form_object.pid_ids.data: pid_ids_joined = ";".join(form_object.pid_ids.data) new_graph.pid_ids = pid_ids_joined if form_object.relay_ids.data: relay_ids_joined = ";".join(form_object.relay_ids.data) new_graph.relay_ids = relay_ids_joined if form_object.sensor_ids.data: sensor_ids_joined = ";".join(form_object.sensor_ids.data) new_graph.sensor_ids_measurements = sensor_ids_joined new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.x_axis_duration = form_object.xaxis_duration.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.enable_auto_refresh = form_object.enable_auto_refresh.data new_graph.enable_xaxis_reset = form_object.enable_xaxis_reset.data new_graph.enable_title = form_object.enable_title.data new_graph.enable_navbar = form_object.enable_navbar.data new_graph.enable_rangeselect = form_object.enable_range.data new_graph.enable_export = form_object.enable_export.data new_graph.enable_graph_shift = form_object.enable_graph_shift.data new_graph.enable_manual_y_axis = form_object.enable_manual_y_axis.data try: if not error: new_graph.save() flash( gettext("Graph with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) # Gauge elif (form_base.dashboard_type.data == 'gauge' and form_object.sensor_ids.data): error = gauge_error_check(form_object, error) new_graph.graph_type = form_object.gauge_type.data if form_object.gauge_type.data == 'gauge_solid': new_graph.range_colors = '0.2,#33CCFF;0.4,#55BF3B;0.6,#DDDF0D;0.8,#DF5353' elif form_object.gauge_type.data == 'gauge_angular': new_graph.range_colors = '0,25,#33CCFF;25,50,#55BF3B;50,75,#DDDF0D;75,100,#DF5353' new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.max_measure_age = form_object.max_measure_age.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.y_axis_min = form_object.y_axis_min.data new_graph.y_axis_max = form_object.y_axis_max.data new_graph.sensor_ids_measurements = form_object.sensor_ids.data[0] new_graph.enable_timestamp = form_object.enable_timestamp.data try: if not error: new_graph.save() flash( gettext("Gauge with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) # Camera elif (form_base.dashboard_type.data == 'camera' and form_object.camera_id.data): new_graph.graph_type = form_base.dashboard_type.data new_graph.width = form_object.width.data new_graph.height = form_object.height.data new_graph.refresh_duration = form_object.refresh_duration.data new_graph.camera_max_age = form_object.camera_max_age.data new_graph.camera_id = form_object.camera_id.data new_graph.camera_image_type = form_object.camera_image_type.data try: if not error: new_graph.save() flash( gettext("Camera with ID %(id)s successfully added", id=new_graph.id), "success") DisplayOrder.query.first().graph = add_display_order( display_order, new_graph.id) db.session.commit() except sqlalchemy.exc.OperationalError as except_msg: error.append(except_msg) except sqlalchemy.exc.IntegrityError as except_msg: error.append(except_msg) else: flash_form_errors(form_base) return flash_success_errors(error, action, url_for('routes_page.page_dashboard'))