Passed
Branch master (0fb205)
by Oleksandr
03:17
created

AirForces.get_by_flight_prefix()   A

Complexity

Conditions 3

Size

Total Lines 9
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 9
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0
cc 3
nop 2
crap 3
1 1
from candv import Constants
2 1
from candv import Values
3 1
from candv import VerboseConstant
4 1
from candv import VerboseValueConstant
5 1
from candv import with_constant_class
6
7 1
from ._translations import gettext_lazy as _
8
9
10 1
class Belligerent(VerboseValueConstant):
11 1
  ...
12
13
14 1
class Belligerents(with_constant_class(Belligerent), Values):
15 1
  none      = Belligerent(0,  _("none"))
16 1
  red       = Belligerent(1,  _("red"))
17 1
  blue      = Belligerent(2,  _("blue"))
18 1
  green     = Belligerent(3,  _("green"))
19 1
  gold      = Belligerent(4,  _("gold"))
20 1
  purple    = Belligerent(5,  _("purple"))
21 1
  aqua      = Belligerent(6,  _("aqua"))
22 1
  maroon    = Belligerent(7,  _("maroon"))
23 1
  navy      = Belligerent(8,  _("navy"))
24 1
  emerald   = Belligerent(9,  _("emerald"))
25 1
  olive     = Belligerent(10, _("olive"))
26 1
  magenta   = Belligerent(11, _("magenta"))
27 1
  teal      = Belligerent(12, _("teal"))
28 1
  orange    = Belligerent(13, _("orange"))
29 1
  turquoise = Belligerent(14, _("turquoise"))
30 1
  brown     = Belligerent(15, _("brown"))
31 1
  salad     = Belligerent(16, _("salad"))
32
33
34 1
class Country(VerboseConstant):
35 1
  ...
36
37
38 1
class Countries(with_constant_class(Country), Constants):
39 1
  au = Country(verbose_name=_("Australia"))
40 1
  fi = Country(verbose_name=_("Finland"))
41 1
  fr = Country(verbose_name=_("France"))
42 1
  de = Country(verbose_name=_("Germany"))
43 1
  hu = Country(verbose_name=_("Hungary"))
44 1
  jp = Country(verbose_name=_("Japan"))
45 1
  it = Country(verbose_name=_("Italy"))
46 1
  nl = Country(verbose_name=_("Netherlands"))
47 1
  nz = Country(verbose_name=_("New Zealand"))
48 1
  pl = Country(verbose_name=_("Poland"))
49 1
  ro = Country(verbose_name=_("Romania"))
50 1
  sk = Country(verbose_name=_("Slovakia"))
51 1
  su = Country(verbose_name=_("Soviet Union"))
52 1
  uk = Country(verbose_name=_("United Kingdom"))
53 1
  us = Country(verbose_name=_("United States"))
54
55
56 1
class AirForce(VerboseValueConstant):
57
58 1
  def __init__(
59
    self,
60
    country,
61
    default_flight_prefix,
62
    value,
63
    verbose_name=None,
64
    help_text=None,
65
  ):
66 1
    super().__init__(value, verbose_name=verbose_name, help_text=help_text)
67 1
    self.country = country
68
69 1
    if default_flight_prefix is not None:
70 1
      self.default_flight_prefix = str(default_flight_prefix)
71
    else:
72 1
      self.default_flight_prefix = None
73
74 1
  def merge_into_group(self, group):
75 1
    super(AirForce, self).merge_into_group(group)
76 1
    group.country = self.country
77 1
    group.default_flight_prefix = self.default_flight_prefix
78
79 1
  def to_primitive(self, context=None):
80 1
    primitive = super(AirForce, self).to_primitive(context)
81 1
    country = self.country and self.country.to_primitive(context)
82 1
    primitive.update({
83
      'country': country,
84
      'default_flight_prefix': self.default_flight_prefix,
85
    })
86 1
    return primitive
87
88
89 1
class AirForces(with_constant_class(AirForce), Values):
90 1
  ala = AirForce(
91
    country=Countries.fr,
92
    default_flight_prefix='fr01',
93
    value='fr',
94
    verbose_name=_("ALA"),
95
    help_text=_("Army of the Air"),
96
  )
97 1
  faf = AirForce(
98
    country=Countries.fi,
99
    default_flight_prefix='f01',
100
    value='fi',
101
    verbose_name=_("FAF"),
102
    help_text=_("Finnish Air Force"),
103
  )
104 1
  far = AirForce(
105
    country=Countries.ro,
106
    default_flight_prefix='ro01',
107
    value='ro',
108
    verbose_name=_("FAR"),
109
    help_text=_("Romanian Air Force"),
110
  )
