def __init__()

in bedrock/newsletter/forms.py [0:0]


    def __init__(self, newsletters, locale, data=None, multi_opt_in_required=False, *args, **kwargs):
        regions = product_details.get_regions(locale)
        regions = sorted(iter(regions.items()), key=itemgetter(1))

        try:
            if isinstance(newsletters, str):
                newsletters = newsletters.split(",")
            newsletters = validate_newsletters(newsletters)
        except ValidationError:
            # replace with most common good newsletter
            # form validation will work with submitted data
            newsletters = ["mozilla-and-you"]

        is_multi_newsletter = len(newsletters) > 1
        lang = locale.lower()
        if "-" in lang:
            lang, country = lang.split("-", 1)
        else:
            country = ""
            regions.insert(0, ("", ftl_lazy("newsletter-form-select-country-or-region", fallback="newsletter-form-select-country")))
        lang_choices = get_lang_choices(newsletters)
        languages = [x[0] for x in lang_choices]
        if lang not in languages:
            # The lang from their locale is not one that our newsletters
            # are translated into. Initialize the language field to no
            # choice, to force the user to pick one of the languages that
            # we do support.
            lang = ""
            lang_choices.insert(0, ("", ftl_lazy("newsletter-form-available-languages")))

        super().__init__(data, *args, **kwargs)

        required_args = {
            "required": "required",
            "aria-required": "true",
        }
        country_select_args = {"data-testid": "newsletter-country-select"}
        country_widget = widgets.Select(attrs=required_args | country_select_args)
        country_label = ftl_lazy("newsletter-form-select-country-or-region", fallback="newsletter-form-select-country")
        self.fields["country"] = forms.ChoiceField(widget=country_widget, choices=regions, initial=country, required=False, label=country_label)
        lang_widget = widgets.Select(attrs=required_args)
        lang_label = ftl_lazy("newsletter-form-select-language", fallback="newsletter-form-available-languages")
        self.fields["lang"] = forms.TypedChoiceField(widget=lang_widget, choices=lang_choices, initial=lang, required=False, label=lang_label)
        self.fields["newsletters"].choices = [(n, self.choice_labels.get(n, n)) for n in newsletters]

        # Automatically check newsletter choices unless opt-in is explicitly required.
        if is_multi_newsletter and multi_opt_in_required:
            self.fields["newsletters"].initial = None
        else:
            self.fields["newsletters"].initial = newsletters