Source code for nrgpy.cloud_api.sites

try:
    from nrgpy import logger
except ImportError:
    pass
from .auth import cloud_api, sites_url
import pandas as pd
import requests


[docs]class cloud_sites(cloud_api): """Returns sites that user has access to. Parameters ---------- client_id : str available in the NRG Cloud portal client_secret : str available in the NRG Cloud portal Returns ------- object sites_list : list sites_df : pandas dataframe """ def __init__(self, client_id, client_secret): super().__init__(client_id, client_secret) self.client_id = client_id self.client_secret = client_secret self.get_sites()
[docs] def get_sites(self): self.headers = { "Authorization": "Bearer " + self.session_token, } self.resp = requests.get(url=sites_url, headers=self.headers) self.sites_list = self.resp.json()["sites"] logger.info(f"{len(self.sites_list)} sites found") self.sites_df = pd.DataFrame(self.sites_list)
[docs] def get_siteid(self, site_number="", logger_sn=""): if site_number and logger_sn: matching_sites = [ site_dict for site_dict in self.sites_list if site_dict["siteNumber"] == site_number and site_dict["loggerSerialNumber"] == logger_sn ] if len(matching_sites) == 1: return matching_sites[0]["siteId"] else: logger.error( f"unable to get site matching site number {site_number} or logger serial {logger_sn}" ) print( "No site matches this site number and logger serial number. " + "Confirm that you have entered the values correctly " + "and that you have access to this site." ) elif site_number: matching_sites = [ site_dict for site_dict in self.sites_list if site_dict["siteNumber"] == site_number ] if len(matching_sites) > 1: logger.error(f"more than 1 site matching site number {site_number}") print( "There is more than one site with that site number. " + "Please use the logger serial number." ) return None elif len(matching_sites) == 1: logger.info( f"found match for site number {site_number}: siteId {matching_sites[0]['siteId']}" ) return matching_sites[0]["siteId"] else: logger.error(f"no site matches site number {site_number}") print( "No site matches this site number. " + "Confirm that you have entered the value correctly " + "and that you have access to this site." ) elif logger_sn: matching_sites = [ site_dict for site_dict in self.sites_list if site_dict["loggerSerialNumber"] == logger_sn ] if len(matching_sites) > 1: logger.error(f"more than 1 site matching serial number {logger_sn}") print( "There is more than one site with that logger serial number. " + "Please use the site number." ) return None elif len(matching_sites) == 1: logger.info( f"found match for serial number {logger_sn}: siteId {matching_sites[0]['siteId']}" ) return matching_sites[0]["siteId"] else: logger.error(f"no site matches serial number {logger_sn}") print( "No site matches this logger serial number. " + "Confirm that you have entered the value correctly " + "and that you have access to this site." )