@@ -406,18 +406,17 @@ def ls(name, path):
406
406
@click .argument ('name' , type = str )
407
407
@click .argument ('emails' , type = str , nargs = - 1 , required = True )
408
408
@click .option ('-p' , '--perm' , metavar = 'PERMISSION' , type = str , default = 'rw' ,
409
- help = 'Permission to give. "ro" (read-only) / "rw" (read-write).' )
409
+ help = 'Permission to give. "ro" (read-only) / "rw" (read-write) / "wd" (write-delete) .' )
410
410
def invite (name , emails , perm ):
411
- """Invite other users to access the virtual folder.
411
+ """Invite other users to access a user-type virtual folder.
412
412
413
413
\b
414
414
NAME: Name of a virtual folder.
415
- EMAIL : Emails to invite.
415
+ EMAILS : Emails to invite.
416
416
"""
417
417
with Session () as session :
418
418
try :
419
- assert perm in ['rw' , 'ro' ], \
420
- 'Invalid permission: {}' .format (perm )
419
+ assert perm in ['rw' , 'ro' , 'wd' ], 'Invalid permission: {}' .format (perm )
421
420
result = session .VFolder (name ).invite (perm , emails )
422
421
invited_ids = result .get ('invited_ids' , [])
423
422
if len (invited_ids ) > 0 :
@@ -488,6 +487,59 @@ def invitations():
488
487
sys .exit (1 )
489
488
490
489
490
+ @vfolder .command ()
491
+ @click .argument ('name' , type = str )
492
+ @click .argument ('emails' , type = str , nargs = - 1 , required = True )
493
+ @click .option ('-p' , '--perm' , metavar = 'PERMISSION' , type = str , default = 'rw' ,
494
+ help = 'Permission to give. "ro" (read-only) / "rw" (read-write) / "wd" (write-delete).' )
495
+ def share (name , emails , perm ):
496
+ """Share a group folder to users with overriding permission.
497
+
498
+ \b
499
+ NAME: Name of a (group-type) virtual folder.
500
+ EMAILS: Emails to share.
501
+ """
502
+ with Session () as session :
503
+ try :
504
+ assert perm in ['rw' , 'ro' , 'wd' ], 'Invalid permission: {}' .format (perm )
505
+ result = session .VFolder (name ).share (perm , emails )
506
+ shared_emails = result .get ('shared_emails' , [])
507
+ if len (shared_emails ) > 0 :
508
+ print ('Shared with {} permission to:' .format (perm ))
509
+ for _email in shared_emails :
510
+ print ('\t - ' + _email )
511
+ else :
512
+ print ('No users found. Folder is not shared.' )
513
+ except Exception as e :
514
+ print_error (e )
515
+ sys .exit (1 )
516
+
517
+
518
+ @vfolder .command ()
519
+ @click .argument ('name' , type = str )
520
+ @click .argument ('emails' , type = str , nargs = - 1 , required = True )
521
+ def unshare (name , emails ):
522
+ """Unshare a group folder from users.
523
+
524
+ \b
525
+ NAME: Name of a (group-type) virtual folder.
526
+ EMAILS: Emails to share.
527
+ """
528
+ with Session () as session :
529
+ try :
530
+ result = session .VFolder (name ).unshare (emails )
531
+ unshared_emails = result .get ('unshared_emails' , [])
532
+ if len (unshared_emails ) > 0 :
533
+ print ('Unshared from:' )
534
+ for _email in unshared_emails :
535
+ print ('\t - ' + _email )
536
+ else :
537
+ print ('No users found. Folder is not unshared.' )
538
+ except Exception as e :
539
+ print_error (e )
540
+ sys .exit (1 )
541
+
542
+
491
543
@vfolder .command ()
492
544
@click .argument ('name' , type = str )
493
545
def leave (name ):
0 commit comments