summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:56:56 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-05-13 05:56:56 +0100
commit4b34241a16af5e9cbfff0c3b2ede76394e94a3b5 (patch)
tree35eb3ddd5d40401e5149036c06a31620bd7a9417
parente9cc5094b90b605fca115835294999fba5e79aac (diff)
downloadtroggle-4b34241a16af5e9cbfff0c3b2ede76394e94a3b5.tar.gz
troggle-4b34241a16af5e9cbfff0c3b2ede76394e94a3b5.tar.bz2
troggle-4b34241a16af5e9cbfff0c3b2ede76394e94a3b5.zip
[svn] Added new abstract base class TroggleModel. Any fields or methods that need to be added to multiple models should be added here.
Added edit links to caves, people, logbook entries, and people. Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8260 by aaron @ 2/26/2009 5:28 AM
-rw-r--r--expo/models.py46
-rw-r--r--expo/views_caves.py2
-rw-r--r--parsers/logbooks.py2
-rw-r--r--templates/base.html2
-rw-r--r--templates/cave.html2
-rw-r--r--templates/expedition.html2
-rw-r--r--templates/logbookentry.html2
-rw-r--r--templates/person.html2
-rw-r--r--urls.py4
9 files changed, 34 insertions, 30 deletions
diff --git a/expo/models.py b/expo/models.py
index b3a7f5b..35d7431 100644
--- a/expo/models.py
+++ b/expo/models.py
@@ -5,24 +5,28 @@ from django.db import models
from django.contrib import admin
from django.core.files.storage import FileSystemStorage
from django.contrib.auth.models import User
+from django.contrib.contenttypes.models import ContentType
import os
from django.conf import settings
import datetime
from models_survex import *
-class Model(models.Model):
+#This class is for adding fields and methods which all of our models will have.
+class TroggleModel(models.Model):
new_since_parsing = models.BooleanField(default=False)
- def save(self):
- new_since_parsing = True
- super(Model, self).save()
+
+ def get_admin_url(self):
+ return settings.URL_ROOT + "/admin/expo/" + self._meta.object_name + "/" + str(self.pk)
+
+ class Meta:
+ abstract = True
-class Expedition(Model):
+class Expedition(TroggleModel):
year = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=100)
date_from = models.DateField(blank=True,null=True)
date_to = models.DateField(blank=True,null=True)
- dates_guessed = models.BooleanField(default=False)
def __unicode__(self):
return self.year
@@ -65,7 +69,7 @@ class Expedition(Model):
-class Person(Model):
+class Person(TroggleModel):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
is_vfho = models.BooleanField(help_text="VFHO is the Vereines f&uuml;r H&ouml;hlenkunde in Obersteier, a nearby Austrian caving club.")
@@ -119,7 +123,7 @@ class Person(Model):
#self.notability = 0.0 # set temporarily
-class PersonExpedition(Model):
+class PersonExpedition(TroggleModel):
expedition = models.ForeignKey(Expedition)
person = models.ForeignKey(Person)
date_from = models.DateField(blank=True,null=True)
@@ -197,7 +201,7 @@ class PersonExpedition(Model):
def get_absolute_url(self):
return settings.URL_ROOT + '/personexpedition/' + str(self.person.first_name) + '_' + str(self.person.last_name) + '/' +self.expedition.year
-class LogbookEntry(models.Model):
+class LogbookEntry(TroggleModel):
date = models.DateField()
expedition = models.ForeignKey(Expedition,blank=True,null=True) # yes this is double-
author = models.ForeignKey(PersonExpedition,blank=True,null=True) # the person who writes it up doesn't have to have been on the trip
@@ -229,7 +233,7 @@ class LogbookEntry(models.Model):
def get_previous_by_id(self):
Logbook.objects.get(id=self.id-1)
-class PersonTrip(models.Model):
+class PersonTrip(TroggleModel):
person_expedition = models.ForeignKey(PersonExpedition,null=True)
# this will be a foreign key of the place(s) the trip went through
@@ -252,7 +256,7 @@ class PersonTrip(models.Model):
# move following classes into models_cave
#
-class Area(models.Model):
+class Area(TroggleModel):
short_name = models.CharField(max_length=100)
name = models.CharField(max_length=200, blank=True, null=True)
description = models.TextField(blank=True,null=True)
@@ -268,14 +272,14 @@ class Area(models.Model):
elif self.parent:
return self.parent.kat_area()
-class CaveAndEntrance(models.Model):
+class CaveAndEntrance(TroggleModel):
cave = models.ForeignKey('Cave')
entrance = models.ForeignKey('Entrance')
entrance_letter = models.CharField(max_length=20,blank=True,null=True)
def __unicode__(self):
return unicode(self.cave) + unicode(self.entrance_letter)
-class Cave(models.Model):
+class Cave(TroggleModel):
# too much here perhaps
official_name = models.CharField(max_length=160)
area = models.ManyToManyField(Area, blank=True, null=True)
@@ -357,18 +361,18 @@ class Cave(models.Model):
-class OtherCaveName(models.Model):
+class OtherCaveName(TroggleModel):
name = models.CharField(max_length=160)
cave = models.ForeignKey(Cave)
def __unicode__(self):
return unicode(self.name)
-class SurveyStation(models.Model):
+class SurveyStation(TroggleModel):
name = models.CharField(max_length=200)
def __unicode__(self):
return unicode(self.name)
-class Entrance(models.Model):
+class Entrance(TroggleModel):
name = models.CharField(max_length=100, blank=True,null=True)
entrance_description = models.TextField(blank=True,null=True)
explorers = models.TextField(blank=True,null=True)
@@ -421,7 +425,7 @@ class Entrance(models.Model):
if f[0] == self.findability:
return f[1]
-class CaveArea(models.Model):
+class CaveArea(TroggleModel):
description = models.TextField()
name = models.CharField(max_length=200, unique = True)
cave = models.ForeignKey('Cave')
@@ -429,7 +433,7 @@ class CaveArea(models.Model):
survexFile = models.CharField(max_length=200)
-class QM(models.Model):
+class QM(TroggleModel):
#based on qm.csv in trunk/expoweb/smkridge/204 which has the fields:
#"Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment"
found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True )
@@ -458,7 +462,7 @@ class QM(models.Model):
return str(QMnumber)
photoFileStorage = FileSystemStorage(location=settings.EXPOWEB+'photos', base_url=settings.PHOTOS_URL)
-class Photo(models.Model):
+class Photo(TroggleModel):
caption = models.CharField(max_length=1000,blank=True,null=True)
contains_person_trip = models.ManyToManyField(PersonTrip,blank=True,null=True)
contains_person = models.ManyToManyField(Person,blank=True,null=True)
@@ -486,7 +490,7 @@ def get_scan_path(instance, filename):
number="%02d" % instance.survey.wallet_number + str(instance.survey.wallet_letter) #using %02d string formatting because convention was 2009#01
return os.path.join('./',year,year+r'#'+number,instance.contents+str(instance.number_in_wallet)+r'.jpg')
-class ScannedImage(models.Model):
+class ScannedImage(TroggleModel):
file = models.ImageField(storage=scansFileStorage, upload_to=get_scan_path)
scanned_by = models.ForeignKey(Person,blank=True, null=True)
scanned_on = models.DateField(null=True)
@@ -506,7 +510,7 @@ class ScannedImage(models.Model):
def __str__(self):
return get_scan_path(self,'')
-class Survey(models.Model):
+class Survey(TroggleModel):
expedition = models.ForeignKey('Expedition')
wallet_number = models.IntegerField(blank=True,null=True)
wallet_letter = models.CharField(max_length=1,blank=True,null=True)
diff --git a/expo/views_caves.py b/expo/views_caves.py
index 005a8cd..487bbc9 100644
--- a/expo/views_caves.py
+++ b/expo/views_caves.py
@@ -14,7 +14,7 @@ def caveindex(request):
def cavehref(request, cave_id='', offical_name=''):
try:
cave = Cave.objects.get(kataster_number=cave_id)
- except DoesNotExist:
+ except Cave.DoesNotExist:
cave = Cave.objects.get(unofficial_number=cave_id)
return render_response(request,'cave.html', {'cave': cave,})
diff --git a/parsers/logbooks.py b/parsers/logbooks.py
index 9c5a057..c2c46a4 100644
--- a/parsers/logbooks.py
+++ b/parsers/logbooks.py
@@ -252,7 +252,6 @@ def SetDatesFromLogbookEntries(expedition):
persontrips = personexpedition.persontrip_set.order_by('date')
personexpedition.date_from = min([persontrip.date for persontrip in persontrips] or [None])
personexpedition.date_to = max([persontrip.date for persontrip in persontrips] or [None])
- personexpedition.dates_guessed = True
personexpedition.save()
# The below is all unnecessary, just use the built in get_previous_by_date and get_next_by_date
@@ -269,7 +268,6 @@ def SetDatesFromLogbookEntries(expedition):
# from trips rather than logbook entries, which may include events outside the expedition
expedition.date_from = min([personexpedition.date_from for personexpedition in expedition.personexpedition_set.all() if personexpedition.date_from] or [None])
expedition.date_to = max([personexpedition.date_to for personexpedition in expedition.personexpedition_set.all() if personexpedition.date_to] or [None])
- expedition.dates_guessed = True
expedition.save()
# The below has been replaced with the methods get_next_by_id and get_previous_by_id
diff --git a/templates/base.html b/templates/base.html
index 5d173f3..8c79f87 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -32,7 +32,7 @@
| <a href="{{ settings.URL_ROOT }}/accounts/login">Log in</a>
{% endif %}
{% endblock%}
- | <a href="{{ settings.URL_ROOT }}">Home </a>
+ | <a href="{{ settings.URL_ROOT }}">Home </a> |
{% block editLink %}
{% endblock %}
diff --git a/templates/cave.html b/templates/cave.html
index c97b9cd..d76a211 100644
--- a/templates/cave.html
+++ b/templates/cave.html
@@ -1,6 +1,6 @@
{% extends "cavebase.html" %}
{% load wiki_markup %}
-
+{% block editLink %}<a href={{cave.get_admin_url}}>Edit cave {{cave|wiki_to_html_short}}</a>{% endblock %}
{% block content %}
<div id="col2">
diff --git a/templates/expedition.html b/templates/expedition.html
index b6be4ac..4f91abd 100644
--- a/templates/expedition.html
+++ b/templates/expedition.html
@@ -2,7 +2,7 @@
{% load wiki_markup %}
{% block title %}Expedition {{expedition.name}}{% endblock %}
-
+{% block editLink %}<a href={{expedition.get_admin_url}}>Edit expedition {{expedition|wiki_to_html_short}}</a>{% endblock %}
{% block content %}
<h2>{{expedition.name}}: {{expedition.date_from}} - {{expedition.date_to}}</h2>
diff --git a/templates/logbookentry.html b/templates/logbookentry.html
index 2bfb564..690d21c 100644
--- a/templates/logbookentry.html
+++ b/templates/logbookentry.html
@@ -2,7 +2,7 @@
{% load wiki_markup %}
{% block title %}Logbook {{logbookentry.id}}{% endblock %}
-
+{% block editLink %}<a href={{logbookentry.get_admin_url}}>Edit logbook entry {{logbookentry|wiki_to_html_short}}</a>{% endblock %}
{% block content %}
<h2>{{logbookentry.title|safe}}</h2>
diff --git a/templates/person.html b/templates/person.html
index aed5989..d28f82a 100644
--- a/templates/person.html
+++ b/templates/person.html
@@ -3,6 +3,8 @@
{% block title %}Person {{person|wiki_to_html_short}}{% endblock %}
+{% block editLink %}| <a href={{person.get_admin_url}}>Edit person {{person|wiki_to_html_short}}</a>{% endblock %}
+
{% block contentheader %}
<h2> {{person|wiki_to_html_short}} </h2>
{% endblock %}
diff --git a/urls.py b/urls.py
index 6c54916..49eb1b3 100644
--- a/urls.py
+++ b/urls.py
@@ -34,9 +34,9 @@ urlpatterns = patterns('',
- (r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
+ url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
#(r'^cave/(?P<cave_id>[^/]+)/edit/$', edit_cave),
- (r'^cavesearch', caveSearch),
+ #(r'^cavesearch', caveSearch),
url(r'^cavearea', caveArea, name="caveArea"),
url(r'^survex/(.*?)\.index$', views_survex.index, name="survexindex"),