コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #5
0
    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)