[cig-commits] r13333 - in cs/portal/trunk/northridge: SeismoWebPortal SeismoWebPortal/templates/SeismoWebPortal backend
leif at geodynamics.org
leif at geodynamics.org
Tue Nov 18 14:40:00 PST 2008
Author: leif
Date: 2008-11-18 14:40:00 -0800 (Tue, 18 Nov 2008)
New Revision: 13333
Modified:
cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
cs/portal/trunk/northridge/SeismoWebPortal/views.py
cs/portal/trunk/northridge/backend/daemon.py
Log:
Allow the daemon and the user to download 3D models.
Modified: cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-11-18 22:27:17 UTC (rev 13332)
+++ cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-11-18 22:40:00 UTC (rev 13333)
@@ -21,6 +21,7 @@
def editable(self, builtIn): return not builtIn
uploadable = False
downloadableAsText = False
+ downloadableAsTarGz = False
downloadableAsKML = False
duplicatable = True
@@ -797,12 +798,21 @@
creatable = False
uploadable = True
duplicatable = False
+ downloadableAsTarGz = True
def changeManipulator(self, user):
object = self.obj
return self.Model.ChangeManipulator(getattr(object, object._meta.pk.attname), follow = dict(pathname = False))
+ def downloadAsTarGz(self, request):
+ from shutil import copyfileobj
+ response = HttpResponse(mimetype='application/x-tar-gz')
+ response['Content-Disposition'] = 'attachment; filename=%s.tgz' % self.obj.name
+ stream = open(self.obj.get_pathname_filename(), 'r')
+ copyfileobj(stream, response)
+ return response
+
class Specfem3DGlobeParameters(Object):
Model = models.Specfem3DGlobeParameters
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html 2008-11-18 22:27:17 UTC (rev 13332)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html 2008-11-18 22:40:00 UTC (rev 13333)
@@ -162,6 +162,13 @@
{% endif %}
</li>
<li>
+ {% if downloadableAsTarGz %}
+ <a href="{{root}}/?class={{klass}}&object={{object.id}}&action=downloadAsTarGz"><img src="{{root}}/images/document.gif" width=32 height=32> Compressed Archive</a>
+ {% else %}
+ <span class="actionMenuItem disabled"><img src="{{root}}/images/document.gif" width=32 height=32> Compressed Archive</span>
+ {% endif %}
+ </li>
+ <li>
{% if downloadableAsKML %}
<a href="{{root}}/?class={{klass}}&object={{object.id}}&action=downloadAsKML"><img src="{{root}}/images/kml.icon.gif"> Google Earth Map</a>
{% else %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/views.py 2008-11-18 22:27:17 UTC (rev 13332)
+++ cs/portal/trunk/northridge/SeismoWebPortal/views.py 2008-11-18 22:40:00 UTC (rev 13333)
@@ -106,8 +106,11 @@
duplicatable = obj.duplicatable,
deletable = not builtIn,
downloadableAsText = obj.downloadableAsText,
+ downloadableAsTarGz = obj.downloadableAsTarGz,
downloadableAsKML = obj.downloadableAsKML,
- downloadable = obj.downloadableAsText or obj.downloadableAsKML,
+ downloadable = (obj.downloadableAsText or
+ obj.downloadableAsTarGz or
+ obj.downloadableAsKML),
views = obj.views,
))
@@ -131,6 +134,8 @@
c['nextAction'] = 'view'
elif action == 'downloadAsText':
ret = obj.downloadAsText(request)
+ elif action == 'downloadAsTarGz':
+ ret = obj.downloadAsTarGz(request)
elif action == 'downloadAsKML':
ret = obj.downloadAsKML(request)
elif action == 'start':
@@ -460,6 +465,7 @@
"parameters.pml": parameters_pml,
"event.txt": event_txt,
"stations.txt": stations_txt,
+ "model.tgz": model_tgz,
}
elif run.code == models.MineosParameters.code:
@@ -519,6 +525,11 @@
return stations.downloadAsText(request)
+def model_tgz(request, run):
+ model = mezzanine.Specfem3DGlobeModel(run.parameters.model)
+ return model.downloadAsTarGz(request)
+
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# daemon interface -- Mineos input file downloads
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: cs/portal/trunk/northridge/backend/daemon.py
===================================================================
--- cs/portal/trunk/northridge/backend/daemon.py 2008-11-18 22:27:17 UTC (rev 13332)
+++ cs/portal/trunk/northridge/backend/daemon.py 2008-11-18 22:40:00 UTC (rev 13333)
@@ -532,6 +532,7 @@
parameters = 'par_file.txt'
event = 'event.txt'
stations = 'stations.txt'
+ model = 'model.tgz'
job = Job(
self,
"run",
@@ -541,6 +542,7 @@
arguments = ['--par-file=' + parameters,
'--cmt-solution=' + event,
'--stations=' + stations,
+ '--model=' + model,
"--scheduler.wait=True",
"--job.name=run%05d" % self.id,
"--macros.run.id=%05d" % self.id,
@@ -550,7 +552,7 @@
] + dry,
)
job.urlForInputFile = self.urlForInputFile
- job.inputFiles = [parameters, event, stations]
+ job.inputFiles = [parameters, event, stations, model]
job.outputFiles = ["specfem3dglobe.tar.gz", "output_mesher.txt", "output_solver.txt", "output_build.txt"]
return job
More information about the CIG-COMMITS
mailing list