[svn] - Make control panel downloads (qm.csv for each cave, CAVETAB2.CSV) work.

- Fix problems in QM parsing script
This commit is contained in:
substantialnoninfringinguser 2009-05-17 04:31:23 +01:00
parent 7566faf77b
commit 21c39f70de
8 changed files with 96 additions and 86 deletions

View File

@ -65,10 +65,6 @@ def export_cavetab():
tocavetab.writeCaveTab(outfile) tocavetab.writeCaveTab(outfile)
outfile.close() outfile.close()
def export_qms(): #finish this. need cave chooser
from export import toqms
outfile=file(os.path.join(settings.EXPOWEB, "noinfo", "CAVETAB2.CSV"),'w')
outfile.close()

View File

@ -8,6 +8,7 @@ import randSent
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 troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this. from troggle.alwaysUseRequestContext import render_response # see views_logbooks for explanation on this.
from expo.models import *
def showrequest(request): def showrequest(request):
return HttpResponse(request.GET) return HttpResponse(request.GET)
@ -69,12 +70,32 @@ def controlPanel(request):
else: else:
return HttpResponseRedirect(reverse('auth_login')) return HttpResponseRedirect(reverse('auth_login'))
return render_response(request,'controlPanel.html', ) return render_response(request,'controlPanel.html', {'caves':Cave.objects.all()} )
def downloadCavetab(request): def downloadCavetab(request):
from export import tocavetab from export import tocavetab
response = HttpResponse(mimetype='text/csv') response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=CAVEETAB2.CSV' response['Content-Disposition'] = 'attachment; filename=CAVETAB2.CSV'
tocavetab.writeCaveTab(response) tocavetab.writeCaveTab(response)
return response return response
def downloadSurveys(request):
from export import tosurveys
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=Surveys.csv'
tosurveys.writeCaveTab(response)
return response
def downloadQMs(request):
if request.method=='GET':
try:
cave=Cave.objects.get(kataster_number=request.GET['cave_id'])
except Cave.DoesNotExist:
cave=Cave.objects.get(name=cave_id)
from export import toqms
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=qm.csv'
toqms.writeQmTable(response,cave)
return response

View File

@ -230,6 +230,12 @@ a.redtext:link {
border-bottom-width: thin; border-bottom-width: thin;
border-left-width: thin; border-left-width: thin;
} }
.menuBarItem : hover {
background: "rgb(125, 125, 125)";
}
.behind { .behind {
display: none; display: none;
} }

View File

@ -1,11 +1,11 @@
# -*- coding: UTF-8 -*- # -*- coding: UTF-8 -*-
import csv import csv
import settings from django.conf import settings
from expo.models import QM, LogbookEntry, Cave from expo.models import QM, LogbookEntry, Cave
from datetime import * from datetime import *
from troggle.save_carefully import save_carefully from troggle.save_carefully import save_carefully
import re import re, os
def deleteQMs(): def deleteQMs():
QM.objects.all().delete() QM.objects.all().delete()
@ -23,15 +23,14 @@ def parseCaveQMs(cave,inputFile):
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 "Steinbruckenhoehle 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 "Steinbruckenhoehle is not in the database. Please run parsers.cavetab first." print "KH is not in the database. Please run parsers.cavetab first."
for file in inputFile: parse_KH_QMs(kh, inputFile=inputFile)
parse_KH_QMs(kh, inputFile=file)
return return
qmPath = settings.EXPOWEB+inputFile qmPath = settings.EXPOWEB+inputFile
@ -108,13 +107,10 @@ def parse_KH_QMs(kh, inputFile):
'nearest_station':res['nearest_station'], 'nearest_station':res['nearest_station'],
'location_description':res['description'] 'location_description':res['description']
} }
if
save_carefully(QM,lookupArgs,nonLookupArgs) save_carefully(QM,lookupArgs,nonLookupArgs)
parseCaveQMs(cave='kh', inputFile=r"smkridge/161/qmtodo.htm")
parseCaveQMs(cave='stein',inputFile=r"smkridge/204/qm.csv") parseCaveQMs(cave='stein',inputFile=r"smkridge/204/qm.csv")
parseCaveQMs(cave='hauch',inputFile=r"smkridge/234/qm.csv") parseCaveQMs(cave='hauch',inputFile=r"smkridge/234/qm.csv")
parseCaveQMs(cave='kh', inputFile="smkridge/161/qmtodo.htm")

View File

