mirror of
https://expo.survex.com/repositories/expoweb/.git/
synced 2025-01-18 00:42:38 +00:00
[svn r8163] More work on survey images parser and virtual survey binder. Renamed expedition_year field of Survey model to expedition because this makes more sense.
This commit is contained in:
parent
246bb42545
commit
014f390100
@ -303,8 +303,8 @@ class Photo(models.Model):
|
|||||||
|
|
||||||
scansFileStorage = FileSystemStorage(location=settings.SURVEYS, base_url=settings.SURVEYS_URL)
|
scansFileStorage = FileSystemStorage(location=settings.SURVEYS, base_url=settings.SURVEYS_URL)
|
||||||
def get_scan_path(instance, filename):
|
def get_scan_path(instance, filename):
|
||||||
year=instance.survey.expedition_year.year
|
year=instance.survey.expedition.year
|
||||||
number="%02d" % instance.survey.wallet_number + instance.survey.wallet_letter #using %02d string formatting because convention was 2009#01
|
number="%02d" % instance.survey.wallet_number + str(instance.survey.wallet_letter) #using %02d string formatting because convention was 2009#01
|
||||||
return os.path.join('./',year,year+r'#'+number,instance.contents+str(instance.number_in_wallet)+r'.jpg')
|
return os.path.join('./',year,year+r'#'+number,instance.contents+str(instance.number_in_wallet)+r'.jpg')
|
||||||
|
|
||||||
class ScannedImage(models.Model):
|
class ScannedImage(models.Model):
|
||||||
@ -328,7 +328,7 @@ class ScannedImage(models.Model):
|
|||||||
return get_scan_path(self,'')
|
return get_scan_path(self,'')
|
||||||
|
|
||||||
class Survey(models.Model):
|
class Survey(models.Model):
|
||||||
expedition_year = models.ForeignKey('Expedition')
|
expedition = models.ForeignKey('Expedition')
|
||||||
wallet_number = models.IntegerField(blank=True,null=True)
|
wallet_number = models.IntegerField(blank=True,null=True)
|
||||||
wallet_letter = models.CharField(max_length=1,blank=True,null=True)
|
wallet_letter = models.CharField(max_length=1,blank=True,null=True)
|
||||||
comments = models.TextField(blank=True,null=True)
|
comments = models.TextField(blank=True,null=True)
|
||||||
@ -344,5 +344,13 @@ class Survey(models.Model):
|
|||||||
integrated_into_main_sketch_by = models.ForeignKey('Person' ,related_name='integrated_into_main_sketch_by', blank=True,null=True)
|
integrated_into_main_sketch_by = models.ForeignKey('Person' ,related_name='integrated_into_main_sketch_by', blank=True,null=True)
|
||||||
rendered_image = models.ImageField(upload_to='renderedSurveys',blank=True,null=True)
|
rendered_image = models.ImageField(upload_to='renderedSurveys',blank=True,null=True)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.expedition_year.year+"#"+"%02d" % self.wallet_number
|
return self.expedition.year+"#"+"%02d" % self.wallet_number
|
||||||
|
|
||||||
|
def notes(self):
|
||||||
|
return self.scannedimage_set.filter(contents='notes')
|
||||||
|
|
||||||
|
def plans(self):
|
||||||
|
return self.scannedimage_set.filter(contents='plan')
|
||||||
|
|
||||||
|
def elevations(self):
|
||||||
|
return self.scannedimage_set.filter(contents='elevation')
|
@ -1,5 +1,5 @@
|
|||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response
|
||||||
from troggle.expo.models import Cave, CaveAndEntrance, Survey
|
from troggle.expo.models import Cave, CaveAndEntrance, Survey, Expedition
|
||||||
import troggle.settings as settings
|
import troggle.settings as settings
|
||||||
from troggle.expo.forms import CaveForm
|
from troggle.expo.forms import CaveForm
|
||||||
import search
|
import search
|
||||||
@ -35,14 +35,22 @@ def caveSearch(request):
|
|||||||
|
|
||||||
def surveyindex(request):
|
def surveyindex(request):
|
||||||
surveys=Survey.objects.all()
|
surveys=Survey.objects.all()
|
||||||
return render_to_response('survey.html',{'settings':settings,'surveys':surveys})
|
expeditions=Expedition.objects.all()
|
||||||
|
dictToPass=locals()
|
||||||
|
dictToPass.update({'settings':settings})
|
||||||
|
return render_to_response('survey.html',dictToPass)
|
||||||
|
|
||||||
def survey(request,survey_id):
|
def survey(request,year,wallet_number):
|
||||||
surveys=Survey.objects.all()
|
surveys=Survey.objects.all()
|
||||||
current_survey=Survey.objects.get(pk=survey_id)
|
expeditions=Expedition.objects.all()
|
||||||
notes=current_survey.scannedimage_set.filter(contents='notes')
|
current_expedition=Expedition.objects.filter(year=year)[0]
|
||||||
planSketches=current_survey.scannedimage_set.filter(contents='plan')
|
|
||||||
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
|
if wallet_number!='':
|
||||||
|
current_survey=Survey.objects.filter(expedition=current_expedition,wallet_number=wallet_number)[0]
|
||||||
|
notes=current_survey.scannedimage_set.filter(contents='notes')
|
||||||
|
planSketches=current_survey.scannedimage_set.filter(contents='plan')
|
||||||
|
elevationSketches=current_survey.scannedimage_set.filter(contents='elevation')
|
||||||
|
|
||||||
dictToPass=locals()
|
dictToPass=locals()
|
||||||
dictToPass.update({'settings':settings})
|
dictToPass.update({'settings':settings})
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ for survey in surveyreader:
|
|||||||
# print walletNumberLetter.groups()
|
# print walletNumberLetter.groups()
|
||||||
|
|
||||||
surveyobj = models.Survey(
|
surveyobj = models.Survey(
|
||||||
expedition_year = models.Expedition.objects.filter(year=survey[header['Year']])[0],
|
expedition = models.Expedition.objects.filter(year=survey[header['Year']])[0],
|
||||||
wallet_number = walletNumberLetter.group('number'),
|
wallet_number = walletNumberLetter.group('number'),
|
||||||
|
|
||||||
comments = survey[header['Comments']],
|
comments = survey[header['Comments']],
|
||||||
@ -58,20 +58,23 @@ def parseSurveyScans(year):
|
|||||||
|
|
||||||
for scan in scanList:
|
for scan in scanList:
|
||||||
try:
|
try:
|
||||||
scanChopped=re.match(r'([a-zA-Z]*)(\d*)\.(png|jpg|JPG|PNG)',scan).groups()
|
scanChopped=re.match(r'(?i).*(notes|elev|plan|elevation|extend)(\d*)\.(png|jpg|jpeg)',scan).groups()
|
||||||
scanType,scanNumber,scanFormat=scanChopped
|
scanType,scanNumber,scanFormat=scanChopped
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print scan + " ignored"
|
print "Adding scans: " + scan + " ignored"
|
||||||
continue
|
continue
|
||||||
|
if scanType == 'elev' or scanType == 'extend':
|
||||||
|
scanType = 'elevation'
|
||||||
|
|
||||||
if scanNumber=='':
|
if scanNumber=='':
|
||||||
scanNumber=1
|
scanNumber=1
|
||||||
|
|
||||||
if type(surveyNumber)==types.TupleType:
|
if type(surveyNumber)==types.TupleType:
|
||||||
surveyNumber=surveyNumber[0]
|
surveyNumber=surveyNumber[0]
|
||||||
try:
|
try:
|
||||||
survey=models.Survey.objects.get_or_create(wallet_number=surveyNumber, expedition_year=year)[0]
|
survey=models.Survey.objects.get_or_create(wallet_number=surveyNumber, expedition=year)[0]
|
||||||
except models.Survey.MultipleObjectsReturned:
|
except models.Survey.MultipleObjectsReturned:
|
||||||
survey=models.Survey.objects.filter(wallet_number=surveyNumber, expedition_year=year)[0]
|
survey=models.Survey.objects.filter(wallet_number=surveyNumber, expedition=year)[0]
|
||||||
|
|
||||||
scanObj = models.ScannedImage(
|
scanObj = models.ScannedImage(
|
||||||
file=os.path.join(year.year, surveyFolder, scan),
|
file=os.path.join(year.year, surveyFolder, scan),
|
||||||
@ -79,7 +82,7 @@ def parseSurveyScans(year):
|
|||||||
number_in_wallet=scanNumber,
|
number_in_wallet=scanNumber,
|
||||||
survey=survey
|
survey=survey
|
||||||
)
|
)
|
||||||
print "Added scanned image at " + str(scanObj)
|
#print "Added scanned image at " + str(scanObj)
|
||||||
scanObj.save()
|
scanObj.save()
|
||||||
|
|
||||||
for year in models.Expedition.objects.filter(year__gte=2000): #expos since 2000, because paths and filenames were nonstandard before then
|
for year in models.Expedition.objects.filter(year__gte=2000): #expos since 2000, because paths and filenames were nonstandard before then
|
||||||
|
@ -27,6 +27,14 @@ body {
|
|||||||
background: #DDDDDD;
|
background: #DDDDDD;
|
||||||
padding: 0 10px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
|
padding: 0 10px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
|
||||||
}
|
}
|
||||||
|
table {
|
||||||
|
border: thin solid silver;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
padding:0px;
|
||||||
|
border: thin solid silver;
|
||||||
|
}
|
||||||
.twoColHybLtHdr #header h1 {
|
.twoColHybLtHdr #header h1 {
|
||||||
margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
|
margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
|
||||||
padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
|
padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
|
||||||
@ -117,7 +125,7 @@ img.thumbnail {
|
|||||||
/* the above proprietary zoom property gives IE the hasLayout it may need to avoid several bugs */
|
/* the above proprietary zoom property gives IE the hasLayout it may need to avoid several bugs */
|
||||||
</style>
|
</style>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
</head>
|
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
mnuItmLst=document.getElementsByClassName("menuBarItem")
|
mnuItmLst=document.getElementsByClassName("menuBarItem")
|
||||||
function highlight(div){
|
function highlight(div){
|
||||||
@ -148,11 +156,18 @@ img.thumbnail {
|
|||||||
div.style.backgroundColor="#666666";
|
div.style.backgroundColor="#666666";
|
||||||
}
|
}
|
||||||
|
|
||||||
function redirect(surveyPK){
|
function redirect(){
|
||||||
window.location = "{{ settings.URL_ROOT }}/survey/" + surveyPK
|
window.location = "{{ settings.URL_ROOT }}/survey/" + document.getElementById("expeditionChooser").value + "%23" + document.getElementById("surveyChooser").value;
|
||||||
|
document.getElementById("progressTableContent").style.display='hidden'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function redirectYear(){
|
||||||
|
window.location = "{{ settings.URL_ROOT }}/survey/" + document.getElementById("expeditionChooser").value + "%23"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
</head>
|
||||||
<body class="twoColHybLtHdr">
|
<body class="twoColHybLtHdr">
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<h1>CUCC Expo virtual survey binder</h1>
|
<h1>CUCC Expo virtual survey binder</h1>
|
||||||
@ -162,20 +177,33 @@ img.thumbnail {
|
|||||||
<h3>Survey Stages for {{ current_survey }}</h3>
|
<h3>Survey Stages for {{ current_survey }}</h3>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<select id="surveyChooser" onchange="redirect(this.value)">
|
<select id="expeditionChooser" onchange="redirectYear()">
|
||||||
{% for survey in surveys %}
|
{% for expedition in expeditions %}
|
||||||
<option label="{{ survey }}" value="{{ survey.pk }}"
|
<option label="{{ expedition }}" value="{{ expedition }}"
|
||||||
{% ifequal survey current_survey %}
|
{% ifequal expedition current_expedition %}
|
||||||
selected
|
selected
|
||||||
{% endifequal %} >
|
{% endifequal %} >
|
||||||
|
{{ expedition }}
|
||||||
{{ survey }}
|
|
||||||
</option>
|
</option>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="surveyChooser" onchange="redirectSurvey()">
|
||||||
|
<option label="show all" value="">
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<option label="{{ survey }}" value="{{ survey.wallet_number }}"
|
||||||
|
{% ifequal survey current_survey %}
|
||||||
|
selected
|
||||||
|
{% endifequal %} >
|
||||||
|
{{ survey }}
|
||||||
|
</option>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
<option label="add" value="add">
|
||||||
|
</select>
|
||||||
|
|
||||||
<div id="status">
|
<div id="status">
|
||||||
<div id="notes" class="menuBarItem" onmouseover="highlight(this)" onmouseout="unhighlight(this)" onclick="choose(this)"> {% if notes %}✓{% endif %}
|
<div id="notes" class="menuBarItem" onmouseover="highlight(this)" onmouseout="unhighlight(this)" onclick="choose(this)"> {% if notes %}✓{% endif %}
|
||||||
scanned notes </div>
|
scanned notes </div>
|
||||||
@ -192,8 +220,76 @@ img.thumbnail {
|
|||||||
<!-- end #sidebar1 -->
|
<!-- end #sidebar1 -->
|
||||||
</div>
|
</div>
|
||||||
<div id="mainContent">
|
<div id="mainContent">
|
||||||
<div id="notesContent" class="behind">
|
<div id="progressTableContent" class="behind" style="display:block;">
|
||||||
<h2>Scanned notes for {{ current_survey }}.</h2>
|
<h3>
|
||||||
|
Status of surveys from {{ current_expedition }}
|
||||||
|
</h3>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
</th>
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<th>
|
||||||
|
{{ survey.wallet_number }}
|
||||||
|
</th>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Notes
|
||||||
|
</td>
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<td>
|
||||||
|
{% if survey.notes %}
|
||||||
|
✓
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Survex file
|
||||||
|
</td>
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<td>
|
||||||
|
{% if survey.survex_file %}
|
||||||
|
✓
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Plans
|
||||||
|
</td>
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<td>
|
||||||
|
{% if survey.plans %}
|
||||||
|
✓
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Elevations
|
||||||
|
</td>
|
||||||
|
{% for survey in current_expedition.survey_set.all %}
|
||||||
|
<td>
|
||||||
|
{% if survey.elevations %}
|
||||||
|
✓
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="notesContent" class="behind">
|
||||||
|
<h3>Scanned notes for {{ current_survey }}.</h3>
|
||||||
|
|
||||||
{% for noteItem in notes %}
|
{% for noteItem in notes %}
|
||||||
<div class="figure">
|
<div class="figure">
|
||||||
@ -222,12 +318,12 @@ img.thumbnail {
|
|||||||
who entered by </div>
|
who entered by </div>
|
||||||
<div id="printedCentrelineContent" class="behind"> centreline </div>
|
<div id="printedCentrelineContent" class="behind"> centreline </div>
|
||||||
<div id="scannedPassageSketchContent" class="behind">
|
<div id="scannedPassageSketchContent" class="behind">
|
||||||
<h2>Scanned plan sketch files for {{ current_survey }}.</h2>
|
<h3>Scanned plan sketch files for {{ current_survey }}.</h3>
|
||||||
|
|
||||||
{% for sketchItem in planSketches %}
|
{% for sketchItem in planSketches %}
|
||||||
<div class="figure">
|
<div class="figure">
|
||||||
<p>
|
<p>
|
||||||
<img src="{{ sketchItem.correctURL }}" class="thumbnail">
|
<img src="{{ sketchItem.correctURL }}" class="thumbnail" />
|
||||||
<p>
|
<p>
|
||||||
File at:
|
File at:
|
||||||
<a href="{{ sketchItem.correctUrl }}">
|
<a href="{{ sketchItem.correctUrl }}">
|
||||||
|
@ -28,7 +28,7 @@ urlpatterns = patterns('',
|
|||||||
(r'^statistics/?$', stats),
|
(r'^statistics/?$', stats),
|
||||||
|
|
||||||
(r'^survey/?$', surveyindex),
|
(r'^survey/?$', surveyindex),
|
||||||
(r'^survey/(?P<survey_id>.*)$', survey),
|
(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey),
|
||||||
|
|
||||||
(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),
|
||||||
|
Loading…
Reference in New Issue
Block a user