[fix] None handling and number dictionaries
This commit is contained in:
@@ -77,6 +77,9 @@ class Floor(NumberedComponent):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def phrase(cls, floor, language, country=None, is_top=False):
|
def phrase(cls, floor, language, country=None, is_top=False):
|
||||||
|
if floor is None:
|
||||||
|
return None
|
||||||
|
|
||||||
floor = safe_decode(floor)
|
floor = safe_decode(floor)
|
||||||
try:
|
try:
|
||||||
floor = int(floor)
|
floor = int(floor)
|
||||||
@@ -86,7 +89,7 @@ class Floor(NumberedComponent):
|
|||||||
floor = float(floor)
|
floor = float(floor)
|
||||||
integer_floor = int(floor) == floor
|
integer_floor = int(floor) == floor
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
return cls.numeric_phrase('levels.alphanumeric', safe_decode(floor), language,
|
return cls.numeric_phrase('levels.alphanumeric', floor, language,
|
||||||
dictionaries=['level_types_numbered'], country=country)
|
dictionaries=['level_types_numbered'], country=country)
|
||||||
|
|
||||||
alias_prefix = 'levels.aliases'
|
alias_prefix = 'levels.aliases'
|
||||||
@@ -119,7 +122,7 @@ class Floor(NumberedComponent):
|
|||||||
alias = safe_decode(floor)
|
alias = safe_decode(floor)
|
||||||
|
|
||||||
if alias:
|
if alias:
|
||||||
return cls.numeric_phrase('{}.{}'.format(alias_prefix, alias), safe_decode(floor), language,
|
return cls.numeric_phrase('{}.{}'.format(alias_prefix, alias), floor, language,
|
||||||
dictionaries=['level_types_basement',
|
dictionaries=['level_types_basement',
|
||||||
'level_types_mezzanine',
|
'level_types_mezzanine',
|
||||||
'level_types_numbered',
|
'level_types_numbered',
|
||||||
@@ -127,5 +130,5 @@ class Floor(NumberedComponent):
|
|||||||
'level_types_sub_basement'],
|
'level_types_sub_basement'],
|
||||||
country=country)
|
country=country)
|
||||||
|
|
||||||
return cls.numeric_phrase('levels.alphanumeric', safe_decode(floor), language,
|
return cls.numeric_phrase('levels.alphanumeric', floor, language,
|
||||||
dictionaries=['level_types_numbered'], country=country)
|
dictionaries=['level_types_numbered'], country=country)
|
||||||
@@ -99,7 +99,7 @@ class NumericPhrase(object):
|
|||||||
|
|
||||||
class Number(NumericPhrase):
|
class Number(NumericPhrase):
|
||||||
key = 'numbers'
|
key = 'numbers'
|
||||||
dictionraries = ['number']
|
dictionaries = ['number']
|
||||||
|
|
||||||
|
|
||||||
class NumberedComponent(object):
|
class NumberedComponent(object):
|
||||||
@@ -107,19 +107,22 @@ class NumberedComponent(object):
|
|||||||
def numeric_phrase(cls, key, num, language, country=None, dictionaries=()):
|
def numeric_phrase(cls, key, num, language, country=None, dictionaries=()):
|
||||||
is_alpha = False
|
is_alpha = False
|
||||||
is_none = False
|
is_none = False
|
||||||
try:
|
if num is not None:
|
||||||
num = int(num)
|
|
||||||
except ValueError:
|
|
||||||
try:
|
try:
|
||||||
num = float(num)
|
num = int(num)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
is_alpha = num is not None
|
try:
|
||||||
is_none = num is None
|
num = float(num)
|
||||||
|
except ValueError:
|
||||||
|
is_alpha = True
|
||||||
|
else:
|
||||||
|
is_none = True
|
||||||
|
|
||||||
# Pick a phrase given the probability distribution from the config
|
# Pick a phrase given the probability distribution from the config
|
||||||
values, probs = address_config.alternative_probabilities(key, language, dictionaries=dictionaries, country=country)
|
values, probs = address_config.alternative_probabilities(key, language, dictionaries=dictionaries, country=country)
|
||||||
if values is None:
|
if not values:
|
||||||
return None
|
return safe_decode(num) if not is_none else None
|
||||||
|
|
||||||
phrase, phrase_props = weighted_choice(values, probs)
|
phrase, phrase_props = weighted_choice(values, probs)
|
||||||
|
|
||||||
values = []
|
values = []
|
||||||
|
|||||||
Reference in New Issue
Block a user