@ -7,13 +7,13 @@
<script src="{{ settings.MEDIA_URL }}js/jquery.js" type="text/javascript"></script> <script src="{{ settings.MEDIA_URL }}js/jquery.js" type="text/javascript"></script>
<script src="{{ settings.MEDIA_URL }}js/jquery.quicksearch.js" type="text/javascript"></script> <script src="{{ settings.MEDIA_URL }}js/jquery.quicksearch.js" type="text/javascript"></script>
<script src="{{ settings.MEDIA_URL }}js/base.js" type="text/javascript"></script> <script src="{{ settings.MEDIA_URL }}js/base.js" type="text/javascript"></script>
<script> <script language="javascript">
contentHeight(); window.onload = contentHeight;
</script> </script>
{% block head %}{% endblock %} {% block head %}{% endblock %}
</head> </head>
<body onLoad="contentHeight()"> <body>
<div id="header"> <div id="header">
<h1>CUCC Expeditions to Austria: 1976 - 2009</h1> <h1>CUCC Expeditions to Austria: 1976 - 2009</h1>

View File

@ -42,18 +42,56 @@
</form> </form>
</td> </td>
<td> <td>
<form name="export" method="get" action={% url downloadcavetab %}> <form name="export" method="get" action="{% url downloadcavetab %}">
<p>Download a CAVETAB2.CSV file which is dynamically generated by Troggle.</p> <p>Download a CAVETAB2.CSV file which is dynamically generated by Troggle.</p>
<input name="download_cavetab" type="submit" value="Download CAVETAB2.CSV" /> <input name="download_cavetab" type="submit" value="Download CAVETAB2.CSV" />
</form> </form>
</td> </td>
</tr> </tr>
<tr>
<td>
surveys to Surveys.csv
</td>
<td>
<form name="export" method="post" action="">
<p>Overwrite the existing Surveys.csv file with one generated by Troggle.</p>
<input disabled name="export_surveys" type="submit" value="Update {{settings.SURVEYS}}noinfo/Surveys.csv" />
</form>
</td>
<td>
<form name="export" method="get" action={% url downloadsurveys %}>
<p>Download a Surveys.csv file which is dynamically generated by Troggle.</p>
<input disabled name="download_surveys" type="submit" value="Download Surveys.csv" />
</form>
</td>
</tr>
<tr>
<td>qms to qms.csv</td><td> <td>qms to qms.csv</td><td>
<input name="export_cavetab" type="submit" value="Update qms file for" disabled /> <form name="export_qms" method="get" action="downloadqms">
<input name="export_cavetab_view" type="submit" value="Download file" disabled />
<!--This is for choosing caves by area (drilldown).
<select id="qmcaveareachooser" class="searchable" >
</select>
-->
Choose a cave.
<select name="cave_id" id="qmcavechooser">
{% for cave in caves %}
<option value="{{cave.kataster_number}}">{{cave}}
</option>
{% endfor %}
</select>
<input type="submit" value="Download"/>
</form>
</td></tr> </td></tr>
</table> </table>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -11,57 +11,7 @@
blankColor = "rgb(153, 153, 153)" blankColor = "rgb(153, 153, 153)"
highlightedColor = "rgb(125, 125, 125)" highlightedColor = "rgb(125, 125, 125)"
chosenColor = "rgb(255, 255, 255)" chosenColor = "rgb(255, 255, 255)"
mnuItmLst=document.getElementsByClassName("menuBarItem")
function highlight(div){
for (var i = 0, divIter; divIter = mnuItmLst[i]; i++) {
/*loop though all menuitems. blank them except ones that are toggled on*/
if (divIter.style.backgroundColor!=chosenColor){
divIter.style.backgroundColor=blankColor;
}
}
/*highlight the mouseovered div unless it is toggled on*/
if (div.style.backgroundColor!=chosenColor){
div.style.backgroundColor=highlightedColor;
}
}
function unhighlight(div){
/*highlight the mouseovered div unless it is the chosen one*/
if (div.style.backgroundColor!=chosenColor){
div.style.backgroundColor=blankColor;
}
}
function toggle(div){
if (document.getElementById(div.id+"Content").style.display="none"){
document.getElementById(div.id+"Content").style.display="block";
div.style.backgroundColor=chosenColor;
}
else {
document.getElementById(div.id+"Content").style.display="none";
div.style.backgroundColor=blankColor;
}
}
/* function choose(div){
for (var i = 0, divIter; divIter = mnuItmLst[i]; i++) {
document.getElementById(divIter.id+"Content").style.display="none";
}
document.getElementById(div.id+"Content").style.display="block";
for (var i = 0, divIter; divIter = mnuItmLst[i]; i++) {
document.getElementById(divIter.id).style.backgroundColor=blankColor;
}
div.style.backgroundColor=chosenColor;
document.getElementById(progressTableContent).style.display="none";
}*/
function redirectSurvey(){
window.location = "{% url survey %}" + '/' + document.getElementById("expeditionChooser").value + "%23" + document.getElementById("surveyChooser").value;
}
function redirectYear(){
window.location = "{% url survey %}" + '/' + document.getElementById("expeditionChooser").value + "%23";
}
</script> </script>
{% endblock %} {% endblock %}
@ -95,7 +45,7 @@
<div> <div>
<!-- <h4>Click to toggle:</h4>--> <!-- <h4>Click to toggle:</h4>-->
<div id="progressTable" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)"> {% if current_expedition.survey_set.all %}&#10003;{% endif %} <div id="progressTable" class="menuBarItem" > {% if current_expedition.survey_set.all %}&#10003;{% endif %}
survey progress table </div> survey progress table </div>
</div> </div>
@ -120,16 +70,16 @@
</center> </center>
<!-- <h4>Click to toggle:</h4>--> <!-- <h4>Click to toggle:</h4>-->
<div id="surveyWalletNav"> <div id="surveyWalletNav">
<div id="notes" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)"> {% if notes %}&#10003;{% endif %} <div id="notes" class="menuBarItem" > {% if notes %}&#10003;{% endif %}
scanned notes </div> scanned notes </div>
<div id="survexFile" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)"> {% if current_survey.survex_file %}&#10003;{% endif %} <div id="survexFile" class="menuBarItem" > {% if current_survey.survex_file %}&#10003;{% endif %}
survex file </div> survex file </div>
<div id="printedCentreline" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)"> {% if current_survey.centreline_printed_on %}&#10003;{% endif %} <div id="printedCentreline" class="menuBarItem" > {% if current_survey.centreline_printed_on %}&#10003;{% endif %}
printed centreline </div> printed centreline </div>
<div id="scannedPassageSketch" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)"> {% if planSketches %}&#10003;{% endif %} <div id="scannedPassageSketch" class="menuBarItem" > {% if planSketches %}&#10003;{% endif %}
scanned passage sketch </div> scanned passage sketch </div>
<div id="tunnelXMLfile" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)">tunnel xml file</div> <div id="tunnelXMLfile" class="menuBarItem" >tunnel xml file</div>
<div id="mainSketchIntegration" class="menuBarItem" onMouseOver="highlight(this)" onMouseOut="unhighlight(this)" onClick="toggle(this)">add to main sketch</div> <div id="mainSketchIntegration" class="menuBarItem" >add to main sketch</div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
@ -191,7 +141,7 @@
</p> </p>
</div> </div>
{% endfor %} {% endfor %}
<div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned notes page. </a> </div> <div class="figure"> <a href="{{ settings.URL_ROOT }}admin/expo/scannedimage/add/" target="_blank"> <img src="{{ settings.URL_ROOT }}{{ settings.ADMIN_MEDIA_PREFIX }}img/admin/icon_addlink.gif" /> Add a new scanned notes page. </a> </div>
</div> </div>
<br class="clearfloat" /> <br class="clearfloat" />
<div id="survexFileContent" class="behind"> survex file editor, keeping file in original structure <br /> <div id="survexFileContent" class="behind"> survex file editor, keeping file in original structure <br />

