Browse Source

Handle multiple answers correctly when dersializing

pull/164/head
Steve Coursen 8 years ago
parent
commit
dcdde5db5d
1 changed files with 23 additions and 4 deletions
  1. +23
    -4
      octodns/provider/ns1.py

+ 23
- 4
octodns/provider/ns1.py View File

@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function, \
from logging import getLogger from logging import getLogger
from itertools import chain from itertools import chain
from collections import OrderedDict
from nsone import NSONE from nsone import NSONE
from nsone.rest.errors import RateLimitException, ResourceException from nsone.rest.errors import RateLimitException, ResourceException
from incf.countryutils import transformations from incf.countryutils import transformations
@ -60,16 +61,34 @@ class Ns1Provider(BaseProvider):
for cntry in country: for cntry in country:
cn = transformations.cc_to_cn(cntry) cn = transformations.cc_to_cn(cntry)
con = transformations.cn_to_ctca2(cn) con = transformations.cn_to_ctca2(cn)
geo['{}-{}'.format(con, cntry)] = answer['answer']
key = '{}-{}'.format(con, cntry)
if key not in geo:
geo[key] = answer['answer']
else:
geo[key].extend(answer['answer'])
for state in us_state: for state in us_state:
geo['NA-US-{}'.format(state)] = answer['answer']
key = 'NA-US-{}'.format(state)
if key not in geo:
geo[key] = answer['answer']
else:
geo[key].extend(answer['answer'])
for province in ca_province: for province in ca_province:
geo['NA-CA-{}'.format(province)] = answer['answer']
key = 'NA-CA-{}'.format(province)
if key not in geo:
geo[key] = answer['answer']
else:
geo[key].extend(answer['answer'])
for code in meta.get('iso_region_code', []): for code in meta.get('iso_region_code', []):
geo[code] = answer['answer']
key = code
if key not in geo:
geo[key] = answer['answer']
else:
geo[key].extend(answer['answer'])
else: else:
values.extend(answer['answer']) values.extend(answer['answer'])
codes.append([]) codes.append([])
values = [str(x) for x in values]
geo = OrderedDict({str(k): [str(x) for x in v] for k, v in sorted(geo.items())})
data['values'] = values data['values'] = values
data['geo'] = geo data['geo'] = geo
return data return data


Loading…
Cancel
Save