diff options
author | Martin Green <martin.speleo@gmail.com> | 2011-06-02 19:16:16 +0100 |
---|---|---|
committer | Martin Green <martin.speleo@gmail.com> | 2011-06-02 19:16:16 +0100 |
commit | 50545af223eaee708cc465363247201123707bd3 (patch) | |
tree | 31dc3fd8ab20dba26e0276e7663c9597f1e50c4a /core | |
parent | ede9e4a9bdfe3cfc49f53afa7347850d31f0014d (diff) | |
download | troggle-50545af223eaee708cc465363247201123707bd3.tar.gz troggle-50545af223eaee708cc465363247201123707bd3.tar.bz2 troggle-50545af223eaee708cc465363247201123707bd3.zip |
Added editing of flat pages. Added slugfields to models to refer to them.
Diffstat (limited to 'core')
-rw-r--r-- | core/forms.py | 32 | ||||
-rw-r--r-- | core/models.py | 9 | ||||
-rw-r--r-- | core/views_caves.py | 10 | ||||
-rw-r--r-- | core/views_logbooks.py | 8 | ||||
-rw-r--r-- | core/views_other.py | 77 |
5 files changed, 131 insertions, 5 deletions
diff --git a/core/forms.py b/core/forms.py index 01a9cbe..2a54428 100644 --- a/core/forms.py +++ b/core/forms.py @@ -1,5 +1,5 @@ from django.forms import ModelForm
-from models import Cave, Person, PersonExpedition, LogbookEntry, QM
+from models import Cave, Person, PersonExpedition, LogbookEntry, QM, Expedition
import django.forms as forms
from django.forms.formsets import formset_factory
from django.contrib.admin.widgets import AdminDateWidget
@@ -86,3 +86,33 @@ def get_name(pe): return pe.nickname
else:
return pe.person.first_name
+
+class UploadFileForm(forms.Form):
+ title = forms.CharField(max_length=50)
+ file = forms.FileField()
+ html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))
+ lon_utm = forms.FloatField(required=False)
+ lat_utm = forms.FloatField(required=False)
+ slug = forms.CharField(max_length=50)
+ date = forms.DateField(required=False)
+
+ caves = [cave.slug for cave in Cave.objects.all()]
+ caves.sort()
+ caves = ["-----"] + caves
+ cave = forms.ChoiceField([(c, c) for c in caves], required=False)
+
+ entrance = forms.ChoiceField([("-----", "Please select a cave"), ], required=False)
+ qm = forms.ChoiceField([("-----", "Please select a cave"), ], required=False)
+
+ expeditions = [e.year for e in Expedition.objects.all()]
+ expeditions.sort()
+ expeditions = ["-----"] + expeditions
+ expedition = forms.ChoiceField([(e, e) for e in expeditions], required=False)
+
+ logbookentry = forms.ChoiceField([("-----", "Please select an expedition"), ], required=False)
+
+ person = forms.ChoiceField([("-----", "Please select an expedition"), ], required=False)
+
+ survey_point = forms.CharField()
+
+
diff --git a/core/models.py b/core/models.py index 87f8ea9..f8e7400 100644 --- a/core/models.py +++ b/core/models.py @@ -174,7 +174,7 @@ class Person(TroggleModel): class PersonExpedition(TroggleModel):
expedition = models.ForeignKey(Expedition)
person = models.ForeignKey(Person)
-
+ slugfield = models.SlugField(max_length=50,blank=True,null=True)
is_guest = models.BooleanField(default=False)
COMMITTEE_CHOICES = (
@@ -348,6 +348,7 @@ class CaveAndEntrance(TroggleModel): class Cave(TroggleModel):
# too much here perhaps
+ slug = models.SlugField(max_length=50, unique = True)
official_name = models.CharField(max_length=160)
area = models.ManyToManyField(Area, blank=True, null=True)
kataster_code = models.CharField(max_length=20,blank=True,null=True)
@@ -367,7 +368,7 @@ class Cave(TroggleModel): extent = models.CharField(max_length=100,blank=True,null=True)
survex_file = models.CharField(max_length=100,blank=True,null=True)
description_file = models.CharField(max_length=200,blank=True,null=True)
-
+
#class Meta:
# unique_together = (("area", "kataster_number"), ("area", "unofficial_number"))
# FIXME Kataster Areas and CUCC defined sub areas need seperating
@@ -472,6 +473,7 @@ class SurveyStation(TroggleModel): return unicode(self.name)
class Entrance(TroggleModel):
+ slug = models.SlugField(max_length=50, unique = True)
name = models.CharField(max_length=100, blank=True,null=True)
entrance_description = models.TextField(blank=True,null=True)
explorers = models.TextField(blank=True,null=True)
@@ -573,6 +575,9 @@ class QM(TroggleModel): #"Number","Grade","Area","Description","Page reference","Nearest station","Completion description","Comment"
found_by = models.ForeignKey(LogbookEntry, related_name='QMs_found',blank=True, null=True )
ticked_off_by = models.ForeignKey(LogbookEntry, related_name='QMs_ticked_off',null=True,blank=True)
+ #cave = models.ForeignKey(Cave)
+ #expedition = models.ForeignKey(Expedition)
+
number = models.IntegerField(help_text="this is the sequential number in the year", )
GRADE_CHOICES=(
('A', 'A: Large obvious lead'),
diff --git a/core/views_caves.py b/core/views_caves.py index 82d4b94..e24e6c2 100644 --- a/core/views_caves.py +++ b/core/views_caves.py @@ -78,4 +78,12 @@ def survey(request,year,wallet_number): def cave_description(request, cavedescription_name):
cave_description = get_object_or_404(CaveDescription, short_name = cavedescription_name)
- return render_with_context(request,'cave_description.html', locals())
\ No newline at end of file + return render_with_context(request,'cave_description.html', locals())
+
+def get_entrances(request, caveslug):
+ cave = Cave.objects.get(slug = caveslug)
+ return render_with_context(request,'options.html', {"items": [(e.entrance.slug, e.entrance.slug) for e in cave.entrances()]})
+
+def get_qms(request, caveslug):
+ cave = Cave.objects.get(slug = caveslug)
+ return render_with_context(request,'options.html', {"items": [(e.entrance.slug, e.entrance.slug) for e in cave.entrances()]})
diff --git a/core/views_logbooks.py b/core/views_logbooks.py index f9190c0..4495f03 100644 --- a/core/views_logbooks.py +++ b/core/views_logbooks.py @@ -241,4 +241,12 @@ def delLogbookEntry(lbe): pt.delete()
lbe.delete()
os.remove(lbe.filename)
+
+def get_people(request, 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()]})
+
+def get_logbook_entries(request, 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()]})
diff --git a/core/views_other.py b/core/views_other.py index 3acb87d..d840a30 100644 --- a/core/views_other.py +++ b/core/views_other.py @@ -1,4 +1,5 @@ from troggle.core.models import Cave, Expedition, Person, LogbookEntry, PersonExpedition, PersonTrip, DPhoto, QM
+from troggle.core.forms import UploadFileForm
from django.conf import settings
from django import forms
from django.template import loader, Context
@@ -9,6 +10,7 @@ from django.http import HttpResponse, HttpResponseRedirect from django.core.urlresolvers import reverse
from utils import render_with_context
from core.models import *
+from troggle.helper import login_required_if_public
def showrequest(request):
return HttpResponse(request.GET)
@@ -204,4 +206,77 @@ def logbook_entry_suggestions(request): {
'unwiki_QMs':unwiki_QMs,
'any_suggestions':any_suggestions
- })
\ No newline at end of file + })
+
+@login_required_if_public
+def newFile(request, pslug = None):
+# if pslug:
+# previousfile = LogbookEntry.objects.get(slug = pslug, date = previousdate, expedition = expedition)
+# assert previousfile.filename
+ if request.method == 'POST': # If the form has been submitted...
+ tripForm = TripForm(request.POST) # A form bound to the POST data
+# personTripFormSet = PersonTripFormSet(request.POST)
+# if tripForm.is_valid() and personTripFormSet.is_valid(): # All validation rules pass
+# dateStr = tripForm.cleaned_data["date"].strftime("%Y-%m-%d")
+# directory = os.path.join(settings.EXPOWEB,
+# "years",
+# expedition.year,
+# "autologbook")
+# filename = os.path.join(directory,
+# dateStr + "." + slugify(tripForm.cleaned_data["title"])[:50] + ".html")
+# if not os.path.isdir(directory):
+# os.mkdir(directory)
+# if pslug and pdate:
+# delLogbookEntry(previouslbe)
+# f = open(filename, "w")
+# template = loader.get_template('dataformat/logbookentry.html')
+# context = Context({'trip': tripForm.cleaned_data,
+# 'persons': personTripFormSet.cleaned_data,
+# 'date': dateStr,
+# 'expeditionyear': expeditionyear})
+# f.write(template.render(context))
+# f.close()
+# print logbookparsers.parseAutoLogBookEntry(filename)
+# return HttpResponseRedirect(reverse('expedition', args=[expedition.year])) # Redirect after POST
+ else:
+ if pslug:
+ pass
+# if previouslbe.cave:
+# tripForm = TripForm(initial={"date": previousdate,
+# "title": previouslbe.title,
+# "cave": previouslbe.cave.reference(),
+# "location": None,
+# "caveOrLocation": "cave",
+# "html": previouslbe.text})
+# else:
+# tripForm = TripForm(initial={"date": previousdate,
+# "title": previouslbe.title,
+# "cave": None,
+# "location": previouslbe.place,
+# "caveOrLocation": "location",
+# "html": previouslbe.text})
+# personTripFormSet = PersonTripFormSet(initial=[{"name": get_name(py.personexpedition),
+# "TU": py.time_underground,
+# "author": py.is_logbook_entry_author}
+# for py in previouslbe.persontrip_set.all()])
+ else:
+ fileform = UploadFileForm() # An unbound form
+
+ return render_with_context(request, 'editfile.html', {
+ 'fileForm': fileform,
+
+ })
+
+@login_required_if_public
+def deleteFile(request, expeditionyear, date = None, slug = None):
+ expedition = Expedition.objects.get(year=expeditionyear)
+ previousdate = datetime.date(*[int(x) for x in date.split("-")])
+ previouslbe = LogbookEntry.objects.get(slug = slug, date = previousdate, expedition = expedition)
+ delLogbookEntry(previouslbe)
+ return HttpResponseRedirect(reverse('expedition', args=[expedition.year])) # Redirect after POST
+
+def delFile(f):
+ for pt in lbe.persontrip_set.all():
+ pt.delete()
+ lbe.delete()
+ os.remove(lbe.filename)
|