Source code for terminusgps.django.forms.fields

from collections.abc import Sequence

from authorizenet import apicontractsv1
from django import forms

from .widgets import AddressWidget, CreditCardWidget


[docs] class CreditCardField(forms.MultiValueField): require_all_fields = True def __init__(self, fields=(), widget=CreditCardWidget(), *args, **kwargs) -> None: if not fields: fields = ( forms.CharField(label="Card #"), forms.IntegerField(label="Expiry Month", min_value=1, max_value=12), forms.IntegerField(label="Expiry Year"), forms.CharField(label="CCV #"), ) super().__init__(fields=fields, widget=widget, *args, **kwargs)
[docs] def compress(self, data_list: Sequence[str]) -> apicontractsv1.creditCardType: """Compresses ``data_list`` into a :py:obj:`~authorizenet.apicontractsv1.creditCardType`.""" return apicontractsv1.creditCardType( **{ "cardNumber": data_list[0], "expirationDate": f"{data_list[1]}-{data_list[2]}", "cardCode": data_list[3], } )
[docs] class AddressField(forms.MultiValueField): require_all_fields = True def __init__(self, fields=(), widget=AddressWidget(), *args, **kwargs) -> None: if not fields: fields = ( forms.CharField(label="Street", max_length=128), forms.CharField(label="City", max_length=128), forms.CharField(label="State", max_length=64), forms.CharField(label="Zip #", min_length=5, max_length=10), forms.CharField(label="Country", max_length=2), ) super().__init__(fields=fields, widget=widget, *args, **kwargs)
[docs] def compress(self, data_list: Sequence[str]) -> apicontractsv1.customerAddressType: """Compresses ``data_list`` into a :py:obj:`~authorizenet.apicontractsv1.customerAddressType`.""" return apicontractsv1.customerAddressType( **{ "address": data_list[0], "city": data_list[1], "state": data_list[2], "zip": data_list[3], "country": data_list[4], } )