From 92e424e6856e8711e8764c59d814008881ac02e4 Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 12 Nov 2020 14:53:16 +0100 Subject: [PATCH] jp (roster): `delete` implementation --- doc/jp/roster.rst | 12 ++++++++++++ sat_frontends/jp/cmd_roster.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/jp/roster.rst b/doc/jp/roster.rst index 216b594b..3a2e168a 100644 --- a/doc/jp/roster.rst +++ b/doc/jp/roster.rst @@ -72,6 +72,18 @@ Replace all groups of Pierre, to add him only to ``friends`` and ``housemates``: $ jp roster set --replace -g friends -g housemates pierre@example.net +delete +====== + +Remove an entity from roster. + +examples +-------- + +Remove John from your roster:: + + $ jp roster delete john@example.net + stats ===== diff --git a/sat_frontends/jp/cmd_roster.py b/sat_frontends/jp/cmd_roster.py index 9a967c84..1048954b 100644 --- a/sat_frontends/jp/cmd_roster.py +++ b/sat_frontends/jp/cmd_roster.py @@ -125,6 +125,33 @@ class Set(base.CommandBase): self.host.quit() +class Delete(base.CommandBase): + + def __init__(self, host): + super().__init__(host, 'delete', help=_('remove an entity from roster')) + + def add_parser_options(self): + self.parser.add_argument( + "-f", "--force", action="store_true", help=_("delete without confirmation") + ) + self.parser.add_argument( + "jid", help=_("jid of the roster entity")) + + async def start(self): + if not self.args.force: + message = _("Are you sure to delete {entity} fril your roster?").format( + entity=self.args.jid + ) + await self.host.confirmOrQuit(message, _("entity deletion cancelled")) + try: + await self.host.bridge.delContact( + self.args.jid, self.host.profile) + except Exception as e: + self.disp(f"error while deleting the entity: {e}", error=True) + self.host.quit(C.EXIT_BRIDGE_ERRBACK) + self.host.quit() + + class Stats(base.CommandBase): def __init__(self, host): @@ -293,7 +320,7 @@ class Resync(base.CommandBase): class Roster(base.CommandBase): - subcommands = (Get, Set, Stats, Purge, Resync) + subcommands = (Get, Set, Delete, Stats, Purge, Resync) def __init__(self, host): super(Roster, self).__init__(