view tools/flag_data.py @ 943:cf9918328c64

Haystack tweaks for Django 1.7.7. I had to upgrade to Haystack 2.3.1 to get it to work with Django 1.7.7. I also had to update the Xapian backend. But I ran into problems. On my laptop anyway (Ubuntu 14.0.4), xapian gets mad when search terms are greater than 245 chars (or something) when indexing. So I created a custom field that would simply omit terms greater than 64 chars and used this field everywhere I previously used a CharField. Secondly, the custom search form was broken now. Something changed in the Xapian backend and exact searches stopped working. Fortunately the auto_query (which I was using originally and broke during an upgrade) started working again. So I cut the search form back over to doing an auto_query. I kept the form the same (3 fields) because I didn't want to change the form and I think it's better that way.
author Brian Neal <bgneal@gmail.com>
date Wed, 13 May 2015 20:25:07 -0500
parents 678a1a2ef55a
children
line wrap: on
line source
"""
Application to read the ISO-3166 country data and output a JSON datastructure
for use in the SG101 code. We also print a report of any missing country
icons. If we don't have an icon for a country, we don't include it in our JSON
data.

"""
import argparse
import json
import os.path
import sys
from xml.etree.ElementTree import ElementTree


def main():
    parser = argparse.ArgumentParser(description=("Transform Debian's ISO-3166 "
        "data into JSON for use on SG101"))
    parser.add_argument('--xml', '-x', required=True, help='path to XML file')
    parser.add_argument('--icon-dir', '-i', required=True,
            help='path to icon directory')

    args = parser.parse_args()

    xml_file = os.path.expanduser(args.xml)
    icon_dir = os.path.expanduser(args.icon_dir)

    with open(xml_file, 'r') as fp:
        et = ElementTree(file=fp)

    country_data = {}
    for node in et.iterfind('iso_3166_entry'):
        code = node.get('alpha_2_code').lower()
        name = node.get('common_name', node.get('name'))

        # see if we have an icon for this country

        if not os.path.exists(os.path.join(icon_dir, '%s.png' % code)):
            sys.stderr.write("Could not find icon for %s (%s)\n" % (name, code))
        else:
            country_data[code] = name

    s = json.dumps(country_data, indent=4, sort_keys=True, ensure_ascii=False)
    print s.encode('utf-8')


if __name__ == '__main__':
    main()