13279 add gettext_lazy to choices

This commit is contained in:
Arthur 2023-07-28 15:21:08 +07:00 committed by Jeremy Stretch
parent c45bc1b591
commit d0047220dc
6 changed files with 392 additions and 387 deletions

View File

@ -1,3 +1,4 @@
from django.utils.translation import gettext_lazy as _
from utilities.choices import ButtonColorChoices, ChoiceSet
@ -22,19 +23,19 @@ class CustomFieldTypeChoices(ChoiceSet):
TYPE_MULTIOBJECT = 'multiobject'
CHOICES = (
(TYPE_TEXT, 'Text'),
(TYPE_LONGTEXT, 'Text (long)'),
(TYPE_INTEGER, 'Integer'),
(TYPE_DECIMAL, 'Decimal'),
(TYPE_BOOLEAN, 'Boolean (true/false)'),
(TYPE_DATE, 'Date'),
(TYPE_DATETIME, 'Date & time'),
(TYPE_URL, 'URL'),
(TYPE_JSON, 'JSON'),
(TYPE_SELECT, 'Selection'),
(TYPE_MULTISELECT, 'Multiple selection'),
(TYPE_OBJECT, 'Object'),
(TYPE_MULTIOBJECT, 'Multiple objects'),
(TYPE_TEXT, _('Text')),
(TYPE_LONGTEXT, _('Text (long)')),
(TYPE_INTEGER, _('Integer')),
(TYPE_DECIMAL, _('Decimal')),
(TYPE_BOOLEAN, _('Boolean (true/false)')),
(TYPE_DATE, _('Date')),
(TYPE_DATETIME, _('Date & time')),
(TYPE_URL, _('URL')),
(TYPE_JSON, _('JSON')),
(TYPE_SELECT, _('Selection')),
(TYPE_MULTISELECT, _('Multiple selection')),
(TYPE_OBJECT, _('Object')),
(TYPE_MULTIOBJECT, _('Multiple objects')),
)
@ -45,9 +46,9 @@ class CustomFieldFilterLogicChoices(ChoiceSet):
FILTER_EXACT = 'exact'
CHOICES = (
(FILTER_DISABLED, 'Disabled'),
(FILTER_LOOSE, 'Loose'),
(FILTER_EXACT, 'Exact'),
(FILTER_DISABLED, _('Disabled')),
(FILTER_LOOSE, _('Loose')),
(FILTER_EXACT, _('Exact')),
)
@ -59,10 +60,10 @@ class CustomFieldVisibilityChoices(ChoiceSet):
VISIBILITY_HIDDEN_IFUNSET = 'hidden-ifunset'
CHOICES = (
(VISIBILITY_READ_WRITE, 'Read/Write'),
(VISIBILITY_READ_ONLY, 'Read-only'),
(VISIBILITY_HIDDEN, 'Hidden'),
(VISIBILITY_HIDDEN_IFUNSET, 'Hidden (if unset)'),
(VISIBILITY_READ_WRITE, _('Read/Write')),
(VISIBILITY_READ_ONLY, _('Read-only')),
(VISIBILITY_HIDDEN, _('Hidden')),
(VISIBILITY_HIDDEN_IFUNSET, _('Hidden (if unset)')),
)
@ -89,7 +90,7 @@ class CustomLinkButtonClassChoices(ButtonColorChoices):
CHOICES = (
*ButtonColorChoices.CHOICES,
(LINK, 'Link'),
(LINK, _('Link')),
)
@ -103,8 +104,8 @@ class BookmarkOrderingChoices(ChoiceSet):
ORDERING_OLDEST = 'created'
CHOICES = (
(ORDERING_NEWEST, 'Newest'),
(ORDERING_OLDEST, 'Oldest'),
(ORDERING_NEWEST, _('Newest')),
(ORDERING_OLDEST, _('Oldest')),
)
#
@ -119,9 +120,9 @@ class ObjectChangeActionChoices(ChoiceSet):
ACTION_DELETE = 'delete'
CHOICES = (
(ACTION_CREATE, 'Created', 'green'),
(ACTION_UPDATE, 'Updated', 'blue'),
(ACTION_DELETE, 'Deleted', 'red'),
(ACTION_CREATE, _('Created'), 'green'),
(ACTION_UPDATE, _('Updated'), 'blue'),
(ACTION_DELETE, _('Deleted'), 'red'),
)
@ -138,10 +139,10 @@ class JournalEntryKindChoices(ChoiceSet):
KIND_DANGER = 'danger'
CHOICES = [
(KIND_INFO, 'Info', 'cyan'),
(KIND_SUCCESS, 'Success', 'green'),
(KIND_WARNING, 'Warning', 'yellow'),
(KIND_DANGER, 'Danger', 'red'),
(KIND_INFO, _('Info'), 'cyan'),
(KIND_SUCCESS, _('Success'), 'green'),
(KIND_WARNING, _('Warning'), 'yellow'),
(KIND_DANGER, _('Danger'), 'red'),
]
@ -158,22 +159,22 @@ class LogLevelChoices(ChoiceSet):
LOG_FAILURE = 'failure'
CHOICES = (
(LOG_DEFAULT, 'Default', 'gray'),
(LOG_SUCCESS, 'Success', 'green'),
(LOG_INFO, 'Info', 'cyan'),
(LOG_WARNING, 'Warning', 'yellow'),
(LOG_FAILURE, 'Failure', 'red'),
(LOG_DEFAULT, _('Default'), 'gray'),
(LOG_SUCCESS, _('Success'), 'green'),
(LOG_INFO, _('Info'), 'cyan'),
(LOG_WARNING, _('Warning'), 'yellow'),
(LOG_FAILURE, _('Failure'), 'red'),
)
class DurationChoices(ChoiceSet):
CHOICES = (
(60, 'Hourly'),
(720, '12 hours'),
(1440, 'Daily'),
(10080, 'Weekly'),
(43200, '30 days'),
(60, _('Hourly')),
(720, _('12 hours')),
(1440, _('Daily')),
(10080, _('Weekly')),
(43200, _('30 days')),
)
@ -191,12 +192,12 @@ class JobResultStatusChoices(ChoiceSet):
STATUS_FAILED = 'failed'
CHOICES = (
(STATUS_PENDING, 'Pending', 'cyan'),
(STATUS_SCHEDULED, 'Scheduled', 'gray'),
(STATUS_RUNNING, 'Running', 'blue'),
(STATUS_COMPLETED, 'Completed', 'green'),
(STATUS_ERRORED, 'Errored', 'red'),
(STATUS_FAILED, 'Failed', 'red'),
(STATUS_PENDING, _('Pending'), 'cyan'),
(STATUS_SCHEDULED, _('Scheduled'), 'gray'),
(STATUS_RUNNING, _('Running'), 'blue'),
(STATUS_COMPLETED, _('Completed'), 'green'),
(STATUS_ERRORED, _('Errored'), 'red'),
(STATUS_FAILED, _('Failed'), 'red'),
)
TERMINAL_STATE_CHOICES = (
@ -219,11 +220,11 @@ class WebhookHttpMethodChoices(ChoiceSet):
METHOD_DELETE = 'DELETE'
CHOICES = (
(METHOD_GET, 'GET'),
(METHOD_POST, 'POST'),
(METHOD_PUT, 'PUT'),
(METHOD_PATCH, 'PATCH'),
(METHOD_DELETE, 'DELETE'),
(METHOD_GET, _('GET')),
(METHOD_POST, _('POST')),
(METHOD_PUT, _('PUT')),
(METHOD_PATCH, _('PATCH')),
(METHOD_DELETE, _('DELETE')),
)
@ -238,7 +239,7 @@ class ChangeActionChoices(ChoiceSet):
ACTION_DELETE = 'delete'
CHOICES = (
(ACTION_CREATE, 'Create', 'green'),
(ACTION_UPDATE, 'Update', 'blue'),
(ACTION_DELETE, 'Delete', 'red'),
(ACTION_CREATE, _('Create'), 'green'),
(ACTION_UPDATE, _('Update'), 'blue'),
(ACTION_DELETE, _('Delete'), 'red'),
)

View File

@ -1,3 +1,4 @@
from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
@ -7,8 +8,8 @@ class IPAddressFamilyChoices(ChoiceSet):
FAMILY_6 = 6
CHOICES = (
(FAMILY_4, 'IPv4'),
(FAMILY_6, 'IPv6'),
(FAMILY_4, _('IPv4')),
(FAMILY_6, _('IPv6')),
)
@ -25,10 +26,10 @@ class PrefixStatusChoices(ChoiceSet):
STATUS_DEPRECATED = 'deprecated'
CHOICES = [
(STATUS_CONTAINER, 'Container', 'gray'),
(STATUS_ACTIVE, 'Active', 'blue'),
(STATUS_RESERVED, 'Reserved', 'cyan'),
(STATUS_DEPRECATED, 'Deprecated', 'red'),
(STATUS_CONTAINER, _('Container'), 'gray'),
(STATUS_ACTIVE, _('Active'), 'blue'),
(STATUS_RESERVED, _('Reserved'), 'cyan'),
(STATUS_DEPRECATED, _('Deprecated'), 'red'),
]
@ -44,9 +45,9 @@ class IPRangeStatusChoices(ChoiceSet):
STATUS_DEPRECATED = 'deprecated'
CHOICES = [
(STATUS_ACTIVE, 'Active', 'blue'),
(STATUS_RESERVED, 'Reserved', 'cyan'),
(STATUS_DEPRECATED, 'Deprecated', 'red'),
(STATUS_ACTIVE, _('Active'), 'blue'),
(STATUS_RESERVED, _('Reserved'), 'cyan'),
(STATUS_DEPRECATED, _('Deprecated'), 'red'),
]
@ -64,11 +65,11 @@ class IPAddressStatusChoices(ChoiceSet):
STATUS_SLAAC = 'slaac'
CHOICES = [
(STATUS_ACTIVE, 'Active', 'blue'),
(STATUS_RESERVED, 'Reserved', 'cyan'),
(STATUS_DEPRECATED, 'Deprecated', 'red'),
(STATUS_DHCP, 'DHCP', 'green'),
(STATUS_SLAAC, 'SLAAC', 'purple'),
(STATUS_ACTIVE, _('Active'), 'blue'),
(STATUS_RESERVED, _('Reserved'), 'cyan'),
(STATUS_DEPRECATED, _('Deprecated'), 'red'),
(STATUS_DHCP, _('DHCP'), 'green'),
(STATUS_SLAAC, _('SLAAC'), 'purple'),
]
@ -84,14 +85,14 @@ class IPAddressRoleChoices(ChoiceSet):
ROLE_CARP = 'carp'
CHOICES = (
(ROLE_LOOPBACK, 'Loopback', 'gray'),
(ROLE_SECONDARY, 'Secondary', 'blue'),
(ROLE_ANYCAST, 'Anycast', 'yellow'),
(ROLE_VIP, 'VIP', 'purple'),
(ROLE_VRRP, 'VRRP', 'green'),
(ROLE_HSRP, 'HSRP', 'green'),
(ROLE_GLBP, 'GLBP', 'green'),
(ROLE_CARP, 'CARP', 'green'),
(ROLE_LOOPBACK, _('Loopback'), 'gray'),
(ROLE_SECONDARY, _('Secondary'), 'blue'),
(ROLE_ANYCAST, _('Anycast'), 'yellow'),
(ROLE_VIP, _('VIP'), 'purple'),
(ROLE_VRRP, _('VRRP'), 'green'),
(ROLE_HSRP, _('HSRP'), 'green'),
(ROLE_GLBP, _('GLBP'), 'green'),
(ROLE_CARP, _('CARP'), 'green'),
)
@ -110,19 +111,19 @@ class FHRPGroupProtocolChoices(ChoiceSet):
PROTOCOL_OTHER = 'other'
CHOICES = (
('Standard', (
(PROTOCOL_VRRP2, 'VRRPv2'),
(PROTOCOL_VRRP3, 'VRRPv3'),
(PROTOCOL_CARP, 'CARP'),
(_('Standard'), (
(PROTOCOL_VRRP2, _('VRRPv2')),
(PROTOCOL_VRRP3, _('VRRPv3')),
(PROTOCOL_CARP, _('CARP')),
)),
('CheckPoint', (
(PROTOCOL_CLUSTERXL, 'ClusterXL'),
(_('CheckPoint'), (
(PROTOCOL_CLUSTERXL, _('ClusterXL')),
)),
('Cisco', (
(PROTOCOL_HSRP, 'HSRP'),
(PROTOCOL_GLBP, 'GLBP'),
(_('Cisco'), (
(PROTOCOL_HSRP, _('HSRP')),
(PROTOCOL_GLBP, _('GLBP')),
)),
(PROTOCOL_OTHER, 'Other'),
(PROTOCOL_OTHER, _('Other')),
)
@ -132,8 +133,8 @@ class FHRPGroupAuthTypeChoices(ChoiceSet):
AUTHENTICATION_MD5 = 'md5'
CHOICES = (
(AUTHENTICATION_PLAINTEXT, 'Plaintext'),
(AUTHENTICATION_MD5, 'MD5'),
(AUTHENTICATION_PLAINTEXT, _('Plaintext')),
(AUTHENTICATION_MD5, _('MD5')),
)
@ -149,9 +150,9 @@ class VLANStatusChoices(ChoiceSet):
STATUS_DEPRECATED = 'deprecated'
CHOICES = [
(STATUS_ACTIVE, 'Active', 'blue'),
(STATUS_RESERVED, 'Reserved', 'cyan'),
(STATUS_DEPRECATED, 'Deprecated', 'red'),
(STATUS_ACTIVE, _('Active'), 'blue'),
(STATUS_RESERVED, _('Reserved'), 'cyan'),
(STATUS_DEPRECATED, _('Deprecated'), 'red'),
]
@ -166,9 +167,9 @@ class ServiceProtocolChoices(ChoiceSet):
PROTOCOL_SCTP = 'sctp'
CHOICES = (
(PROTOCOL_TCP, 'TCP'),
(PROTOCOL_UDP, 'UDP'),
(PROTOCOL_SCTP, 'SCTP'),
(PROTOCOL_TCP, _('TCP')),
(PROTOCOL_UDP, _('UDP')),
(PROTOCOL_SCTP, _('SCTP')),
)
@ -187,29 +188,29 @@ class L2VPNTypeChoices(ChoiceSet):
TYPE_PBB_EVPN = 'pbb-evpn'
CHOICES = (
('VPLS', (
(TYPE_VPWS, 'VPWS'),
(TYPE_VPLS, 'VPLS'),
(_('VPLS'), (
(TYPE_VPWS, _('VPWS')),
(TYPE_VPLS, _('VPLS')),
)),
('VXLAN', (
(TYPE_VXLAN, 'VXLAN'),
(TYPE_VXLAN_EVPN, 'VXLAN-EVPN'),
(_('VXLAN'), (
(TYPE_VXLAN, _('VXLAN')),
(TYPE_VXLAN_EVPN, _('VXLAN-EVPN')),
)),
('L2VPN E-VPN', (
(TYPE_MPLS_EVPN, 'MPLS EVPN'),
(TYPE_PBB_EVPN, 'PBB EVPN'),
(_('L2VPN E-VPN'), (
(TYPE_MPLS_EVPN, _('MPLS EVPN')),
(TYPE_PBB_EVPN, _('PBB EVPN')),
)),
('E-Line', (
(TYPE_EPL, 'EPL'),
(TYPE_EVPL, 'EVPL'),
(_('E-Line'), (
(TYPE_EPL, _('EPL')),
(TYPE_EVPL, _('EVPL')),
)),
('E-LAN', (
(TYPE_EPLAN, 'Ethernet Private LAN'),
(TYPE_EVPLAN, 'Ethernet Virtual Private LAN'),
(_('E-LAN'), (
(TYPE_EPLAN, _('Ethernet Private LAN')),
(TYPE_EVPLAN, _('Ethernet Virtual Private LAN')),
)),
('E-Tree', (
(TYPE_EPTREE, 'Ethernet Private Tree'),
(TYPE_EVPTREE, 'Ethernet Virtual Private Tree'),
(_('E-Tree'), (
(TYPE_EPTREE, _('Ethernet Private Tree')),
(TYPE_EVPTREE, _('Ethernet Virtual Private Tree')),
)),
)

View File

@ -1,3 +1,4 @@
from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
@ -12,8 +13,8 @@ class ContactPriorityChoices(ChoiceSet):
PRIORITY_INACTIVE = 'inactive'
CHOICES = (
(PRIORITY_PRIMARY, 'Primary'),
(PRIORITY_SECONDARY, 'Secondary'),
(PRIORITY_TERTIARY, 'Tertiary'),
(PRIORITY_INACTIVE, 'Inactive'),
(PRIORITY_PRIMARY, _('Primary')),
(PRIORITY_SECONDARY, _('Secondary')),
(PRIORITY_TERTIARY, _('Tertiary')),
(PRIORITY_INACTIVE, _('Inactive')),
)

View File

@ -1,4 +1,5 @@
from django.conf import settings
from django.utils.translation import gettext_lazy as _
class ChoiceSetMeta(type):
@ -9,7 +10,7 @@ class ChoiceSetMeta(type):
# Extend static choices with any configured choices
if key := attrs.get('key'):
assert type(attrs['CHOICES']) is list, f"{name} has a key defined but CHOICES is not a list"
assert type(attrs['CHOICES']) is list, _("{name} has a key defined but CHOICES is not a list").format(name=name)
app = attrs['__module__'].split('.', 1)[0]
replace_key = f'{app}.{key}'
extend_key = f'{replace_key}+' if replace_key else None
@ -127,33 +128,33 @@ class ColorChoices(ChoiceSet):
COLOR_WHITE = 'ffffff'
CHOICES = (
(COLOR_DARK_RED, 'Dark Red'),
(COLOR_RED, 'Red'),
(COLOR_PINK, 'Pink'),
(COLOR_ROSE, 'Rose'),
(COLOR_FUCHSIA, 'Fuchsia'),
(COLOR_PURPLE, 'Purple'),
(COLOR_DARK_PURPLE, 'Dark Purple'),
(COLOR_INDIGO, 'Indigo'),
(COLOR_BLUE, 'Blue'),
(COLOR_LIGHT_BLUE, 'Light Blue'),
(COLOR_CYAN, 'Cyan'),
(COLOR_TEAL, 'Teal'),
(COLOR_AQUA, 'Aqua'),
(COLOR_DARK_GREEN, 'Dark Green'),
(COLOR_GREEN, 'Green'),
(COLOR_LIGHT_GREEN, 'Light Green'),
(COLOR_LIME, 'Lime'),
(COLOR_YELLOW, 'Yellow'),
(COLOR_AMBER, 'Amber'),
(COLOR_ORANGE, 'Orange'),
(COLOR_DARK_ORANGE, 'Dark Orange'),
(COLOR_BROWN, 'Brown'),
(COLOR_LIGHT_GREY, 'Light Grey'),
(COLOR_GREY, 'Grey'),
(COLOR_DARK_GREY, 'Dark Grey'),
(COLOR_BLACK, 'Black'),
(COLOR_WHITE, 'White'),
(COLOR_DARK_RED, _('Dark Red')),
(COLOR_RED, _('Red')),
(COLOR_PINK, _('Pink')),
(COLOR_ROSE, _('Rose')),
(COLOR_FUCHSIA, _('Fuchsia')),
(COLOR_PURPLE, _('Purple')),
(COLOR_DARK_PURPLE, _('Dark Purple')),
(COLOR_INDIGO, _('Indigo')),
(COLOR_BLUE, _('Blue')),
(COLOR_LIGHT_BLUE, _('Light Blue')),
(COLOR_CYAN, _('Cyan')),
(COLOR_TEAL, _('Teal')),
(COLOR_AQUA, _('Aqua')),
(COLOR_DARK_GREEN, _('Dark Green')),
(COLOR_GREEN, _('Green')),
(COLOR_LIGHT_GREEN, _('Light Green')),
(COLOR_LIME, _('Lime')),
(COLOR_YELLOW, _('Yellow')),
(COLOR_AMBER, _('Amber')),
(COLOR_ORANGE, _('Orange')),
(COLOR_DARK_ORANGE, _('Dark Orange')),
(COLOR_BROWN, _('Brown')),
(COLOR_LIGHT_GREY, _('Light Grey')),
(COLOR_GREY, _('Grey')),
(COLOR_DARK_GREY, _('Dark Grey')),
(COLOR_BLACK, _('Black')),
(COLOR_WHITE, _('White')),
)
@ -182,20 +183,20 @@ class ButtonColorChoices(ChoiceSet):
WHITE = 'white'
CHOICES = (
(DEFAULT, 'Default'),
(BLUE, 'Blue'),
(INDIGO, 'Indigo'),
(PURPLE, 'Purple'),
(PINK, 'Pink'),
(RED, 'Red'),
(ORANGE, 'Orange'),
(YELLOW, 'Yellow'),
(GREEN, 'Green'),
(TEAL, 'Teal'),
(CYAN, 'Cyan'),
(GRAY, 'Gray'),
(BLACK, 'Black'),
(WHITE, 'White'),
(DEFAULT, _('Default')),
(BLUE, _('Blue')),
(INDIGO, _('Indigo')),
(PURPLE, _('Purple')),
(PINK, _('Pink')),
(RED, _('Red')),
(ORANGE, _('Orange')),
(YELLOW, _('Yellow')),
(GREEN, _('Green')),
(TEAL, _('Teal')),
(CYAN, _('Cyan')),
(GRAY, _('Gray')),
(BLACK, _('Black')),
(WHITE, _('White')),
)
@ -209,9 +210,9 @@ class ImportMethodChoices(ChoiceSet):
DATA_FILE = 'datafile'
CHOICES = [
(DIRECT, 'Direct'),
(UPLOAD, 'Upload'),
(DATA_FILE, 'Data file'),
(DIRECT, _('Direct')),
(UPLOAD, _('Upload')),
(DATA_FILE, _('Data file')),
]
@ -222,8 +223,8 @@ class ImportFormatChoices(ChoiceSet):
YAML = 'yaml'
CHOICES = [
(AUTO, 'Auto-detect'),
(CSV, 'CSV'),
(JSON, 'JSON'),
(YAML, 'YAML'),
(AUTO, _('Auto-detect')),
(CSV, _('CSV')),
(JSON, _('JSON')),
(YAML, _('YAML')),
]

View File

@ -1,3 +1,4 @@
from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
@ -15,11 +16,11 @@ class ClusterStatusChoices(ChoiceSet):
STATUS_OFFLINE = 'offline'
CHOICES = [
(STATUS_PLANNED, 'Planned', 'cyan'),
(STATUS_STAGING, 'Staging', 'blue'),
(STATUS_ACTIVE, 'Active', 'green'),
(STATUS_DECOMMISSIONING, 'Decommissioning', 'yellow'),
(STATUS_OFFLINE, 'Offline', 'red'),
(STATUS_PLANNED, _('Planned'), 'cyan'),
(STATUS_STAGING, _('Staging'), 'blue'),
(STATUS_ACTIVE, _('Active'), 'green'),
(STATUS_DECOMMISSIONING, _('Decommissioning'), 'yellow'),
(STATUS_OFFLINE, _('Offline'), 'red'),
]
@ -38,10 +39,10 @@ class VirtualMachineStatusChoices(ChoiceSet):
STATUS_DECOMMISSIONING = 'decommissioning'
CHOICES = [
(STATUS_OFFLINE, 'Offline', 'gray'),
(STATUS_ACTIVE, 'Active', 'green'),
(STATUS_PLANNED, 'Planned', 'cyan'),
(STATUS_STAGED, 'Staged', 'blue'),
(STATUS_FAILED, 'Failed', 'red'),
(STATUS_DECOMMISSIONING, 'Decommissioning', 'yellow'),
(STATUS_OFFLINE, _('Offline'), 'gray'),
(STATUS_ACTIVE, _('Active'), 'green'),
(STATUS_PLANNED, _('Planned'), 'cyan'),
(STATUS_STAGED, _('Staged'), 'blue'),
(STATUS_FAILED, _('Failed'), 'red'),
(STATUS_DECOMMISSIONING, _('Decommissioning'), 'yellow'),
]

View File

@ -1,4 +1,4 @@
from django.utils.translation import gettext as _
from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
@ -8,8 +8,8 @@ class WirelessRoleChoices(ChoiceSet):
ROLE_STATION = 'station'
CHOICES = (
(ROLE_AP, 'Access point'),
(ROLE_STATION, 'Station'),
(ROLE_AP, _('Access point')),
(ROLE_STATION, _('Station')),
)
@ -238,220 +238,220 @@ class WirelessChannelChoices(ChoiceSet):
CHOICES = (
(
'2.4 GHz (802.11b/g/n/ax)',
_('2.4 GHz (802.11b/g/n/ax)'),
(
(CHANNEL_24G_1, '1 (2412 MHz)'),
(CHANNEL_24G_2, '2 (2417 MHz)'),
(CHANNEL_24G_3, '3 (2422 MHz)'),
(CHANNEL_24G_4, '4 (2427 MHz)'),
(CHANNEL_24G_5, '5 (2432 MHz)'),
(CHANNEL_24G_6, '6 (2437 MHz)'),
(CHANNEL_24G_7, '7 (2442 MHz)'),
(CHANNEL_24G_8, '8 (2447 MHz)'),
(CHANNEL_24G_9, '9 (2452 MHz)'),
(CHANNEL_24G_10, '10 (2457 MHz)'),
(CHANNEL_24G_11, '11 (2462 MHz)'),
(CHANNEL_24G_12, '12 (2467 MHz)'),
(CHANNEL_24G_13, '13 (2472 MHz)'),
(CHANNEL_24G_1, _('1 (2412 MHz)')),
(CHANNEL_24G_2, _('2 (2417 MHz)')),
(CHANNEL_24G_3, _('3 (2422 MHz)')),
(CHANNEL_24G_4, _('4 (2427 MHz)')),
(CHANNEL_24G_5, _('5 (2432 MHz)')),
(CHANNEL_24G_6, _('6 (2437 MHz)')),
(CHANNEL_24G_7, _('7 (2442 MHz)')),
(CHANNEL_24G_8, _('8 (2447 MHz)')),
(CHANNEL_24G_9, _('9 (2452 MHz)')),
(CHANNEL_24G_10, _('10 (2457 MHz)')),
(CHANNEL_24G_11, _('11 (2462 MHz)')),
(CHANNEL_24G_12, _('12 (2467 MHz)')),
(CHANNEL_24G_13, _('13 (2472 MHz)')),
)
),
(
'5 GHz (802.11a/n/ac/ax)',
_('5 GHz (802.11a/n/ac/ax)'),
(
(CHANNEL_5G_32, '32 (5160/20 MHz)'),
(CHANNEL_5G_34, '34 (5170/40 MHz)'),
(CHANNEL_5G_36, '36 (5180/20 MHz)'),
(CHANNEL_5G_38, '38 (5190/40 MHz)'),
(CHANNEL_5G_40, '40 (5200/20 MHz)'),
(CHANNEL_5G_42, '42 (5210/80 MHz)'),
(CHANNEL_5G_44, '44 (5220/20 MHz)'),
(CHANNEL_5G_46, '46 (5230/40 MHz)'),
(CHANNEL_5G_48, '48 (5240/20 MHz)'),
(CHANNEL_5G_50, '50 (5250/160 MHz)'),
(CHANNEL_5G_52, '52 (5260/20 MHz)'),
(CHANNEL_5G_54, '54 (5270/40 MHz)'),
(CHANNEL_5G_56, '56 (5280/20 MHz)'),
(CHANNEL_5G_58, '58 (5290/80 MHz)'),
(CHANNEL_5G_60, '60 (5300/20 MHz)'),
(CHANNEL_5G_62, '62 (5310/40 MHz)'),
(CHANNEL_5G_64, '64 (5320/20 MHz)'),
(CHANNEL_5G_100, '100 (5500/20 MHz)'),
(CHANNEL_5G_102, '102 (5510/40 MHz)'),
(CHANNEL_5G_104, '104 (5520/20 MHz)'),
(CHANNEL_5G_106, '106 (5530/80 MHz)'),
(CHANNEL_5G_108, '108 (5540/20 MHz)'),
(CHANNEL_5G_110, '110 (5550/40 MHz)'),
(CHANNEL_5G_112, '112 (5560/20 MHz)'),
(CHANNEL_5G_114, '114 (5570/160 MHz)'),
(CHANNEL_5G_116, '116 (5580/20 MHz)'),
(CHANNEL_5G_118, '118 (5590/40 MHz)'),
(CHANNEL_5G_120, '120 (5600/20 MHz)'),
(CHANNEL_5G_122, '122 (5610/80 MHz)'),
(CHANNEL_5G_124, '124 (5620/20 MHz)'),
(CHANNEL_5G_126, '126 (5630/40 MHz)'),
(CHANNEL_5G_128, '128 (5640/20 MHz)'),
(CHANNEL_5G_132, '132 (5660/20 MHz)'),
(CHANNEL_5G_134, '134 (5670/40 MHz)'),
(CHANNEL_5G_136, '136 (5680/20 MHz)'),
(CHANNEL_5G_138, '138 (5690/80 MHz)'),
(CHANNEL_5G_140, '140 (5700/20 MHz)'),
(CHANNEL_5G_142, '142 (5710/40 MHz)'),
(CHANNEL_5G_144, '144 (5720/20 MHz)'),
(CHANNEL_5G_149, '149 (5745/20 MHz)'),
(CHANNEL_5G_151, '151 (5755/40 MHz)'),
(CHANNEL_5G_153, '153 (5765/20 MHz)'),
(CHANNEL_5G_155, '155 (5775/80 MHz)'),
(CHANNEL_5G_157, '157 (5785/20 MHz)'),
(CHANNEL_5G_159, '159 (5795/40 MHz)'),
(CHANNEL_5G_161, '161 (5805/20 MHz)'),
(CHANNEL_5G_163, '163 (5815/160 MHz)'),
(CHANNEL_5G_165, '165 (5825/20 MHz)'),
(CHANNEL_5G_167, '167 (5835/40 MHz)'),
(CHANNEL_5G_169, '169 (5845/20 MHz)'),
(CHANNEL_5G_171, '171 (5855/80 MHz)'),
(CHANNEL_5G_173, '173 (5865/20 MHz)'),
(CHANNEL_5G_175, '175 (5875/40 MHz)'),
(CHANNEL_5G_177, '177 (5885/20 MHz)'),
(CHANNEL_5G_32, _('32 (5160/20 MHz)')),
(CHANNEL_5G_34, _('34 (5170/40 MHz)')),
(CHANNEL_5G_36, _('36 (5180/20 MHz)')),
(CHANNEL_5G_38, _('38 (5190/40 MHz)')),
(CHANNEL_5G_40, _('40 (5200/20 MHz)')),
(CHANNEL_5G_42, _('42 (5210/80 MHz)')),
(CHANNEL_5G_44, _('44 (5220/20 MHz)')),
(CHANNEL_5G_46, _('46 (5230/40 MHz)')),
(CHANNEL_5G_48, _('48 (5240/20 MHz)')),
(CHANNEL_5G_50, _('50 (5250/160 MHz)')),
(CHANNEL_5G_52, _('52 (5260/20 MHz)')),
(CHANNEL_5G_54, _('54 (5270/40 MHz)')),
(CHANNEL_5G_56, _('56 (5280/20 MHz)')),
(CHANNEL_5G_58, _('58 (5290/80 MHz)')),
(CHANNEL_5G_60, _('60 (5300/20 MHz)')),
(CHANNEL_5G_62, _('62 (5310/40 MHz)')),
(CHANNEL_5G_64, _('64 (5320/20 MHz)')),
(CHANNEL_5G_100, _('100 (5500/20 MHz)')),
(CHANNEL_5G_102, _('102 (5510/40 MHz)')),
(CHANNEL_5G_104, _('104 (5520/20 MHz)')),
(CHANNEL_5G_106, _('106 (5530/80 MHz)')),
(CHANNEL_5G_108, _('108 (5540/20 MHz)')),
(CHANNEL_5G_110, _('110 (5550/40 MHz)')),
(CHANNEL_5G_112, _('112 (5560/20 MHz)')),
(CHANNEL_5G_114, _('114 (5570/160 MHz)')),
(CHANNEL_5G_116, _('116 (5580/20 MHz)')),
(CHANNEL_5G_118, _('118 (5590/40 MHz)')),
(CHANNEL_5G_120, _('120 (5600/20 MHz)')),
(CHANNEL_5G_122, _('122 (5610/80 MHz)')),
(CHANNEL_5G_124, _('124 (5620/20 MHz)')),
(CHANNEL_5G_126, _('126 (5630/40 MHz)')),
(CHANNEL_5G_128, _('128 (5640/20 MHz)')),
(CHANNEL_5G_132, _('132 (5660/20 MHz)')),
(CHANNEL_5G_134, _('134 (5670/40 MHz)')),
(CHANNEL_5G_136, _('136 (5680/20 MHz)')),
(CHANNEL_5G_138, _('138 (5690/80 MHz)')),
(CHANNEL_5G_140, _('140 (5700/20 MHz)')),
(CHANNEL_5G_142, _('142 (5710/40 MHz)')),
(CHANNEL_5G_144, _('144 (5720/20 MHz)')),
(CHANNEL_5G_149, _('149 (5745/20 MHz)')),
(CHANNEL_5G_151, _('151 (5755/40 MHz)')),
(CHANNEL_5G_153, _('153 (5765/20 MHz)')),
(CHANNEL_5G_155, _('155 (5775/80 MHz)')),
(CHANNEL_5G_157, _('157 (5785/20 MHz)')),
(CHANNEL_5G_159, _('159 (5795/40 MHz)')),
(CHANNEL_5G_161, _('161 (5805/20 MHz)')),
(CHANNEL_5G_163, _('163 (5815/160 MHz)')),
(CHANNEL_5G_165, _('165 (5825/20 MHz)')),
(CHANNEL_5G_167, _('167 (5835/40 MHz)')),
(CHANNEL_5G_169, _('169 (5845/20 MHz)')),
(CHANNEL_5G_171, _('171 (5855/80 MHz)')),
(CHANNEL_5G_173, _('173 (5865/20 MHz)')),
(CHANNEL_5G_175, _('175 (5875/40 MHz)')),
(CHANNEL_5G_177, _('177 (5885/20 MHz)')),
)
),
(
'6 GHz (802.11ax)',
_('6 GHz (802.11ax)'),
(
(CHANNEL_6G_1, '1 (5955/20 MHz)'),
(CHANNEL_6G_3, '3 (5965/40 MHz)'),
(CHANNEL_6G_5, '5 (5975/20 MHz)'),
(CHANNEL_6G_7, '7 (5985/80 MHz)'),
(CHANNEL_6G_9, '9 (5995/20 MHz)'),
(CHANNEL_6G_11, '11 (6005/40 MHz)'),
(CHANNEL_6G_13, '13 (6015/20 MHz)'),
(CHANNEL_6G_15, '15 (6025/160 MHz)'),
(CHANNEL_6G_17, '17 (6035/20 MHz)'),
(CHANNEL_6G_19, '19 (6045/40 MHz)'),
(CHANNEL_6G_21, '21 (6055/20 MHz)'),
(CHANNEL_6G_23, '23 (6065/80 MHz)'),
(CHANNEL_6G_25, '25 (6075/20 MHz)'),
(CHANNEL_6G_27, '27 (6085/40 MHz)'),
(CHANNEL_6G_29, '29 (6095/20 MHz)'),
(CHANNEL_6G_31, '31 (6105/320 MHz)'),
(CHANNEL_6G_33, '33 (6115/20 MHz)'),
(CHANNEL_6G_35, '35 (6125/40 MHz)'),
(CHANNEL_6G_37, '37 (6135/20 MHz)'),
(CHANNEL_6G_39, '39 (6145/80 MHz)'),
(CHANNEL_6G_41, '41 (6155/20 MHz)'),
(CHANNEL_6G_43, '43 (6165/40 MHz)'),
(CHANNEL_6G_45, '45 (6175/20 MHz)'),
(CHANNEL_6G_47, '47 (6185/160 MHz)'),
(CHANNEL_6G_49, '49 (6195/20 MHz)'),
(CHANNEL_6G_51, '51 (6205/40 MHz)'),
(CHANNEL_6G_53, '53 (6215/20 MHz)'),
(CHANNEL_6G_55, '55 (6225/80 MHz)'),
(CHANNEL_6G_57, '57 (6235/20 MHz)'),
(CHANNEL_6G_59, '59 (6245/40 MHz)'),
(CHANNEL_6G_61, '61 (6255/20 MHz)'),
(CHANNEL_6G_65, '65 (6275/20 MHz)'),
(CHANNEL_6G_67, '67 (6285/40 MHz)'),
(CHANNEL_6G_69, '69 (6295/20 MHz)'),
(CHANNEL_6G_71, '71 (6305/80 MHz)'),
(CHANNEL_6G_73, '73 (6315/20 MHz)'),
(CHANNEL_6G_75, '75 (6325/40 MHz)'),
(CHANNEL_6G_77, '77 (6335/20 MHz)'),
(CHANNEL_6G_79, '79 (6345/160 MHz)'),
(CHANNEL_6G_81, '81 (6355/20 MHz)'),
(CHANNEL_6G_83, '83 (6365/40 MHz)'),
(CHANNEL_6G_85, '85 (6375/20 MHz)'),
(CHANNEL_6G_87, '87 (6385/80 MHz)'),
(CHANNEL_6G_89, '89 (6395/20 MHz)'),
(CHANNEL_6G_91, '91 (6405/40 MHz)'),
(CHANNEL_6G_93, '93 (6415/20 MHz)'),
(CHANNEL_6G_95, '95 (6425/320 MHz)'),
(CHANNEL_6G_97, '97 (6435/20 MHz)'),
(CHANNEL_6G_99, '99 (6445/40 MHz)'),
(CHANNEL_6G_101, '101 (6455/20 MHz)'),
(CHANNEL_6G_103, '103 (6465/80 MHz)'),
(CHANNEL_6G_105, '105 (6475/20 MHz)'),
(CHANNEL_6G_107, '107 (6485/40 MHz)'),
(CHANNEL_6G_109, '109 (6495/20 MHz)'),
(CHANNEL_6G_111, '111 (6505/160 MHz)'),
(CHANNEL_6G_113, '113 (6515/20 MHz)'),
(CHANNEL_6G_115, '115 (6525/40 MHz)'),
(CHANNEL_6G_117, '117 (6535/20 MHz)'),
(CHANNEL_6G_119, '119 (6545/80 MHz)'),
(CHANNEL_6G_121, '121 (6555/20 MHz)'),
(CHANNEL_6G_123, '123 (6565/40 MHz)'),
(CHANNEL_6G_125, '125 (6575/20 MHz)'),
(CHANNEL_6G_129, '129 (6595/20 MHz)'),
(CHANNEL_6G_131, '131 (6605/40 MHz)'),
(CHANNEL_6G_133, '133 (6615/20 MHz)'),
(CHANNEL_6G_135, '135 (6625/80 MHz)'),
(CHANNEL_6G_137, '137 (6635/20 MHz)'),
(CHANNEL_6G_139, '139 (6645/40 MHz)'),
(CHANNEL_6G_141, '141 (6655/20 MHz)'),
(CHANNEL_6G_143, '143 (6665/160 MHz)'),
(CHANNEL_6G_145, '145 (6675/20 MHz)'),
(CHANNEL_6G_147, '147 (6685/40 MHz)'),
(CHANNEL_6G_149, '149 (6695/20 MHz)'),
(CHANNEL_6G_151, '151 (6705/80 MHz)'),
(CHANNEL_6G_153, '153 (6715/20 MHz)'),
(CHANNEL_6G_155, '155 (6725/40 MHz)'),
(CHANNEL_6G_157, '157 (6735/20 MHz)'),
(CHANNEL_6G_159, '159 (6745/320 MHz)'),
(CHANNEL_6G_161, '161 (6755/20 MHz)'),
(CHANNEL_6G_163, '163 (6765/40 MHz)'),
(CHANNEL_6G_165, '165 (6775/20 MHz)'),
(CHANNEL_6G_167, '167 (6785/80 MHz)'),
(CHANNEL_6G_169, '169 (6795/20 MHz)'),
(CHANNEL_6G_171, '171 (6805/40 MHz)'),
(CHANNEL_6G_173, '173 (6815/20 MHz)'),
(CHANNEL_6G_175, '175 (6825/160 MHz)'),
(CHANNEL_6G_177, '177 (6835/20 MHz)'),
(CHANNEL_6G_179, '179 (6845/40 MHz)'),
(CHANNEL_6G_181, '181 (6855/20 MHz)'),
(CHANNEL_6G_183, '183 (6865/80 MHz)'),
(CHANNEL_6G_185, '185 (6875/20 MHz)'),
(CHANNEL_6G_187, '187 (6885/40 MHz)'),
(CHANNEL_6G_189, '189 (6895/20 MHz)'),
(CHANNEL_6G_193, '193 (6915/20 MHz)'),
(CHANNEL_6G_195, '195 (6925/40 MHz)'),
(CHANNEL_6G_197, '197 (6935/20 MHz)'),
(CHANNEL_6G_199, '199 (6945/80 MHz)'),
(CHANNEL_6G_201, '201 (6955/20 MHz)'),
(CHANNEL_6G_203, '203 (6965/40 MHz)'),
(CHANNEL_6G_205, '205 (6975/20 MHz)'),
(CHANNEL_6G_207, '207 (6985/160 MHz)'),
(CHANNEL_6G_209, '209 (6995/20 MHz)'),
(CHANNEL_6G_211, '211 (7005/40 MHz)'),
(CHANNEL_6G_213, '213 (7015/20 MHz)'),
(CHANNEL_6G_215, '215 (7025/80 MHz)'),
(CHANNEL_6G_217, '217 (7035/20 MHz)'),
(CHANNEL_6G_219, '219 (7045/40 MHz)'),
(CHANNEL_6G_221, '221 (7055/20 MHz)'),
(CHANNEL_6G_225, '225 (7075/20 MHz)'),
(CHANNEL_6G_227, '227 (7085/40 MHz)'),
(CHANNEL_6G_229, '229 (7095/20 MHz)'),
(CHANNEL_6G_233, '233 (7115/20 MHz)'),
(CHANNEL_6G_1, _('1 (5955/20 MHz)')),
(CHANNEL_6G_3, _('3 (5965/40 MHz)')),
(CHANNEL_6G_5, _('5 (5975/20 MHz)')),
(CHANNEL_6G_7, _('7 (5985/80 MHz)')),
(CHANNEL_6G_9, _('9 (5995/20 MHz)')),
(CHANNEL_6G_11, _('11 (6005/40 MHz)')),
(CHANNEL_6G_13, _('13 (6015/20 MHz)')),
(CHANNEL_6G_15, _('15 (6025/160 MHz)')),
(CHANNEL_6G_17, _('17 (6035/20 MHz)')),
(CHANNEL_6G_19, _('19 (6045/40 MHz)')),
(CHANNEL_6G_21, _('21 (6055/20 MHz)')),
(CHANNEL_6G_23, _('23 (6065/80 MHz)')),
(CHANNEL_6G_25, _('25 (6075/20 MHz)')),
(CHANNEL_6G_27, _('27 (6085/40 MHz)')),
(CHANNEL_6G_29, _('29 (6095/20 MHz)')),
(CHANNEL_6G_31, _('31 (6105/320 MHz)')),
(CHANNEL_6G_33, _('33 (6115/20 MHz)')),
(CHANNEL_6G_35, _('35 (6125/40 MHz)')),
(CHANNEL_6G_37, _('37 (6135/20 MHz)')),
(CHANNEL_6G_39, _('39 (6145/80 MHz)')),
(CHANNEL_6G_41, _('41 (6155/20 MHz)')),
(CHANNEL_6G_43, _('43 (6165/40 MHz)')),
(CHANNEL_6G_45, _('45 (6175/20 MHz)')),
(CHANNEL_6G_47, _('47 (6185/160 MHz)')),
(CHANNEL_6G_49, _('49 (6195/20 MHz)')),
(CHANNEL_6G_51, _('51 (6205/40 MHz)')),
(CHANNEL_6G_53, _('53 (6215/20 MHz)')),
(CHANNEL_6G_55, _('55 (6225/80 MHz)')),
(CHANNEL_6G_57, _('57 (6235/20 MHz)')),
(CHANNEL_6G_59, _('59 (6245/40 MHz)')),
(CHANNEL_6G_61, _('61 (6255/20 MHz)')),
(CHANNEL_6G_65, _('65 (6275/20 MHz)')),
(CHANNEL_6G_67, _('67 (6285/40 MHz)')),
(CHANNEL_6G_69, _('69 (6295/20 MHz)')),
(CHANNEL_6G_71, _('71 (6305/80 MHz)')),
(CHANNEL_6G_73, _('73 (6315/20 MHz)')),
(CHANNEL_6G_75, _('75 (6325/40 MHz)')),
(CHANNEL_6G_77, _('77 (6335/20 MHz)')),
(CHANNEL_6G_79, _('79 (6345/160 MHz)')),
(CHANNEL_6G_81, _('81 (6355/20 MHz)')),
(CHANNEL_6G_83, _('83 (6365/40 MHz)')),
(CHANNEL_6G_85, _('85 (6375/20 MHz)')),
(CHANNEL_6G_87, _('87 (6385/80 MHz)')),
(CHANNEL_6G_89, _('89 (6395/20 MHz)')),
(CHANNEL_6G_91, _('91 (6405/40 MHz)')),
(CHANNEL_6G_93, _('93 (6415/20 MHz)')),
(CHANNEL_6G_95, _('95 (6425/320 MHz)')),
(CHANNEL_6G_97, _('97 (6435/20 MHz)')),
(CHANNEL_6G_99, _('99 (6445/40 MHz)')),
(CHANNEL_6G_101, _('101 (6455/20 MHz)')),
(CHANNEL_6G_103, _('103 (6465/80 MHz)')),
(CHANNEL_6G_105, _('105 (6475/20 MHz)')),
(CHANNEL_6G_107, _('107 (6485/40 MHz)')),
(CHANNEL_6G_109, _('109 (6495/20 MHz)')),
(CHANNEL_6G_111, _('111 (6505/160 MHz)')),
(CHANNEL_6G_113, _('113 (6515/20 MHz)')),
(CHANNEL_6G_115, _('115 (6525/40 MHz)')),
(CHANNEL_6G_117, _('117 (6535/20 MHz)')),
(CHANNEL_6G_119, _('119 (6545/80 MHz)')),
(CHANNEL_6G_121, _('121 (6555/20 MHz)')),
(CHANNEL_6G_123, _('123 (6565/40 MHz)')),
(CHANNEL_6G_125, _('125 (6575/20 MHz)')),
(CHANNEL_6G_129, _('129 (6595/20 MHz)')),
(CHANNEL_6G_131, _('131 (6605/40 MHz)')),
(CHANNEL_6G_133, _('133 (6615/20 MHz)')),
(CHANNEL_6G_135, _('135 (6625/80 MHz)')),
(CHANNEL_6G_137, _('137 (6635/20 MHz)')),
(CHANNEL_6G_139, _('139 (6645/40 MHz)')),
(CHANNEL_6G_141, _('141 (6655/20 MHz)')),
(CHANNEL_6G_143, _('143 (6665/160 MHz)')),
(CHANNEL_6G_145, _('145 (6675/20 MHz)')),
(CHANNEL_6G_147, _('147 (6685/40 MHz)')),
(CHANNEL_6G_149, _('149 (6695/20 MHz)')),
(CHANNEL_6G_151, _('151 (6705/80 MHz)')),
(CHANNEL_6G_153, _('153 (6715/20 MHz)')),
(CHANNEL_6G_155, _('155 (6725/40 MHz)')),
(CHANNEL_6G_157, _('157 (6735/20 MHz)')),
(CHANNEL_6G_159, _('159 (6745/320 MHz)')),
(CHANNEL_6G_161, _('161 (6755/20 MHz)')),
(CHANNEL_6G_163, _('163 (6765/40 MHz)')),
(CHANNEL_6G_165, _('165 (6775/20 MHz)')),
(CHANNEL_6G_167, _('167 (6785/80 MHz)')),
(CHANNEL_6G_169, _('169 (6795/20 MHz)')),
(CHANNEL_6G_171, _('171 (6805/40 MHz)')),
(CHANNEL_6G_173, _('173 (6815/20 MHz)')),
(CHANNEL_6G_175, _('175 (6825/160 MHz)')),
(CHANNEL_6G_177, _('177 (6835/20 MHz)')),
(CHANNEL_6G_179, _('179 (6845/40 MHz)')),
(CHANNEL_6G_181, _('181 (6855/20 MHz)')),
(CHANNEL_6G_183, _('183 (6865/80 MHz)')),
(CHANNEL_6G_185, _('185 (6875/20 MHz)')),
(CHANNEL_6G_187, _('187 (6885/40 MHz)')),
(CHANNEL_6G_189, _('189 (6895/20 MHz)')),
(CHANNEL_6G_193, _('193 (6915/20 MHz)')),
(CHANNEL_6G_195, _('195 (6925/40 MHz)')),
(CHANNEL_6G_197, _('197 (6935/20 MHz)')),
(CHANNEL_6G_199, _('199 (6945/80 MHz)')),
(CHANNEL_6G_201, _('201 (6955/20 MHz)')),
(CHANNEL_6G_203, _('203 (6965/40 MHz)')),
(CHANNEL_6G_205, _('205 (6975/20 MHz)')),
(CHANNEL_6G_207, _('207 (6985/160 MHz)')),
(CHANNEL_6G_209, _('209 (6995/20 MHz)')),
(CHANNEL_6G_211, _('211 (7005/40 MHz)')),
(CHANNEL_6G_213, _('213 (7015/20 MHz)')),
(CHANNEL_6G_215, _('215 (7025/80 MHz)')),
(CHANNEL_6G_217, _('217 (7035/20 MHz)')),
(CHANNEL_6G_219, _('219 (7045/40 MHz)')),
(CHANNEL_6G_221, _('221 (7055/20 MHz)')),
(CHANNEL_6G_225, _('225 (7075/20 MHz)')),
(CHANNEL_6G_227, _('227 (7085/40 MHz)')),
(CHANNEL_6G_229, _('229 (7095/20 MHz)')),
(CHANNEL_6G_233, _('233 (7115/20 MHz)')),
)
),
(
'60 GHz (802.11ad/ay)',
_('60 GHz (802.11ad/ay)'),
(
(CHANNEL_60G_1, '1 (58.32/2.16 GHz)'),
(CHANNEL_60G_2, '2 (60.48/2.16 GHz)'),
(CHANNEL_60G_3, '3 (62.64/2.16 GHz)'),
(CHANNEL_60G_4, '4 (64.80/2.16 GHz)'),
(CHANNEL_60G_5, '5 (66.96/2.16 GHz)'),
(CHANNEL_60G_6, '6 (69.12/2.16 GHz)'),
(CHANNEL_60G_9, '9 (59.40/4.32 GHz)'),
(CHANNEL_60G_10, '10 (61.56/4.32 GHz)'),
(CHANNEL_60G_11, '11 (63.72/4.32 GHz)'),
(CHANNEL_60G_12, '12 (65.88/4.32 GHz)'),
(CHANNEL_60G_13, '13 (68.04/4.32 GHz)'),
(CHANNEL_60G_17, '17 (60.48/6.48 GHz)'),
(CHANNEL_60G_18, '18 (62.64/6.48 GHz)'),
(CHANNEL_60G_19, '19 (64.80/6.48 GHz)'),
(CHANNEL_60G_20, '20 (66.96/6.48 GHz)'),
(CHANNEL_60G_25, '25 (61.56/8.64 GHz)'),
(CHANNEL_60G_26, '26 (63.72/8.64 GHz)'),
(CHANNEL_60G_27, '27 (65.88/8.64 GHz)'),
(CHANNEL_60G_1, _('1 (58.32/2.16 GHz)')),
(CHANNEL_60G_2, _('2 (60.48/2.16 GHz)')),
(CHANNEL_60G_3, _('3 (62.64/2.16 GHz)')),
(CHANNEL_60G_4, _('4 (64.80/2.16 GHz)')),
(CHANNEL_60G_5, _('5 (66.96/2.16 GHz)')),
(CHANNEL_60G_6, _('6 (69.12/2.16 GHz)')),
(CHANNEL_60G_9, _('9 (59.40/4.32 GHz)')),
(CHANNEL_60G_10, _('10 (61.56/4.32 GHz)')),
(CHANNEL_60G_11, _('11 (63.72/4.32 GHz)')),
(CHANNEL_60G_12, _('12 (65.88/4.32 GHz)')),
(CHANNEL_60G_13, _('13 (68.04/4.32 GHz)')),
(CHANNEL_60G_17, _('17 (60.48/6.48 GHz)')),
(CHANNEL_60G_18, _('18 (62.64/6.48 GHz)')),
(CHANNEL_60G_19, _('19 (64.80/6.48 GHz)')),
(CHANNEL_60G_20, _('20 (66.96/6.48 GHz)')),
(CHANNEL_60G_25, _('25 (61.56/8.64 GHz)')),
(CHANNEL_60G_26, _('26 (63.72/8.64 GHz)')),
(CHANNEL_60G_27, _('27 (65.88/8.64 GHz)')),
)
),
)
@ -464,10 +464,10 @@ class WirelessAuthTypeChoices(ChoiceSet):
TYPE_WPA_ENTERPRISE = 'wpa-enterprise'
CHOICES = (
(TYPE_OPEN, 'Open'),
(TYPE_WEP, 'WEP'),
(TYPE_WPA_PERSONAL, 'WPA Personal (PSK)'),
(TYPE_WPA_ENTERPRISE, 'WPA Enterprise'),
(TYPE_OPEN, _('Open')),
(TYPE_WEP, _('WEP')),
(TYPE_WPA_PERSONAL, _('WPA Personal (PSK)')),
(TYPE_WPA_ENTERPRISE, _('WPA Enterprise')),
)
@ -477,7 +477,7 @@ class WirelessAuthCipherChoices(ChoiceSet):
CIPHER_AES = 'aes'
CHOICES = (
(CIPHER_AUTO, 'Auto'),
(CIPHER_TKIP, 'TKIP'),
(CIPHER_AES, 'AES'),
(CIPHER_AUTO, _('Auto')),
(CIPHER_TKIP, _('TKIP')),
(CIPHER_AES, _('AES')),
)