Skip to content

Commit 20e7007

Browse files
committed
Add additional arguments
1 parent fbc083b commit 20e7007

3 files changed

Lines changed: 74 additions & 4 deletions

File tree

felt_python/maps.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ def update_map(
116116
description: str | None = None,
117117
public_access: str | None = None,
118118
basemap: str | None = None,
119+
table_settings: dict | None = None,
120+
viewer_permissions: dict | None = None,
119121
api_token: str | None = None,
120122
):
121123
"""Update a map's details
@@ -128,15 +130,24 @@ def update_map(
128130
Options are "private", "view_only", "view_and_comment",
129131
or "view_comment_and_edit"
130132
basemap: The basemap to use for the map. Defaults to "default".
131-
Valid values are "default", "light", "dark", "satellite",
132-
a valid raster tile URL with {x}, {y}, and {z} parameters,
133-
or a hex color string like #ff0000.
133+
Valid values are "default", "light", "dark", "satellite",
134+
a valid raster tile URL with {x}, {y}, and {z} parameters,
135+
or a hex color string like #ff0000.
136+
table_settings: Optional data table settings
137+
Dict with keys:
138+
- "default_table_layer_id": str | None - The layer ID to open by default in table view
139+
- "viewers_can_open_table": bool - Whether viewers can open the data table
140+
viewer_permissions: Optional viewer permission settings
141+
Dict with keys:
142+
- "can_duplicate_map": bool - Whether viewers can duplicate the map and data
143+
- "can_export_data": bool - Whether viewers can export map data
144+
- "can_see_map_presence": bool - Whether viewers can see who else is viewing the map
134145
api_token: Optional API token
135146
136147
Returns:
137148
The updated map
138149
"""
139-
json_args = {}
150+
json_args: dict = {}
140151
if title is not None:
141152
json_args["title"] = title
142153
if description is not None:
@@ -145,6 +156,10 @@ def update_map(
145156
json_args["public_access"] = public_access
146157
if basemap is not None:
147158
json_args["basemap"] = basemap
159+
if table_settings is not None:
160+
json_args["table_settings"] = table_settings
161+
if viewer_permissions is not None:
162+
json_args["viewer_permissions"] = viewer_permissions
148163

149164
response = make_request(
150165
url=MAP_UPDATE.format(map_id=map_id),

notebooks/maps.ipynb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,38 @@
9999
")"
100100
]
101101
},
102+
{
103+
"cell_type": "markdown",
104+
"metadata": {},
105+
"source": [
106+
"# Advanced map updates\n",
107+
"\n",
108+
"You can also update table settings and viewer permissions."
109+
]
110+
},
111+
{
112+
"cell_type": "code",
113+
"execution_count": null,
114+
"metadata": {},
115+
"outputs": [],
116+
"source": [
117+
"# Update map with table settings and viewer permissions\n",
118+
"resp = update_map(\n",
119+
" map_id=map_id,\n",
120+
" title=\"Map with advanced settings\",\n",
121+
" table_settings={\n",
122+
" \"viewers_can_open_table\": True,\n",
123+
" # \"default_table_layer_id\": \"layer_id_here\" # Optional: set default table layer\n",
124+
" },\n",
125+
" viewer_permissions={\n",
126+
" \"can_duplicate_map\": True,\n",
127+
" \"can_export_data\": False,\n",
128+
" \"can_see_map_presence\": True\n",
129+
" }\n",
130+
")\n",
131+
"print(\"Map updated with advanced settings\")"
132+
]
133+
},
102134
{
103135
"cell_type": "markdown",
104136
"metadata": {},

tests/maps_test.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,25 @@ def test_map_workflow(self):
6969
updated_name = f"Test Map Updated ({self.timestamp})"
7070
print(f"Updating map to: {updated_name}...")
7171

72+
# Test table_settings and viewer_permissions
73+
table_settings = {
74+
"viewers_can_open_table": True
75+
}
76+
77+
viewer_permissions = {
78+
"can_duplicate_map": True,
79+
"can_export_data": False,
80+
"can_see_map_presence": True
81+
}
82+
7283
updated_map = update_map(
7384
map_id=map_id,
7485
title=updated_name,
7586
description=f"This map was updated through the API test at {self.timestamp}",
7687
public_access="view_only",
7788
basemap="dark",
89+
table_settings=table_settings,
90+
viewer_permissions=viewer_permissions,
7891
)
7992

8093
self.assertIsNotNone(updated_map)
@@ -86,6 +99,16 @@ def test_map_workflow(self):
8699
self.assertEqual(updated_details["public_access"], "view_only")
87100
self.assertEqual(updated_details["basemap"], "dark")
88101

102+
# Verify table_settings and viewer_permissions were applied
103+
if "table_settings" in updated_details:
104+
self.assertTrue(updated_details["table_settings"]["viewers_can_open_table"])
105+
106+
if "viewer_permissions" in updated_details:
107+
perms = updated_details["viewer_permissions"]
108+
self.assertTrue(perms["can_duplicate_map"])
109+
self.assertFalse(perms["can_export_data"])
110+
self.assertTrue(perms["can_see_map_presence"])
111+
89112
# Step 4: Export comments
90113
# Note: There will be no comments on a newly created map
91114
print("Exporting comments...")

0 commit comments

Comments
 (0)