def get_message_alert(alert): """ Returns an alert mesage represetnation """ measurement = get_measurement_from_rule(alert.alert) return "At site %s \n %s is %s %s%s" % (alert.site, get_measurement_verbose_name(measurement), alert.alert.get_operator_display(), alert.alert.value, get_measurement_unit(measurement))
def get_message_alert(alert): """ Returns an alert mesage represetnation """ measurement = get_measurement_from_rule(alert.alert) return "At site %s \n %s is %s %s%s" % ( alert.site, get_measurement_verbose_name(measurement), alert.alert.get_operator_display(), alert.alert.value, get_measurement_unit(measurement))
def index(request,site_id=0): """ Initial user view user needs to be logged Get user related site data initially to display on main-dashboard view """ sites = _get_user_sites(request) context_dict = {} # Handle fisrt login if user has no site setup: if not sites: context_dict['VRM_form'] = _create_vrm_login_form() return render(request,'seshdash/initial-login.html',context_dict) if not site_id: #return first site user has action site_id = sites[0].pk #Check if user has any sites under their permission context_dict, content_json = get_user_data(request.user,site_id,sites) context_dict = jsonify_dict(context_dict,content_json) #Generate date for dashboard TODO use victron solar yield data using mock weather data for now context_dict['site_id'] = site_id #Generating site measurements for a graph current_site = Sesh_Site.objects.filter(id = site_id).first() #getting site measurements site_measurements = get_site_measurements(current_site) measurements ={} for measurement in site_measurements: #getting verbose names measurement_verbose_name = get_measurement_verbose_name(measurement) measurements[measurement] = measurement_verbose_name context_dict['measurements']= measurements # status card form site = Sesh_Site.objects.filter(id=site_id).first() form = StatusCardForm(instance=site.status_card) context_dict['status_form'] = form #sites witth weather and battery status sites_stats = get_quick_status(sites) context_dict['sites_stats'] = sites_stats # user permissions context_dict['permitted'] = get_org_edit_permissions(request.user) context_dict['user'] = request.user return render(request,'seshdash/main-dash.html',context_dict)
def get_latest_bom_data(request): """ Returns the latest information of a site to be displayed in the status card The data is got from the influx db """ # getting current site and latest rmc status object site_id = request.POST.get('siteId') site = Sesh_Site.objects.filter(id=site_id).first() # The measurement list contains attributes to be displayed in the status card, measurement_list = get_status_card_items(site) if measurement_list != 0: latest_points = get_measurements_latest_point(site, measurement_list) latest_point_data = [] # If the points exist and the points returned are equal to the items in measurement list for measurement, point in latest_points.items(): latest_point_data.append({"item":get_measurement_verbose_name(measurement), "value":str(round(latest_points[measurement]['value'], 2)) + get_measurement_unit(measurement) }) if 'last_contact' in measurement_list: # Adding the last contact from the rmc status rmc_latest = RMC_status.objects.filter(site=site).last() if rmc_latest: last_contact = rmc_latest.minutes_last_contact last_contact_seconds = last_contact * 60 last_contact = time_utils.format_timesince_seconds(last_contact_seconds) latest_point_data.append({"item":"Last Contact", "value": last_contact}) else: logger.debug("No rmc_status points for site ") return HttpResponse(json.dumps(latest_point_data))