summaryrefslogtreecommitdiff
path: root/app/locations/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/locations/models.py')
-rw-r--r--[-rwxr-xr-x]app/locations/models.py126
1 files changed, 47 insertions, 79 deletions
diff --git a/app/locations/models.py b/app/locations/models.py
index e088697..ac8ec44 100755..100644
--- a/app/locations/models.py
+++ b/app/locations/models.py
@@ -1,66 +1,38 @@
-# -*- coding: utf-8 -*-
-# models.py
-
-# All standard Django fields as well as GeoDjango geometry fields and the GeoManager() can be
-# imported from django.contrib.gis.db after adding django.contrib.gis to INSTALLED_APPS
from django.contrib.gis.db import models
from django.contrib.sitemaps import Sitemap
-# Used to display html 'help text' links within Admin App
from django.utils.safestring import mark_safe
+
class Region(models.Model):
- name = models.CharField(max_length=50, )
+ """Model to define arbitrary regions based on where I've been"""
+ name = models.CharField(max_length=50)
slug = models.SlugField()
- pub_date = models.DateTimeField('Date published',null=True)
+ pub_date = models.DateTimeField('Date published', null=True)
# GeoDjango specific Polygon Field and GeoManager
geometry = models.MultiPolygonField(srid=4326, null=True)
- lon = models.FloatField('Longitude',help_text="Longitude of centerpoint",null=True)
- lat = models.FloatField('Latitude',help_text="Latitude of centerpoint",null=True)
- zoom_level = models.CharField(max_length=2,null=True)
+ lon = models.FloatField('Longitude', help_text="Longitude of centerpoint", null=True)
+ lat = models.FloatField('Latitude', help_text="Latitude of centerpoint", null=True)
+ zoom_level = models.CharField(max_length=2, null=True)
# GeoManager, a subclass that adds a rich set of geospatial queryset methods
objects = models.GeoManager()
-
+
def get_absolute_url(self):
return "/locations/region/%s/" % (self.slug)
-
- def __unicode__(self): return self.name
-
-# imported from django.contrib.gis.db
-from django.contrib.gis.db import models
+ def __str__(self):
+ return self.name
-# Used to display html 'help text' links within Admin App
-from django.utils.safestring import mark_safe
class Country(models.Model):
"""
-
- A geographic model based on the v3 of the simplified world borders multipolygon shapefile
- from http://thematicmapping.org/downloads/world_borders.php.
-
- Field names, Django types, and max_lengths were autogenerated using the ogrinspect utility with hand
- edits to add alternative field names and help_text.
-
- Imported using LayerMapping (requires GDAL) called within the load_data.py script provided
- within this sample project.
-
- All fields match the source dataset, an ESRI format shapefile made up of several related files:
- .shp - holds the vector data that is to be stored in the MultiPolygonField field named'geometry'.
- .shx - spatial index file for geometries stored in the .shp.
- .dbf - database file for holding attribute data (can be opened in excel and open office).
- .prj - contains the spatial reference information for the geometries stored in the .shp
-
-
+ A geographic model based on the v3 of the simplified world borders multipolygon shapefile from http://thematicmapping.org/downloads/world_borders.php.
"""
-
- # Regular Django fields corresponding to the attributes in the
- # world borders shapefile
name = models.CharField(max_length=50)
area = models.IntegerField(help_text="Area of Country in SQ meters")
pop2005 = models.IntegerField('Population 2005')
fips = models.CharField('FIPS Code', max_length=2, help_text=mark_safe('<a href="http://www.census.gov/geo/www/fips/fips.html">Federal Information Processing Standard Code</a>'))
- iso2 = models.CharField('2 Digit ISO', max_length=2, help_text=mark_safe('<a href="http://www.iso.org/">International Organization for Standardization</a>' ))
- iso3 = models.CharField('3 Digit ISO', max_length=3,help_text=mark_safe('<a href="http://www.iso.org/">International Organization for Standardization</a>' ))
+ iso2 = models.CharField('2 Digit ISO', max_length=2, help_text=mark_safe('<a href="http://www.iso.org/">International Organization for Standardization</a>'))
+ iso3 = models.CharField('3 Digit ISO', max_length=3, help_text=mark_safe('<a href="http://www.iso.org/">International Organization for Standardization</a>'))
un = models.IntegerField('United Nations Code')
REGION_CODES = (
(0, 'MISC'),
@@ -95,96 +67,92 @@ class Country(models.Model):
(154, 'Northern Europe'),
(155, 'Western Europe'),
)
- region = models.IntegerField('Region Code',choices=REGION_CODES)
- subregion = models.IntegerField('Sub-Region Code',choices=SUBREGION_CODES)
- lon = models.FloatField('Longitude',help_text="Longitude of centerpoint")
- lat = models.FloatField('Latitude',help_text="Latitude of centerpoint")
- zoom_level = models.CharField(max_length=2,null=True)
+ region = models.IntegerField('Region Code', choices=REGION_CODES)
+ subregion = models.IntegerField('Sub-Region Code', choices=SUBREGION_CODES)
+ lon = models.FloatField('Longitude', help_text="Longitude of centerpoint")
+ lat = models.FloatField('Latitude', help_text="Latitude of centerpoint")
+ zoom_level = models.CharField(max_length=2, null=True)
slug = models.SlugField(null=True)
visited = models.BooleanField(default=False)
lux_region = models.ForeignKey(Region, null=True)
- pub_date = models.DateTimeField('Date published',null=True)
- # GeoDjango-specific: a geometry field (MultiPolygonField), and
- # overriding the default manager with a GeoManager instance.
- geometry = models.MultiPolygonField('Country Border',srid=4326)
+ pub_date = models.DateTimeField('Date published', null=True)
+ geometry = models.MultiPolygonField('Country Border', srid=4326)
objects = models.GeoManager()
-
- # Returns the string representation of the model.
- def __unicode__(self):
- return self.name
-
class Meta:
ordering = ['name']
verbose_name_plural = 'Countries'
-
+
+ def __str__(self):
+ return self.name
+
def get_absolute_url(self):
return "/locations/%s/" % (self.slug)
-
+
class State(models.Model):
+ """Model to hold state boundaries"""
name = models.CharField(max_length=250, blank=True, null=True,)
country = models.ForeignKey(Country)
slug = models.SlugField()
code = models.CharField(max_length=2, null=True, blank=True)
- pub_date = models.DateTimeField('Date published',null=True)
- geometry = models.MultiPolygonField(srid=4326,null=True)
+ pub_date = models.DateTimeField('Date published', null=True)
+ geometry = models.MultiPolygonField(srid=4326, null=True)
objects = models.GeoManager()
-
+
class Meta:
ordering = ['name']
-
- class Admin:
- pass
-
- def __unicode__(self):
- return "%s" %(self.name)
+
+ def __str__(self):
+ return "%s" % (self.name)
def get_absolute_url(self):
return "/locations/%s/%s/" % (self.country.slug, self.slug)
+
class Location(models.Model):
+ """Model to hold location shapes as arbitrarily defined by me"""
state = models.ForeignKey(State)
name = models.CharField(max_length=50, )
slug = models.SlugField()
- pub_date = models.DateTimeField('Date published',null=True)
+ pub_date = models.DateTimeField('Date published', null=True)
# GeoDjango specific Polygon Field and GeoManager
geometry = models.MultiPolygonField(srid=4326)
# GeoManager, a subclass that adds a rich set of geospatial queryset methods
objects = models.GeoManager()
-
+
+ def __str__(self):
+ return self.name
+
def get_absolute_url(self):
return "/locations/%s/%s/%s/" % (self.state.country.slug, self.state.slug, self.slug)
-
- def __unicode__(self): return self.name
class Route(models.Model):
+ """Model to hold routes for longer trips"""
name = models.CharField(max_length=200)
slug = models.SlugField()
zoom = models.CharField(max_length=2, null=True)
template_var_name = models.CharField(max_length=10, null=True)
- pub_date = models.DateTimeField('Date published',null=True)
+ pub_date = models.DateTimeField('Date published', null=True)
# GeoDjango specific Polygon Field and GeoManager
geometry = models.MultiPointField(srid=4326)
# GeoManager, a subclass that adds a rich set of geospatial queryset methods
objects = models.GeoManager()
-
+
def get_absolute_url(self):
return "/locations/%s/%s/%s/" % (self.slug)
-
- def __unicode__(self): return self.name
-
+ def __str__(self):
+ return self.name
class WritingbyLocationSitemap(Sitemap):
changefreq = "weekly"
priority = 0.6
-
+
def location():
- return '/writing/%s/1/' %(self.slug)
-
+ return '/writing/%s' % self.slug
+
def items(self):
return Location.objects.all()
-