mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-18 19:47:16 +00:00
Merge from Martin's tip
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -7,46 +7,49 @@ import string
|
||||
from datetime import date
|
||||
from tinymce.widgets import TinyMCE
|
||||
|
||||
class CaveForm(ModelForm):
|
||||
class Meta:
|
||||
model = Cave
|
||||
#class CaveForm(ModelForm):
|
||||
# class Meta:
|
||||
# model = Cave
|
||||
|
||||
class PersonForm(ModelForm):
|
||||
class Meta:
|
||||
model = Person
|
||||
#class PersonForm(ModelForm):
|
||||
# class Meta:
|
||||
# model = Person
|
||||
|
||||
class LogbookEntryForm(ModelForm):
|
||||
class Meta:
|
||||
model = LogbookEntry
|
||||
#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())
|
||||
# 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>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):
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user