View File

@ -38,7 +38,6 @@ urlpatterns = patterns('',
url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent), url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
#(r'^cave/(?P<cave_id>[^/]+)/edit/$', edit_cave), #(r'^cave/(?P<cave_id>[^/]+)/edit/$', edit_cave),
#(r'^cavesearch', caveSearch), #(r'^cavesearch', caveSearch),
url(r'^cave/(?P<cave_id>[^/]+)(?P<subcave>/.*)/?$', subcave, name="subcave"),
url(r'^survex/(.*?)\.index$', views_survex.index, name="survexindex"), url(r'^survex/(.*?)\.index$', views_survex.index, name="survexindex"),
@ -60,7 +59,11 @@ urlpatterns = patterns('',
url(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey, name="survey"), url(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey, name="survey"),
url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"), url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"),
url(r'^cavetab/?$', views_other.downloadCavetab, name="downloadcavetab"), url(r'^CAVETAB2\.CSV/?$', views_other.downloadCavetab, name="downloadcavetab"),
url(r'^Surveys\.csv/?$', views_other.downloadSurveys, name="downloadsurveys"),
url(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', views_other.downloadQMs, name="downloadqms"),
(r'^downloadqms$', views_other.downloadQMs),
url(r'^cave/(?P<cave_id>[^/]+)(?P<subcave>/.*)/?$', subcave, name="subcave"),
(r'^admin/doc/?', include('django.contrib.admindocs.urls')), (r'^admin/doc/?', include('django.contrib.admindocs.urls')),
(r'^admin/(.*)', admin.site.root), (r'^admin/(.*)', admin.site.root),