Mercurial > libervia-backend
diff sat/plugins/plugin_misc_email_invitation.py @ 4037:524856bd7b19
massive refactoring to switch from camelCase to snake_case:
historically, Libervia (SàT before) was using camelCase as allowed by PEP8 when using a
pre-PEP8 code, to use the same coding style as in Twisted.
However, snake_case is more readable and it's better to follow PEP8 best practices, so it
has been decided to move on full snake_case. Because Libervia has a huge codebase, this
ended with a ugly mix of camelCase and snake_case.
To fix that, this patch does a big refactoring by renaming every function and method
(including bridge) that are not coming from Twisted or Wokkel, to use fully snake_case.
This is a massive change, and may result in some bugs.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 08 Apr 2023 13:54:42 +0200 |
parents | cfc06915de15 |
children |
line wrap: on
line diff
--- a/sat/plugins/plugin_misc_email_invitation.py Fri Apr 07 15:18:39 2023 +0200 +++ b/sat/plugins/plugin_misc_email_invitation.py Sat Apr 08 13:54:42 2023 +0200 @@ -77,30 +77,30 @@ log.info(_("plugin Invitations initialization")) self.host = host self.invitations = persistent.LazyPersistentBinaryDict('invitations') - host.bridge.addMethod("invitationCreate", ".plugin", in_sign='sasssssssssa{ss}s', + host.bridge.add_method("invitation_create", ".plugin", in_sign='sasssssssssa{ss}s', out_sign='a{ss}', method=self._create, async_=True) - host.bridge.addMethod("invitationGet", ".plugin", in_sign='s', out_sign='a{ss}', + host.bridge.add_method("invitation_get", ".plugin", in_sign='s', out_sign='a{ss}', method=self.get, async_=True) - host.bridge.addMethod("invitationDelete", ".plugin", in_sign='s', out_sign='', + host.bridge.add_method("invitation_delete", ".plugin", in_sign='s', out_sign='', method=self._delete, async_=True) - host.bridge.addMethod("invitationModify", ".plugin", in_sign='sa{ss}b', + host.bridge.add_method("invitation_modify", ".plugin", in_sign='sa{ss}b', out_sign='', method=self._modify, async_=True) - host.bridge.addMethod("invitationList", ".plugin", in_sign='s', + host.bridge.add_method("invitation_list", ".plugin", in_sign='s', out_sign='a{sa{ss}}', method=self._list, async_=True) - host.bridge.addMethod("invitationSimpleCreate", ".plugin", in_sign='sssss', + host.bridge.add_method("invitation_simple_create", ".plugin", in_sign='sssss', out_sign='a{ss}', - method=self._simpleCreate, + method=self._simple_create, async_=True) - def checkExtra(self, extra): + def check_extra(self, extra): if EXTRA_RESERVED.intersection(extra): raise ValueError( _("You can't use following key(s) in extra, they are reserved: {}") @@ -132,7 +132,7 @@ kwargs[key] = str(value) return defer.ensureDeferred(self.create(**kwargs)) - async def getExistingInvitation(self, email: Optional[str]) -> Optional[dict]: + async def get_existing_invitation(self, email: Optional[str]) -> Optional[dict]: """Retrieve existing invitation with given email @param email: check if any invitation exist with this email @@ -151,7 +151,7 @@ invitation[KEY_ID] = id_ return invitation - async def _createAccountAndProfile( + async def _create_account_and_profile( self, id_: str, kwargs: dict, @@ -161,7 +161,7 @@ ## XMPP account creation password = kwargs.pop('password', None) if password is None: - password = utils.generatePassword() + password = utils.generate_password() assert password # XXX: password is here saved in clear in database # it is needed for invitation as the same password is used for profile @@ -173,7 +173,7 @@ jid_ = kwargs.pop('jid_', None) if not jid_: - domain = self.host.memory.getConfig(None, 'xmpp_domain') + domain = self.host.memory.config_get(None, 'xmpp_domain') if not domain: # TODO: fallback to profile's domain raise ValueError(_("You need to specify xmpp_domain in sat.conf")) @@ -186,7 +186,7 @@ # we don't register account if there is no user as anonymous login is then # used try: - await self.host.plugins['XEP-0077'].registerNewAccount(jid_, password) + await self.host.plugins['XEP-0077'].register_new_account(jid_, password) except error.StanzaError as e: prefix = jid_.user idx = 0 @@ -197,7 +197,7 @@ log.info(_("requested jid already exists, trying with {}".format( jid_.full()))) try: - await self.host.plugins['XEP-0077'].registerNewAccount( + await self.host.plugins['XEP-0077'].register_new_account( jid_, password ) @@ -216,11 +216,11 @@ uuid=id_ ) # profile creation should not fail as we generate unique name ourselves - await self.host.memory.createProfile(guest_profile, password) - await self.host.memory.startSession(password, guest_profile) - await self.host.memory.setParam("JabberID", jid_.full(), "Connection", + await self.host.memory.create_profile(guest_profile, password) + await self.host.memory.start_session(password, guest_profile) + await self.host.memory.param_set("JabberID", jid_.full(), "Connection", profile_key=guest_profile) - await self.host.memory.setParam("Password", password, "Connection", + await self.host.memory.param_set("Password", password, "Connection", profile_key=guest_profile) async def create(self, **kwargs): @@ -290,11 +290,11 @@ _("You can't use following key(s) in both args and extra: {}").format( ', '.join(set(kwargs).intersection(extra)))) - self.checkExtra(extra) + self.check_extra(extra) email = kwargs.pop('email', None) - existing = await self.getExistingInvitation(email) + existing = await self.get_existing_invitation(email) if existing is not None: log.info(f"There is already an invitation for {email!r}") extra.update(existing) @@ -316,7 +316,7 @@ id_ = existing[KEY_ID] if existing else str(shortuuid.uuid()) if existing is None: - await self._createAccountAndProfile(id_, kwargs, extra) + await self._create_account_and_profile(id_, kwargs, extra) profile = kwargs.pop('profile', None) guest_profile = extra[KEY_GUEST_PROFILE] @@ -333,8 +333,8 @@ pass else: await self.host.connect(guest_profile, password) - guest_client = self.host.getClient(guest_profile) - await id_plugin.setIdentity(guest_client, {'nicknames': [name]}) + guest_client = self.host.get_client(guest_profile) + await id_plugin.set_identity(guest_client, {'nicknames': [name]}) await self.host.disconnect(guest_profile) ## email @@ -370,7 +370,7 @@ invite_url = url_template.format(**format_args) format_args['url'] = invite_url - await sat_email.sendEmail( + await sat_email.send_email( self.host.memory.config, [email] + emails_extra, (kwargs.pop('message_subject', None) or DEFAULT_SUBJECT).format( @@ -384,11 +384,11 @@ # FIXME: a parameter to disable auto roster adding would be nice if profile is not None: try: - client = self.host.getClient(profile) + client = self.host.get_client(profile) except Exception as e: log.error(f"Can't get host profile: {profile}: {e}") else: - await self.host.updateContact(client, jid_, name, ['guests']) + await self.host.contact_update(client, jid_, name, ['guests']) if kwargs: log.warning(_("Not all arguments have been consumed: {}").format(kwargs)) @@ -400,20 +400,20 @@ return extra - def _simpleCreate(self, invitee_email, invitee_name, url_template, extra_s, profile): - client = self.host.getClient(profile) + def _simple_create(self, invitee_email, invitee_name, url_template, extra_s, profile): + client = self.host.get_client(profile) # FIXME: needed because python-dbus use a specific string class invitee_email = str(invitee_email) invitee_name = str(invitee_name) url_template = str(url_template) extra = data_format.deserialise(extra_s) d = defer.ensureDeferred( - self.simpleCreate(client, invitee_email, invitee_name, url_template, extra) + self.simple_create(client, invitee_email, invitee_name, url_template, extra) ) d.addCallback(lambda data: {k: str(v) for k,v in data.items()}) return d - async def simpleCreate( + async def simple_create( self, client, invitee_email, invitee_name, url_template, extra): """Simplified method to invite somebody by email""" return await self.create( @@ -443,7 +443,7 @@ password = data['password'] try: await self.host.connect(guest_profile, password) - guest_client = self.host.getClient(guest_profile) + guest_client = self.host.get_client(guest_profile) # XXX: be extra careful to use guest_client and not client below, as this will # delete the associated XMPP account log.debug("deleting XMPP account") @@ -453,7 +453,7 @@ f"Can't delete {guest_profile}'s XMPP account, maybe it as already been " f"deleted: {e}") try: - await self.host.memory.asyncDeleteProfile(guest_profile, True) + await self.host.memory.profile_delete_async(guest_profile, True) except Exception as e: log.warning(f"Can't delete guest profile {guest_profile}: {e}") log.debug("removing guest data") @@ -474,8 +474,8 @@ else update them @raise KeyError: there is not invitation with this id_ """ - self.checkExtra(new_extra) - def gotCurrentData(current_data): + self.check_extra(new_extra) + def got_current_data(current_data): if replace: new_data = new_extra for k in EXTRA_RESERVED: @@ -500,7 +500,7 @@ self.invitations[id_] = new_data d = self.invitations[id_] - d.addCallback(gotCurrentData) + d.addCallback(got_current_data) return d def _list(self, profile=C.PROF_KEY_NONE):