From f7e111dd94d6f25265c14d3161317fee452d42dc Mon Sep 17 00:00:00 2001 From: Matt Griswold Date: Tue, 24 Sep 2019 03:44:01 -0500 Subject: [PATCH] fix issue with bool_choice_str enum translations (#579) --- peeringdb_server/data_views.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/peeringdb_server/data_views.py b/peeringdb_server/data_views.py index 159c322a..41cb4dc9 100644 --- a/peeringdb_server/data_views.py +++ b/peeringdb_server/data_views.py @@ -110,6 +110,20 @@ def facilities(request): }) +def decode(value): + """ + django-peeringdb imports unicode literals from __future__, + while peeringdb_server does not at this point. + + so we may get already decoded values for some enums + while others still need to be decoded. + """ + try: + return value.decode("utf-8") + except UnicodeEncodeError: + return value + + def enum(request, name): if name.upper() not in [ @@ -126,7 +140,7 @@ def enum(request, name): "id": id, # as of django-peeringdb 1.0.0 already comes in # translated - "name": n.decode("utf-8") + "name": decode(n) } for id, n in getattr(const, name.upper())] })