API - allow keeping default tile server for static map - #83
This commit is contained in:
		@@ -25,4 +25,5 @@ export REDIS_URL=
 | 
			
		||||
# Activities
 | 
			
		||||
export TILE_SERVER_URL=
 | 
			
		||||
export MAP_ATTRIBUTION=
 | 
			
		||||
#export DEFAULT_STATICMAP=False
 | 
			
		||||
export WEATHER_API_KEY=
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,9 @@ class BaseConfig:
 | 
			
		||||
            'target="_blank" rel="noopener noreferrer">OpenStreetMap</a>'
 | 
			
		||||
            ' contributors',
 | 
			
		||||
        ),
 | 
			
		||||
        'DEFAULT_STATICMAP': (
 | 
			
		||||
            os.environ.get('DEFAULT_STATICMAP', 'False') == 'True'
 | 
			
		||||
        ),
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								fittrackee/tests/fixtures/fixtures_app.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								fittrackee/tests/fixtures/fixtures_app.py
									
									
									
									
										vendored
									
									
								
							@@ -75,6 +75,14 @@ def app(monkeypatch: pytest.MonkeyPatch) -> Generator:
 | 
			
		||||
        monkeypatch.delenv('TILE_SERVER_URL')
 | 
			
		||||
    if os.getenv('MAP_ATTRIBUTION'):
 | 
			
		||||
        monkeypatch.delenv('MAP_ATTRIBUTION')
 | 
			
		||||
    if os.getenv('DEFAULT_STATICMAP'):
 | 
			
		||||
        monkeypatch.delenv('DEFAULT_STATICMAP')
 | 
			
		||||
    yield from get_app(with_config=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.fixture
 | 
			
		||||
def app_default_static_map(monkeypatch: pytest.MonkeyPatch) -> Generator:
 | 
			
		||||
    monkeypatch.setenv('DEFAULT_STATICMAP', 'True')
 | 
			
		||||
    yield from get_app(with_config=True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -360,6 +360,37 @@ class TestPostWorkoutWithGpx(ApiTestCaseMixin, CallArgsMixin):
 | 
			
		||||
            in call_args[0]
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_it_calls_default_tile_server_for_static_map(
 | 
			
		||||
        self,
 | 
			
		||||
        app_default_static_map: Flask,
 | 
			
		||||
        user_1: User,
 | 
			
		||||
        sport_1_cycling: Sport,
 | 
			
		||||
        gpx_file: str,
 | 
			
		||||
        static_map_get_mock: Mock,
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        client, auth_token = self.get_test_client_and_auth_token(
 | 
			
		||||
            app_default_static_map
 | 
			
		||||
        )
 | 
			
		||||
        client.post(
 | 
			
		||||
            '/api/workouts',
 | 
			
		||||
            data=dict(
 | 
			
		||||
                file=(BytesIO(str.encode(gpx_file)), 'example.gpx'),
 | 
			
		||||
                data='{"sport_id": 1}',
 | 
			
		||||
            ),
 | 
			
		||||
            headers=dict(
 | 
			
		||||
                content_type='multipart/form-data',
 | 
			
		||||
                Authorization=f'Bearer {auth_token}',
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        call_args = self.get_args(static_map_get_mock.call_args)
 | 
			
		||||
        assert (
 | 
			
		||||
            app_default_static_map.config['TILE_SERVER']['URL']
 | 
			
		||||
            .replace('{s}.', '')
 | 
			
		||||
            .replace('/{z}/{x}/{y}.png', '')
 | 
			
		||||
            not in call_args[0]
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_it_returns_500_if_gpx_file_has_not_tracks(
 | 
			
		||||
        self,
 | 
			
		||||
        app: Flask,
 | 
			
		||||
 
 | 
			
		||||
@@ -265,14 +265,11 @@ def generate_map(map_filepath: str, map_data: List) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    Generate and save map image from map data
 | 
			
		||||
    """
 | 
			
		||||
    m = StaticMap(
 | 
			
		||||
        400,
 | 
			
		||||
        225,
 | 
			
		||||
        10,
 | 
			
		||||
        url_template=current_app.config['TILE_SERVER']['URL'].replace(
 | 
			
		||||
    m = StaticMap(400, 225, 10)
 | 
			
		||||
    if not current_app.config['TILE_SERVER']['DEFAULT_STATICMAP']:
 | 
			
		||||
        m.url_template = current_app.config['TILE_SERVER']['URL'].replace(
 | 
			
		||||
            '{s}.', ''
 | 
			
		||||
        ),
 | 
			
		||||
    )
 | 
			
		||||
        )
 | 
			
		||||
    line = Line(map_data, '#3388FF', 4)
 | 
			
		||||
    m.add_line(line)
 | 
			
		||||
    image = m.render()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user