diff sat_frontends/jp/cmd_file.py @ 2916:0b9faea5cb58

jp (file/share): added invite command to invite an entity to a file sharing repository
author Goffi <goffi@goffi.org>
date Sun, 14 Apr 2019 08:21:51 +0200
parents 003b8b4b56a7
children 472fadadefe6
line wrap: on
line diff
--- a/sat_frontends/jp/cmd_file.py	Sun Apr 14 08:21:51 2019 +0200
+++ b/sat_frontends/jp/cmd_file.py	Sun Apr 14 08:21:51 2019 +0200
@@ -701,8 +701,79 @@
         )
 
 
+class ShareInvite(base.CommandBase):
+    def __init__(self, host):
+        super(ShareInvite, self).__init__(
+            host, "invite", help=_(u"send invitation for a shared repository")
+        )
+        self.need_loop = True
+
+    def add_parser_options(self):
+        self.parser.add_argument(
+            "-n",
+            "--name",
+            type=base.unicode_decoder,
+            default=u"",
+            help=_(u"name of the repository"),
+        )
+        self.parser.add_argument(
+            "-N",
+            "--namespace",
+            type=base.unicode_decoder,
+            default=u"",
+            help=_(u"namespace of the repository"),
+        )
+        self.parser.add_argument(
+            "-P",
+            "--path",
+            type=base.unicode_decoder,
+            help=_(u"path to the repository"),
+        )
+        self.parser.add_argument(
+            "-t",
+            "--type",
+            choices=[u"files", u"photos"],
+            default=u"files",
+            help=_(u"type of the repository"),
+        )
+        self.parser.add_argument(
+            "service",
+            type=base.unicode_decoder,
+            help=_(u"jid of the file sharing service hosting the repository"),
+        )
+        self.parser.add_argument(
+            "jid",
+            type=base.unicode_decoder,
+            help=_(u"jid of the person to invite"),
+        )
+
+    def _FISInviteCb(self):
+        self.disp(
+            _(u'invitation sent do {entity}').format(entity=self.args.jid)
+        )
+        self.host.quit()
+
+    def start(self):
+        self.path = os.path.abspath(self.args.path) if self.args.path else u""
+        self.host.bridge.FISInvite(
+            self.args.jid,
+            self.args.service,
+            self.args.type,
+            self.args.namespace,
+            self.path,
+            self.args.name,
+            self.profile,
+            callback=self._FISInviteCb,
+            errback=partial(
+                self.errback,
+                msg=_(u"can't send invitation: {}"),
+                exit_code=C.EXIT_BRIDGE_ERRBACK,
+            ),
+        )
+
+
 class Share(base.CommandBase):
-    subcommands = (ShareList, SharePath)
+    subcommands = (ShareList, SharePath, ShareInvite)
 
     def __init__(self, host):
         super(Share, self).__init__(