MAKENTNU/web

View on GitHub
src/card/formfields.py

Summary

Maintainability
A
0 mins
Test Coverage
from django import forms
from django.utils.text import capfirst
from django.utils.translation import gettext_lazy as _

from .validators import card_number_input_validator
from .widgets import CardNumberInput


class CardNumberField(forms.CharField):
    """
    Custom form field for card numbers.
    """
    widget = CardNumberInput
    default_validators = [card_number_input_validator]

    def __init__(self, **kwargs):
        super().__init__(**{
            'empty_value': None,
            # `capfirst()` to avoid duplicate translation differing only in case
            'label': capfirst(_("card number")),
            **kwargs,
        })

    def clean(self, value):
        value = super().clean(value)
        if not value:
            return value
        return value.zfill(10)