annotate bio/flags.py @ 629:f4c043cf55ac

Wiki integration. Requests don't always have sessions. In particular this occurs when a request is made without a trailing slash. The Common middleware redirects when this happens, and the middleware process_request() processing stops before a session can get added. So just set an attribute on the request object for each operation. This seemed weird to me at first, but there are plenty of examples of this in the Django code base already.
author Brian Neal <bgneal@gmail.com>
date Tue, 13 Nov 2012 13:50:06 -0600
parents 678a1a2ef55a
children 89b240fe9297
rev   line source
bgneal@609 1 """
bgneal@609 2 This module contains country flag data & functions.
bgneal@609 3
bgneal@609 4 """
bgneal@609 5 from __future__ import with_statement
bgneal@609 6 import os.path
bgneal@609 7 import locale
bgneal@609 8 import logging
bgneal@609 9
bgneal@609 10 import django.utils.simplejson as json
bgneal@609 11
bgneal@609 12
bgneal@609 13 # Read flag data from external JSON file:
bgneal@609 14
bgneal@609 15 FLAG_DATA = {}
bgneal@609 16
bgneal@609 17 datafile = os.path.join(os.path.split(__file__)[0], 'flag_data.json')
bgneal@609 18
bgneal@609 19 try:
bgneal@609 20 with open(datafile, 'r') as fp:
bgneal@609 21 FLAG_DATA = json.load(fp, encoding='utf-8')
bgneal@609 22 except IOError:
bgneal@609 23 FLAG_DATA = {}
bgneal@609 24 logging.error("Could not load flag_data.json")
bgneal@609 25
bgneal@609 26 # Build a choices list for use with Django models, etc.
bgneal@609 27 # The locale is set in order to sort the place names correctly:
bgneal@609 28
bgneal@609 29 locale.setlocale(locale.LC_ALL, '')
bgneal@609 30
bgneal@609 31 FLAG_CHOICES = sorted(FLAG_DATA.items(),
bgneal@609 32 cmp=lambda lhs, rhs: locale.strcoll(lhs[1], rhs[1]))