from django import forms
from django.core.exceptions import ValidationError
from django.utils.translation import gettext as _

from ..users.validators import (
    validate_username_content,
    validate_username_banned,
    validate_email_content,
    validate_email_banned,
)


class UserDataValidator(forms.Form):
    id = forms.IntegerField(min_value=1)
    username = forms.CharField()
    email = forms.CharField()
    is_active = forms.BooleanField(required=False)

    def clean_username(self):
        data = self.cleaned_data["username"]

        validate_username_content(data)
        if validate_username_banned(data):
            raise ValidationError(_("This username is not allowed."))

        return data

    def clean_email(self):
        data = self.cleaned_data["email"]

        validate_email_content(data)
        if validate_email_banned(data):
            raise ValidationError(_("This e-mail address is not allowed."))

        return data