|
14 | 14 | from rest_framework.request import Request
|
15 | 15 |
|
16 | 16 | from openforms.authentication.service import AuthAttribute
|
17 |
| -from openforms.config.models import GlobalConfiguration |
| 17 | +from openforms.config.models import GlobalConfiguration, MapTileLayer |
18 | 18 | from openforms.submissions.models import Submission
|
19 | 19 | from openforms.typing import DataMapping
|
20 | 20 | from openforms.utils.date import TIMEZONE_AMS, datetime_in_amsterdam, format_date_value
|
|
31 | 31 | )
|
32 | 32 | from ..formatters.formio import DefaultFormatter, TextFieldFormatter
|
33 | 33 | from ..registry import BasePlugin, register
|
34 |
| -from ..typing import AddressNLComponent, Component, DateComponent, DatetimeComponent |
| 34 | +from ..typing import ( |
| 35 | + AddressNLComponent, |
| 36 | + Component, |
| 37 | + DateComponent, |
| 38 | + DatetimeComponent, |
| 39 | + MapComponent, |
| 40 | +) |
35 | 41 | from ..utils import conform_to_mask
|
36 | 42 | from .np_family_members.constants import FamilyMembersDataAPIChoices
|
37 | 43 | from .np_family_members.haal_centraal import get_np_family_members_haal_centraal
|
@@ -186,19 +192,28 @@ def build_serializer_field(
|
186 | 192 |
|
187 | 193 |
|
188 | 194 | @register("map")
|
189 |
| -class Map(BasePlugin[Component]): |
| 195 | +class Map(BasePlugin[MapComponent]): |
190 | 196 | formatter = MapFormatter
|
191 | 197 |
|
| 198 | + def mutate_config_dynamically( |
| 199 | + self, component: MapComponent, submission: Submission, data: DataMapping |
| 200 | + ) -> None: |
| 201 | + if (identifier := component.get("tileLayerIdentifier")) is not None: |
| 202 | + tile_layer = MapTileLayer.objects.filter(identifier=identifier).first() |
| 203 | + if tile_layer is not None: |
| 204 | + # Add the tile layer url information |
| 205 | + component["tileLayerUrl"] = tile_layer.url |
| 206 | + |
192 | 207 | @staticmethod
|
193 |
| - def rewrite_for_request(component, request: Request): |
| 208 | + def rewrite_for_request(component: MapComponent, request: Request): |
194 | 209 | if component.get("useConfigDefaultMapSettings", False):
|
195 | 210 | config = GlobalConfiguration.get_solo()
|
196 | 211 | component["defaultZoom"] = config.form_map_default_zoom_level
|
197 | 212 | component.setdefault("initialCenter", {})
|
198 | 213 | component["initialCenter"]["lat"] = config.form_map_default_latitude
|
199 | 214 | component["initialCenter"]["lng"] = config.form_map_default_longitude
|
200 | 215 |
|
201 |
| - def build_serializer_field(self, component: Component) -> serializers.ListField: |
| 216 | + def build_serializer_field(self, component: MapComponent) -> serializers.ListField: |
202 | 217 | validate = component.get("validate", {})
|
203 | 218 | required = validate.get("required", False)
|
204 | 219 | base = serializers.FloatField(
|
|
0 commit comments