@@ -131,15 +131,15 @@ def value(self) -> List[str]:
131
131
@classmethod
132
132
def from_value (cls , values : Union [List [str ], str ]):
133
133
if isinstance (values , list ):
134
- return cls (
135
- relation = [RelationObject .from_value (value ) for value in values ]
136
- )
134
+ return cls (relation = [RelationObject .from_value (value ) for value in values ])
137
135
else :
138
136
return cls (relation = [RelationObject .from_value (values )])
139
137
138
+
140
139
class RollUpValues (BasePropertyValues ):
141
140
pass
142
141
142
+
143
143
class PeopleValues (BasePropertyValues ):
144
144
people : List [UserObject ]
145
145
@@ -150,12 +150,11 @@ def value(self) -> List[str]:
150
150
@classmethod
151
151
def from_value (cls , values : Union [List [str ], str ]):
152
152
if isinstance (values , list ):
153
- return cls (
154
- people = [UserObject .from_value (value ) for value in values ]
155
- )
153
+ return cls (people = [UserObject .from_value (value ) for value in values ])
156
154
else :
157
155
return cls (people = [UserObject .from_value (values )])
158
156
157
+
159
158
class FileValues (BasePropertyValues ):
160
159
pass
161
160
@@ -180,9 +179,16 @@ def value(self) -> Optional[str]:
180
179
return self .url
181
180
182
181
@classmethod
183
- def from_value (cls , value : str ):
182
+ def from_value (cls , value : Optional [ str ] ):
184
183
return cls (url = value )
185
184
185
+ def query_dict (self ):
186
+ res = flatten_dict (self .dict ())
187
+ if "url" not in res :
188
+ res ["url" ] = None
189
+ # The url value is required by the notion API
190
+ return res
191
+
186
192
187
193
class EmailValues (BasePropertyValues ):
188
194
email : Optional [str ]
@@ -277,6 +283,13 @@ def _is_item_empty(item):
277
283
return isna
278
284
279
285
286
+ RESERVED_VALUES = ["url" ]
287
+
288
+
289
+ def _is_reserved_value (key , schema ):
290
+ return schema [key ].type in RESERVED_VALUES
291
+
292
+
280
293
def parse_value_with_schema (
281
294
idx : int , key : str , value : Any , schema : "DatabaseSchema"
282
295
) -> BasePropertyValues :
@@ -333,7 +346,7 @@ def from_series(
333
346
{
334
347
key : parse_value_with_schema (idx , key , val , schema )
335
348
for idx , (key , val ) in enumerate (series .items ())
336
- if not _is_item_empty (val )
349
+ if not _is_item_empty (val ) or _is_reserved_value ( key , schema )
337
350
}
338
351
)
339
352
0 commit comments