from decimal import Decimal

from django.utils.translation import gettext_lazy as _

from .choices import WirelessChannelChoices

__all__ = (
    'get_channel_attr',
)


def get_channel_attr(channel, attr):
    """
    Return the specified attribute of a given WirelessChannelChoices value.
    """
    if channel not in WirelessChannelChoices.values():
        raise ValueError(_("Invalid channel value: {channel}").format(channel=channel))

    channel_values = channel.split('-')
    attrs = {
        'band': channel_values[0],
        'id': int(channel_values[1]),
        'frequency': Decimal(channel_values[2]),
        'width': Decimal(channel_values[3]),
    }
    if attr not in attrs:
        raise ValueError(_("Invalid channel attribute: {name}").format(name=attr))

    return attrs[attr]
