diff options
Diffstat (limited to 'expo')
-rw-r--r-- | expo/admin.py | 13 | ||||
-rw-r--r-- | expo/forms.py | 2 | ||||
-rw-r--r-- | expo/models.py | 6 | ||||
-rw-r--r-- | expo/templatetags/wiki_markup.py | 33 | ||||
-rw-r--r-- | expo/views_caves.py | 23 | ||||
-rw-r--r-- | expo/views_logbooks.py | 13 | ||||
-rw-r--r-- | expo/views_other.py | 4 |
7 files changed, 79 insertions, 15 deletions
diff --git a/expo/admin.py b/expo/admin.py index 24f6f2e..a1d4fe0 100644 --- a/expo/admin.py +++ b/expo/admin.py @@ -1,5 +1,7 @@ from troggle.expo.models import *
from django.contrib import admin
+from django.forms import ModelForm
+import django.forms as forms
#from troggle.reversion.admin import VersionAdmin #django-reversion version control
class RoleInline(admin.TabularInline):
@@ -16,9 +18,14 @@ class ScannedImageInline(admin.TabularInline): class SurveyAdmin(admin.ModelAdmin):
inlines = (ScannedImageInline,)
+class QMInline(admin.TabularInline):
+ model=QM
+ extra = 4
+
#class LogbookEntryAdmin(VersionAdmin):
class LogbookEntryAdmin(admin.ModelAdmin):
search_fields = ('title','expedition__year')
+ #inlines = (QMInline,) #doesn't work because QM has two foreignkeys to Logbookentry- need workaround
class PersonExpeditionInline(admin.TabularInline):
model = PersonExpedition
@@ -29,15 +36,17 @@ class PersonAdmin(admin.ModelAdmin): inlines = (PersonExpeditionInline,)
class QMAdmin(admin.ModelAdmin):
+ search_fields = ('found_by__cave__kataster_number','number')
def save_model(self, request, obj, form, change):
obj.new_since_parsing=True
obj.save()
-
+
class PersonExpeditionAdmin(admin.ModelAdmin):
search_fields = ('person__first_name','expedition__year')
class CaveAdmin(admin.ModelAdmin):
search_fields = ('official_name','kataster_number','unofficial_number')
+ #inlines = (QMInline,)
extra = 4
@@ -57,7 +66,7 @@ admin.site.register(PersonExpedition,PersonExpeditionAdmin) admin.site.register(Role)
admin.site.register(LogbookEntry, LogbookEntryAdmin)
admin.site.register(PersonTrip)
-admin.site.register(QM)
+admin.site.register(QM, QMAdmin)
admin.site.register(Survey, SurveyAdmin)
admin.site.register(ScannedImage)
diff --git a/expo/forms.py b/expo/forms.py index 91f39f0..882115f 100644 --- a/expo/forms.py +++ b/expo/forms.py @@ -7,4 +7,4 @@ class CaveForm(ModelForm): class PersonForm(ModelForm):
class Meta:
- model = Person
\ No newline at end of file + model = Person
diff --git a/expo/models.py b/expo/models.py index 592b2e8..56fbf01 100644 --- a/expo/models.py +++ b/expo/models.py @@ -19,7 +19,7 @@ class TroggleModel(models.Model): new_since_parsing = models.BooleanField(default=False, editable=False)
def get_admin_url(self):
- return settings.URL_ROOT + "/admin/expo/" + self._meta.object_name + "/" + str(self.pk)
+ return settings.URL_ROOT + "/admin/expo/" + self._meta.object_name.lower() + "/" + str(self.pk)
class Meta:
abstract = True
@@ -214,8 +214,8 @@ class LogbookEntry(TroggleModel): #href = models.CharField(max_length=100)
- logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
- logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
+ #logbookentry_next = models.ForeignKey('LogbookEntry', related_name='pnext', blank=True,null=True)
+ #logbookentry_prev = models.ForeignKey('LogbookEntry', related_name='pprev', blank=True,null=True)
class Meta:
verbose_name_plural = "Logbook Entries"
diff --git a/expo/templatetags/wiki_markup.py b/expo/templatetags/wiki_markup.py index 9e68fef..30c9a08 100644 --- a/expo/templatetags/wiki_markup.py +++ b/expo/templatetags/wiki_markup.py @@ -2,7 +2,8 @@ from django import template from django.utils.html import conditional_escape
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
-import troggle.settings as settings
+from django.conf import settings
+from expo.models import QM
import re
register = template.Library()
@@ -55,7 +56,35 @@ def wiki_to_html_short(value, autoescape=None): value = re.sub("'''([^']+)'''", r"<b>\1</b>", value, re.DOTALL)
value = re.sub("''([^']+)''", r"<i>\1</i>", value, re.DOTALL)
#make cave links
- value = re.sub("\[\[\s*cave:([^\s]+)\s*\s*\]\]", r'<a href="%s/troggle/cave/\1/">\1</a>' % settings.URL_ROOT, value, re.DOTALL)
+ value = re.sub("\[\[\s*cave:([^\s]+)\s*\s*\]\]", r'<a href="%s/cave/\1/">\1</a>' % settings.URL_ROOT, value, re.DOTALL)
+
+
+ #function for replacing wikicode qm links with html qm links
+ def qmrepl(matchobj):
+ if len(matchobj.groups())==4:
+ grade=matchobj.groups()[3]
+ else:
+ grade=''
+ qmdict={'urlroot':settings.URL_ROOT,'cave':matchobj.groups()[0],'year':matchobj.groups()[1],'number':matchobj.groups()[2],'grade':grade}
+ try:
+ qm=QM.objects.get(found_by__cave__kataster_number=qmdict['cave'],found_by__date__year=qmdict['year'], number=qmdict['number'])
+ url=r'<a href=' + str(qm.get_absolute_url()) +'>' + str(qm) + '</a>'
+ except QM.DoesNotExist:
+ url = r'<a class="redtext" href="%(urlroot)s/cave/%(cave)s/%(year)s-%(number)s%(grade)s">%(cave)s:%(year)s-%(number)s%(grade)s</a>' % qmdict
+ return url
+
+ #make qm links
+ value = re.sub("\[\[\s*cave:([^\s]+)\s*\s*\QM:(\d*)-(\d*)([ABCDX]?)\]\]",qmrepl, value, re.DOTALL)
+
+ #qms=qmfinder.search(value)
+ #for qm in qms:
+ #if QM.objects.filter(cave__kataster_number=qm[0], found_by__year=qm[1], number=qm[2]).count >= 1: # If there is at lesat one QM matching this query
+ #replace qm with link in red
+ #else
+ #replace qm with link in blue
+
+ #turn qm links red if nonexistant
+
#Make lists from lines starting with lists of [stars and hashes]
outValue = ""
listdepth = []
diff --git a/expo/views_caves.py b/expo/views_caves.py index 169dbec..68dd3d0 100644 --- a/expo/views_caves.py +++ b/expo/views_caves.py @@ -1,9 +1,12 @@ -from troggle.expo.models import Cave, CaveAndEntrance, Survey, Expedition
+from troggle.expo.models import Cave, CaveAndEntrance, Survey, Expedition, QM
import troggle.expo.models as models
import troggle.settings as settings
-from troggle.expo.forms import CaveForm
+from django.forms.models import formset_factory
import search
+from django.core.urlresolvers import reverse
from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
+from django.http import HttpResponseRedirect
+from django.conf import settings
def getCave(cave_id):
"""Returns a cave object when given a cave name or number. It is used by views including cavehref, ent, and qm."""
@@ -21,11 +24,19 @@ def caveindex(request): def cavehref(request, cave_id='', offical_name=''):
return render_response(request,'cave.html', {'cave': getCave(cave_id),})
-
-def qm(request,cave_id,qm_id,year):
+
+def qm(request,cave_id,qm_id,year,grade=None):
year=int(year)
- qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
- return render_response(request,'qm.html',{'qm':qm,})
+ try:
+ qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year)
+ return render_response(request,'qm.html',locals())
+
+ except QM.DoesNotExist:
+ url= settings.URL_ROOT + r'/admin/expo/qm/add/?'+ r'number=' + qm_id
+ if grade:
+ url += r'&grade=' + grade
+ return HttpResponseRedirect(url)
+
def ent(request, cave_id, ent_letter):
cave = Cave.objects.filter(kataster_number = cave_id)[0]
diff --git a/expo/views_logbooks.py b/expo/views_logbooks.py index fae7491..cfc5d2f 100644 --- a/expo/views_logbooks.py +++ b/expo/views_logbooks.py @@ -71,7 +71,18 @@ def personexpedition(request, first_name='', last_name='', year=''): def logbookentry(request, logbookentry_pk):
logbookentry = LogbookEntry.objects.get(pk = logbookentry_pk)
- return render_response(request, 'logbookentry.html', {'logbookentry': logbookentry, })
+ logsforcave=logbookentry.cave.logbookentry_set.all()
+ biggestQMnumber=0
+ for log in logsforcave:
+ try:
+ biggestQMnumberInLog = logbookentry.QMs_found.order_by('-number')[0].number
+ except IndexError:
+ biggestQMnumberInLog = 0
+ if biggestQMnumberInLog > biggestQMnumber:
+ biggestQMnumber = biggestQMnumberInLog
+ nextQMnumber=biggestQMnumber+1
+ newQMlink=settings.URL_ROOT + r'/admin/expo/qm/add/?' + r'found_by=' + str(logbookentry.pk) +'&number=' + str(nextQMnumber)
+ return render_response(request, 'logbookentry.html', {'logbookentry': logbookentry, 'newQMlink':newQMlink})
def logbookSearch(request, extra):
query_string = ''
diff --git a/expo/views_other.py b/expo/views_other.py index 9852ccc..f83c6e2 100644 --- a/expo/views_other.py +++ b/expo/views_other.py @@ -6,10 +6,14 @@ from troggle.parsers.people import LoadPersonsExpos import re
from troggle.parsers.survex import LoadAllSurvexBlocks
import randSent
+from django.http import HttpResponse
from django.core.urlresolvers import reverse
from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
+def showrequest(request):
+ return HttpResponse(request.GET)
+
def stats(request):
statsDict={}
statsDict['expoCount'] = int(Expedition.objects.count())
|