def send_expiration_sms_reminder(sp_subscription_pk): try: sp_subscription = SystemPaySubscription.objects.select_related( "subscription__person", "alias" ).get(pk=sp_subscription_pk) except SystemPaySubscription.DoesNotExist: return recipient = sp_subscription.subscription.person if ( not recipient.contact_phone or not is_french_number(recipient.contact_phone) or not is_mobile_number(recipient.contact_phone) ): return connection_params = generate_token_params(recipient) url = shorten_url( add_params_to_urls(front_url("view_payments"), connection_params), secret=True ) send_sms( f"Votre carte bleue arrive à expiration. Pour continuer votre don régulier à la France insoumise, " f"mettez là à jour : {url}\n" f"Merci encore de votre soutien !", recipient.contact_phone, )
def __init__(self, data=None, *args, **kwargs): super().__init__(data=data, *args, **kwargs) if ( not self.is_bound and self.instance.contact_phone and not ( is_french_number(self.instance.contact_phone) and is_mobile_number(self.instance.contact_phone) ) ): self.initial["contact_phone"] = "" self.fields["contact_phone"].help_text = _( "Seul un numéro de téléphone mobile français (outremer inclus) peut être utilisé pour la validation." ) self.fields["contact_phone"].required = True self.fields["contact_phone"].error_messages["required"] = _( "Vous devez indiquer le numéro de mobile qui vous servira à valider votre compte." ) fields = [ Row( HalfCol( FieldWithButtons( "contact_phone", Submit("submit", "Recevoir mon code") ) ) ) ] self.helper = FormHelper() self.helper.form_method = "POST" self.helper.layout = Layout(*fields)
def clean_contact_phone(self): phone_number = normalize_overseas_numbers(self.cleaned_data["contact_phone"]) if not is_french_number(phone_number): raise ValidationError(self.error_messages["french_only"], "french_only") if not is_mobile_number(phone_number): raise ValidationError(self.error_messages["mobile_only"], "mobile_only") return phone_number
def test_is_french(self): self.assertTrue(is_french_number(p("06 38 68 98 45"))) self.assertTrue(is_french_number(p("01 48 68 98 45"))) self.assertTrue(is_french_number(p("04 84 65 98 78"))) self.assertTrue(is_french_number(p("05 90 56 45 12"))) # Guadeloupe, en +33 self.assertTrue(is_french_number(p("+262 2 60 45 78 45"))) # Réunion, en +262 self.assertFalse(is_french_number(p("+44 7554 456245")))