def test_get_with_filter(self): # Create 3 beacons self.test_create_beacons() # Filter by id page = self._persistence.get_page_by_filter( None, FilterParams.from_tuples("id", "1"), PagingParams()) assert page is not None assert len(page.data) == 1 # Filter by udi page = self._persistence.get_page_by_filter( None, FilterParams.from_tuples("udi", "00002"), PagingParams()) assert page is not None assert len(page.data) == 1 # Filter by udis page = self._persistence.get_page_by_filter( None, FilterParams.from_tuples("udis", '00001,00003'), PagingParams()) assert page is not None assert len(page.data) == 2 # Filter by udi page = self._persistence.get_page_by_filter( None, FilterParams.from_tuples("site_id", "1"), PagingParams()) assert page is not None assert len(page.data) == 2
def calculate_position(self, correlation_id: Optional[str], site_id: str, udis: List[str]) -> Any: if udis is None or len(udis) == 0: return None result = self.__persistence.get_page_by_filter( correlation_id, FilterParams.from_tuples("site_id", site_id, "udis", udis), None) beacons = result.data lat = 0 lng = 0 count = 0 for beacon in beacons: if beacon.center is not None and beacon.center[ 'type'] == "Point" and len( beacon.center['coordinates']) > 1: lng = lng + beacon.center['coordinates'][0] lat = lat + beacon.center['coordinates'][1] count = count + 1 if count == 0: return None position = {"type": 'Point', "coordinates": [lng / count, lat / count]} return position
def calculate_position(self, correlation_id, site_id, udis): beacons: List[BeaconV1] position = None if udis is None or len(udis) == 0: return page = self.get_beacons(correlation_id, FilterParams.from_tuples( 'site_id', site_id, 'udis', udis ), None) beacons = page.data if page.data else [] lat = 0 lng = 0 count = 0 for beacon in beacons: if beacon['center'] != None and beacon['center']['type'] == "Point" and len( beacon['center']['coordinates']) > 1: lng = lng + beacon['center']['coordinates'][0] lat = lat + beacon['center']['coordinates'][1] count = count + 1 if count > 0: position = {"type": 'Point', "coordinates": [lng / count, lat / count]} return position return None
def calculate_position(self, correlation_id: Optional[str], site_id: str, udis: List[str]) -> Any: beacons: List[BeaconV1] = [] position = None if udis is None or len(udis) == 0: return page = self.get_beacons(correlation_id, FilterParams.from_tuples( 'site_id', site_id, 'udis', udis ), PagingParams()) beacons = page.data or [] lat = 0 lng = 0 count = 0 for beacon in beacons: if beacon.center is not None and beacon.center['type'] == 'Point' and isinstance( beacon.center['coordinates'], list): lng += beacon.center['coordinates'][0] lat += beacon.center['coordinates'][1] count += 1 if count > 0: position = { 'type': 'Point', 'coordinates': [lng / count, lat / count] } return position or None
def calculate_position(self, correlation_id, site_id, udis): if udis == None or len(udis) == 0: return None result = self._persistence.get_page_by_filter( correlation_id, FilterParams.from_tuples("site_id", site_id, "udis", udis), None) beacons = result.data lat = 0 lng = 0 count = 0 for beacon in beacons: if beacon['center'] != None and beacon['center'][ 'type'] == "Point" and len( beacon['center']['coordinates']) > 1: lng = lng + beacon['center']['coordinates'][0] lat = lat + beacon['center']['coordinates'][1] count = count + 1 if count > 0: position = { "type": 'Point', "coordinates": [lng / count, lat / count] } return position return None
def open_session( self, account: AccountV1, roles: List[str], ): try: session: SessionV1 = None sites: List[SiteV1] = None passwordInfo: UserPasswordInfoV1 = None settings: ConfigParams = None # Retrieve sites for user site_roles = [] if not roles else list( filter(lambda x: x.find(':') > 0, roles)) site_ids = [] if not site_roles else list( map(lambda x: x[0:x.find(':')] if x.find(':') >= 0 else x, site_roles)) if len(site_ids) > 0: filter_params = FilterParams.from_tuples('ids', site_ids) page = self.__sites_client.get_sites(None, filter_params, None) sites = [] if page is None else page.data else: sites = [] password_info = self.__passwords_client.get_password_info( None, account.id) settings = self.__settings_client.get_section_by_id( None, account.id) # Open a new user session user = SessionUserV1( id=account.id, name=account.name, login=account.login, create_time=account.create_time, time_zone=account.time_zone, language=account.language, theme=account.theme, roles=roles, sites=list(map(lambda x: { 'id': x.id, 'name': x.name }, sites)), settings=settings, change_pwd_time=None if password_info is None else password_info.change_time, custom_hdr=account.custom_hdr, custom_dat=account.custom_dat) address = HttpRequestDetector.detect_address(bottle.request) client = HttpRequestDetector.detect_browser(bottle.request) platform = HttpRequestDetector.detect_platform(bottle.request) session = self.__sessions_client.open_session( None, account.id, account.name, address, client, user, None) return JsonConverter.to_json(session) except Exception as err: return self._send_error(err)