2021-08-24 06:20:54 +00:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
|
|
from common.message.backends.sms import BACKENDS
|
|
|
|
|
2021-09-09 12:59:26 +00:00
|
|
|
__all__ = ['SMSSettingSerializer', 'AlibabaSMSSettingSerializer', 'TencentSMSSettingSerializer']
|
2021-08-24 06:20:54 +00:00
|
|
|
|
|
|
|
|
2021-09-09 12:59:26 +00:00
|
|
|
class SMSSettingSerializer(serializers.Serializer):
|
2021-09-09 12:12:52 +00:00
|
|
|
SMS_ENABLED = serializers.BooleanField(default=False, label=_('Enable SMS'))
|
2021-09-09 12:59:26 +00:00
|
|
|
SMS_BACKEND = serializers.ChoiceField(choices=BACKENDS.choices, default=BACKENDS.ALIBABA)
|
|
|
|
|
|
|
|
|
|
|
|
class BaseSMSSettingSerializer(serializers.Serializer):
|
2021-08-24 06:20:54 +00:00
|
|
|
SMS_TEST_PHONE = serializers.CharField(max_length=256, required=False, label=_('Test phone'))
|
|
|
|
|
|
|
|
def to_representation(self, instance):
|
|
|
|
data = super().to_representation(instance)
|
2021-09-09 12:59:26 +00:00
|
|
|
# data['SMS_BACKEND'] = self.fields['SMS_BACKEND'].default
|
2021-08-24 06:20:54 +00:00
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
class AlibabaSMSSettingSerializer(BaseSMSSettingSerializer):
|
|
|
|
ALIBABA_ACCESS_KEY_ID = serializers.CharField(max_length=256, required=True, label='AccessKeyId')
|
|
|
|
ALIBABA_ACCESS_KEY_SECRET = serializers.CharField(
|
|
|
|
max_length=256, required=False, label='AccessKeySecret', write_only=True)
|
|
|
|
ALIBABA_SMS_SIGN_AND_TEMPLATES = serializers.DictField(
|
|
|
|
label=_('Signatures and Templates'), required=True, help_text=_('''
|
|
|
|
Filling in JSON Data:
|
|
|
|
{
|
|
|
|
"verification_code": {
|
|
|
|
"sign_name": "<Your signature name>",
|
|
|
|
"template_code": "<Your template code>"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
''')
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class TencentSMSSettingSerializer(BaseSMSSettingSerializer):
|
|
|
|
TENCENT_SECRET_ID = serializers.CharField(max_length=256, required=True, label='Secret id')
|
|
|
|
TENCENT_SECRET_KEY = serializers.CharField(max_length=256, required=False, label='Secret key', write_only=True)
|
|
|
|
TENCENT_SDKAPPID = serializers.CharField(max_length=256, required=True, label='SDK app id')
|
|
|
|
TENCENT_SMS_SIGN_AND_TEMPLATES = serializers.DictField(
|
|
|
|
label=_('Signatures and Templates'), required=True, help_text=_('''
|
|
|
|
Filling in JSON Data:
|
|
|
|
{
|
|
|
|
"verification_code": {
|
|
|
|
"sign_name": "<Your signature name>",
|
|
|
|
"template_code": "<Your template code>"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'''))
|