def create_geo_alt_names(geo_type): geo_alt_names = {} for locale in settings.locales: name_format = geo_type.__name__ + '{}' + locale.capitalize() name = name_format.format('AltName') geo_alt_names[locale] = create_model( name = name, fields = { 'geo': models.ForeignKey(geo_type, # Related geo type related_name = 'alt_names_' + locale), 'name': models.CharField(max_length=200, db_index=True), # Alternate name 'is_preferred': models.BooleanField(), # True if this alternate name is an official / preferred name 'is_short': models.BooleanField(), # True if this is a short name like 'California' for 'State of California' 'objects': GeoAltNameManager(), '__unicode__': lambda self: force_unicode(self.name), }, app_label = 'cities', module = 'cities.models', options = { 'db_table': 'cities_' + un_camel(name), 'verbose_name': un_camel(name).replace('_', ' '), 'verbose_name_plural': un_camel(name_format.format('AltNames')).replace('_', ' '), }, ) return geo_alt_names
def create_geo_alt_names(geo_type): geo_alt_names = {} for locale in settings.locales: name_format = geo_type.__name__ + "{}" + locale.capitalize() name = name_format.format("AltName") geo_alt_names[locale] = create_model( name=name, fields={ "geo": models.ForeignKey(geo_type, related_name="alt_names_" + locale), # Related geo type "name": models.CharField(max_length=200, db_index=True), # Alternate name "is_preferred": models.BooleanField(), # True if this alternate name is an official / preferred name "is_short": models.BooleanField(), # True if this is a short name like 'California' for 'State of California' "objects": GeoAltNameManager(), "__unicode__": lambda self: force_unicode(self.name), }, app_label="cities", module="cities.models", options={ "db_table": "cities_" + un_camel(name), "verbose_name": un_camel(name).replace("_", " "), "verbose_name_plural": un_camel(name_format.format("AltNames")).replace("_", " "), }, ) return geo_alt_names
def create_postal_codes(): @property def parent(self): """Returns region if available, otherwise country""" return self.region if self.region else self.country @property def hierarchy(self): """Get hierarchy, root first""" list = self.parent.hierarchy list.append(self) return list @property def names(self): """Get a hierarchy of non-null names, root first""" return [e for e in [ force_unicode(self.country), force_unicode(self.region_0_name), force_unicode(self.region_1_name), force_unicode(self.region_2_name), force_unicode(self.name), ] if e] @property def name_full(self): """Get full name including hierarchy""" return u', '.join(reversed(self.names)) postal_codes = {} for country in settings.postal_codes: name_format = "{}" + country name = name_format.format('PostalCode') postal_codes[country] = create_model( name = name, fields = { 'country': models.ForeignKey(Country, related_name = 'postal_codes_' + country), 'code': models.CharField(max_length=20, db_index=True), 'name': models.CharField(max_length=200, db_index=True), 'region_0_name': models.CharField(max_length=100, db_index=True, verbose_name="region 0 name (state)"), 'region_1_name': models.CharField(max_length=100, db_index=True, verbose_name="region 1 name (county)"), 'region_2_name': models.CharField(max_length=100, db_index=True, verbose_name="region 2 name (community)"), 'region': models.ForeignKey(Region, null=True, blank=True, related_name = 'postal_codes_' + country), 'location': models.PointField(), 'objects': models.GeoManager(), 'parent': parent, 'hierarchy': hierarchy, 'names': names, 'name_full': name_full, '__unicode__': lambda self: force_unicode(self.code), }, app_label = 'cities', module = 'cities.models', options = { 'db_table': 'cities_' + un_camel(name), 'verbose_name': un_camel(name).replace('_', ' '), 'verbose_name_plural': un_camel(name_format.format('PostalCodes')).replace('_', ' '), }, ) return postal_codes
def create_postal_codes(): @property def parent(self): for parent_name in reversed(['country'] + RegionBase.levels): parent_obj = getattr(self, parent_name) if parent_obj: return parent_obj return None @property def hierarchy(self): """Get hierarchy, root first""" list = self.parent.hierarchy list.append(self) return list @property def names(self): """Get a hierarchy of non-null names, root first""" return [e for e in [ force_unicode(self.country), force_unicode(self.region_name), force_unicode(self.subregion_name), force_unicode(self.district_name), force_unicode(self.name), ] if e] @property def name_full(self): """Get full name including hierarchy""" return u', '.join(reversed(self.names)) postal_codes = {} for country in settings.postal_codes: name_format = "{}" + country name = name_format.format('PostalCode') postal_codes[country] = create_model( name = name, fields = { 'country': models.ForeignKey(Country, related_name = 'postal_codes_' + country), 'code': models.CharField(max_length=20, primary_key=True), 'name': models.CharField(max_length=200, db_index=True), # Region names for each admin level, region may not exist in DB 'region_name': models.CharField(max_length=100, db_index=True), 'subregion_name': models.CharField(max_length=100, db_index=True), 'district_name': models.CharField(max_length=100, db_index=True), 'region': models.ForeignKey(Region, null=True, blank=True, related_name = 'postal_codes_' + country), 'subregion': models.ForeignKey(Subregion, null=True, blank=True, related_name = 'postal_codes_' + country), 'location': models.PointField(), 'objects': models.GeoManager(), 'parent': parent, 'hierarchy': hierarchy, 'names': names, 'name_full': name_full, '__unicode__': lambda self: force_unicode(self.code), }, app_label = 'cities', module = 'cities.models', options = { 'db_table': 'cities_' + un_camel(name), 'verbose_name': un_camel(name).replace('_', ' '), 'verbose_name_plural': un_camel(name_format.format('PostalCodes')).replace('_', ' '), }, ) return postal_codes
def create_postal_codes(): @property def parent(self): """Returns region if available, otherwise country""" return self.region if self.region else self.country @property def hierarchy(self): """Get hierarchy, root first""" list = self.parent.hierarchy list.append(self) return list @property def names(self): """Get a hierarchy of non-null names, root first""" return [ e for e in [ force_unicode(self.country), force_unicode(self.region_0_name), force_unicode(self.region_1_name), force_unicode(self.region_2_name), force_unicode(self.name), ] if e ] @property def name_full(self): """Get full name including hierarchy""" return u', '.join(reversed(self.names)) postal_codes = {} for country in settings.postal_codes: name_format = "{}" + country name = name_format.format('PostalCode') postal_codes[country] = create_model( name=name, fields={ 'country': models.ForeignKey(Country, related_name='postal_codes_' + country), 'code': models.CharField(max_length=20, db_index=True), 'name': models.CharField(max_length=200, db_index=True), 'region_0_name': models.CharField(max_length=100, db_index=True, verbose_name="region 0 name (state)"), 'region_1_name': models.CharField(max_length=100, db_index=True, verbose_name="region 1 name (county)"), 'region_2_name': models.CharField(max_length=100, db_index=True, verbose_name="region 2 name (community)"), 'region': models.ForeignKey(Region, null=True, blank=True, related_name='postal_codes_' + country), 'location': models.PointField(), 'objects': models.GeoManager(), 'parent': parent, 'hierarchy': hierarchy, 'names': names, 'name_full': name_full, '__unicode__': lambda self: force_unicode(self.code), }, app_label='cities', module='cities.models', options={ 'db_table': 'cities_' + un_camel(name), 'verbose_name': un_camel(name).replace('_', ' '), 'verbose_name_plural': un_camel(name_format.format('PostalCodes')).replace('_', ' '), }, ) return postal_codes