mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-12-01 14:21:52 +00:00
Merge lots of troggle fixes
This commit is contained in:
commit
b3089fafe9
@ -74,11 +74,11 @@ class LogbookEntryAdmin(TroggleModelAdmin):
|
|||||||
}
|
}
|
||||||
actions=('export_logbook_entries_as_html','export_logbook_entries_as_txt')
|
actions=('export_logbook_entries_as_html','export_logbook_entries_as_txt')
|
||||||
|
|
||||||
def export_logbook_entries_as_html(modeladmin, request, queryset):
|
def export_logbook_entries_as_html(self, modeladmin, request, queryset):
|
||||||
response=downloadLogbook(request=request, queryset=queryset, extension='html')
|
response=downloadLogbook(request=request, queryset=queryset, extension='html')
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def export_logbook_entries_as_txt(modeladmin, request, queryset):
|
def export_logbook_entries_as_txt(self, modeladmin, request, queryset):
|
||||||
response=downloadLogbook(request=request, queryset=queryset, extension='txt')
|
response=downloadLogbook(request=request, queryset=queryset, extension='txt')
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@ -141,14 +141,14 @@ admin.site.register(SurvexScanSingle)
|
|||||||
|
|
||||||
|
|
||||||
def export_as_json(modeladmin, request, queryset):
|
def export_as_json(modeladmin, request, queryset):
|
||||||
response = HttpResponse(mimetype="text/json")
|
response = HttpResponse(content_type="text/json")
|
||||||
response['Content-Disposition'] = 'attachment; filename=troggle_output.json'
|
response['Content-Disposition'] = 'attachment; filename=troggle_output.json'
|
||||||
serializers.serialize("json", queryset, stream=response)
|
serializers.serialize("json", queryset, stream=response)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
def export_as_xml(modeladmin, request, queryset):
|
def export_as_xml(modeladmin, request, queryset):
|
||||||
response = HttpResponse(mimetype="text/xml")
|
response = HttpResponse(content_type="text/xml")
|
||||||
response['Content-Disposition'] = 'attachment; filename=troggle_output.xml'
|
response['Content-Disposition'] = 'attachment; filename=troggle_output.xml'
|
||||||
serializers.serialize("xml", queryset, stream=response)
|
serializers.serialize("xml", queryset, stream=response)
|
||||||
return response
|
return response
|
||||||
|
@ -46,12 +46,12 @@ class EntranceForm(ModelForm):
|
|||||||
#underground_centre_line = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
#underground_centre_line = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
||||||
#notes = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
#notes = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
||||||
#references = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
#references = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10}))
|
||||||
other_station = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
other_station = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
tag_station = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
tag_station = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
exact_station = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
exact_station = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
northing = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
northing = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
easting = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
easting = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
alt = forms.CharField(required=False) # Trying to change this to a singl;e line entry
|
alt = forms.CharField(required=False) # Trying to change this to a single line entry
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Entrance
|
model = Entrance
|
||||||
exclude = ("cached_primary_slug", "filename",)
|
exclude = ("cached_primary_slug", "filename",)
|
||||||
@ -123,7 +123,7 @@ def getTripForm(expedition):
|
|||||||
html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
|
html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
print dir(self)
|
print(dir(self))
|
||||||
if self.cleaned_data.get("caveOrLocation") == "cave" and not self.cleaned_data.get("cave"):
|
if self.cleaned_data.get("caveOrLocation") == "cave" and not self.cleaned_data.get("cave"):
|
||||||
self._errors["cave"] = self.error_class(["This field is required"])
|
self._errors["cave"] = self.error_class(["This field is required"])
|
||||||
if self.cleaned_data.get("caveOrLocation") == "location" and not self.cleaned_data.get("location"):
|
if self.cleaned_data.get("caveOrLocation") == "location" and not self.cleaned_data.get("location"):
|
||||||
|
@ -2,6 +2,14 @@ from django.core.management.base import BaseCommand, CommandError
|
|||||||
from optparse import make_option
|
from optparse import make_option
|
||||||
from troggle.core.models import Cave
|
from troggle.core.models import Cave
|
||||||
import settings
|
import settings
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.db import connection
|
||||||
|
from django.core import management
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
from django.core.urlresolvers import reverse
|
||||||
|
from troggle.core.models import Cave, Entrance
|
||||||
|
import troggle.flatpages.models
|
||||||
|
|
||||||
databasename=settings.DATABASES['default']['NAME']
|
databasename=settings.DATABASES['default']['NAME']
|
||||||
expouser=settings.EXPOUSER
|
expouser=settings.EXPOUSER
|
||||||
@ -12,22 +20,13 @@ class Command(BaseCommand):
|
|||||||
help = 'This is normal usage, clear database and reread everything'
|
help = 'This is normal usage, clear database and reread everything'
|
||||||
|
|
||||||
option_list = BaseCommand.option_list + (
|
option_list = BaseCommand.option_list + (
|
||||||
make_option('--foo',
|
make_option('--reset',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
dest='foo',
|
dest='reset',
|
||||||
default=False,
|
default=False,
|
||||||
help='test'),
|
help='Reset the entier DB from files'),
|
||||||
)
|
)
|
||||||
|
|
||||||
def add_arguments(self, parser):
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--foo',
|
|
||||||
action='store_true',
|
|
||||||
dest='foo',
|
|
||||||
help='Help text',
|
|
||||||
)
|
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
print(args)
|
print(args)
|
||||||
print(options)
|
print(options)
|
||||||
@ -46,8 +45,8 @@ class Command(BaseCommand):
|
|||||||
self.import_QMs()
|
self.import_QMs()
|
||||||
elif "tunnel" in args:
|
elif "tunnel" in args:
|
||||||
self.import_tunnelfiles()
|
self.import_tunnelfiles()
|
||||||
elif "reset" in args:
|
elif options['reset']:
|
||||||
self.reset()
|
self.reset(self)
|
||||||
elif "survex" in args:
|
elif "survex" in args:
|
||||||
self.import_survex()
|
self.import_survex()
|
||||||
elif "survexpos" in args:
|
elif "survexpos" in args:
|
||||||
@ -61,13 +60,15 @@ class Command(BaseCommand):
|
|||||||
self.dumplogbooks()
|
self.dumplogbooks()
|
||||||
elif "writeCaves" in args:
|
elif "writeCaves" in args:
|
||||||
self.writeCaves()
|
self.writeCaves()
|
||||||
elif "foo" in args:
|
elif options['foo']:
|
||||||
self.stdout.write('Tesing....')
|
self.stdout.write(self.style.WARNING('Tesing....'))
|
||||||
else:
|
else:
|
||||||
self.stdout.write("%s not recognised" % args)
|
#self.stdout.write("%s not recognised" % args)
|
||||||
self.usage(options)
|
#self.usage(options)
|
||||||
|
self.stdout.write("poo")
|
||||||
|
#print(args)
|
||||||
|
|
||||||
def reload_db():
|
def reload_db(obj):
|
||||||
if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.sqlite3':
|
if settings.DATABASES['default']['ENGINE'] == 'django.db.backends.sqlite3':
|
||||||
try:
|
try:
|
||||||
os.remove(databasename)
|
os.remove(databasename)
|
||||||
@ -86,22 +87,22 @@ class Command(BaseCommand):
|
|||||||
user.is_superuser = True
|
user.is_superuser = True
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
def make_dirs():
|
def make_dirs(obj):
|
||||||
"""Make directories that troggle requires"""
|
"""Make directories that troggle requires"""
|
||||||
# should also deal with permissions here.
|
# should also deal with permissions here.
|
||||||
if not os.path.isdir(settings.PHOTOS_ROOT):
|
if not os.path.isdir(settings.PHOTOS_ROOT):
|
||||||
os.mkdir(settings.PHOTOS_ROOT)
|
os.mkdir(settings.PHOTOS_ROOT)
|
||||||
|
|
||||||
def import_caves():
|
def import_caves(obj):
|
||||||
import parsers.caves
|
import parsers.caves
|
||||||
print("importing caves")
|
print("Importing Caves")
|
||||||
parsers.caves.readcaves()
|
parsers.caves.readcaves()
|
||||||
|
|
||||||
def import_people():
|
def import_people(obj):
|
||||||
import parsers.people
|
import parsers.people
|
||||||
parsers.people.LoadPersonsExpos()
|
parsers.people.LoadPersonsExpos()
|
||||||
|
|
||||||
def import_logbooks():
|
def import_logbooks(obj):
|
||||||
# The below line was causing errors I didn't understand (it said LOGFILE was a string), and I couldn't be bothered to figure
|
# The below line was causing errors I didn't understand (it said LOGFILE was a string), and I couldn't be bothered to figure
|
||||||
# what was going on so I just catch the error with a try. - AC 21 May
|
# what was going on so I just catch the error with a try. - AC 21 May
|
||||||
try:
|
try:
|
||||||
@ -112,57 +113,57 @@ class Command(BaseCommand):
|
|||||||
import parsers.logbooks
|
import parsers.logbooks
|
||||||
parsers.logbooks.LoadLogbooks()
|
parsers.logbooks.LoadLogbooks()
|
||||||
|
|
||||||
def import_survex():
|
def import_survex(obj):
|
||||||
import parsers.survex
|
import parsers.survex
|
||||||
parsers.survex.LoadAllSurvexBlocks()
|
parsers.survex.LoadAllSurvexBlocks()
|
||||||
parsers.survex.LoadPos()
|
parsers.survex.LoadPos()
|
||||||
|
|
||||||
def import_QMs():
|
def import_QMs(obj):
|
||||||
import parsers.QMs
|
import parsers.QMs
|
||||||
|
|
||||||
def import_surveys():
|
def import_surveys(obj):
|
||||||
import parsers.surveys
|
import parsers.surveys
|
||||||
parsers.surveys.parseSurveys(logfile=settings.LOGFILE)
|
parsers.surveys.parseSurveys(logfile=settings.LOGFILE)
|
||||||
|
|
||||||
def import_surveyscans():
|
def import_surveyscans(obj):
|
||||||
import parsers.surveys
|
import parsers.surveys
|
||||||
parsers.surveys.LoadListScans()
|
parsers.surveys.LoadListScans()
|
||||||
|
|
||||||
def import_tunnelfiles():
|
def import_tunnelfiles(obj):
|
||||||
import parsers.surveys
|
import parsers.surveys
|
||||||
parsers.surveys.LoadTunnelFiles()
|
parsers.surveys.LoadTunnelFiles()
|
||||||
|
|
||||||
def reset():
|
def reset(self, mgmt_obj):
|
||||||
""" Wipe the troggle database and import everything from legacy data
|
""" Wipe the troggle database and import everything from legacy data
|
||||||
"""
|
"""
|
||||||
reload_db()
|
self.reload_db()
|
||||||
make_dirs()
|
self.make_dirs()
|
||||||
pageredirects()
|
self.pageredirects()
|
||||||
import_caves()
|
self.import_caves()
|
||||||
import_people()
|
self.import_people()
|
||||||
import_surveyscans()
|
self.import_surveyscans()
|
||||||
import_survex()
|
self.import_survex()
|
||||||
import_logbooks()
|
self.import_logbooks()
|
||||||
import_QMs()
|
self.import_QMs()
|
||||||
try:
|
try:
|
||||||
import_tunnelfiles()
|
self.import_tunnelfiles()
|
||||||
except:
|
except:
|
||||||
print("Tunnel files parser broken.")
|
print("Tunnel files parser broken.")
|
||||||
|
|
||||||
import_surveys()
|
self.import_surveys()
|
||||||
|
|
||||||
def pageredirects():
|
def pageredirects(obj):
|
||||||
for oldURL, newURL in [("indxal.htm", reverse("caveindex"))]:
|
for oldURL, newURL in [("indxal.htm", reverse("caveindex"))]:
|
||||||
f = troggle.flatpages.models.Redirect(originalURL=oldURL, newURL=newURL)
|
f = troggle.flatpages.models.Redirect(originalURL=oldURL, newURL=newURL)
|
||||||
f.save()
|
f.save()
|
||||||
|
|
||||||
def writeCaves():
|
def writeCaves(obj):
|
||||||
for cave in Cave.objects.all():
|
for cave in Cave.objects.all():
|
||||||
cave.writeDataFile()
|
cave.writeDataFile()
|
||||||
for entrance in Entrance.objects.all():
|
for entrance in Entrance.objects.all():
|
||||||
entrance.writeDataFile()
|
entrance.writeDataFile()
|
||||||
|
|
||||||
def usage(self, parser):
|
def troggle_usage(obj):
|
||||||
print("""Usage is 'manage.py reset_db <command>'
|
print("""Usage is 'manage.py reset_db <command>'
|
||||||
where command is:
|
where command is:
|
||||||
reset - this is normal usage, clear database and reread everything
|
reset - this is normal usage, clear database and reread everything
|
||||||
|
@ -106,7 +106,6 @@ class Expedition(TroggleModel):
|
|||||||
return res and res[len(res) - 1] or None
|
return res and res[len(res) - 1] or None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ExpeditionDay(TroggleModel):
|
class ExpeditionDay(TroggleModel):
|
||||||
expedition = models.ForeignKey("Expedition")
|
expedition = models.ForeignKey("Expedition")
|
||||||
date = models.DateField()
|
date = models.DateField()
|
||||||
@ -118,7 +117,6 @@ class ExpeditionDay(TroggleModel):
|
|||||||
personexpeditions = self.persontrip_set.filter(expeditionday=self)
|
personexpeditions = self.persontrip_set.filter(expeditionday=self)
|
||||||
return personexpeditions and personexpeditions[0] or None
|
return personexpeditions and personexpeditions[0] or None
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# single Person, can go on many years
|
# single Person, can go on many years
|
||||||
#
|
#
|
||||||
@ -247,18 +245,22 @@ class PersonExpedition(TroggleModel):
|
|||||||
# Single parsed entry from Logbook
|
# Single parsed entry from Logbook
|
||||||
#
|
#
|
||||||
class LogbookEntry(TroggleModel):
|
class LogbookEntry(TroggleModel):
|
||||||
date = models.DateField()#MJG wants to turn this into a datetime such that multiple Logbook entries on the same day can be ordered.
|
|
||||||
|
LOGBOOK_ENTRY_TYPES = (
|
||||||
|
("wiki", "Wiki style logbook"),
|
||||||
|
("html", "Html style logbook")
|
||||||
|
)
|
||||||
|
|
||||||
|
date = models.DateField()#MJG wants to turn this into a datetime such that multiple Logbook entries on the same day can be ordered.ld()
|
||||||
expeditionday = models.ForeignKey("ExpeditionDay", null=True)#MJG wants to KILL THIS (redundant information)
|
expeditionday = models.ForeignKey("ExpeditionDay", null=True)#MJG wants to KILL THIS (redundant information)
|
||||||
expedition = models.ForeignKey(Expedition,blank=True,null=True) # yes this is double-
|
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.
|
title = models.CharField(max_length=settings.MAX_LOGBOOK_ENTRY_TITLE_LENGTH)
|
||||||
# Re: the above- so this field should be "typist" or something, not "author". - AC 15 jun 09
|
cave_slug = models.SlugField(max_length=50)
|
||||||
#MJG wants to KILL THIS, as it is typically redundant with PersonTrip.is_logbook_entry_author, in the rare it was not redundanty and of actually interest it could be added to the text.
|
place = models.CharField(max_length=100,blank=True,null=True,help_text="Only use this if you haven't chosen a cave")
|
||||||
title = models.CharField(max_length=settings.MAX_LOGBOOK_ENTRY_TITLE_LENGTH)
|
text = models.TextField()
|
||||||
cave_slug = models.SlugField(max_length=50)
|
slug = models.SlugField(max_length=50)
|
||||||
place = models.CharField(max_length=100,blank=True,null=True,help_text="Only use this if you haven't chosen a cave")
|
filename = models.CharField(max_length=200,null=True)
|
||||||
text = models.TextField()
|
entry_type = models.CharField(default="wiki",null=True,choices=LOGBOOK_ENTRY_TYPES,max_length=50)
|
||||||
slug = models.SlugField(max_length=50)
|
|
||||||
filename = models.CharField(max_length=200,null=True)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name_plural = "Logbook Entries"
|
verbose_name_plural = "Logbook Entries"
|
||||||
@ -297,7 +299,7 @@ class LogbookEntry(TroggleModel):
|
|||||||
if self.cave:
|
if self.cave:
|
||||||
nextQMnumber=self.cave.new_QM_number(self.date.year)
|
nextQMnumber=self.cave.new_QM_number(self.date.year)
|
||||||
else:
|
else:
|
||||||
return none
|
return None
|
||||||
return nextQMnumber
|
return nextQMnumber
|
||||||
|
|
||||||
def new_QM_found_link(self):
|
def new_QM_found_link(self):
|
||||||
@ -307,6 +309,7 @@ class LogbookEntry(TroggleModel):
|
|||||||
def DayIndex(self):
|
def DayIndex(self):
|
||||||
return list(self.expeditionday.logbookentry_set.all()).index(self)
|
return list(self.expeditionday.logbookentry_set.all()).index(self)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Single Person going on a trip, which may or may not be written up (accounts for different T/U for people in same logbook entry)
|
# Single Person going on a trip, which may or may not be written up (accounts for different T/U for people in same logbook entry)
|
||||||
#
|
#
|
||||||
@ -452,7 +455,7 @@ class Cave(TroggleModel):
|
|||||||
elif self.unofficial_number:
|
elif self.unofficial_number:
|
||||||
href = self.unofficial_number
|
href = self.unofficial_number
|
||||||
else:
|
else:
|
||||||
href = official_name.lower()
|
href = self.official_name.lower()
|
||||||
#return settings.URL_ROOT + '/cave/' + href + '/'
|
#return settings.URL_ROOT + '/cave/' + href + '/'
|
||||||
return urlparse.urljoin(settings.URL_ROOT, reverse('cave',kwargs={'cave_id':href,}))
|
return urlparse.urljoin(settings.URL_ROOT, reverse('cave',kwargs={'cave_id':href,}))
|
||||||
|
|
||||||
@ -744,17 +747,17 @@ class QM(TroggleModel):
|
|||||||
|
|
||||||
number = models.IntegerField(help_text="this is the sequential number in the year", )
|
number = models.IntegerField(help_text="this is the sequential number in the year", )
|
||||||
GRADE_CHOICES=(
|
GRADE_CHOICES=(
|
||||||
('A', 'A: Large obvious lead'),
|
('A', 'A: Large obvious lead'),
|
||||||
('B', 'B: Average lead'),
|
('B', 'B: Average lead'),
|
||||||
('C', 'C: Tight unpromising lead'),
|
('C', 'C: Tight unpromising lead'),
|
||||||
('D', 'D: Dig'),
|
('D', 'D: Dig'),
|
||||||
('X', 'X: Unclimbable aven')
|
('X', 'X: Unclimbable aven')
|
||||||
)
|
)
|
||||||
grade = models.CharField(max_length=1, choices=GRADE_CHOICES)
|
grade = models.CharField(max_length=1, choices=GRADE_CHOICES)
|
||||||
location_description = models.TextField(blank=True)
|
location_description = models.TextField(blank=True)
|
||||||
#should be a foreignkey to surveystation
|
|
||||||
nearest_station_description = models.CharField(max_length=400,null=True,blank=True)
|
nearest_station_description = models.CharField(max_length=400,null=True,blank=True)
|
||||||
nearest_station = models.CharField(max_length=200,blank=True,null=True)
|
nearest_station_name = models.CharField(max_length=200,blank=True,null=True)
|
||||||
|
nearest_station = models.ForeignKey(SurvexStation,null=True,blank=True)
|
||||||
area = models.CharField(max_length=100,blank=True,null=True)
|
area = models.CharField(max_length=100,blank=True,null=True)
|
||||||
completion_description = models.TextField(blank=True,null=True)
|
completion_description = models.TextField(blank=True,null=True)
|
||||||
comment=models.TextField(blank=True,null=True)
|
comment=models.TextField(blank=True,null=True)
|
||||||
|
@ -47,6 +47,6 @@ def survex_to_html(value, autoescape=None):
|
|||||||
if autoescape:
|
if autoescape:
|
||||||
value = conditional_escape(value)
|
value = conditional_escape(value)
|
||||||
for regex, sub in regexes:
|
for regex, sub in regexes:
|
||||||
print sub
|
print(sub)
|
||||||
value = regex.sub(sub, value)
|
value = regex.sub(sub, value)
|
||||||
return mark_safe(value)
|
return mark_safe(value)
|
@ -8,7 +8,6 @@ import re, urlparse
|
|||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@register.filter()
|
@register.filter()
|
||||||
def plusone(n):
|
def plusone(n):
|
||||||
return n + 1
|
return n + 1
|
||||||
@ -77,7 +76,7 @@ def wiki_to_html_short(value, autoescape=None):
|
|||||||
if number>1:
|
if number>1:
|
||||||
return '<h'+num+'>'+matchobj.groups()[1]+'</h'+num+'>'
|
return '<h'+num+'>'+matchobj.groups()[1]+'</h'+num+'>'
|
||||||
else:
|
else:
|
||||||
print 'morethanone'
|
print('morethanone')
|
||||||
return matchobj.group()
|
return matchobj.group()
|
||||||
value = re.sub(r"(?m)^(=+)([^=]+)(=+)$",headerrepl,value)
|
value = re.sub(r"(?m)^(=+)([^=]+)(=+)$",headerrepl,value)
|
||||||
|
|
||||||
@ -143,13 +142,13 @@ def wiki_to_html_short(value, autoescape=None):
|
|||||||
value = re.sub(photoSrcPattern,photoSrcRepl, value, re.DOTALL)
|
value = re.sub(photoSrcPattern,photoSrcRepl, value, re.DOTALL)
|
||||||
|
|
||||||
#make cave links
|
#make cave links
|
||||||
value = re.sub("\[\[\s*cave:([^\s]+)\s*\s*\]\]", r'<a href="%scave/\1/">\1</a>' % settings.URL_ROOT, value, re.DOTALL)
|
value = re.sub(r"\[\[\s*cave:([^\s]+)\s*\s*\]\]", r'<a href="%scave/\1/">\1</a>' % settings.URL_ROOT, value, re.DOTALL)
|
||||||
#make people links
|
#make people links
|
||||||
value = re.sub("\[\[\s*person:(.+)\|(.+)\]\]",r'<a href="%sperson/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
value = re.sub(r"\[\[\s*person:(.+)\|(.+)\]\]",r'<a href="%sperson/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
||||||
#make subcave links
|
#make subcave links
|
||||||
value = re.sub("\[\[\s*subcave:(.+)\|(.+)\]\]",r'<a href="%ssubcave/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
value = re.sub(r"\[\[\s*subcave:(.+)\|(.+)\]\]",r'<a href="%ssubcave/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
||||||
#make cavedescription links
|
#make cavedescription links
|
||||||
value = re.sub("\[\[\s*cavedescription:(.+)\|(.+)\]\]",r'<a href="%scavedescription/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
value = re.sub(r"\[\[\s*cavedescription:(.+)\|(.+)\]\]",r'<a href="%scavedescription/\1/">\2</a>' % settings.URL_ROOT, value, re.DOTALL)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,11 +10,10 @@ from troggle.helper import login_required_if_public
|
|||||||
from django.forms.models import modelformset_factory
|
from django.forms.models import modelformset_factory
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from utils import render_with_context # see views_logbooks for explanation on this.
|
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import re, urlparse
|
import re, urlparse
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404, render
|
||||||
import settings
|
import settings
|
||||||
|
|
||||||
|
|
||||||
@ -58,7 +57,7 @@ def caveindex(request):
|
|||||||
caves1626 = list(Cave.objects.filter(area__short_name = "1626"))
|
caves1626 = list(Cave.objects.filter(area__short_name = "1626"))
|
||||||
caves1623.sort(caveCmp)
|
caves1623.sort(caveCmp)
|
||||||
caves1626.sort(caveCmp)
|
caves1626.sort(caveCmp)
|
||||||
return render_with_context(request,'caveindex.html', {'caves1623': caves1623, 'caves1626': caves1626, 'notablecaves':notablecaves, 'cavepage': True})
|
return render(request,'caveindex.html', {'caves1623': caves1623, 'caves1626': caves1626, 'notablecaves':notablecaves, 'cavepage': True})
|
||||||
|
|
||||||
def millenialcaves(request):
|
def millenialcaves(request):
|
||||||
#RW messing around area
|
#RW messing around area
|
||||||
@ -83,43 +82,43 @@ def cave3d(request, cave_id=''):
|
|||||||
def cave(request, cave_id='', offical_name=''):
|
def cave(request, cave_id='', offical_name=''):
|
||||||
cave=getCave(cave_id)
|
cave=getCave(cave_id)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave, 'cavepage': True, 'cave_id': cave_id})
|
return render(request,'nonpublic.html', {'instance': cave, 'cavepage': True, 'cave_id': cave_id})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave.html', {'settings': settings, 'cave': cave, 'cavepage': True, 'cave_id': cave_id})
|
return render(request,'cave.html', {'settings': settings, 'cave': cave, 'cavepage': True, 'cave_id': cave_id})
|
||||||
|
|
||||||
def caveEntrance(request, slug):
|
def caveEntrance(request, slug):
|
||||||
cave = Cave.objects.get(caveslug__slug = slug)
|
cave = Cave.objects.get(caveslug__slug = slug)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave})
|
return render(request,'nonpublic.html', {'instance': cave})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave_entrances.html', {'cave': cave})
|
return render(request,'cave_entrances.html', {'cave': cave})
|
||||||
|
|
||||||
def caveDescription(request, slug):
|
def caveDescription(request, slug):
|
||||||
cave = Cave.objects.get(caveslug__slug = slug)
|
cave = Cave.objects.get(caveslug__slug = slug)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave})
|
return render(request,'nonpublic.html', {'instance': cave})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave_uground_description.html', {'cave': cave})
|
return render(request,'cave_uground_description.html', {'cave': cave})
|
||||||
|
|
||||||
def caveQMs(request, slug):
|
def caveQMs(request, slug):
|
||||||
cave = Cave.objects.get(caveslug__slug = slug)
|
cave = Cave.objects.get(caveslug__slug = slug)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave})
|
return render(request,'nonpublic.html', {'instance': cave})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave_qms.html', {'cave': cave})
|
return render(request,'cave_qms.html', {'cave': cave})
|
||||||
def caveLogbook(request, slug):
|
def caveLogbook(request, slug):
|
||||||
cave = Cave.objects.get(caveslug__slug = slug)
|
cave = Cave.objects.get(caveslug__slug = slug)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave})
|
return render(request,'nonpublic.html', {'instance': cave})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave_logbook.html', {'cave': cave})
|
return render(request,'cave_logbook.html', {'cave': cave})
|
||||||
|
|
||||||
def caveSlug(request, slug):
|
def caveSlug(request, slug):
|
||||||
cave = Cave.objects.get(caveslug__slug = slug)
|
cave = Cave.objects.get(caveslug__slug = slug)
|
||||||
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': cave, 'cave_editable': slug})
|
return render(request,'nonpublic.html', {'instance': cave, 'cave_editable': slug})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'cave.html', {'cave': cave, 'cave_editable': slug})
|
return render(request,'cave.html', {'cave': cave, 'cave_editable': slug})
|
||||||
|
|
||||||
@login_required_if_public
|
@login_required_if_public
|
||||||
def edit_cave(request, slug=None):
|
def edit_cave(request, slug=None):
|
||||||
@ -160,7 +159,7 @@ def edit_cave(request, slug=None):
|
|||||||
ceFormSet = CaveAndEntranceFormSet(queryset=cave.caveandentrance_set.all())
|
ceFormSet = CaveAndEntranceFormSet(queryset=cave.caveandentrance_set.all())
|
||||||
versionControlForm = VersionControlCommentForm()
|
versionControlForm = VersionControlCommentForm()
|
||||||
|
|
||||||
return render_with_context(request,
|
return render(request,
|
||||||
'editcave2.html',
|
'editcave2.html',
|
||||||
{'form': form,
|
{'form': form,
|
||||||
'caveAndEntranceFormSet': ceFormSet,
|
'caveAndEntranceFormSet': ceFormSet,
|
||||||
@ -204,7 +203,7 @@ def editEntrance(request, caveslug, slug=None):
|
|||||||
entletter = EntranceLetterForm(request.POST)
|
entletter = EntranceLetterForm(request.POST)
|
||||||
else:
|
else:
|
||||||
entletter = None
|
entletter = None
|
||||||
return render_with_context(request,
|
return render(request,
|
||||||
'editentrance.html',
|
'editentrance.html',
|
||||||
{'form': form,
|
{'form': form,
|
||||||
'versionControlForm': versionControlForm,
|
'versionControlForm': versionControlForm,
|
||||||
@ -215,7 +214,7 @@ def qm(request,cave_id,qm_id,year,grade=None):
|
|||||||
year=int(year)
|
year=int(year)
|
||||||
try:
|
try:
|
||||||
qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
|
qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
|
||||||
return render_with_context(request,'qm.html',locals())
|
return render(request,'qm.html',locals())
|
||||||
|
|
||||||
except QM.DoesNotExist:
|
except QM.DoesNotExist:
|
||||||
url=urlparse.urljoin(settings.URL_ROOT, r'/admin/core/qm/add/'+'?'+ r'number=' + qm_id)
|
url=urlparse.urljoin(settings.URL_ROOT, r'/admin/core/qm/add/'+'?'+ r'number=' + qm_id)
|
||||||
@ -228,16 +227,16 @@ def qm(request,cave_id,qm_id,year,grade=None):
|
|||||||
def ent(request, cave_id, ent_letter):
|
def ent(request, cave_id, ent_letter):
|
||||||
cave = Cave.objects.filter(kataster_number = cave_id)[0]
|
cave = Cave.objects.filter(kataster_number = cave_id)[0]
|
||||||
cave_and_ent = CaveAndEntrance.objects.filter(cave = cave).filter(entrance_letter = ent_letter)[0]
|
cave_and_ent = CaveAndEntrance.objects.filter(cave = cave).filter(entrance_letter = ent_letter)[0]
|
||||||
return render_with_context(request,'entrance.html', {'cave': cave,
|
return render(request,'entrance.html', {'cave': cave,
|
||||||
'entrance': cave_and_ent.entrance,
|
'entrance': cave_and_ent.entrance,
|
||||||
'letter': cave_and_ent.entrance_letter,})
|
'letter': cave_and_ent.entrance_letter,})
|
||||||
|
|
||||||
def entranceSlug(request, slug):
|
def entranceSlug(request, slug):
|
||||||
entrance = Entrance.objects.get(entranceslug__slug = slug)
|
entrance = Entrance.objects.get(entranceslug__slug = slug)
|
||||||
if entrance.non_public and not request.user.is_authenticated():
|
if entrance.non_public and not request.user.is_authenticated():
|
||||||
return render_with_context(request,'nonpublic.html', {'instance': entrance})
|
return render(request,'nonpublic.html', {'instance': entrance})
|
||||||
else:
|
else:
|
||||||
return render_with_context(request,'entranceslug.html', {'entrance': entrance})
|
return render(request,'entranceslug.html', {'entrance': entrance})
|
||||||
|
|
||||||
def survexblock(request, survexpath):
|
def survexblock(request, survexpath):
|
||||||
survexpath = re.sub("/", ".", survexpath)
|
survexpath = re.sub("/", ".", survexpath)
|
||||||
@ -245,12 +244,12 @@ def survexblock(request, survexpath):
|
|||||||
survexblock = models.SurvexBlock.objects.get(survexpath=survexpath)
|
survexblock = models.SurvexBlock.objects.get(survexpath=survexpath)
|
||||||
#ftext = survexblock.filecontents()
|
#ftext = survexblock.filecontents()
|
||||||
ftext = survexblock.text
|
ftext = survexblock.text
|
||||||
return render_with_context(request,'survexblock.html', {'survexblock':survexblock, 'ftext':ftext, })
|
return render(request,'survexblock.html', {'survexblock':survexblock, 'ftext':ftext, })
|
||||||
|
|
||||||
def surveyindex(request):
|
def surveyindex(request):
|
||||||
surveys=Survey.objects.all()
|
surveys=Survey.objects.all()
|
||||||
expeditions=Expedition.objects.order_by("-year")
|
expeditions=Expedition.objects.order_by("-year")
|
||||||
return render_with_context(request,'survey.html',locals())
|
return render(request,'survey.html',locals())
|
||||||
|
|
||||||
def survey(request,year,wallet_number):
|
def survey(request,year,wallet_number):
|
||||||
surveys=Survey.objects.all()
|
surveys=Survey.objects.all()
|
||||||
@ -263,19 +262,19 @@ def survey(request,year,wallet_number):
|
|||||||
planSketches=current_survey.scannedimage_set.filter(contents='plan')
|
planSketches=current_survey.scannedimage_set.filter(contents='plan')
|
||||||
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
|
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
|
||||||
|
|
||||||
return render_with_context(request,'survey.html', locals())
|
return render(request,'survey.html', locals())
|
||||||
|
|
||||||
def cave_description(request, cavedescription_name):
|
def cave_description(request, cavedescription_name):
|
||||||
cave_description = get_object_or_404(CaveDescription, short_name = cavedescription_name)
|
cave_description = get_object_or_404(CaveDescription, short_name = cavedescription_name)
|
||||||
return render_with_context(request,'cave_description.html', locals())
|
return render(request,'cave_description.html', locals())
|
||||||
|
|
||||||
def get_entrances(request, caveslug):
|
def get_entrances(request, caveslug):
|
||||||
cave = Cave.objects.get(caveslug__slug = caveslug)
|
cave = Cave.objects.get(caveslug__slug = caveslug)
|
||||||
return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
|
return render(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
|
||||||
|
|
||||||
def get_qms(request, caveslug):
|
def get_qms(request, caveslug):
|
||||||
cave = Cave.objects.get(caveslug__slug = caveslug)
|
cave = Cave.objects.get(caveslug__slug = caveslug)
|
||||||
return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
|
return render(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
|
||||||
|
|
||||||
areanames = [
|
areanames = [
|
||||||
#('', 'Location unclear'),
|
#('', 'Location unclear'),
|
||||||
@ -313,7 +312,7 @@ def prospecting(request):
|
|||||||
caves = list(a.cave_set.all())
|
caves = list(a.cave_set.all())
|
||||||
caves.sort(caveCmp)
|
caves.sort(caveCmp)
|
||||||
areas.append((name, a, caves))
|
areas.append((name, a, caves))
|
||||||
return render_with_context(request, 'prospecting.html', {"areas": areas})
|
return render(request, 'prospecting.html', {"areas": areas})
|
||||||
|
|
||||||
# Parameters for big map and zoomed subarea maps:
|
# Parameters for big map and zoomed subarea maps:
|
||||||
# big map first (zoom factor ignored)
|
# big map first (zoom factor ignored)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response, render
|
||||||
from troggle.core.models import Expedition, Person, PersonExpedition, PersonTrip, LogbookEntry, SurvexBlock
|
from troggle.core.models import Expedition, Person, PersonExpedition, PersonTrip, LogbookEntry, SurvexBlock
|
||||||
import troggle.core.models as models
|
import troggle.core.models as models
|
||||||
import troggle.settings as settings
|
import troggle.settings as settings
|
||||||
@ -9,7 +9,6 @@ from troggle.core.forms import getTripForm#, get_name, PersonForm
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseRedirect, HttpResponse
|
||||||
from django.template import Context, loader
|
from django.template import Context, loader
|
||||||
from utils import render_with_context
|
|
||||||
import os.path
|
import os.path
|
||||||
import troggle.parsers.logbooks as logbookparsers
|
import troggle.parsers.logbooks as logbookparsers
|
||||||
from django.template.defaultfilters import slugify
|
from django.template.defaultfilters import slugify
|
||||||
@ -55,7 +54,7 @@ def personindex(request):
|
|||||||
if person.bisnotable():
|
if person.bisnotable():
|
||||||
notablepersons.append(person)
|
notablepersons.append(person)
|
||||||
|
|
||||||
return render_with_context(request,'personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, })
|
return render(request,'personindex.html', {'persons': persons, 'personss':personss, 'notablepersons':notablepersons, })
|
||||||
|
|
||||||
|
|
||||||
def expedition(request, expeditionname):
|
def expedition(request, expeditionname):
|
||||||
@ -77,7 +76,7 @@ def expedition(request, expeditionname):
|
|||||||
|
|
||||||
if "reload" in request.GET:
|
if "reload" in request.GET:
|
||||||
LoadLogbookForExpedition(this_expedition)
|
LoadLogbookForExpedition(this_expedition)
|
||||||
return render_with_context(request,'expedition.html', {'expedition': this_expedition, 'expeditions':expeditions, 'personexpeditiondays':personexpeditiondays, 'settings':settings, 'dateditems': dateditems })
|
return render(request,'expedition.html', {'expedition': this_expedition, 'expeditions':expeditions, 'personexpeditiondays':personexpeditiondays, 'settings':settings, 'dateditems': dateditems })
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return ('expedition', (expedition.year))
|
return ('expedition', (expedition.year))
|
||||||
@ -102,7 +101,7 @@ def person(request, first_name='', last_name='', ):
|
|||||||
this_person.save()
|
this_person.save()
|
||||||
return HttpResponseRedirect(reverse('profiles_select_profile'))
|
return HttpResponseRedirect(reverse('profiles_select_profile'))
|
||||||
|
|
||||||
return render_with_context(request,'person.html', {'person': this_person, })
|
return render(request,'person.html', {'person': this_person, })
|
||||||
|
|
||||||
|
|
||||||
def GetPersonChronology(personexpedition):
|
def GetPersonChronology(personexpedition):
|
||||||
@ -135,17 +134,17 @@ def personexpedition(request, first_name='', last_name='', year=''):
|
|||||||
this_expedition = Expedition.objects.get(year=year)
|
this_expedition = Expedition.objects.get(year=year)
|
||||||
personexpedition = person.personexpedition_set.get(expedition=this_expedition)
|
personexpedition = person.personexpedition_set.get(expedition=this_expedition)
|
||||||
personchronology = GetPersonChronology(personexpedition)
|
personchronology = GetPersonChronology(personexpedition)
|
||||||
return render_with_context(request,'personexpedition.html', {'personexpedition': personexpedition, 'personchronology':personchronology})
|
return render(request,'personexpedition.html', {'personexpedition': personexpedition, 'personchronology':personchronology})
|
||||||
|
|
||||||
|
|
||||||
def logbookentry(request, date, slug):
|
def logbookentry(request, date, slug):
|
||||||
this_logbookentry = LogbookEntry.objects.filter(date=date, slug=slug)
|
this_logbookentry = LogbookEntry.objects.filter(date=date, slug=slug)
|
||||||
|
|
||||||
if len(this_logbookentry)>1:
|
if len(this_logbookentry)>1:
|
||||||
return render_with_context(request, 'object_list.html',{'object_list':this_logbookentry})
|
return render(request, 'object_list.html',{'object_list':this_logbookentry})
|
||||||
else:
|
else:
|
||||||
this_logbookentry=this_logbookentry[0]
|
this_logbookentry=this_logbookentry[0]
|
||||||
return render_with_context(request, 'logbookentry.html', {'logbookentry': this_logbookentry})
|
return render(request, 'logbookentry.html', {'logbookentry': this_logbookentry})
|
||||||
|
|
||||||
|
|
||||||
def logbookSearch(request, extra):
|
def logbookSearch(request, extra):
|
||||||
@ -156,14 +155,14 @@ def logbookSearch(request, extra):
|
|||||||
entry_query = search.get_query(query_string, ['text','title',])
|
entry_query = search.get_query(query_string, ['text','title',])
|
||||||
found_entries = LogbookEntry.objects.filter(entry_query)
|
found_entries = LogbookEntry.objects.filter(entry_query)
|
||||||
|
|
||||||
return render_with_context(request,'logbooksearch.html',
|
return render(request,'logbooksearch.html',
|
||||||
{ 'query_string': query_string, 'found_entries': found_entries, })
|
{ 'query_string': query_string, 'found_entries': found_entries, })
|
||||||
#context_instance=RequestContext(request))
|
#context_instance=RequestContext(request))
|
||||||
|
|
||||||
def personForm(request,pk):
|
def personForm(request,pk):
|
||||||
person=Person.objects.get(pk=pk)
|
person=Person.objects.get(pk=pk)
|
||||||
form=PersonForm(instance=person)
|
form=PersonForm(instance=person)
|
||||||
return render_with_context(request,'personform.html', {'form':form,})
|
return render(request,'personform.html', {'form':form,})
|
||||||
|
|
||||||
|
|
||||||
def experimental(request):
|
def experimental(request):
|
||||||
@ -180,7 +179,7 @@ def experimental(request):
|
|||||||
|
|
||||||
survexlegs = models.SurvexLeg.objects.all()
|
survexlegs = models.SurvexLeg.objects.all()
|
||||||
totalsurvexlength = sum([survexleg.tape for survexleg in survexlegs])
|
totalsurvexlength = sum([survexleg.tape for survexleg in survexlegs])
|
||||||
return render_with_context(request, 'experimental.html', { "nsurvexlegs":len(survexlegs), "totalsurvexlength":totalsurvexlength, "legsbyexpo":legsbyexpo })
|
return render(request, 'experimental.html', { "nsurvexlegs":len(survexlegs), "totalsurvexlength":totalsurvexlength, "legsbyexpo":legsbyexpo })
|
||||||
|
|
||||||
@login_required_if_public
|
@login_required_if_public
|
||||||
def newLogbookEntry(request, expeditionyear, pdate = None, pslug = None):
|
def newLogbookEntry(request, expeditionyear, pdate = None, pslug = None):
|
||||||
@ -239,7 +238,7 @@ def newLogbookEntry(request, expeditionyear, pdate = None, pslug = None):
|
|||||||
tripForm = TripForm() # An unbound form
|
tripForm = TripForm() # An unbound form
|
||||||
personTripFormSet = PersonTripFormSet()
|
personTripFormSet = PersonTripFormSet()
|
||||||
|
|
||||||
return render_with_context(request, 'newlogbookentry.html', {
|
return render(request, 'newlogbookentry.html', {
|
||||||
'tripForm': tripForm,
|
'tripForm': tripForm,
|
||||||
'personTripFormSet': personTripFormSet,
|
'personTripFormSet': personTripFormSet,
|
||||||
|
|
||||||
@ -261,8 +260,8 @@ def delLogbookEntry(lbe):
|
|||||||
|
|
||||||
def get_people(request, expeditionslug):
|
def get_people(request, expeditionslug):
|
||||||
exp = Expedition.objects.get(year = expeditionslug)
|
exp = Expedition.objects.get(year = expeditionslug)
|
||||||
return render_with_context(request,'options.html', {"items": [(pe.slug, pe.name) for pe in exp.personexpedition_set.all()]})
|
return render(request,'options.html', {"items": [(pe.slug, pe.name) for pe in exp.personexpedition_set.all()]})
|
||||||
|
|
||||||
def get_logbook_entries(request, expeditionslug):
|
def get_logbook_entries(request, expeditionslug):
|
||||||
exp = Expedition.objects.get(year = expeditionslug)
|
exp = Expedition.objects.get(year = expeditionslug)
|
||||||
return render_with_context(request,'options.html', {"items": [(le.slug, "%s - %s" % (le.date, le.title)) for le in exp.logbookentry_set.all()]})
|
return render(request,'options.html', {"items": [(le.slug, "%s - %s" % (le.date, le.title)) for le in exp.logbookentry_set.all()]})
|
||||||
|
@ -4,11 +4,11 @@ from django.conf import settings
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.template import loader, Context
|
from django.template import loader, Context
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
from django.shortcuts import render
|
||||||
import databaseReset
|
import databaseReset
|
||||||
import re
|
import re
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from utils import render_with_context
|
|
||||||
from troggle.core.models import *
|
from troggle.core.models import *
|
||||||
from troggle.helper import login_required_if_public
|
from troggle.helper import login_required_if_public
|
||||||
|
|
||||||
@ -21,18 +21,18 @@ def stats(request):
|
|||||||
statsDict['caveCount'] = int(Cave.objects.count())
|
statsDict['caveCount'] = int(Cave.objects.count())
|
||||||
statsDict['personCount'] = int(Person.objects.count())
|
statsDict['personCount'] = int(Person.objects.count())
|
||||||
statsDict['logbookEntryCount'] = int(LogbookEntry.objects.count())
|
statsDict['logbookEntryCount'] = int(LogbookEntry.objects.count())
|
||||||
return render_with_context(request,'statistics.html', statsDict)
|
return render(request,'statistics.html', statsDict)
|
||||||
|
|
||||||
def frontpage(request):
|
def frontpage(request):
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
return render_with_context(request,'tasks.html')
|
return render(request,'tasks.html')
|
||||||
|
|
||||||
expeditions = Expedition.objects.order_by("-year")
|
expeditions = Expedition.objects.order_by("-year")
|
||||||
logbookentry = LogbookEntry
|
logbookentry = LogbookEntry
|
||||||
cave = Cave
|
cave = Cave
|
||||||
photo = DPhoto
|
photo = DPhoto
|
||||||
from django.contrib.admin.templatetags import log
|
from django.contrib.admin.templatetags import log
|
||||||
return render_with_context(request,'frontpage.html', locals())
|
return render(request,'frontpage.html', locals())
|
||||||
|
|
||||||
def todo(request):
|
def todo(request):
|
||||||
message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
|
message = "no test message" #reverse('personn', kwargs={"name":"hkjhjh"})
|
||||||
@ -45,7 +45,7 @@ def todo(request):
|
|||||||
|
|
||||||
expeditions = Expedition.objects.order_by("-year")
|
expeditions = Expedition.objects.order_by("-year")
|
||||||
totallogbookentries = LogbookEntry.objects.count()
|
totallogbookentries = LogbookEntry.objects.count()
|
||||||
return render_with_context(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message})
|
return render(request,'index.html', {'expeditions':expeditions, 'all':'all', 'totallogbookentries':totallogbookentries, "message":message})
|
||||||
|
|
||||||
|
|
||||||
def controlPanel(request):
|
def controlPanel(request):
|
||||||
@ -59,27 +59,27 @@ def controlPanel(request):
|
|||||||
databaseReset.make_dirs()
|
databaseReset.make_dirs()
|
||||||
for item in importlist:
|
for item in importlist:
|
||||||
if item in request.POST:
|
if item in request.POST:
|
||||||
print "running"+ " databaseReset."+item+"()"
|
print("running"+ " databaseReset."+item+"()")
|
||||||
exec "databaseReset."+item+"()"
|
exec("databaseReset."+item+"()")
|
||||||
jobs_completed.append(item)
|
jobs_completed.append(item)
|
||||||
else:
|
else:
|
||||||
if request.user.is_authenticated(): #The user is logged in, but is not a superuser.
|
if request.user.is_authenticated(): #The user is logged in, but is not a superuser.
|
||||||
return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'error':'You must be a superuser to use that feature.'})
|
return render(request,'controlPanel.html', {'caves':Cave.objects.all(),'error':'You must be a superuser to use that feature.'})
|
||||||
else:
|
else:
|
||||||
return HttpResponseRedirect(reverse('auth_login'))
|
return HttpResponseRedirect(reverse('auth_login'))
|
||||||
|
|
||||||
return render_with_context(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed})
|
return render(request,'controlPanel.html', {'caves':Cave.objects.all(),'expeditions':Expedition.objects.all(),'jobs_completed':jobs_completed})
|
||||||
|
|
||||||
def downloadCavetab(request):
|
def downloadCavetab(request):
|
||||||
from export import tocavetab
|
from export import tocavetab
|
||||||
response = HttpResponse(mimetype='text/csv')
|
response = HttpResponse(content_type='text/csv')
|
||||||
response['Content-Disposition'] = 'attachment; filename=CAVETAB2.CSV'
|
response['Content-Disposition'] = 'attachment; filename=CAVETAB2.CSV'
|
||||||
tocavetab.writeCaveTab(response)
|
tocavetab.writeCaveTab(response)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def downloadSurveys(request):
|
def downloadSurveys(request):
|
||||||
from export import tosurveys
|
from export import tosurveys
|
||||||
response = HttpResponse(mimetype='text/csv')
|
response = HttpResponse(content_type='text/csv')
|
||||||
response['Content-Disposition'] = 'attachment; filename=Surveys.csv'
|
response['Content-Disposition'] = 'attachment; filename=Surveys.csv'
|
||||||
tosurveys.writeCaveTab(response)
|
tosurveys.writeCaveTab(response)
|
||||||
return response
|
return response
|
||||||
@ -94,6 +94,7 @@ def downloadLogbook(request,year=None,extension=None,queryset=None):
|
|||||||
logbook_entries=queryset
|
logbook_entries=queryset
|
||||||
filename='logbook'
|
filename='logbook'
|
||||||
else:
|
else:
|
||||||
|
response = HttpResponse(content_type='text/plain')
|
||||||
return response(r"Error: Logbook downloader doesn't know what year you want")
|
return response(r"Error: Logbook downloader doesn't know what year you want")
|
||||||
|
|
||||||
if 'year' in request.GET:
|
if 'year' in request.GET:
|
||||||
@ -101,13 +102,11 @@ def downloadLogbook(request,year=None,extension=None,queryset=None):
|
|||||||
if 'extension' in request.GET:
|
if 'extension' in request.GET:
|
||||||
extension=request.GET['extension']
|
extension=request.GET['extension']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if extension =='txt':
|
if extension =='txt':
|
||||||
response = HttpResponse(mimetype='text/plain')
|
response = HttpResponse(content_type='text/plain')
|
||||||
style='2008'
|
style='2008'
|
||||||
elif extension == 'html':
|
elif extension == 'html':
|
||||||
response = HttpResponse(mimetype='text/html')
|
response = HttpResponse(content_type='text/html')
|
||||||
style='2005'
|
style='2005'
|
||||||
|
|
||||||
template='logbook'+style+'style.'+extension
|
template='logbook'+style+'style.'+extension
|
||||||
@ -124,11 +123,11 @@ def downloadQMs(request):
|
|||||||
try:
|
try:
|
||||||
cave=Cave.objects.get(kataster_number=request.GET['cave_id'])
|
cave=Cave.objects.get(kataster_number=request.GET['cave_id'])
|
||||||
except Cave.DoesNotExist:
|
except Cave.DoesNotExist:
|
||||||
cave=Cave.objects.get(name=cave_id)
|
cave=Cave.objects.get(name=request.GET['cave_id'])
|
||||||
|
|
||||||
from export import toqms
|
from export import toqms
|
||||||
|
|
||||||
response = HttpResponse(mimetype='text/csv')
|
response = HttpResponse(content_type='text/csv')
|
||||||
response['Content-Disposition'] = 'attachment; filename=qm.csv'
|
response['Content-Disposition'] = 'attachment; filename=qm.csv'
|
||||||
toqms.writeQmTable(response,cave)
|
toqms.writeQmTable(response,cave)
|
||||||
return response
|
return response
|
||||||
@ -136,7 +135,7 @@ def downloadQMs(request):
|
|||||||
def ajax_test(request):
|
def ajax_test(request):
|
||||||
post_text = request.POST['post_data']
|
post_text = request.POST['post_data']
|
||||||
return HttpResponse("{'response_text': '"+post_text+" recieved.'}",
|
return HttpResponse("{'response_text': '"+post_text+" recieved.'}",
|
||||||
mimetype="application/json")
|
content_type="application/json")
|
||||||
|
|
||||||
def eyecandy(request):
|
def eyecandy(request):
|
||||||
return
|
return
|
||||||
@ -144,9 +143,9 @@ def eyecandy(request):
|
|||||||
def ajax_QM_number(request):
|
def ajax_QM_number(request):
|
||||||
if request.method=='POST':
|
if request.method=='POST':
|
||||||
cave=Cave.objects.get(id=request.POST['cave'])
|
cave=Cave.objects.get(id=request.POST['cave'])
|
||||||
print cave
|
print(cave)
|
||||||
exp=Expedition.objects.get(pk=request.POST['year'])
|
exp=Expedition.objects.get(pk=request.POST['year'])
|
||||||
print exp
|
print(exp)
|
||||||
res=cave.new_QM_number(exp.year)
|
res=cave.new_QM_number(exp.year)
|
||||||
|
|
||||||
return HttpResponse(res)
|
return HttpResponse(res)
|
||||||
@ -167,7 +166,7 @@ def logbook_entry_suggestions(request):
|
|||||||
#unwiki_QMs=re.findall(unwiki_QM_pattern,lbo.text)
|
#unwiki_QMs=re.findall(unwiki_QM_pattern,lbo.text)
|
||||||
unwiki_QMs=[m.groupdict() for m in unwiki_QM_pattern.finditer(lbo.text)]
|
unwiki_QMs=[m.groupdict() for m in unwiki_QM_pattern.finditer(lbo.text)]
|
||||||
|
|
||||||
print unwiki_QMs
|
print(unwiki_QMs)
|
||||||
for qm in unwiki_QMs:
|
for qm in unwiki_QMs:
|
||||||
#try:
|
#try:
|
||||||
if len(qm['year'])==2:
|
if len(qm['year'])==2:
|
||||||
@ -180,7 +179,7 @@ def logbook_entry_suggestions(request):
|
|||||||
try:
|
try:
|
||||||
lbo=LogbookEntry.objects.get(date__year=qm['year'],title__icontains="placeholder for QMs in")
|
lbo=LogbookEntry.objects.get(date__year=qm['year'],title__icontains="placeholder for QMs in")
|
||||||
except:
|
except:
|
||||||
print "failed to get placeholder for year "+str(qm['year'])
|
print("failed to get placeholder for year "+str(qm['year']))
|
||||||
|
|
||||||
temp_QM=QM(found_by=lbo,number=qm['number'],grade=qm['grade'])
|
temp_QM=QM(found_by=lbo,number=qm['number'],grade=qm['grade'])
|
||||||
temp_QM.grade=qm['grade']
|
temp_QM.grade=qm['grade']
|
||||||
@ -188,7 +187,7 @@ def logbook_entry_suggestions(request):
|
|||||||
#except:
|
#except:
|
||||||
#print 'failed'
|
#print 'failed'
|
||||||
|
|
||||||
print unwiki_QMs
|
print(unwiki_QMs)
|
||||||
|
|
||||||
|
|
||||||
#wikilink_QMs=re.findall(wikilink_QM_pattern,lbo.text)
|
#wikilink_QMs=re.findall(wikilink_QM_pattern,lbo.text)
|
||||||
@ -199,10 +198,10 @@ def logbook_entry_suggestions(request):
|
|||||||
#for qm in wikilink_QMs:
|
#for qm in wikilink_QMs:
|
||||||
#Try to look up the QM.
|
#Try to look up the QM.
|
||||||
|
|
||||||
print 'got 208'
|
print('got 208')
|
||||||
any_suggestions=True
|
any_suggestions=True
|
||||||
print 'got 210'
|
print('got 210')
|
||||||
return render_with_context(request,'suggestions.html',
|
return render(request,'suggestions.html',
|
||||||
{
|
{
|
||||||
'unwiki_QMs':unwiki_QMs,
|
'unwiki_QMs':unwiki_QMs,
|
||||||
'any_suggestions':any_suggestions
|
'any_suggestions':any_suggestions
|
||||||
@ -262,7 +261,7 @@ def newFile(request, pslug = None):
|
|||||||
# else:
|
# else:
|
||||||
# fileform = UploadFileForm() # An unbound form
|
# fileform = UploadFileForm() # An unbound form
|
||||||
|
|
||||||
return render_with_context(request, 'editfile.html', {
|
return render(request, 'editfile.html', {
|
||||||
'fileForm': fileform,
|
'fileForm': fileform,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -178,7 +178,7 @@ def svx(request, survex_file):
|
|||||||
|
|
||||||
def svxraw(request, survex_file):
|
def svxraw(request, survex_file):
|
||||||
svx = open(os.path.join(settings.SURVEX_DATA, survex_file+".svx"), "rb")
|
svx = open(os.path.join(settings.SURVEX_DATA, survex_file+".svx"), "rb")
|
||||||
return HttpResponse(svx, mimetype="text")
|
return HttpResponse(svx, content_type="text")
|
||||||
|
|
||||||
|
|
||||||
# The cavern running function
|
# The cavern running function
|
||||||
@ -193,20 +193,20 @@ def threed(request, survex_file):
|
|||||||
process(survex_file)
|
process(survex_file)
|
||||||
try:
|
try:
|
||||||
threed = open(settings.SURVEX_DATA + survex_file + ".3d", "rb")
|
threed = open(settings.SURVEX_DATA + survex_file + ".3d", "rb")
|
||||||
return HttpResponse(threed, mimetype="model/3d")
|
return HttpResponse(threed, content_type="model/3d")
|
||||||
except:
|
except:
|
||||||
log = open(settings.SURVEX_DATA + survex_file + ".log", "rb")
|
log = open(settings.SURVEX_DATA + survex_file + ".log", "rb")
|
||||||
return HttpResponse(log, mimetype="text")
|
return HttpResponse(log, content_type="text")
|
||||||
|
|
||||||
def log(request, survex_file):
|
def log(request, survex_file):
|
||||||
process(survex_file)
|
process(survex_file)
|
||||||
log = open(settings.SURVEX_DATA + survex_file + ".log", "rb")
|
log = open(settings.SURVEX_DATA + survex_file + ".log", "rb")
|
||||||
return HttpResponse(log, mimetype="text")
|
return HttpResponse(log, content_type="text")
|
||||||
|
|
||||||
def err(request, survex_file):
|
def err(request, survex_file):
|
||||||
process(survex_file)
|
process(survex_file)
|
||||||
err = open(settings.SURVEX_DATA + survex_file + ".err", "rb")
|
err = open(settings.SURVEX_DATA + survex_file + ".err", "rb")
|
||||||
return HttpResponse(err, mimetype="text")
|
return HttpResponse(err, content_type="text")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,9 +195,9 @@ if __name__ == "__main__":
|
|||||||
elif "scans" in sys.argv:
|
elif "scans" in sys.argv:
|
||||||
import_surveyscans()
|
import_surveyscans()
|
||||||
elif "caves" in sys.argv:
|
elif "caves" in sys.argv:
|
||||||
reload_db()
|
# reload_db()
|
||||||
make_dirs()
|
# make_dirs()
|
||||||
pageredirects()
|
# pageredirects()
|
||||||
import_caves()
|
import_caves()
|
||||||
elif "people" in sys.argv:
|
elif "people" in sys.argv:
|
||||||
import_people()
|
import_people()
|
||||||
@ -218,14 +218,14 @@ if __name__ == "__main__":
|
|||||||
import_descriptions()
|
import_descriptions()
|
||||||
parse_descriptions()
|
parse_descriptions()
|
||||||
elif "survex" in sys.argv:
|
elif "survex" in sys.argv:
|
||||||
management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
# management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
||||||
import_survex()
|
import_survex()
|
||||||
elif "survexpos" in sys.argv:
|
elif "survexpos" in sys.argv:
|
||||||
management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
# management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
||||||
import parsers.survex
|
import parsers.survex
|
||||||
parsers.survex.LoadPos()
|
parsers.survex.LoadPos()
|
||||||
elif "logbooks" in sys.argv:
|
elif "logbooks" in sys.argv:
|
||||||
management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
# management.call_command('syncdb', interactive=False) # this sets the path so that import settings works in import_survex
|
||||||
import_logbooks()
|
import_logbooks()
|
||||||
elif "autologbooks" in sys.argv:
|
elif "autologbooks" in sys.argv:
|
||||||
import_auto_logbooks()
|
import_auto_logbooks()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import troggle.settings as settings
|
import troggle.settings as settings
|
||||||
from troggle.helper import login_required_if_public
|
from troggle.helper import login_required_if_public
|
||||||
from utils import render_with_context
|
from django.shortcuts import render
|
||||||
|
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, Http404
|
from django.http import HttpResponse, HttpResponseRedirect, Http404
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
@ -47,13 +47,13 @@ def flatpage(request, path):
|
|||||||
o = open(os.path.normpath(settings.EXPOWEB + path + "index.htm"), "rb")
|
o = open(os.path.normpath(settings.EXPOWEB + path + "index.htm"), "rb")
|
||||||
path = path + "index.htm"
|
path = path + "index.htm"
|
||||||
except IOError:
|
except IOError:
|
||||||
return render_with_context(request, 'pagenotfound.html', {'path': path})
|
return render(request, 'pagenotfound.html', {'path': path})
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
filetobeopened = os.path.normpath(settings.EXPOWEB + path)
|
filetobeopened = os.path.normpath(settings.EXPOWEB + path)
|
||||||
o = open(filetobeopened, "rb")
|
o = open(filetobeopened, "rb")
|
||||||
except IOError:
|
except IOError:
|
||||||
return render_with_context(request, 'pagenotfound.html', {'path': path})
|
return render(request, 'pagenotfound.html', {'path': path})
|
||||||
if path.endswith(".htm") or path.endswith(".html"):
|
if path.endswith(".htm") or path.endswith(".html"):
|
||||||
html = o.read()
|
html = o.read()
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ def flatpage(request, path):
|
|||||||
if re.search(r"iso-8859-1", html):
|
if re.search(r"iso-8859-1", html):
|
||||||
body = unicode(body, "iso-8859-1")
|
body = unicode(body, "iso-8859-1")
|
||||||
body.strip
|
body.strip
|
||||||
return render_with_context(request, 'flatpage.html', {'editable': True, 'path': path, 'title': title, 'body': body, 'homepage': (path == "index.htm"), 'has_menu': has_menu})
|
return render(request, 'flatpage.html', {'editable': True, 'path': path, 'title': title, 'body': body, 'homepage': (path == "index.htm"), 'has_menu': has_menu})
|
||||||
else:
|
else:
|
||||||
return HttpResponse(o.read(), content_type=getmimetype(path))
|
return HttpResponse(o.read(), content_type=getmimetype(path))
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ def editflatpage(request, path):
|
|||||||
flatpageForm = FlatPageForm({"html": body, "title": title})
|
flatpageForm = FlatPageForm({"html": body, "title": title})
|
||||||
else:
|
else:
|
||||||
flatpageForm = FlatPageForm()
|
flatpageForm = FlatPageForm()
|
||||||
return render_with_context(request, 'editflatpage.html', {'path': path, 'form': flatpageForm, })
|
return render(request, 'editflatpage.html', {'path': path, 'form': flatpageForm, })
|
||||||
|
|
||||||
class FlatPageForm(forms.Form):
|
class FlatPageForm(forms.Form):
|
||||||
title = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
|
title = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
|
||||||
|
@ -17,19 +17,19 @@ def parseCaveQMs(cave,inputFile):
|
|||||||
try:
|
try:
|
||||||
steinBr=Cave.objects.get(official_name="Steinbrückenhöhle")
|
steinBr=Cave.objects.get(official_name="Steinbrückenhöhle")
|
||||||
except Cave.DoesNotExist:
|
except Cave.DoesNotExist:
|
||||||
print "Steinbruckenhoehle is not in the database. Please run parsers.cavetab first."
|
print("Steinbruckenhoehle is not in the database. Please run parsers.cavetab first.")
|
||||||
return
|
return
|
||||||
elif cave=='hauch':
|
elif cave=='hauch':
|
||||||
try:
|
try:
|
||||||
hauchHl=Cave.objects.get(official_name="Hauchhöhle")
|
hauchHl=Cave.objects.get(official_name="Hauchhöhle")
|
||||||
except Cave.DoesNotExist:
|
except Cave.DoesNotExist:
|
||||||
print "Hauchhoele is not in the database. Please run parsers.cavetab first."
|
print("Hauchhoele is not in the database. Please run parsers.cavetab first.")
|
||||||
return
|
return
|
||||||
elif cave =='kh':
|
elif cave =='kh':
|
||||||
try:
|
try:
|
||||||
kh=Cave.objects.get(official_name="Kaninchenhöhle")
|
kh=Cave.objects.get(official_name="Kaninchenhöhle")
|
||||||
except Cave.DoesNotExist:
|
except Cave.DoesNotExist:
|
||||||
print "KH is not in the database. Please run parsers.cavetab first."
|
print("KH is not in the database. Please run parsers.cavetab first.")
|
||||||
parse_KH_QMs(kh, inputFile=inputFile)
|
parse_KH_QMs(kh, inputFile=inputFile)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ def parseCaveQMs(cave,inputFile):
|
|||||||
elif cave=='hauch':
|
elif cave=='hauch':
|
||||||
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=year, title="placeholder for QMs in 234", text="QMs temporarily attached to this should be re-attached to their actual trips", defaults={"date": date(year, 1, 1),"cave":hauchHl})
|
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=year, title="placeholder for QMs in 234", text="QMs temporarily attached to this should be re-attached to their actual trips", defaults={"date": date(year, 1, 1),"cave":hauchHl})
|
||||||
if hadToCreate:
|
if hadToCreate:
|
||||||
print cave+" placeholder logbook entry for " + str(year) + " added to database"
|
print(cave + " placeholder logbook entry for " + str(year) + " added to database")
|
||||||
QMnum=re.match(r".*?-\d*?-X?(?P<numb>\d*)",line[0]).group("numb")
|
QMnum=re.match(r".*?-\d*?-X?(?P<numb>\d*)",line[0]).group("numb")
|
||||||
newQM = QM()
|
newQM = QM()
|
||||||
newQM.found_by=placeholder
|
newQM.found_by=placeholder
|
||||||
@ -71,19 +71,18 @@ def parseCaveQMs(cave,inputFile):
|
|||||||
if preexistingQM.new_since_parsing==False: #if the pre-existing QM has not been modified, overwrite it
|
if preexistingQM.new_since_parsing==False: #if the pre-existing QM has not been modified, overwrite it
|
||||||
preexistingQM.delete()
|
preexistingQM.delete()
|
||||||
newQM.save()
|
newQM.save()
|
||||||
print "overwriting " + str(preexistingQM) +"\r",
|
print("overwriting " + str(preexistingQM) +"\r")
|
||||||
|
|
||||||
else: # otherwise, print that it was ignored
|
else: # otherwise, print that it was ignored
|
||||||
print "preserving "+ str(preexistingQM) + ", which was edited in admin \r",
|
print("preserving " + str(preexistingQM) + ", which was edited in admin \r")
|
||||||
|
|
||||||
except QM.DoesNotExist: #if there is no pre-existing QM, save the new one
|
except QM.DoesNotExist: #if there is no pre-existing QM, save the new one
|
||||||
newQM.save()
|
newQM.save()
|
||||||
print "QM "+str(newQM) + ' added to database\r',
|
print("QM "+str(newQM) + ' added to database\r')
|
||||||
|
|
||||||
except KeyError: #check on this one
|
except KeyError: #check on this one
|
||||||
continue
|
continue
|
||||||
except IndexError:
|
except IndexError:
|
||||||
print "Index error in " + str(line)
|
print("Index error in " + str(line))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def parse_KH_QMs(kh, inputFile):
|
def parse_KH_QMs(kh, inputFile):
|
||||||
@ -104,7 +103,7 @@ def parse_KH_QMs(kh, inputFile):
|
|||||||
}
|
}
|
||||||
nonLookupArgs={
|
nonLookupArgs={
|
||||||
'grade':res['grade'],
|
'grade':res['grade'],
|
||||||
'nearest_station':res['nearest_station'],
|
'nearest_station_name':res['nearest_station'],
|
||||||
'location_description':res['description']
|
'location_description':res['description']
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,3 +114,4 @@ parseCaveQMs(cave='stein',inputFile=r"1623/204/qm.csv")
|
|||||||
parseCaveQMs(cave='hauch',inputFile=r"1623/234/qm.csv")
|
parseCaveQMs(cave='hauch',inputFile=r"1623/234/qm.csv")
|
||||||
parseCaveQMs(cave='kh', inputFile="1623/161/qmtodo.htm")
|
parseCaveQMs(cave='kh', inputFile="1623/161/qmtodo.htm")
|
||||||
#parseCaveQMs(cave='balkonhoehle',inputFile=r"1623/264/qm.csv")
|
#parseCaveQMs(cave='balkonhoehle',inputFile=r"1623/264/qm.csv")
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ def GetTripPersons(trippeople, expedition, logtime_underground):
|
|||||||
author = res[-1][0]
|
author = res[-1][0]
|
||||||
return res, author
|
return res, author
|
||||||
|
|
||||||
def GetTripCave(place): #need to be fuzzier about matching here. Already a very slow function...
|
def GetTripCave(place): #need to be fuzzier about matching here. Already a very slow function...
|
||||||
# print "Getting cave for " , place
|
# print "Getting cave for " , place
|
||||||
try:
|
try:
|
||||||
katastNumRes=[]
|
katastNumRes=[]
|
||||||
@ -74,15 +74,15 @@ def GetTripCave(place): #need to be fuzzier about matching h
|
|||||||
|
|
||||||
|
|
||||||
noncaveplaces = [ "Journey", "Loser Plateau" ]
|
noncaveplaces = [ "Journey", "Loser Plateau" ]
|
||||||
def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_underground):
|
def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_underground, entry_type="wiki"):
|
||||||
""" saves a logbook entry and related persontrips """
|
""" saves a logbook entry and related persontrips """
|
||||||
trippersons, author = GetTripPersons(trippeople, expedition, logtime_underground)
|
trippersons, author = GetTripPersons(trippeople, expedition, logtime_underground)
|
||||||
if not author:
|
if not author:
|
||||||
print(" - skipping logentry" + title + " no author for entry")
|
print(" - Skipping logentry: " + title + " no author for entry")
|
||||||
return
|
return
|
||||||
|
|
||||||
# tripCave = GetTripCave(place)
|
#tripCave = GetTripCave(place)
|
||||||
#
|
|
||||||
lplace = place.lower()
|
lplace = place.lower()
|
||||||
if lplace not in noncaveplaces:
|
if lplace not in noncaveplaces:
|
||||||
cave=GetCaveLookup().get(lplace)
|
cave=GetCaveLookup().get(lplace)
|
||||||
@ -90,7 +90,7 @@ def EnterLogIntoDbase(date, place, title, text, trippeople, expedition, logtime_
|
|||||||
#Check for an existing copy of the current entry, and save
|
#Check for an existing copy of the current entry, and save
|
||||||
expeditionday = expedition.get_expedition_day(date)
|
expeditionday = expedition.get_expedition_day(date)
|
||||||
lookupAttribs={'date':date, 'title':title}
|
lookupAttribs={'date':date, 'title':title}
|
||||||
nonLookupAttribs={'place':place, 'text':text, 'expedition':expedition, 'cave':cave, 'slug':slugify(title)[:50]}
|
nonLookupAttribs={'place':place, 'text':text, 'expedition':expedition, 'cave':cave, 'slug':slugify(title)[:50], 'entry_type':entry_type}
|
||||||
lbo, created=save_carefully(models.LogbookEntry, lookupAttribs, nonLookupAttribs)
|
lbo, created=save_carefully(models.LogbookEntry, lookupAttribs, nonLookupAttribs)
|
||||||
|
|
||||||
for tripperson, time_underground in trippersons:
|
for tripperson, time_underground in trippersons:
|
||||||
@ -115,7 +115,7 @@ def ParseDate(tripdate, year):
|
|||||||
assert False, tripdate
|
assert False, tripdate
|
||||||
return datetime.date(year, month, day)
|
return datetime.date(year, month, day)
|
||||||
|
|
||||||
# 2007, 2008, 2006
|
# 2006, 2008 - 2010
|
||||||
def Parselogwikitxt(year, expedition, txt):
|
def Parselogwikitxt(year, expedition, txt):
|
||||||
trippara = re.findall(r"===(.*?)===([\s\S]*?)(?====)", txt)
|
trippara = re.findall(r"===(.*?)===([\s\S]*?)(?====)", txt)
|
||||||
for triphead, triptext in trippara:
|
for triphead, triptext in trippara:
|
||||||
@ -140,9 +140,9 @@ def Parselogwikitxt(year, expedition, txt):
|
|||||||
#print "\n", tripcave, "--- ppp", trippeople, len(triptext)
|
#print "\n", tripcave, "--- ppp", trippeople, len(triptext)
|
||||||
EnterLogIntoDbase(date = ldate, place = tripcave, title = tripplace, text = triptext, trippeople=trippeople, expedition=expedition, logtime_underground=0)
|
EnterLogIntoDbase(date = ldate, place = tripcave, title = tripplace, text = triptext, trippeople=trippeople, expedition=expedition, logtime_underground=0)
|
||||||
|
|
||||||
# 2002, 2004, 2005
|
# 2002, 2004, 2005, 2007, 2011 - 2018
|
||||||
def Parseloghtmltxt(year, expedition, txt):
|
def Parseloghtmltxt(year, expedition, txt):
|
||||||
print(" - Using log html parser")
|
#print(" - Starting log html parser")
|
||||||
tripparas = re.findall(r"<hr\s*/>([\s\S]*?)(?=<hr)", txt)
|
tripparas = re.findall(r"<hr\s*/>([\s\S]*?)(?=<hr)", txt)
|
||||||
logbook_entry_count = 0
|
logbook_entry_count = 0
|
||||||
for trippara in tripparas:
|
for trippara in tripparas:
|
||||||
@ -163,7 +163,6 @@ def Parseloghtmltxt(year, expedition, txt):
|
|||||||
print("can't parse: ", trippara) # this is 2007 which needs editing
|
print("can't parse: ", trippara) # this is 2007 which needs editing
|
||||||
#assert s, trippara
|
#assert s, trippara
|
||||||
continue
|
continue
|
||||||
|
|
||||||
tripid, tripid1, tripdate, trippeople, triptitle, triptext, tu = s.groups()
|
tripid, tripid1, tripdate, trippeople, triptitle, triptext, tu = s.groups()
|
||||||
ldate = ParseDate(tripdate.strip(), year)
|
ldate = ParseDate(tripdate.strip(), year)
|
||||||
#assert tripid[:-1] == "t" + tripdate, (tripid, tripdate)
|
#assert tripid[:-1] == "t" + tripdate, (tripid, tripdate)
|
||||||
@ -174,16 +173,18 @@ def Parseloghtmltxt(year, expedition, txt):
|
|||||||
tripcave = triptitles[0]
|
tripcave = triptitles[0]
|
||||||
else:
|
else:
|
||||||
tripcave = "UNKNOWN"
|
tripcave = "UNKNOWN"
|
||||||
#print "\n", tripcave, "--- ppp", trippeople, len(triptext)
|
#print("\n", tripcave, "--- ppp", trippeople, len(triptext))
|
||||||
ltriptext = re.sub(r"</p>", "", triptext)
|
ltriptext = re.sub(r"</p>", "", triptext)
|
||||||
ltriptext = re.sub(r"\s*?\n\s*", " ", ltriptext)
|
ltriptext = re.sub(r"\s*?\n\s*", " ", ltriptext)
|
||||||
ltriptext = re.sub(r"<p>", "\n\n", ltriptext).strip()
|
ltriptext = re.sub(r"<p>", "\n\n", ltriptext).strip()
|
||||||
EnterLogIntoDbase(date = ldate, place = tripcave, title = triptitle, text = ltriptext, trippeople=trippeople, expedition=expedition, logtime_underground=0)
|
EnterLogIntoDbase(date = ldate, place = tripcave, title = triptitle, text = ltriptext,
|
||||||
|
trippeople=trippeople, expedition=expedition, logtime_underground=0,
|
||||||
|
entry_type="html")
|
||||||
if logbook_entry_count == 0:
|
if logbook_entry_count == 0:
|
||||||
print(" - No trip entrys found in logbook, check the syntax matches htmltxt format")
|
print(" - No trip entrys found in logbook, check the syntax matches htmltxt format")
|
||||||
|
|
||||||
|
|
||||||
# main parser for pre-2001. simpler because the data has been hacked so much to fit it
|
# main parser for 1991 - 2001. simpler because the data has been hacked so much to fit it
|
||||||
def Parseloghtml01(year, expedition, txt):
|
def Parseloghtml01(year, expedition, txt):
|
||||||
tripparas = re.findall(r"<hr[\s/]*>([\s\S]*?)(?=<hr)", txt)
|
tripparas = re.findall(r"<hr[\s/]*>([\s\S]*?)(?=<hr)", txt)
|
||||||
for trippara in tripparas:
|
for trippara in tripparas:
|
||||||
@ -227,9 +228,11 @@ def Parseloghtml01(year, expedition, txt):
|
|||||||
|
|
||||||
#print ldate, trippeople.strip()
|
#print ldate, trippeople.strip()
|
||||||
# could includ the tripid (url link for cross referencing)
|
# could includ the tripid (url link for cross referencing)
|
||||||
EnterLogIntoDbase(date=ldate, place=tripcave, title=triptitle, text=ltriptext, trippeople=trippeople, expedition=expedition, logtime_underground=0)
|
EnterLogIntoDbase(date=ldate, place=tripcave, title=triptitle, text=ltriptext,
|
||||||
|
trippeople=trippeople, expedition=expedition, logtime_underground=0,
|
||||||
|
entry_type="html")
|
||||||
|
|
||||||
|
# parser for 2003
|
||||||
def Parseloghtml03(year, expedition, txt):
|
def Parseloghtml03(year, expedition, txt):
|
||||||
tripparas = re.findall(r"<hr\s*/>([\s\S]*?)(?=<hr)", txt)
|
tripparas = re.findall(r"<hr\s*/>([\s\S]*?)(?=<hr)", txt)
|
||||||
for trippara in tripparas:
|
for trippara in tripparas:
|
||||||
@ -256,7 +259,9 @@ def Parseloghtml03(year, expedition, txt):
|
|||||||
ltriptext = re.sub(r"\s*?\n\s*", " ", ltriptext)
|
ltriptext = re.sub(r"\s*?\n\s*", " ", ltriptext)
|
||||||
ltriptext = re.sub(r"<p>", "\n\n", ltriptext).strip()
|
ltriptext = re.sub(r"<p>", "\n\n", ltriptext).strip()
|
||||||
ltriptext = re.sub(r"[^\s0-9a-zA-Z\-.,:;'!&()\[\]<>?=+*%]", "_NONASCII_", ltriptext)
|
ltriptext = re.sub(r"[^\s0-9a-zA-Z\-.,:;'!&()\[\]<>?=+*%]", "_NONASCII_", ltriptext)
|
||||||
EnterLogIntoDbase(date = ldate, place = tripcave, title = triptitle, text = ltriptext, trippeople=trippeople, expedition=expedition, logtime_underground=0)
|
EnterLogIntoDbase(date = ldate, place = tripcave, title = triptitle,
|
||||||
|
text = ltriptext, trippeople=trippeople, expedition=expedition,
|
||||||
|
logtime_underground=0, entry_type="html")
|
||||||
|
|
||||||
|
|
||||||
def SetDatesFromLogbookEntries(expedition):
|
def SetDatesFromLogbookEntries(expedition):
|
||||||
@ -282,7 +287,6 @@ def LoadLogbookForExpedition(expedition):
|
|||||||
""" Parses all logbook entries for one expedition """
|
""" Parses all logbook entries for one expedition """
|
||||||
|
|
||||||
expowebbase = os.path.join(settings.EXPOWEB, "years")
|
expowebbase = os.path.join(settings.EXPOWEB, "years")
|
||||||
#year = str(expedition.year)
|
|
||||||
yearlinks = settings.LOGBOOK_PARSER_SETTINGS
|
yearlinks = settings.LOGBOOK_PARSER_SETTINGS
|
||||||
|
|
||||||
logbook_parseable = False
|
logbook_parseable = False
|
||||||
@ -294,6 +298,7 @@ def LoadLogbookForExpedition(expedition):
|
|||||||
file_in.close()
|
file_in.close()
|
||||||
parsefunc = year_settings[1]
|
parsefunc = year_settings[1]
|
||||||
logbook_parseable = True
|
logbook_parseable = True
|
||||||
|
print(" - Parsing logbook: " + year_settings[0] + "\n - Using parser: " + year_settings[1])
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
file_in = open(os.path.join(expowebbase, expedition.year, settings.DEFAULT_LOGBOOK_FILE))
|
file_in = open(os.path.join(expowebbase, expedition.year, settings.DEFAULT_LOGBOOK_FILE))
|
||||||
@ -304,7 +309,7 @@ def LoadLogbookForExpedition(expedition):
|
|||||||
parsefunc = settings.DEFAULT_LOGBOOK_PARSER
|
parsefunc = settings.DEFAULT_LOGBOOK_PARSER
|
||||||
except (IOError):
|
except (IOError):
|
||||||
logbook_parseable = False
|
logbook_parseable = False
|
||||||
print("Couldn't open default logbook file and nothing set for expo " + expedition.year)
|
print("Couldn't open default logbook file and nothing in settings for expo " + expedition.year)
|
||||||
|
|
||||||
if logbook_parseable:
|
if logbook_parseable:
|
||||||
parser = globals()[parsefunc]
|
parser = globals()[parsefunc]
|
||||||
|
@ -59,16 +59,13 @@ def LoadPersonsExpos():
|
|||||||
|
|
||||||
save_carefully(models.Expedition, lookupAttribs, nonLookupAttribs)
|
save_carefully(models.Expedition, lookupAttribs, nonLookupAttribs)
|
||||||
|
|
||||||
|
|
||||||
# make persons
|
# make persons
|
||||||
print("Loading personexpeditions")
|
print("Loading personexpeditions")
|
||||||
#expoers2008 = """Edvin Deadman,Kathryn Hopkins,Djuke Veldhuis,Becka Lawson,Julian Todd,Natalie Uomini,Aaron Curtis,Tony Rooke,Ollie Stevens,Frank Tully,Martin Jahnke,Mark Shinwell,Jess Stirrups,Nial Peters,Serena Povia,Olly Madge,Steve Jones,Pete Harley,Eeva Makiranta,Keith Curtis""".split(",")
|
|
||||||
#expomissing = set(expoers2008)
|
|
||||||
|
|
||||||
for personline in personreader:
|
for personline in personreader:
|
||||||
name = personline[header["Name"]]
|
name = personline[header["Name"]]
|
||||||
name = re.sub("<.*?>", "", name)
|
name = re.sub(r"<.*?>", "", name)
|
||||||
mname = re.match("(\w+)(?:\s((?:van |ten )?\w+))?(?:\s\(([^)]*)\))?", name)
|
mname = re.match(r"(\w+)(?:\s((?:van |ten )?\w+))?(?:\s\(([^)]*)\))?", name)
|
||||||
nickname = mname.group(3) or ""
|
nickname = mname.group(3) or ""
|
||||||
|
|
||||||
lookupAttribs={'first_name':mname.group(1), 'last_name':(mname.group(2) or "")}
|
lookupAttribs={'first_name':mname.group(1), 'last_name':(mname.group(2) or "")}
|
||||||
@ -88,6 +85,8 @@ def LoadPersonsExpos():
|
|||||||
|
|
||||||
# this fills in those people for whom 2008 was their first expo
|
# this fills in those people for whom 2008 was their first expo
|
||||||
#print "Loading personexpeditions 2008"
|
#print "Loading personexpeditions 2008"
|
||||||
|
#expoers2008 = """Edvin Deadman,Kathryn Hopkins,Djuke Veldhuis,Becka Lawson,Julian Todd,Natalie Uomini,Aaron Curtis,Tony Rooke,Ollie Stevens,Frank Tully,Martin Jahnke,Mark Shinwell,Jess Stirrups,Nial Peters,Serena Povia,Olly Madge,Steve Jones,Pete Harley,Eeva Makiranta,Keith Curtis""".split(",")
|
||||||
|
#expomissing = set(expoers2008)
|
||||||
#for name in expomissing:
|
#for name in expomissing:
|
||||||
# firstname, lastname = name.split()
|
# firstname, lastname = name.split()
|
||||||
# is_guest = name in ["Eeva Makiranta", "Keith Curtis"]
|
# is_guest = name in ["Eeva Makiranta", "Keith Curtis"]
|
||||||
@ -103,18 +102,6 @@ def LoadPersonsExpos():
|
|||||||
# personexpedition = models.PersonExpedition(person=person, expedition=expedition, nickname="", is_guest=is_guest)
|
# personexpedition = models.PersonExpedition(person=person, expedition=expedition, nickname="", is_guest=is_guest)
|
||||||
# personexpedition.save()
|
# personexpedition.save()
|
||||||
|
|
||||||
#Notability is now a method of person. Makes no sense to store it in the database; it would need to be recalculated every time something changes. - AC 16 Feb 09
|
|
||||||
# could rank according to surveying as well
|
|
||||||
#print "Setting person notability"
|
|
||||||
#for person in models.Person.objects.all():
|
|
||||||
#person.notability = 0.0
|
|
||||||
#for personexpedition in person.personexpedition_set.all():
|
|
||||||
#if not personexpedition.is_guest:
|
|
||||||
#person.notability += 1.0 / (2012 - int(personexpedition.expedition.year))
|
|
||||||
#person.bisnotable = person.notability > 0.3 # I don't know how to filter by this
|
|
||||||
#person.save()
|
|
||||||
|
|
||||||
|
|
||||||
# used in other referencing parser functions
|
# used in other referencing parser functions
|
||||||
# expedition name lookup cached for speed (it's a very big list)
|
# expedition name lookup cached for speed (it's a very big list)
|
||||||
Gpersonexpeditionnamelookup = { }
|
Gpersonexpeditionnamelookup = { }
|
||||||
|
@ -92,7 +92,7 @@ def RecursiveLoad(survexblock, survexfile, fin, textlines):
|
|||||||
teammembers = [ ]
|
teammembers = [ ]
|
||||||
|
|
||||||
# uncomment to print out all files during parsing
|
# uncomment to print out all files during parsing
|
||||||
print("Reading file:", survexblock.survexfile.path)
|
print("Reading file: " + survexblock.survexfile.path)
|
||||||
while True:
|
while True:
|
||||||
svxline = fin.readline().decode("latin1")
|
svxline = fin.readline().decode("latin1")
|
||||||
if not svxline:
|
if not svxline:
|
||||||
|
@ -99,7 +99,7 @@ def parseSurveyScans(expedition, logfile=None):
|
|||||||
#scanList = listdir(expedition.year, surveyFolder)
|
#scanList = listdir(expedition.year, surveyFolder)
|
||||||
scanList=os.listdir(os.path.join(yearPath,surveyFolder))
|
scanList=os.listdir(os.path.join(yearPath,surveyFolder))
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print(surveyFolder + " ignored\r",)
|
print("Folder: " + surveyFolder + " ignored\r")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for scan in scanList:
|
for scan in scanList:
|
||||||
@ -107,7 +107,7 @@ def parseSurveyScans(expedition, logfile=None):
|
|||||||
scanChopped=re.match(r'(?i).*(notes|elev|plan|elevation|extend)(\d*)\.(png|jpg|jpeg)',scan).groups()
|
scanChopped=re.match(r'(?i).*(notes|elev|plan|elevation|extend)(\d*)\.(png|jpg|jpeg)',scan).groups()
|
||||||
scanType,scanNumber,scanFormat=scanChopped
|
scanType,scanNumber,scanFormat=scanChopped
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print(scan + " ignored\r",)
|
print("File: " + scan + " ignored\r")
|
||||||
continue
|
continue
|
||||||
if scanType == 'elev' or scanType == 'extend':
|
if scanType == 'elev' or scanType == 'extend':
|
||||||
scanType = 'elevation'
|
scanType = 'elevation'
|
||||||
|
@ -45,8 +45,8 @@ NOTABLECAVESHREFS = [ "161", "204", "258", "76", "107", "264" ]
|
|||||||
# Examples: "http://foo.com/media/", "/media/".
|
# Examples: "http://foo.com/media/", "/media/".
|
||||||
ADMIN_MEDIA_PREFIX = '/troggle/media-admin/'
|
ADMIN_MEDIA_PREFIX = '/troggle/media-admin/'
|
||||||
PHOTOS_ROOT = os.path.join(EXPOWEB, 'photos')
|
PHOTOS_ROOT = os.path.join(EXPOWEB, 'photos')
|
||||||
CAVEDESCRIPTIONS = os.path.join(EXPOWEB, "noinfo", "cave_data")
|
CAVEDESCRIPTIONS = os.path.join(EXPOWEB, "cave_data")
|
||||||
ENTRANCEDESCRIPTIONS = os.path.join(EXPOWEB, "noinfo", "entrance_data")
|
ENTRANCEDESCRIPTIONS = os.path.join(EXPOWEB, "entrance_data")
|
||||||
|
|
||||||
MEDIA_URL = urlparse.urljoin(URL_ROOT , '/site_media/')
|
MEDIA_URL = urlparse.urljoin(URL_ROOT , '/site_media/')
|
||||||
SURVEYS_URL = urlparse.urljoin(URL_ROOT , '/survey_scans/')
|
SURVEYS_URL = urlparse.urljoin(URL_ROOT , '/survey_scans/')
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<script src="{{ settings.TINY_MCE_MEDIA_URL }}tiny_mce.js" type="text/javascript"></script>
|
<script src="{{ settings.TINY_MCE_MEDIA_URL }}tiny_mce.js" type="text/javascript"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<h1>Edit Cave</h1>
|
||||||
<form action="" method="post">{% csrf_token %}
|
<form action="" method="post">{% csrf_token %}
|
||||||
<table>{{ form }}{{caveAndEntranceFormSet}}</table>
|
<table>{{ form }}{{caveAndEntranceFormSet}}</table>
|
||||||
{{ versionControlForm }}
|
{{ versionControlForm }}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
{% if entry.is_deletion %}
|
{% if entry.is_deletion %}
|
||||||
{{ entry.object_repr }}
|
{{ entry.object_repr }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="admin/{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
|
<a href="admin/{{ entry.get_admin_url }}/">{{ entry.object_repr }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br/>
|
<br/>
|
||||||
{% if entry.content_type %}
|
{% if entry.content_type %}
|
||||||
|
@ -65,9 +65,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="col1">
|
<div id="col1">
|
||||||
<div class="logbookentry">
|
<div class="logbookentry">
|
||||||
<b>{{logbookentry.date}}</b>
|
<b>{{logbookentry.date}}</b>
|
||||||
{{logbookentry.text|wiki_to_html}}</div>
|
{% if logbookentry.entry_type == "html" %}
|
||||||
|
<p>{{logbookentry.text|safe}}</p>
|
||||||
|
{% else %}
|
||||||
|
{{logbookentry.text|wiki_to_html}}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
4
urls.py
4
urls.py
@ -53,7 +53,7 @@ actualurlpatterns = patterns('',
|
|||||||
url(r'^getLogBookEntries/(?P<expeditionslug>.*)', views_logbooks.get_logbook_entries, name = "get_logbook_entries"),
|
url(r'^getLogBookEntries/(?P<expeditionslug>.*)', views_logbooks.get_logbook_entries, name = "get_logbook_entries"),
|
||||||
|
|
||||||
|
|
||||||
url(r'^cave/new/$', edit_cave, name="newcave"),
|
url(r'^cave/new/$', views_caves.edit_cave, name="newcave"),
|
||||||
url(r'^cave/(?P<cave_id>[^/]+)/?$', views_caves.cave, name="cave"),
|
url(r'^cave/(?P<cave_id>[^/]+)/?$', views_caves.cave, name="cave"),
|
||||||
url(r'^caveslug/([^/]+)/?$', views_caves.caveSlug, name="caveSlug"),
|
url(r'^caveslug/([^/]+)/?$', views_caves.caveSlug, name="caveSlug"),
|
||||||
url(r'^cave/entrance/([^/]+)/?$', views_caves.caveEntrance),
|
url(r'^cave/entrance/([^/]+)/?$', views_caves.caveEntrance),
|
||||||
@ -71,7 +71,7 @@ actualurlpatterns = patterns('',
|
|||||||
# url(r'^jgtuploadfile$', view_surveys.jgtuploadfile, name="jgtuploadfile"),
|
# url(r'^jgtuploadfile$', view_surveys.jgtuploadfile, name="jgtuploadfile"),
|
||||||
|
|
||||||
url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
|
url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
|
||||||
url(r'^cave/(?P<slug>[^/]+)/edit/$', edit_cave, name="edit_cave"),
|
url(r'^cave/(?P<slug>[^/]+)/edit/$', views_caves.edit_cave, name="edit_cave"),
|
||||||
#(r'^cavesearch', caveSearch),
|
#(r'^cavesearch', caveSearch),
|
||||||
|
|
||||||
|
|
||||||
|
16
utils.py
16
utils.py
@ -1,4 +1,5 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.shortcuts import render
|
||||||
import random, re, logging
|
import random, re, logging
|
||||||
from troggle.core.models import CaveDescription
|
from troggle.core.models import CaveDescription
|
||||||
|
|
||||||
@ -59,21 +60,6 @@ def save_carefully(objectType, lookupAttribs={}, nonLookupAttribs={}):
|
|||||||
logging.info(str(instance) + " existed in the database unchanged since last parse. It was overwritten by the current script. \n")
|
logging.info(str(instance) + " existed in the database unchanged since last parse. It was overwritten by the current script. \n")
|
||||||
return (instance, created)
|
return (instance, created)
|
||||||
|
|
||||||
def render_with_context(req, *args, **kwargs):
|
|
||||||
"""this is the snippet from http://www.djangosnippets.org/snippets/3/
|
|
||||||
|
|
||||||
Django uses Context, not RequestContext when you call render_to_response.
|
|
||||||
We always want to use RequestContext, so that django adds the context from
|
|
||||||
settings.TEMPLATE_CONTEXT_PROCESSORS. This way we automatically get
|
|
||||||
necessary settings variables passed to each template. So we use a custom
|
|
||||||
method, render_response instead of render_to_response. Hopefully future
|
|
||||||
Django releases will make this unnecessary."""
|
|
||||||
|
|
||||||
from django.shortcuts import render_to_response
|
|
||||||
from django.template import RequestContext
|
|
||||||
kwargs['context_instance'] = RequestContext(req)
|
|
||||||
return render_to_response(*args, **kwargs)
|
|
||||||
|
|
||||||
re_body = re.compile(r"\<body[^>]*\>(.*)\</body\>", re.DOTALL)
|
re_body = re.compile(r"\<body[^>]*\>(.*)\</body\>", re.DOTALL)
|
||||||
re_title = re.compile(r"\<title[^>]*\>(.*)\</title\>", re.DOTALL)
|
re_title = re.compile(r"\<title[^>]*\>(.*)\</title\>", re.DOTALL)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user