basic imports / admin working
This commit is contained in:
parent
c3a86f17e0
commit
da67482965
|
@ -1,73 +1,20 @@
|
||||||
from django.contrib import admin
|
from django.contrib.gis import admin
|
||||||
from models import *
|
from models import *
|
||||||
|
|
||||||
class PlaceAdmin(admin.ModelAdmin):
|
class FeatureNamesInline(admin.StackedInline):
|
||||||
pass
|
model = Name
|
||||||
# admin.site.register(Occupation, OccupationAdmin)
|
extra = 3
|
||||||
# admin.site.register(Relation, RelationAdmin)
|
|
||||||
admin.site.register(Place, PlaceAdmin)
|
|
||||||
|
|
||||||
'''
|
class FeatureAdmin(admin.GeoModelAdmin):
|
||||||
#class NicknameInline(admin.StackedInline):
|
search_fields = ['preferred_name']
|
||||||
# model = Nickname
|
list_filter = ('feature_type',)
|
||||||
# extra = 3
|
inlines = [FeatureNamesInline]
|
||||||
|
list_per_page = 500
|
||||||
|
# map_template = 'gis/admin/osm.html'
|
||||||
|
# default_lon = 72.855211097628413
|
||||||
|
# default_lat = 19.415775291486027
|
||||||
|
# default_zoom = 4
|
||||||
|
# extra_js = ['http://openstreetmap.org/openlayers/OpenStreetMap.js']
|
||||||
|
|
||||||
#class LinkInlineModelAdmin(admin.InlineModelAdmin):
|
admin.site.register(Feature, FeatureAdmin)
|
||||||
# pass
|
|
||||||
|
|
||||||
#class LinkInline(LinkInlineModelAdmin):
|
|
||||||
# model = Link
|
|
||||||
# extra = 3
|
|
||||||
|
|
||||||
class ProfileInline(admin.StackedInline):
|
|
||||||
model = Person
|
|
||||||
extra = 1
|
|
||||||
|
|
||||||
class PerformanceAdmin(admin.ModelAdmin):
|
|
||||||
filter_horizontal = ('links', 'images')
|
|
||||||
|
|
||||||
class EventAdmin(admin.ModelAdmin):
|
|
||||||
filter_horizontal = ('links',)
|
|
||||||
|
|
||||||
class ProfileAdmin(admin.ModelAdmin):
|
|
||||||
filter_horizontal = ('links', 'files', 'images',)
|
|
||||||
# inlines = [NicknameInline]
|
|
||||||
# inlines = [LinkInline]
|
|
||||||
|
|
||||||
class VenueAdmin(admin.ModelAdmin):
|
|
||||||
ordering = ('name',)
|
|
||||||
prepopulated_fields = {'slug': ('name',)}
|
|
||||||
filter_horizontal = ('links', 'images')
|
|
||||||
|
|
||||||
class TheatreGroupAdmin(admin.ModelAdmin):
|
|
||||||
prepopulated_fields = {'slug': ('name',)}
|
|
||||||
filter_horizontal = ('links', 'files', 'images')
|
|
||||||
|
|
||||||
class ProductionAdmin(admin.ModelAdmin):
|
|
||||||
prepopulated_fields = {'slug': ('title',)}
|
|
||||||
filter_horizontal = ('links', 'files', 'images',)
|
|
||||||
inlines = [ProfileInline]
|
|
||||||
|
|
||||||
class ScriptAdmin(admin.ModelAdmin):
|
|
||||||
filter_horizontal = ('links', 'downloads')
|
|
||||||
|
|
||||||
|
|
||||||
#admin.site.register(Nickname3)
|
|
||||||
#admin.site.register(Nickname2)
|
|
||||||
admin.site.register(Performance, PerformanceAdmin)
|
|
||||||
admin.site.register(Event, EventAdmin)
|
|
||||||
admin.site.register(Location)
|
|
||||||
admin.site.register(ProfileProfile)
|
|
||||||
admin.site.register(ProfileGroup)
|
|
||||||
admin.site.register(Script, ScriptAdmin)
|
|
||||||
admin.site.register(Production, ProductionAdmin)
|
|
||||||
admin.site.register(Image)
|
|
||||||
admin.site.register(File)
|
|
||||||
admin.site.register(Link)
|
|
||||||
admin.site.register(RandomQuote)
|
|
||||||
admin.site.register(ProfileProduction)
|
|
||||||
admin.site.register(Nickname)
|
|
||||||
admin.site.register(TheatreGroup, TheatreGroupAdmin)
|
|
||||||
admin.site.register(Venue, VenueAdmin)
|
|
||||||
admin.site.register(Profile, ProfileAdmin)
|
|
||||||
'''
|
|
||||||
|
|
|
@ -1,29 +1,45 @@
|
||||||
import csv
|
import csv
|
||||||
from settings import DATA_DIR
|
from settings import DATA_DIR
|
||||||
from os.path import join
|
from os.path import join
|
||||||
from places.models import Place, FeatureCode
|
from places.models import Feature, FeatureType
|
||||||
from django.contrib.gis.geos import Point
|
from django.contrib.gis.geos import Point
|
||||||
|
|
||||||
def import_gazetteer():
|
def import_ftypes(f):
|
||||||
f = open(join(DATA_DIR, "gazetteer.txt"))
|
|
||||||
t = csv.reader(f, delimiter="\t")
|
t = csv.reader(f, delimiter="\t")
|
||||||
for row in t:
|
for row in t:
|
||||||
p = Place()
|
ft = FeatureType()
|
||||||
if Place.objects.filter(url=row[0]).count() > 0:
|
ft.feature_class = row[0]
|
||||||
|
ft.code = row[1]
|
||||||
|
ft.name = row[2]
|
||||||
|
try:
|
||||||
|
ft.description = row[3]
|
||||||
|
except:
|
||||||
|
ft.description = ''
|
||||||
|
ft.save()
|
||||||
|
print "saved " + ft.name
|
||||||
|
|
||||||
|
|
||||||
|
def import_gazetteer(f, limit):
|
||||||
|
t = csv.reader(f, delimiter="\t")
|
||||||
|
i = 0
|
||||||
|
for row in t:
|
||||||
|
ft = Feature()
|
||||||
|
if Feature.objects.filter(url=row[0]).count() > 0:
|
||||||
print "duplicate row " + row[0]
|
print "duplicate row " + row[0]
|
||||||
else:
|
else:
|
||||||
p.url = row[0]
|
ft.url = row[0]
|
||||||
p.name = row[1]
|
ft.preferred_name = row[1]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
fcode = FeatureCode.objects.get(pk=row[2])
|
fcode = FeatureType.objects.get(code=row[2])
|
||||||
except:
|
except:
|
||||||
print row[2]
|
fcode = None
|
||||||
continue
|
|
||||||
p.fcode = fcode
|
|
||||||
p.country = row[3]
|
|
||||||
p.admin1 = row[4]
|
|
||||||
p.point = Point(float(row[6]), float(row[5]))
|
|
||||||
p.save()
|
|
||||||
print "saved " + p.name
|
|
||||||
|
|
||||||
|
ft.feature_type = fcode
|
||||||
|
ft.geometry = Point(float(row[6]), float(row[5]))
|
||||||
|
ft.save()
|
||||||
|
print "saved " + ft.preferred_name
|
||||||
|
i += 1
|
||||||
|
if i > limit:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,100 @@ from django.contrib.gis.db import models
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
|
class AuthorityRecord(models.Model):
|
||||||
|
uri = models.CharField(max_length=512)
|
||||||
|
preferred_name = models.CharField(max_length=255)
|
||||||
|
features = models.ManyToManyField("Feature", blank=True)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.preferred_name
|
||||||
|
|
||||||
|
|
||||||
|
class Feature(models.Model):
|
||||||
|
url = models.CharField(max_length=512, unique=True)
|
||||||
|
preferred_name = models.CharField(max_length=512)
|
||||||
|
feature_type = models.ForeignKey("FeatureType", null=True, blank=True)
|
||||||
|
geometry = models.GeometryField()
|
||||||
|
is_primary = models.BooleanField(default=True)
|
||||||
|
time_frame = models.OneToOneField("TimeFrame", null=True, blank=True)
|
||||||
|
relationships = models.ManyToManyField("Feature", through='Relationship', blank=True)
|
||||||
|
objects = models.GeoManager()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ['preferred_name']
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.preferred_name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LANGUAGE_CHOICES = (
|
||||||
|
('en', 'English'),
|
||||||
|
('es', 'Spanish'),
|
||||||
|
)
|
||||||
|
|
||||||
|
NAME_TYPE_CHOICES = (
|
||||||
|
('official', 'official'),
|
||||||
|
('historic', 'historic'),
|
||||||
|
('colloquial', 'colloquial'),
|
||||||
|
('-blank-', '-blank-'),
|
||||||
|
)
|
||||||
|
|
||||||
|
class Name(models.Model):
|
||||||
|
feature = models.ForeignKey(Feature)
|
||||||
|
text = models.CharField(max_length=512)
|
||||||
|
language = models.CharField(max_length=2, choices=LANGUAGE_CHOICES)
|
||||||
|
name_type = models.CharField(max_length=64, choices=NAME_TYPE_CHOICES)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.text
|
||||||
|
|
||||||
|
GRANULARITY_CHOICES = (
|
||||||
|
('day', 'day'),
|
||||||
|
('month', 'month'),
|
||||||
|
('year', 'year'),
|
||||||
|
('decade', 'decade'),
|
||||||
|
('century', 'century'),
|
||||||
|
)
|
||||||
|
|
||||||
|
class TimeFrame(models.Model):
|
||||||
|
description = models.TextField(blank=True)
|
||||||
|
start_date = models.DateField()
|
||||||
|
end_date = models.DateField() #add default to now
|
||||||
|
start_granularity = models.CharField(max_length=64, choices=GRANULARITY_CHOICES)
|
||||||
|
end_granularity = models.CharField(max_length=64, choices=GRANULARITY_CHOICES)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.description
|
||||||
|
|
||||||
|
|
||||||
|
class FeatureType(models.Model):
|
||||||
|
feature_class = models.CharField(max_length=1)
|
||||||
|
code = models.CharField(max_length=5, unique=True)
|
||||||
|
name = models.CharField(max_length=128)
|
||||||
|
description = models.TextField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ['code']
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.code + ": " + self.name
|
||||||
|
|
||||||
|
|
||||||
|
RELATIONSHIP_CHOICES = (
|
||||||
|
('conflates', 'conflates'),
|
||||||
|
('contains', 'contains'),
|
||||||
|
('subsumes', 'subsumes'),
|
||||||
|
('supersedes', 'supersedes'),
|
||||||
|
)
|
||||||
|
|
||||||
|
class Relationship(models.Model):
|
||||||
|
feature1 = models.ForeignKey(Feature, related_name="feauture_from")
|
||||||
|
feature2 = models.ForeignKey(Feature, related_name="feature_to")
|
||||||
|
relationship_type = models.CharField(max_length=64, choices=RELATIONSHIP_CHOICES)
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
class Place(models.Model):
|
class Place(models.Model):
|
||||||
url = models.CharField(max_length=255, primary_key=True, unique=True)
|
url = models.CharField(max_length=255, primary_key=True, unique=True)
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
@ -23,6 +117,6 @@ class FeatureCode(models.Model):
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.fcode + ": " + self.short_name
|
return self.fcode + ": " + self.short_name
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ MANAGERS = ADMINS
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.contrib.gis.db.backends.postgis', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
|
'ENGINE': 'django.contrib.gis.db.backends.postgis', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
|
||||||
'NAME': 'gazetteer', # Or path to database file if using sqlite3.
|
'NAME': 'gazzette', # Or path to database file if using sqlite3.
|
||||||
'USER': 'sanj', # Not used with sqlite3.
|
'USER': 'sanj', # Not used with sqlite3.
|
||||||
'PASSWORD': '', # Not used with sqlite3.
|
'PASSWORD': '', # Not used with sqlite3.
|
||||||
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
|
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user