summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWookey <wookey@wookware.org>2011-07-11 00:49:18 +0100
committerWookey <wookey@wookware.org>2011-07-11 00:49:18 +0100
commit129d93dfa74eaa6f8ec6aeefaff38699bca8d40f (patch)
tree30de6c64f4fb6d281c9d15879af5d8940eba3cb1 /core
parent28924db9f87af72343206383e9065841e3fd1c14 (diff)
parent65c55f0f21fe85a678d48842da10e0ea5c917ae5 (diff)
downloadtroggle-129d93dfa74eaa6f8ec6aeefaff38699bca8d40f.tar.gz
troggle-129d93dfa74eaa6f8ec6aeefaff38699bca8d40f.tar.bz2
troggle-129d93dfa74eaa6f8ec6aeefaff38699bca8d40f.zip
Merge from Martin's tip
Diffstat (limited to 'core')
-rw-r--r--core/admin.py1
-rw-r--r--core/forms.py69
-rw-r--r--core/models.py15
-rw-r--r--core/models_survex.py19
-rw-r--r--core/views_caves.py31
-rw-r--r--core/views_logbooks.py2
6 files changed, 91 insertions, 46 deletions
diff --git a/core/admin.py b/core/admin.py
index 8dfa7ca..be4045a 100644
--- a/core/admin.py
+++ b/core/admin.py
@@ -108,7 +108,6 @@ admin.site.register(Cave, CaveAdmin)
admin.site.register(Area)
#admin.site.register(OtherCaveName)
admin.site.register(CaveAndEntrance)
-admin.site.register(SurveyStation)
admin.site.register(NewSubCave)
admin.site.register(CaveDescription)
admin.site.register(Entrance, EntranceAdmin)
diff --git a/core/forms.py b/core/forms.py
index 2a54428..ec639b0 100644
--- a/core/forms.py
+++ b/core/forms.py
@@ -7,46 +7,49 @@ import string
from datetime import date
from tinymce.widgets import TinyMCE
-class CaveForm(ModelForm):
- class Meta:
- model = Cave
-
-class PersonForm(ModelForm):
- class Meta:
- model = Person
-
-class LogbookEntryForm(ModelForm):
- class Meta:
- model = LogbookEntry
-
- def wikiLinkHints(LogbookEntry=None):
- """
- This function returns html-formatted paragraphs for each of the
- wikilink types that are related to this logbookentry. Each paragraph
- contains a list of all of the related wikilinks.
-
- Perhaps an admin javascript solution would be better.
- """
- res = ["Please use the following wikilinks, which are related to this logbook entry:"]
-
- res.append(r'</p><p style="float: left;"><b>QMs found:</b>')
- for QM in LogbookEntry.instance.QMs_found.all():
- res.append(QM.wiki_link())
-
- res.append(r'</p><p style="float: left;"><b>QMs ticked off:</b>')
- for QM in LogbookEntry.instance.QMs_ticked_off.all():
- res.append(QM.wiki_link())
+#class CaveForm(ModelForm):
+# class Meta:
+# model = Cave
+
+#class PersonForm(ModelForm):
+# class Meta:
+# model = Person
+
+#class LogbookEntryForm(ModelForm):
+# class Meta:
+# model = LogbookEntry#
+
+# def wikiLinkHints(LogbookEntry=None):
+# """
+# This function returns html-formatted paragraphs for each of the
+# wikilink types that are related to this logbookentry. Each paragraph
+# contains a list of all of the related wikilinks.
+#
+# Perhaps an admin javascript solution would be better.
+# """
+# res = ["Please use the following wikilinks, which are related to this logbook entry:"]
+#
+# res.append(r'</p><p style="float: left;"><b>QMs found:</b>')
+# for QM in LogbookEntry.instance.QMs_found.all():
+# res.append(QM.wiki_link())
+
+# res.append(r'</p><p style="float: left;"><b>QMs ticked off:</b>')
+# for QM in LogbookEntry.instance.QMs_ticked_off.all():
+# res.append(QM.wiki_link())
# res.append(r'</p><p style="float: left; "><b>People</b>')
# for persontrip in LogbookEntry.instance.persontrip_set.all():
# res.append(persontrip.wiki_link())
# res.append(r'</p>')
- return string.join(res, r'<br />')
+# return string.join(res, r'<br />')
+
+# def __init__(self, *args, **kwargs):
+# super(LogbookEntryForm, self).__init__(*args, **kwargs)
+# self.fields['text'].help_text=self.wikiLinkHints()#
- def __init__(self, *args, **kwargs):
- super(LogbookEntryForm, self).__init__(*args, **kwargs)
- self.fields['text'].help_text=self.wikiLinkHints()
+class CaveForm(forms.Form):
+ html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
def getTripForm(expedition):
diff --git a/core/models.py b/core/models.py
index f8e7400..1c08a25 100644
--- a/core/models.py
+++ b/core/models.py
@@ -368,6 +368,7 @@ class Cave(TroggleModel):
extent = models.CharField(max_length=100,blank=True,null=True)
survex_file = models.CharField(max_length=100,blank=True,null=True)
description_file = models.CharField(max_length=200,blank=True,null=True)
+ url = models.CharField(max_length=200,blank=True,null=True)
#class Meta:
# unique_together = (("area", "kataster_number"), ("area", "unofficial_number"))
@@ -466,11 +467,7 @@ class OtherCaveName(TroggleModel):
cave = models.ForeignKey(Cave)
def __unicode__(self):
return unicode(self.name)
-
-class SurveyStation(TroggleModel):
- name = models.CharField(max_length=200)
- def __unicode__(self):
- return unicode(self.name)
+
class Entrance(TroggleModel):
slug = models.SlugField(max_length=50, unique = True)
@@ -504,9 +501,9 @@ class Entrance(TroggleModel):
alt = models.TextField(blank=True, null=True)
northing = models.TextField(blank=True, null=True)
easting = models.TextField(blank=True, null=True)
- tag_station = models.ForeignKey(SurveyStation, blank=True,null=True, related_name="tag_station")
- exact_station = models.ForeignKey(SurveyStation, blank=True,null=True, related_name="exact_station")
- other_station = models.ForeignKey(SurveyStation, blank=True,null=True, related_name="other_station")
+ tag_station = models.TextField()
+ exact_station = models.TextField()
+ other_station = models.TextField()
other_description = models.TextField(blank=True,null=True)
bearings = models.TextField(blank=True,null=True)
def __unicode__(self):
@@ -623,7 +620,7 @@ class DPhoto(TroggleImageModel):
is_mugshot = models.BooleanField(default=False)
contains_cave = models.ForeignKey(Cave,blank=True,null=True)
contains_entrance = models.ForeignKey(Entrance, related_name="photo_file",blank=True,null=True)
- nearest_survey_point = models.ForeignKey(SurveyStation,blank=True,null=True)
+ #nearest_survey_point = models.ForeignKey(SurveyStation,blank=True,null=True)
nearest_QM = models.ForeignKey(QM,blank=True,null=True)
lon_utm = models.FloatField(blank=True,null=True)
lat_utm = models.FloatField(blank=True,null=True)
diff --git a/core/models_survex.py b/core/models_survex.py
index ed21658..efd3022 100644
--- a/core/models_survex.py
+++ b/core/models_survex.py
@@ -52,10 +52,20 @@ class SurvexFile(models.Model):
class SurvexEquate(models.Model):
cave = models.ForeignKey('Cave', blank=True, null=True)
+class SurvexStationLookUpManager(models.Manager):
+ def lookup(self, name):
+ blocknames, sep, stationname = name.rpartition(".")
+ return self.get(block = SurvexBlock.objects.lookup(blocknames),
+ name = stationname)
+
class SurvexStation(models.Model):
name = models.CharField(max_length=20)
block = models.ForeignKey('SurvexBlock')
equate = models.ForeignKey('SurvexEquate', blank=True, null=True)
+ objects = SurvexStationLookUpManager()
+ x = models.FloatField(blank=True, null=True)
+ y = models.FloatField(blank=True, null=True)
+ z = models.FloatField(blank=True, null=True)
class SurvexLeg(models.Model):
block = models.ForeignKey('SurvexBlock')
@@ -70,7 +80,16 @@ class SurvexLeg(models.Model):
#
# Single SurvexBlock
#
+class SurvexBlockLookUpManager(models.Manager):
+ def lookup(self, name):
+ blocknames = name.split(".")
+ block = SurvexBlock.objects.get(parent=None, survexfile__path="all")
+ for blockname in blocknames:
+ block = SurvexBlock.objects.get(parent=block, name=blockname)
+ return block
+
class SurvexBlock(models.Model):
+ objects = SurvexBlockLookUpManager()
name = models.CharField(max_length=100)
parent = models.ForeignKey('SurvexBlock', blank=True, null=True)
text = models.TextField()
diff --git a/core/views_caves.py b/core/views_caves.py
index e24e6c2..24a85c7 100644
--- a/core/views_caves.py
+++ b/core/views_caves.py
@@ -1,6 +1,9 @@
from troggle.core.models import Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription
+from troggle.core.forms import CaveForm
import troggle.core.models as models
import troggle.settings as settings
+from troggle.helper import login_required_if_public
+
from django.forms.models import formset_factory
from django.core.urlresolvers import reverse
from utils import render_with_context # see views_logbooks for explanation on this.
@@ -21,15 +24,31 @@ def caveindex(request):
caves = Cave.objects.all()
notablecavehrefs = [ "161", "204", "258", "76" ] # could detect notability by trips and notability of people who have been down them
notablecaves = [Cave.objects.get(kataster_number=kataster_number) for kataster_number in notablecavehrefs ]
- return render_with_context(request,'caveindex.html', {'caves': caves, 'notablecaves':notablecaves})
+ caves1623 = Cave.objects.filter(area__short_name = "1623")
+ caves1626 = Cave.objects.filter(area__short_name = "1626")
+ return render_with_context(request,'caveindex.html', {'caves1623': caves1623, 'caves1626': caves1626, 'notablecaves':notablecaves, 'cavepage': True})
def cave(request, cave_id='', offical_name=''):
cave=getCave(cave_id)
if cave.non_public and not request.user.is_authenticated():
+ return render_with_context(request,'nonpublic.html', {'instance': cave, 'cavepage': True})
+ else:
+ return render_with_context(request,'cave.html', {'cave': cave, 'cavepage': True})
+
+def caveSlug(request, slug):
+ cave = Cave.objects.get(slug = slug)
+ if cave.non_public and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
return render_with_context(request,'cave.html', {'cave': cave})
-
+
+@login_required_if_public
+def editCave(request, slug=None):
+ form = CaveForm()
+ return render_with_context(request,
+ 'editcave.html',
+ {'form': form})
+
def qm(request,cave_id,qm_id,year,grade=None):
year=int(year)
try:
@@ -43,6 +62,7 @@ def qm(request,cave_id,qm_id,year,grade=None):
return HttpResponseRedirect(url)
+
def ent(request, cave_id, ent_letter):
cave = Cave.objects.filter(kataster_number = cave_id)[0]
cave_and_ent = CaveAndEntrance.objects.filter(cave = cave).filter(entrance_letter = ent_letter)[0]
@@ -50,6 +70,13 @@ def ent(request, cave_id, ent_letter):
'entrance': cave_and_ent.entrance,
'letter': cave_and_ent.entrance_letter,})
+def entranceSlug(request, slug):
+ entrance = Entrance.objects.get(slug = slug)
+ if entrance.non_public and not request.user.is_authenticated():
+ return render_with_context(request,'nonpublic.html', {'instance': entrance})
+ else:
+ return render_with_context(request,'entranceslug.html', {'entrance': entrance})
+
def survexblock(request, survexpath):
survexpath = re.sub("/", ".", survexpath)
print "jjjjjj", survexpath
diff --git a/core/views_logbooks.py b/core/views_logbooks.py
index 4495f03..007086f 100644
--- a/core/views_logbooks.py
+++ b/core/views_logbooks.py
@@ -5,7 +5,7 @@ import troggle.settings as settings
import django.db.models
from troggle.parsers.logbooks import LoadLogbookForExpedition
from troggle.parsers.people import GetPersonExpeditionNameLookup
-from troggle.core.forms import PersonForm, getTripForm, get_name
+#from troggle.core.forms import PersonForm, getTripForm, get_name
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse
from django.template import Context, loader