|
21 | 21 | raise ImportError('allauth needs to be added to INSTALLED_APPS.') |
22 | 22 |
|
23 | 23 |
|
| 24 | +def _signup_field_required(field_name, default=True): |
| 25 | + """Get field 'required' from SIGNUP_FIELDS (allauth>=65.5) with fallback.""" |
| 26 | + if hasattr(allauth_account_settings, 'SIGNUP_FIELDS'): |
| 27 | + return allauth_account_settings.SIGNUP_FIELDS.get(field_name, {}).get('required', default) |
| 28 | + # Fallback for older allauth versions |
| 29 | + if field_name == 'username': |
| 30 | + return allauth_account_settings.USERNAME_REQUIRED |
| 31 | + if field_name == 'email': |
| 32 | + return allauth_account_settings.EMAIL_REQUIRED |
| 33 | + return default |
| 34 | + |
| 35 | + |
24 | 36 | class SocialAccountSerializer(serializers.ModelSerializer): |
25 | 37 | """ |
26 | 38 | serialize allauth SocialAccounts for use with a REST API |
@@ -222,9 +234,9 @@ class RegisterSerializer(serializers.Serializer): |
222 | 234 | username = serializers.CharField( |
223 | 235 | max_length=get_username_max_length(), |
224 | 236 | min_length=allauth_account_settings.USERNAME_MIN_LENGTH, |
225 | | - required=allauth_account_settings.USERNAME_REQUIRED, |
| 237 | + required=_signup_field_required('username'), |
226 | 238 | ) |
227 | | - email = serializers.EmailField(required=allauth_account_settings.EMAIL_REQUIRED) |
| 239 | + email = serializers.EmailField(required=_signup_field_required('email')) |
228 | 240 | password1 = serializers.CharField(write_only=True) |
229 | 241 | password2 = serializers.CharField(write_only=True) |
230 | 242 |
|
@@ -282,4 +294,4 @@ class VerifyEmailSerializer(serializers.Serializer): |
282 | 294 |
|
283 | 295 |
|
284 | 296 | class ResendEmailVerificationSerializer(serializers.Serializer): |
285 | | - email = serializers.EmailField(required=allauth_account_settings.EMAIL_REQUIRED) |
| 297 | + email = serializers.EmailField(required=_signup_field_required('email')) |
0 commit comments