2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-22 07:11:52 +00:00

[svn] Added QM wiki markup. The format is [[cave:204 QM:2005-04A]] with the grade (A) being optional. The links color red if the QM does not exist, and in that case clicking on them goes to an admin add page with fields prepopulated.

Various other little things, e.g. filled in the footer with links.
Copied from http://cucc@cucc.survex.com/svn/trunk/expoweb/troggle/, rev. 8305 by aaron @ 3/16/2009 8:53 AM
This commit is contained in:
substantialnoninfringinguser 2009-05-13 06:08:04 +01:00
parent 256de6e083
commit 157f11b659
14 changed files with 118 additions and 61 deletions

View File

@ -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)

View File

@ -7,4 +7,4 @@ class CaveForm(ModelForm):
class PersonForm(ModelForm):
class Meta:
model = Person
model = Person

View File

@ -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"

View File

@ -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("&#39;&#39;&#39;([^']+)&#39;&#39;&#39;", r"<b>\1</b>", value, re.DOTALL)
value = re.sub("&#39;&#39;([^']+)&#39;&#39;", 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 = []

View File

@ -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]

View File

@ -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 = ''

View File

@ -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())

View File

@ -55,7 +55,7 @@ div#content
div#footer
{
clear:both;
background-color:black;
background-color:#999;
color:white;
text-align:center;
margin-left:auto;
@ -294,6 +294,17 @@ td {
}
.redtext{
color:#F00;
}
a.redtext:link {
color:#F00;
}
.redtext
.menuBarItem {
font-variant: small-caps;
text-align: right;

View File

@ -33,9 +33,9 @@ def parseCaveQMs(cave,pathToCSV):
year=int(line[0][1:5])
#check if placeholder exists for given year, create it if not
if cave=='stein':
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=year, text="placeholder for QMs in 204", defaults={"date": date(year, 1, 1),"cave":steinBr})
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=year, title="placeholder for QMs in 204", text="QMs temporarily attached to this should be re-attached to their actual trips", defaults={"date": date(year, 1, 1),"cave":steinBr})
elif cave=='hauch':
placeholder, hadToCreate = LogbookEntry.objects.get_or_create(date__year=year, text="placeholder for QMs in 234", 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:
print cave+" placeholder logbook entry for " + str(year) + " added to database"
QMnum=re.match(r".*?-\d*?-X?(?P<numb>\d*)",line[0]).group("numb")

View File

@ -3,16 +3,12 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="{{ settings.MEDIA_URL }}css/main3.css" />
<title>{% block title %}THE TITLE{% endblock %}</title>
<script src="{{ settings.MEDIA_URL }}js/base.js" type="text/javascript"></script>
{% block head %}{% endblock %}
</head>
<body>
<div>
<div class="wrapper">
<div id="expoHeader"> <img id="frontPageBanner" src="{{ settings.MEDIA_URL }}loserBanner.jpg"/>
<div id="expoHeaderText">
<h1>CUCC Expeditions to Austria: 1976 - </h1>
@ -22,46 +18,28 @@
</div>
</div>
<hr/>
<div id="editLink">
{% block loginInfo %}
{% if user.username %}
You are logged in as {{ user.username }}.
| <a href="{{ settings.URL_ROOT }}/accounts/logout">Log out</a>
{% else %}
<a href="{{ settings.URL_ROOT }}/accounts/register">Sign up</a>
| <a href="{{ settings.URL_ROOT }}/accounts/login">Log in</a>
{% endif %}
<div id="editLink"> {% block loginInfo %}
{% if user.username %}
You are logged in as {{ user.username }}.
| <a href="{{ settings.URL_ROOT }}/accounts/logout/">Log out</a> {% else %} <a href="{{ settings.URL_ROOT }}/accounts/register">Sign up</a> | <a href="{{ settings.URL_ROOT }}/accounts/login/">Log in</a> {% endif %}
{% endblock%}
| <a href="{{ settings.URL_ROOT }}">Home </a> |
{% block editLink %}
{% endblock %}
</div>
</div>
{% block editLink %}
{% endblock %} </div>
{% block nav %}
<!-- Use id="nav" for the left side menu -->
{% endblock %}
<div id="content" >
{% block contentheader %}
{% endblock %}
{% block content %}
{% endblock %}
<div id="content" > {% block contentheader %}
{% endblock %}
{% block content %}
REPLACE : The content
{% endblock %}
<br class="clearfloat" /> <!--This is to ensure that the content div expands around floated objects*/-->
{% endblock %} <br class="clearfloat" />
<!--This is to ensure that the content div expands around floated objects*/-->
</div>
</div>
<div id="footer">
{% block footer %}
THE FOOTER
{% endblock %}
<div class="push"></div>
</div>
<div id="footer"> {% block footer %} <a href="http://cucc.survex.com"> CUCC website</a>| <a href="http://cucc.survex.com/expo"> Expedition website </a>| <a href="{% url frontpage %}"> Troggle front page </a>| <a href="{% url caveindex %}"> All caves </a>| <a href="{% url personindex %}"> All cavers </a>| <a href="{% url caveindex %}"> Virtual survey binder </a>| <a href="{% url survey %}"> Expedition statistics </a>| <a href="{% url calendar 2007 %}"> Expedition calendar </a> {% endblock %} </div>
</body>
</html>

View File

@ -56,6 +56,7 @@
</tr>
{% endfor %}
</table>
<a href="{{newQMlink}}">Add QM found on this trip</a>
</div>
<div id="col1">

View File

@ -18,6 +18,7 @@
{% endblock %}
{% block content %}
<h3>Location</h3>
{{qm.location_description}}

View File

@ -9,5 +9,5 @@ registration_complete.html | {{ block.super }}
{% endblock %}
{% block content %}
Thank you for signing up, {{ user.username }}. An email with the activation code has been sent to your inbox. If you have been on the expedition in the past, you already have a profile in the system; <a href={% url profiles_select_profile %}>click here </a> to find it and link it to your account. Otherwise, please <a href={% url profiles_create_profile %}> create yourself a new profile</a>. If you have been on the expedition in the past, this step allows existing expedition data to be linked to your new account.
Thank you for signing up, {{ user.username }}. An email with the activation code has been sent to your inbox. If you have been on the expedition in the past, you already have a profile in the system; <a href={% url profiles_select_profile %}>click here </a> to find it and link it to your account. Otherwise, please <a href={% url profiles_create_profile %}> create yourself a new profile</a>.
{% endblock %}

View File

@ -4,7 +4,8 @@ import troggle.settings as settings
from expo.views import * # flat import
from expo.views_caves import *
from expo.views_survex import *
from expo.models import *
from django.views.generic.create_update import create_object
from django.contrib import admin
admin.autodiscover()
@ -41,7 +42,7 @@ urlpatterns = patterns('',
url(r'^survex/(.*?)\.index$', views_survex.index, name="survexindex"),
url(r'^cave/(?P<cave_id>[^/]+)/?$', views_caves.cavehref),
url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d\d)?$', views_caves.qm),
url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d\d)(?P<grade>[ABCDX]?)?$', views_caves.qm, name="qm"),
(r'^survex/(?P<survex_file>.*)\.svx$', svx),
(r'^survex/(?P<survex_file>.*)\.3d$', threed),
(r'^survex/(?P<survex_file>.*)\.log$', log),
@ -59,7 +60,8 @@ urlpatterns = patterns('',
url(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey, name="survey"),
(r'^admin/doc/?', include('django.contrib.admindocs.urls')),
(r'^admin/(.*)', admin.site.root),
url(r'^admin/', include(admin.site.urls),name="admin"),
(r'^accounts/', include('registration.urls')),
(r'^profiles/', include('profiles.urls')),