111 1
  haf = AirForce(
112
    country=Countries.hu,
113
    default_flight_prefix='h01',
114
    value='hu',
115
    verbose_name=_("HAF"),
116
    help_text=_("Hungarian Air Force"),
117
  )
118 1
  luftwaffe = AirForce(
119
    country=Countries.de,
120
    default_flight_prefix='g01',
121
    value='de',
122
    verbose_name=_("Luftwaffe"),
123
    help_text=_("German Air Force"),
124
  )
125 1
  ija = AirForce(
126
    country=Countries.jp,
127
    default_flight_prefix='ja01',
128
    value='ja',
129
    verbose_name=_("IJA"),
130
    help_text=_("Imperial Japanese Army"),
131
  )
132 1
  ijn = AirForce(
133
    country=Countries.jp,
134
    default_flight_prefix='IN_NN',
135
    value='in',
136
    verbose_name=_("IJN"),
137
    help_text=_("Imperial Japanese Navy"),
138
  )
139 1
  paf = AirForce(
140
    country=Countries.pl,
141
    default_flight_prefix='pl01',
142
    value='pl',
143
    verbose_name=_("PAF"),
144
    help_text=_("Polish Air Force"),
145
  )
146 1
  rai = AirForce(
147
    country=Countries.it,
148
    default_flight_prefix='i01',
149
    value='it',
150
    verbose_name=_("RAI"),
151
    help_text=_("Regia Aeronautica Italiana"),
152
  )
153 1
  raaf = AirForce(
154
    country=Countries.au,
155
    default_flight_prefix='RA_NN',
156
    value='ra',
157
    verbose_name=_("RAAF"),
158
    help_text=_("Royal Australian Air Force"),
159
  )
160 1
  raf = AirForce(
161
    country=Countries.uk,
162
    default_flight_prefix='gb01',
163
    value='gb',
164
    verbose_name=_("RAF"),
165
    help_text=_("Royal Air Force"),
166
  )
167 1
  rn = AirForce(
168
    country=Countries.uk,
169
    default_flight_prefix='RN_NN',
170
    value='rn',
171
    verbose_name=_("RN"),
172
    help_text=_("Royal Navy"),
173
  )
174 1
  rnlaf = AirForce(
175
    country=Countries.nl,
176
    default_flight_prefix='DU_NN',
177
    value='du',
178
    verbose_name=_("RNLAF"),
179
    help_text=_("Royal Netherlands Air Force"),
180
  )
181 1
  rnzaf = AirForce(
182
    country=Countries.nz,
183
    default_flight_prefix='RZ_NN',
184
    value='rz',
185
    verbose_name=_("RNZAF"),
186
    help_text=_("Royal New Zealand Air Force"),
187
  )
188 1
  saf = AirForce(
189
    country=Countries.sk,
190
    default_flight_prefix='sk01',
191
    value='sk',
192
    verbose_name=_("SAF"),
193
    help_text=_("Slovak Air Force"),
194
  )
195 1
  usaaf = AirForce(
196
    country=Countries.us,
197
    default_flight_prefix='usa01',
198
    value='us',
199
    verbose_name=_("USAAF"),
200
    help_text=_("United States Army Air Forces"),
201
  )
202 1
  usmc = AirForce(
203
    country=Countries.us,
204
    default_flight_prefix='UM_NN',
205
    value='um',
206
    verbose_name=_("USMC"),
207
    help_text=_("United States Marine Corps"),
208
  )
209 1
  usn = AirForce(
210
    country=Countries.us,
211
    default_flight_prefix='UN_NN',
212
    value='un',
213
    verbose_name=_("USN"),
214
    help_text=_("United States Navy"),
215
  )
216 1
  vvs_rkka = AirForce(
217
    country=Countries.su,
218
    default_flight_prefix='r01',
219
    value='ru',
220
    verbose_name=_("VVS RKKA"),
221
    help_text=_("Workers-Peasants Red Army Air Forces"),
222
  )
223 1
  none = AirForce(
224
    country=None,
225
    default_flight_prefix=None,
226
    value='nn',
227
    verbose_name=_("None"),
228
    help_text=_("No Air Force"),
229
  )
230
231 1
  @classmethod
232 1
  def get_flight_prefixes(cls):
233 1
    return [x.default_flight_prefix for x in cls.iterconstants()]
234
235 1
  @classmethod
236 1
  def get_by_flight_prefix(cls, prefix):
237 1
    for constant in cls.iterconstants():
238 1
      if constant.default_flight_prefix == prefix:
239 1
        return constant
240
241 1
    raise ValueError(
242
      "Air force with prefix '{0}' is not present in '{1}'"
243
      .format(prefix, cls.__name__)
244
    )
245
246 1
  @classmethod
247 1
  def filter_by_country(cls, country):
248
    return filter(lambda x: x.country == country, cls.constants())
249