summaryrefslogtreecommitdiffstats
path: root/expo
diff options
context:
space:
mode:
Diffstat (limited to 'expo')
-rw-r--r--expo/admin.py26
-rw-r--r--expo/models.py18
-rw-r--r--expo/views_caves.py4
3 files changed, 42 insertions, 6 deletions
diff --git a/expo/admin.py b/expo/admin.py
index 3b727d2..9f804c2 100644
--- a/expo/admin.py
+++ b/expo/admin.py
@@ -4,6 +4,8 @@ from feincms.admin import editor
from django.forms import ModelForm
import django.forms as forms
from expo.forms import LogbookEntryForm
+from django.http import HttpResponse
+from django.core import serializers
#from troggle.reversion.admin import VersionAdmin #django-reversion version control
#overriding admin save so we have the new since parsing field
@@ -73,7 +75,6 @@ class CaveAdmin(TroggleModelAdmin):
class SubcaveAdmin(editor.TreeEditorMixin,TroggleModelAdmin):
pass
-
admin.site.register(Photo)
admin.site.register(Subcave, SubcaveAdmin)
admin.site.register(Cave, CaveAdmin)
@@ -94,6 +95,29 @@ admin.site.register(QM, QMAdmin)
admin.site.register(Survey, SurveyAdmin)
admin.site.register(ScannedImage)
+def export_as_json(modeladmin, request, queryset):
+ response = HttpResponse(mimetype="text/json")
+ response['Content-Disposition'] = 'attachment; filename=troggle_output.xml'
+ serializers.serialize("json", queryset, stream=response)
+ return response
+
+admin.site.add_action(export_as_json)
+
+def export_as_xml(modeladmin, request, queryset):
+ response = HttpResponse(mimetype="text/xml")
+ response['Content-Disposition'] = 'attachment; filename=troggle_output.xml'
+ return response
+
+admin.site.add_action(export_as_xml)
+
+def export_as_python(modeladmin, request, queryset):
+ response = HttpResponse(mimetype="text/python")
+ response['Content-Disposition'] = 'attachment; filename=troggle_output.py'
+ serializers.serialize("json", queryset, stream=response)
+ return response
+
+admin.site.add_action(export_as_python)
+
try:
mptt.register(Subcave, order_insertion_by=['name'])
except mptt.AlreadyRegistered:
diff --git a/expo/models.py b/expo/models.py
index ece0e26..70f8381 100644
--- a/expo/models.py
+++ b/expo/models.py
@@ -466,13 +466,25 @@ class Entrance(TroggleModel):
class Subcave(TroggleModel):
description = models.TextField(blank=True, null=True)
title = models.CharField(max_length=200, )
- cave = models.ForeignKey('Cave', blank=True, null=True, help_text="Only the top-level subcave should be linked to a cave")
+ cave = models.ForeignKey('Cave', blank=True, null=True, help_text="Only the top-level subcave should be linked to a cave!")
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
#adjoining = models.ManyToManyField('Subcave',blank=True, null=True,)
legacy_description_path = models.CharField(max_length=600, blank=True, null=True)
def __unicode__(self):
return self.title
-
+
+ def get_absolute_url(self):
+
+ ancestor_titles='/'.join([subcave.title for subcave in self.get_ancestors()])
+ if ancestor_titles:
+ res = '/'.join((self.get_root().cave.get_absolute_url(), ancestor_titles, self.title))
+
+ else:
+ res = '/'.join((self.get_root().cave.get_absolute_url(), self.title))
+
+ return res
+
+# This was the old way, before we were using django-mptt
# def get_absolute_url(self):
# urlString=self.name
@@ -524,7 +536,7 @@ class QM(TroggleModel):
def get_absolute_url(self):
#return settings.URL_ROOT + '/cave/' + self.found_by.cave.kataster_number + '/' + str(self.found_by.date.year) + '-' + '%02d' %self.number
- return settings.URL_ROOT + reverse('qm',kwargs={'cave_id':self.cave.kataster_number,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade})
+ return settings.URL_ROOT + reverse('qm',kwargs={'cave_id':self.found_by.cave.kataster_number,'year':self.found_by.date.year,'qm_id':self.number,'grade':self.grade})
def get_next_by_id(self):
return QM.objects.get(id=self.id+1)
diff --git a/expo/views_caves.py b/expo/views_caves.py
index 51c9e11..64ec6e2 100644
--- a/expo/views_caves.py
+++ b/expo/views_caves.py
@@ -57,11 +57,11 @@ def subcave(request, cave_id, subcave):
subcaveSeq=re.findall('(?:/)([^/]*)',subcave)
print subcaveSeq
cave=models.Cave.objects.get(kataster_number = cave_id)
- subcave=models.Subcave.objects.get(name=subcaveSeq[0], cave=cave)
+ subcave=models.Subcave.objects.get(title=subcaveSeq[0], cave=cave)
if len(subcaveSeq)>1:
for subcaveUrlSegment in subcaveSeq[1:]:
if subcaveUrlSegment:
- subcave=subcave.children.get(name=subcaveUrlSegment)
+ subcave=subcave.children.get(title=subcaveUrlSegment)
print subcave
return render_response(request,'subcave.html', {'subcave': subcave,'cave':cave})