Project

General

Profile

Development #42427

Déplacer le code clean_number utilisés par les connecteurs SMS dans SMSResource

Added by Nicolas Roche about 2 months ago. Updated about 1 month ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Target version:
-
Start date:
04 May 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Dans #39650 on va se baser sur la sortie de clean_number() pour valider les numéros authorisés, et donc on peut supposer que cette fonction sera également appelée par tous les nouveaux connecteurs SMS.

Et ce sont les numéros passés par clean_numbers qui arrivent ici, donc on connaît la structure.

0001-sms-factorize-clean_number-call-42427.patch View (15.8 KB) Nicolas Roche, 06 May 2020 04:44 PM

0001-sms-factorize-clean_number-call-42427.patch View (15.6 KB) Nicolas Roche, 07 May 2020 02:42 PM

0001-sms-move-default-country_code-trunk_prefix-to-base-c.patch View (15.7 KB) Nicolas Roche, 18 May 2020 04:37 PM


Related issues

Related to Passerelle - Development #39650: connecteurs SMS, option pour refuser les numéros surchargés Solution proposée 07 Feb 2020

Associated revisions

Revision ae903d89 (diff)
Added by Nicolas Roche about 1 month ago

sms: move default country_code/trunk_prefix to base class (#42427)

History

#1 Updated by Nicolas Roche about 2 months ago

  • Related to Development #39650: connecteurs SMS, option pour refuser les numéros surchargés added

#2 Updated by Frédéric Péters about 2 months ago

Mais c'est déjà le cas :

passerelle/apps/choosit/models.py:        destinations = self.clean_numbers(destinations,
passerelle/apps/mobyt/models.py:        destinations = self.clean_numbers(destinations,
passerelle/apps/orange/models.py:        destinations = self.clean_numbers(
passerelle/apps/ovh/models.py:        destinations = self.clean_numbers(destinations,
passerelle/apps/oxyd/models.py:        destinations = self.clean_numbers(destinations,
passerelle/base/models.py:    def clean_numbers(cls, destinations, default_country_code='33',

(?)

#3 Updated by Nicolas Roche about 2 months ago

Oui, puisque c'est généralisé, placer cet appel dans le code générique SMS, en dehors des connecteurs.
(Afin d'éviter que le code d'une potentielle nouvelle fonction de vérification des numéros autorisés soit appelé dans chacun des connecteurs).

#4 Updated by Frédéric Péters about 2 months ago

Je ne comprends toujours pas ce que tu veux faire ici, le code est déjà factorisé, unique, appelé par les différents connecteurs. (mais bon, je peux me taire et attendre le patch pour comprendre).

#5 Updated by Nicolas Roche about 2 months ago

Je souhaiterais ne pas appeler le code depuis les différents connecteurs, du fait que :
  • ils l'utilisent tous sans exception
  • que la validation des numéros autorisés se basera dessus

Et donc je voudrais factoriser l'appel à cette fonction (cf ma branche sur #39650) :

    @endpoint(perm='can_send_messages', methods=['post'])
    def send(self, request, *args, **kwargs):
...
        data['to'] = self.clean_numbers(data['to'])
        self.authorize_numbers(data['to'])
...
        result = {'data': self.send_msg(data['message'], data['from'], data['to'], stop=stop)}

#6 Updated by Frédéric Péters about 2 months ago

Ok, je pense que ça aide de prendre les choses dans l'ordre,

1/ tous les connecteurs SMS définissent les attributs default_country_code & default_trunk_prefix → ils pourraient donc être dans la classe de base.

2/ poser qu'alors l'appel à clean_numbers(), qui a besoin de ces infps, peut également être déplacé au niveau de la classe de base.

3/ ne pas recopier les commentaires inopportuns en faisant ça,

FIXME: add regexp field, to check destination and from format

→ ça n'aura pas lieu ainsi, il y a un autre ticket en cours pour la validation

unfortunately it lacks a batch API...

→ lamentation inutile maintenant que le code ne va plus être prévu pour permettre à un fournisseur qui offrirait ça de l'exploiter.

Yeah France first !

(passons)

Et pour revenir à mes interrogations initiales, il ne s'agit donc pas du tout de factoriser le code de clean_numbers, mais bien les appels à cette méthode.

#8 Updated by Frédéric Péters about 2 months ago

Le sujet du commit continue à m'interloquer autant que le sujet du ticket; plutôt faire genre "move default country_code/trunk_prefix to base class" ?

#9 Updated by Nicolas Roche about 1 month ago

#10 Updated by Frédéric Péters about 1 month ago

  • Status changed from Solution proposée to Solution validée

#11 Updated by Nicolas Roche about 1 month ago

  • Status changed from Solution validée to Résolu (à déployer)
commit ae903d89c357b34eda22f616f0588d8b18c50677
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Tue May 5 11:26:48 2020 +0200

    sms: move default country_code/trunk_prefix to base class (#42427)

#12 Updated by Frédéric Péters about 1 month ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF