11import io
22import json
3+ import re
34from datetime import datetime , timedelta
45from urllib import parse
56from uuid import UUID
@@ -45,6 +46,9 @@ def parse_response(response):
4546 except :
4647 pass
4748
49+ def like_table_id (value ):
50+ return re .match (r'[-0-9a-f]{4}$' , value )
51+
4852
4953class SeaTableAPI (object ):
5054 """SeaTable API
@@ -237,9 +241,11 @@ def list_rows(self, table_name, view_name=None, order_by=None, desc=False, start
237241 """
238242 url = self ._row_server_url ()
239243 params = {
240- 'table_name' : table_name ,
241- 'table_id' : table_name ,
244+ 'table_name' : table_name
242245 }
246+
247+ if like_table_id (table_name ):
248+ params ['table_id' ] = table_name
243249 if view_name :
244250 params ['view_name' ] = view_name
245251 if order_by :
@@ -261,9 +267,11 @@ def get_row(self, table_name, row_id):
261267 """
262268 url = self ._row_server_url () + row_id + '/'
263269 params = {
264- 'table_name' : table_name ,
265- 'table_id' : table_name ,
270+ 'table_name' : table_name
266271 }
272+
273+ if like_table_id (table_name ):
274+ params ['table_id' ] = table_name
267275 response = requests .get (url , params = params , headers = self .headers , timeout = self .timeout )
268276 data = parse_response (response )
269277 return data
@@ -276,9 +284,10 @@ def append_row(self, table_name, row_data):
276284 url = self ._row_server_url ()
277285 json_data = {
278286 'table_name' : table_name ,
279- 'table_id' : table_name ,
280287 'row' : row_data ,
281288 }
289+ if like_table_id (table_name ):
290+ json_data ['table_id' ] = table_name
282291 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
283292 return parse_response (response )
284293
@@ -290,9 +299,10 @@ def batch_append_rows(self, table_name, rows_data):
290299 url = self ._batch_row_server_url ()
291300 json_data = {
292301 'table_name' : table_name ,
293- 'table_id' : table_name ,
294302 'rows' : rows_data ,
295303 }
304+ if like_table_id (table_name ):
305+ json_data ['table_id' ] = table_name
296306 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
297307 return parse_response (response )
298308
@@ -305,10 +315,11 @@ def insert_row(self, table_name, row_data, anchor_row_id):
305315 url = self ._row_server_url ()
306316 json_data = {
307317 'table_name' : table_name ,
308- 'table_id' : table_name ,
309318 'row' : row_data ,
310319 'anchor_row_id' : anchor_row_id ,
311320 }
321+ if like_table_id (table_name ):
322+ json_data ['table_id' ] = table_name
312323 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
313324 return parse_response (response )
314325
@@ -321,10 +332,11 @@ def update_row(self, table_name, row_id, row_data):
321332 url = self ._row_server_url ()
322333 json_data = {
323334 'table_name' : table_name ,
324- 'table_id' : table_name ,
325335 'row_id' : row_id ,
326336 'row' : row_data ,
327337 }
338+ if like_table_id (table_name ):
339+ json_data ['table_id' ] = table_name
328340 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
329341 return parse_response (response )
330342
@@ -337,9 +349,10 @@ def batch_update_rows(self, table_name, rows_data):
337349 url = self ._batch_update_row_server_url ()
338350 json_data = {
339351 'table_name' : table_name ,
340- 'table_id' : table_name ,
341352 'updates' : rows_data ,
342353 }
354+ if like_table_id (table_name ):
355+ json_data ['table_id' ] = table_name
343356 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
344357 return parse_response (response )
345358
@@ -351,9 +364,10 @@ def delete_row(self, table_name, row_id):
351364 url = self ._row_server_url ()
352365 json_data = {
353366 'table_name' : table_name ,
354- 'table_id' : table_name ,
355367 'row_id' : row_id ,
356368 }
369+ if like_table_id (table_name ):
370+ json_data ['table_id' ] = table_name
357371 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
358372 return parse_response (response )
359373
@@ -365,9 +379,10 @@ def batch_delete_rows(self, table_name, row_ids):
365379 url = self ._batch_delete_row_server_url ()
366380 json_data = {
367381 'table_name' : table_name ,
368- 'table_id' : table_name ,
369382 'row_ids' : row_ids ,
370383 }
384+ if like_table_id (table_name ):
385+ json_data ['table_id' ] = table_name
371386 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
372387 return parse_response (response )
373388
@@ -447,12 +462,14 @@ def add_link(self, link_id, table_name, other_table_name, row_id, other_row_id):
447462 json_data = {
448463 'link_id' : link_id ,
449464 'table_name' : table_name ,
450- 'table_id' : table_name ,
451465 'other_table_name' : other_table_name ,
452- 'other_table_id' : other_table_name ,
453466 'table_row_id' : row_id ,
454467 'other_table_row_id' : other_row_id ,
455468 }
469+ if like_table_id (table_name ):
470+ json_data ['table_id' ] = table_name
471+ if like_table_id (other_table_name ):
472+ json_data ['other_table_id' ] = other_table_name
456473 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
457474 return parse_response (response )
458475
@@ -468,12 +485,14 @@ def remove_link(self, link_id, table_name, other_table_name, row_id, other_row_i
468485 json_data = {
469486 'link_id' : link_id ,
470487 'table_name' : table_name ,
471- 'table_id' : table_name ,
472488 'other_table_name' : other_table_name ,
473- 'other_table_id' : other_table_name ,
474489 'table_row_id' : row_id ,
475490 'other_table_row_id' : other_row_id ,
476491 }
492+ if like_table_id (table_name ):
493+ json_data ['table_id' ] = table_name
494+ if like_table_id (other_table_name ):
495+ json_data ['other_table_id' ] = other_table_name
477496 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
478497 return parse_response (response )
479498
@@ -490,13 +509,15 @@ def update_link(self, link_id, table_name, other_table_name, row_id, other_rows_
490509 url = self ._row_link_server_url ()
491510 json_data = {
492511 'link_id' : link_id ,
493- 'table_id' : table_name ,
494512 'table_name' : table_name ,
495- 'other_table_id' : other_table_name ,
496513 'other_table_name' : other_table_name ,
497514 'row_id' : row_id ,
498515 'other_rows_ids' : other_rows_ids ,
499516 }
517+ if like_table_id (table_name ):
518+ json_data ['table_id' ] = table_name
519+ if like_table_id (other_table_name ):
520+ json_data ['other_table_id' ] = other_table_name
500521 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
501522 return parse_response (response )
502523
@@ -511,13 +532,16 @@ def batch_update_links(self, link_id, table_name, other_table_name, row_id_list,
511532 url = self ._batch_update_row_link_server_url ()
512533 json_data = {
513534 'link_id' : link_id ,
514- 'table_id' : table_name ,
515535 'table_name' : table_name ,
516- 'other_table_id' : other_table_name ,
517536 'other_table_name' : other_table_name ,
537+
518538 'row_id_list' : row_id_list ,
519539 'other_rows_ids_map' : other_rows_ids_map ,
520540 }
541+ if like_table_id (table_name ):
542+ json_data ['table_id' ] = table_name
543+ if like_table_id (other_table_name ):
544+ json_data ['other_table_id' ] = other_table_name
521545
522546 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
523547 return parse_response (response )
@@ -546,8 +570,9 @@ def list_columns(self, table_name, view_name=None):
546570 url = self ._column_server_url ()
547571 params = {
548572 'table_name' : table_name ,
549- 'table_id' : table_name ,
550573 }
574+ if like_table_id (table_name ):
575+ params ['table_id' ] = table_name
551576 if view_name :
552577 params ['view_name' ] = view_name
553578 response = requests .get (url , params = params , headers = self .headers , timeout = self .timeout )
@@ -575,10 +600,11 @@ def insert_column(self, table_name, column_name, column_type, column_key=None, c
575600 url = self ._column_server_url ()
576601 json_data = {
577602 'table_name' : table_name ,
578- 'table_id' : table_name ,
579603 'column_name' : column_name ,
580604 'column_type' : column_type .value
581605 }
606+ if like_table_id (table_name ):
607+ json_data ['table_id' ] = table_name
582608 if column_key :
583609 json_data ['anchor_column' ] = column_key
584610 if column_data :
@@ -598,10 +624,11 @@ def rename_column(self, table_name, column_key, new_column_name):
598624 json_data = {
599625 'op_type' : RENAME_COLUMN ,
600626 'table_name' : table_name ,
601- 'table_id' : table_name ,
602627 'column' : column_key ,
603628 'new_column_name' : new_column_name
604629 }
630+ if like_table_id (table_name ):
631+ json_data ['table_id' ] = table_name
605632 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
606633 data = parse_response (response )
607634 return data
@@ -618,10 +645,11 @@ def resize_column(self, table_name, column_key, new_column_width):
618645 json_data = {
619646 'op_type' : RESIZE_COLUMN ,
620647 'table_name' : table_name ,
621- 'table_id' : table_name ,
622648 'column' : column_key ,
623649 'new_column_width' : new_column_width
624650 }
651+ if like_table_id (table_name ):
652+ json_data ['table_id' ] = table_name
625653 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
626654 data = parse_response (response )
627655 return data
@@ -637,10 +665,11 @@ def freeze_column(self, table_name, column_key, frozen):
637665 json_data = {
638666 'op_type' : FREEZE_COLUMN ,
639667 'table_name' : table_name ,
640- 'table_id' : table_name ,
641668 'column' : column_key ,
642669 'frozen' : frozen
643670 }
671+ if like_table_id (table_name ):
672+ json_data ['table_id' ] = table_name
644673 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
645674 data = parse_response (response )
646675 return data
@@ -656,10 +685,11 @@ def move_column(self, table_name, column_key, target_column_key):
656685 json_data = {
657686 'op_type' : MOVE_COLUMN ,
658687 'table_name' : table_name ,
659- 'table_id' : table_name ,
660688 'column' : column_key ,
661689 'target_column' : target_column_key
662690 }
691+ if like_table_id (table_name ):
692+ json_data ['table_id' ] = table_name
663693 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
664694 data = parse_response (response )
665695 return data
@@ -677,10 +707,11 @@ def modify_column_type(self, table_name, column_key, new_column_type):
677707 json_data = {
678708 'op_type' : MODIFY_COLUMN_TYPE ,
679709 'table_name' : table_name ,
680- 'table_id' : table_name ,
681710 'column' : column_key ,
682711 'new_column_type' : new_column_type .value
683712 }
713+ if like_table_id (table_name ):
714+ json_data ['table_id' ] = table_name
684715 response = requests .put (url , json = json_data , headers = self .headers , timeout = self .timeout )
685716 data = parse_response (response )
686717 return data
@@ -694,10 +725,11 @@ def add_column_options(self, table_name, column, options):
694725 url = self ._column_options_server_url ()
695726 json_data = {
696727 "table_name" : table_name ,
697- 'table_id' : table_name ,
698728 "column" : column ,
699729 "options" : options
700730 }
731+ if like_table_id (table_name ):
732+ json_data ['table_id' ] = table_name
701733 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
702734 data = parse_response (response )
703735 return data
@@ -714,12 +746,12 @@ def add_column_cascade_settings(self, table_name, child_column, parent_column, c
714746 url = self ._column_cascade_setting_server_url ()
715747 json_data = {
716748 "table_name" : table_name ,
717- 'table_id' : table_name ,
718749 "child_column" : child_column ,
719750 "parent_column" : parent_column ,
720751 "cascade_settings" : cascade_settings
721752 }
722-
753+ if like_table_id (table_name ):
754+ json_data ['table_id' ] = table_name
723755 response = requests .post (url , json = json_data , headers = self .headers , timeout = self .timeout )
724756 data = parse_response (response )
725757 return data
@@ -733,9 +765,10 @@ def delete_column(self, table_name, column_key):
733765 url = self ._column_server_url ()
734766 json_data = {
735767 'table_name' : table_name ,
736- 'table_id' : table_name ,
737768 'column' : column_key
738769 }
770+ if like_table_id (table_name ):
771+ json_data ['table_id' ] = table_name
739772 response = requests .delete (url , json = json_data , headers = self .headers , timeout = self .timeout )
740773 data = parse_response (response )
741774 return data
0 commit comments