Mercurial > libervia-backend
changeset 3323:44a9438d6608
plugin email invitation: simple invitation creation
The new `invitationSimpleCreate` is a simplified way to create an email invitation.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 01 Aug 2020 16:19:50 +0200 |
parents | 56ee491c0df6 |
children | b57b5e42e894 |
files | sat/plugins/plugin_misc_email_invitation.py |
diffstat | 1 files changed, 26 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/sat/plugins/plugin_misc_email_invitation.py Sat Aug 01 16:17:19 2020 +0200 +++ b/sat/plugins/plugin_misc_email_invitation.py Sat Aug 01 16:19:50 2020 +0200 @@ -1,7 +1,6 @@ #!/usr/bin/env python3 - -# SAT plugin for file tansfer +# SàT plugin for sending invitations by email # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org) # This program is free software: you can redistribute it and/or modify @@ -91,6 +90,10 @@ out_sign='a{sa{ss}}', method=self._list, async_=True) + host.bridge.addMethod("invitationSimpleCreate", ".plugin", in_sign='', + out_sign='a{ss}', + method=self._simpleCreate, + async_=True) def checkExtra(self, extra): if EXTRA_RESERVED.intersection(extra): @@ -338,6 +341,26 @@ extra[KEY_JID] = jid_ defer.returnValue(extra) + def _simpleCreate(self, invitee_email, url_template, extra_s, profile): + client = self.host.getClient(profile) + # FIXME: needed because python-dbus use a specific string class + invitee_email = str(invitee_email) + url_template = str(url_template) + extra = data_format.deserialise(extra_s) + d = defer.ensureDeferred( + self.simpleCreate(client, invitee_email, url_template, extra) + ) + d.addCallback(lambda data: {k: str(v) for k,v in data.items()}) + return d + + async def simpleCreate(self, client, invitee_email, url_template, extra): + """Simplified method to invite somebody by email""" + return await self.create( + email=invitee_email, + url_template=url_template, + profile=client.profile, + ) + def get(self, id_): """Retrieve invitation linked to uuid if it exists @@ -374,7 +397,7 @@ new_data = current_data for k,v in new_extra.items(): if k in EXTRA_RESERVED: - log.warning(_("Skipping reserved key {key}".format(k))) + log.warning(_("Skipping reserved key {key}").format(key=k)) continue if v: new_data[k] = v