diff frontends/src/jp/cmd_event.py @ 2532:772447ec070f

jp: pubsub options refactoring: There is now only "use_pubsub", and specification are set using "pubsub_flags" argument when instantiating CommandBase. Options are more Python Zen compliant by using explicit arguments for item, draft, url instead of trying to guess with magic keyword and type detection. Pubsub node and item are now always using respecively "-n" and "-i" even when required, this way shell history can be used to change command more easily, and it's globally less confusing for user. if --pubsub-url is used, elements can be overwritten with individual option (e.g. change item id with --item). New "use_draft" argument in CommandBase, to re-use current draft or open a file path as draft. Item can now be specified when using a draft. If it already exists, its content will be added to current draft (with a separator), to avoid loosing data. common.BaseEdit.getItemPath could be simplified thanks to those changes. Pubsub URI handling has been moved to base.py.
author Goffi <goffi@goffi.org>
date Wed, 21 Mar 2018 19:13:22 +0100
parents 5895e4daae8c
children
line wrap: on
line diff
--- a/frontends/src/jp/cmd_event.py	Wed Mar 21 19:07:06 2018 +0100
+++ b/frontends/src/jp/cmd_event.py	Wed Mar 21 19:13:22 2018 +0100
@@ -42,13 +42,13 @@
                                   host,
                                   'get',
                                   use_output=C.OUTPUT_DICT,
-                                  use_pubsub_node_req=True,
+                                  use_pubsub=True, pubsub_flags={C.NODE, C.SINGLE_ITEM},
                                   use_verbose=True,
                                   help=_(u'get event data'))
         self.need_loop=True
 
     def add_parser_options(self):
-        self.parser.add_argument("-i", "--item", type=base.unicode_decoder, default=u'', help=_(u"ID of the PubSub Item"))
+        pass
 
     def eventInviteeGetCb(self, result):
         event_date, event_data = result
@@ -57,7 +57,6 @@
         self.host.quit()
 
     def start(self):
-        common.checkURI(self.args)
         self.host.bridge.eventGet(
             self.args.service,
             self.args.node,
@@ -100,7 +99,7 @@
 
 class Create(EventBase, base.CommandBase):
     def __init__(self, host):
-        super(Create, self).__init__(host, 'create', use_pubsub_node_req=True, help=_('create or replace event'))
+        super(Create, self).__init__(host, 'create', use_pubsub=True, pubsub_flags={C.NODE}, help=_('create or replace event'))
         EventBase.__init__(self)
         self.need_loop=True
 
@@ -126,12 +125,11 @@
 
 class Modify(EventBase, base.CommandBase):
     def __init__(self, host):
-        super(Modify, self).__init__(host, 'modify', use_pubsub_node_req=True, help=_('modify an existing event'))
+        super(Modify, self).__init__(host, 'modify', use_pubsub=True, pubsub_flags={C.NODE}, help=_('modify an existing event'))
         EventBase.__init__(self)
         self.need_loop=True
 
     def start(self):
-        common.checkURI(self.args)
         fields = self.parseFields()
         date = 0 if not self.args.date else self.parseDate()
         self.host.bridge.eventModify(
@@ -154,7 +152,7 @@
                                   host,
                                   'get',
                                   use_output=C.OUTPUT_DICT,
-                                  use_pubsub_node_req=True,
+                                  use_pubsub=True, pubsub_flags={C.NODE},
                                   use_verbose=True,
                                   help=_(u'get event attendance'))
         self.need_loop=True
@@ -167,7 +165,6 @@
         self.host.quit()
 
     def start(self):
-        common.checkURI(self.args)
         self.host.bridge.eventInviteeGet(
             self.args.service,
             self.args.node,
@@ -180,7 +177,7 @@
 
 class InviteeSet(base.CommandBase):
     def __init__(self, host):
-        super(InviteeSet, self).__init__(host, 'set', use_output=C.OUTPUT_DICT, use_pubsub_node_req=True, help=_('set event attendance'))
+        super(InviteeSet, self).__init__(host, 'set', use_output=C.OUTPUT_DICT, use_pubsub=True, pubsub_flags={C.NODE}, help=_('set event attendance'))
         self.need_loop=True
 
     def add_parser_options(self):
@@ -188,7 +185,6 @@
                                  metavar=(u"KEY", u"VALUE"), help=_(u"configuration field to set"))
 
     def start(self):
-        common.checkURI(self.args)
         fields = dict(self.args.fields) if self.args.fields else {}
         self.host.bridge.eventInviteeSet(
             self.args.service,
@@ -210,7 +206,7 @@
                                   'list',
                                   use_output=C.OUTPUT_DICT_DICT,
                                   extra_outputs=extra_outputs,
-                                  use_pubsub_node_req=True,
+                                  use_pubsub=True, pubsub_flags={C.NODE},
                                   use_verbose=True,
                                   help=_(u'get event attendance'))
         self.need_loop=True
@@ -355,7 +351,6 @@
     def start(self):
         if self.args.no_rsvp and not self.args.missing:
             self.parser.error(_(u"you need to use --missing if you use --no-rsvp"))
-        common.checkURI(self.args)
         if self.args.missing:
             self.host.bridge.psNodeAffiliationsGet(
                 self.args.service,
@@ -372,21 +367,19 @@
 class InviteeInvite(base.CommandBase):
 
     def __init__(self, host):
-        base.CommandBase.__init__(self, host, 'invite', use_pubsub_node_req=True, help=_(u'invite someone to the event through email'))
+        base.CommandBase.__init__(self, host, 'invite', use_pubsub=True, pubsub_flags={C.NODE, C.SINGLE_ITEM}, help=_(u'invite someone to the event through email'))
         self.need_loop=True
 
     def add_parser_options(self):
-        self.parser.add_argument("-i", "--item", type=base.unicode_decoder, default=u'', help=_(u"ID of the PubSub Item"))
         self.parser.add_argument("-e", "--email", action="append", type=base.unicode_decoder, default=[], help='email(s) to send the invitation to')
-        self.parser.add_argument("-n", "--name", type=base.unicode_decoder, default='', help='name of the invitee')
-        self.parser.add_argument("-N", "--host-name", type=base.unicode_decoder, default='', help='name of the host')
+        self.parser.add_argument("-N", "--name", type=base.unicode_decoder, default='', help='name of the invitee')
+        self.parser.add_argument("-H", "--host-name", type=base.unicode_decoder, default='', help='name of the host')
         self.parser.add_argument("-l", "--lang", type=base.unicode_decoder, default='', help='main language spoken by the invitee')
-        self.parser.add_argument("-u", "--url", type=base.unicode_decoder, default='', help='template to construct the URL')
+        self.parser.add_argument("-U", "--url-template", type=base.unicode_decoder, default='', help='template to construct the URL')
         self.parser.add_argument("-S", "--subject", type=base.unicode_decoder, default='', help='subject of the invitation email (default: generic subject)')
         self.parser.add_argument("-b", "--body", type=base.unicode_decoder, default='', help='body of the invitation email (default: generic body)')
 
     def start(self):
-        common.checkURI(self.args)
         email = self.args.email[0] if self.args.email else None
         emails_extra = self.args.email[1:]
 
@@ -399,7 +392,7 @@
             self.args.name,
             self.args.host_name,
             self.args.lang,
-            self.args.url,
+            self.args.url_template,
             self.args.subject,
             self.args.body,
             self.args.profile,