[cig-commits] r11885 - in cs/portal/trunk/northridge/SeismoWebPortal: . templates/SeismoWebPortal

leif at geodynamics.org leif at geodynamics.org
Thu May 1 13:06:06 PDT 2008


Author: leif
Date: 2008-05-01 13:06:06 -0700 (Thu, 01 May 2008)
New Revision: 11885

Modified:
   cs/portal/trunk/northridge/SeismoWebPortal/cmt.py
   cs/portal/trunk/northridge/SeismoWebPortal/forms.py
   cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html
   cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html
   cs/portal/trunk/northridge/SeismoWebPortal/views.py
Log:
Merged bug fixes from r11326, r11791, r11848, r11860, and r11861.


Modified: cs/portal/trunk/northridge/SeismoWebPortal/cmt.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/cmt.py	2008-05-01 17:37:50 UTC (rev 11884)
+++ cs/portal/trunk/northridge/SeismoWebPortal/cmt.py	2008-05-01 20:06:06 UTC (rev 11885)
@@ -71,20 +71,21 @@
             if len(tokens) == 1:
                 if tokens[0]:
                     cmtSolution = CMTSolution()
-                    tokens = tokens[0].split()
-                    cmtSolution.dataSource = tokens[0]
-                    cmtSolution.year = int(tokens[1])
-                    cmtSolution.month = int(tokens[2])
-                    cmtSolution.day = int(tokens[3])
-                    cmtSolution.hour = int(tokens[4])
-                    cmtSolution.minute = int(tokens[5])
-                    cmtSolution._second = float(tokens[6])
-                    cmtSolution.sourceLatitude = float(tokens[7])
-                    cmtSolution.sourceLongitude = float(tokens[8])
-                    cmtSolution.sourceDepth = float(tokens[9])
-                    cmtSolution.sourceMB = float(tokens[10])
-                    cmtSolution.sourceMs = float(tokens[11])
-                    cmtSolution.regionName = ' '.join(tokens[12:])
+                    pde = tokens[0].lstrip()
+                    cmtSolution.dataSource = pde[0:4].strip()
+                    cmtSolution.year = int(pde[4:8])
+                    tokens = pde[8:].split()
+                    cmtSolution.month = int(tokens[0])
+                    cmtSolution.day = int(tokens[1])
+                    cmtSolution.hour = int(tokens[2])
+                    cmtSolution.minute = int(tokens[3])
+                    cmtSolution._second = float(tokens[4])
+                    cmtSolution.sourceLatitude = float(tokens[5])
+                    cmtSolution.sourceLongitude = float(tokens[6])
+                    cmtSolution.sourceDepth = float(tokens[7])
+                    cmtSolution.sourceMB = float(tokens[8])
+                    cmtSolution.sourceMs = float(tokens[9])
+                    cmtSolution.regionName = ' '.join(tokens[10:])
             elif len(tokens) == 2:
                 attrName = tokens[0]
                 s = attrName.split()
@@ -149,7 +150,7 @@
         return """<img class=beachball width=49 height=49 src="http://www.seismology.harvard.edu/cgi-bin/webCMTgif/form?mrr=%(mrr)s&mtt=%(mtt)s&mpp=%(mpp)s&mrt=%(mrt)s&mrp=%(mrp)s&mtp=%(mtp)s">""" % mt
 
     def __str__(self):
-        return """%(dataSource)s %(year)d %(month)2d %(day)2d %(hour)2d %(minute)2d %(_second)5.2f %(sourceLatitude)8.4f %(sourceLongitude)9.4f %(sourceDepth)5.1f %(sourceMB)3.1f %(sourceMs)3.1f %(regionName)s
+        return """%(dataSource)-04s%(year)04d %(month)2d %(day)2d %(hour)2d %(minute)2d %(_second)5.2f %(sourceLatitude)8.4f %(sourceLongitude)9.4f %(sourceDepth)5.1f %(sourceMB)3.1f %(sourceMs)3.1f %(regionName)s
 event name: %(eventName)11s
 time shift: %(timeShift)11.4f
 half duration: %(halfDuration)8.4f

Modified: cs/portal/trunk/northridge/SeismoWebPortal/forms.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/forms.py	2008-05-01 17:37:50 UTC (rev 11884)
+++ cs/portal/trunk/northridge/SeismoWebPortal/forms.py	2008-05-01 20:06:06 UTC (rev 11885)
@@ -452,10 +452,18 @@
 
 def parse_station_list(stationList, stream):
 
-    for line in stream:
+    for i, line in enumerate(stream):
 
         # parse the line
-        code, network, latitude, longitude, elevation, bur = line.split()
+        line = line.split()
+        if i == 0 and len(line) == 1:
+            # old-style station list with count
+            continue
+
+        if len(line) != 6:
+            raise Exception
+        
+        code, network, latitude, longitude, elevation, bur = line
         latitude, longitude = float(latitude), float(longitude)
         elevation, bur = float(elevation), float(bur)
 

Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html	2008-05-01 17:37:50 UTC (rev 11884)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html	2008-05-01 20:06:06 UTC (rev 11885)
@@ -5,6 +5,10 @@
 
 <h2 class=titlebar>event search results</h2>
 
+{% if error %}
+<p><span class=error>{{ error }}</span></p>
+{% endif %}
+
 {% if event_list %}
     <table rules=groups>
         <colgroup><col class=odd><col class=even><col class=odd><col class=even><col class=odd><col class=even><col class=odd></colgroup>

Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html	2008-05-01 17:37:50 UTC (rev 11884)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html	2008-05-01 20:06:06 UTC (rev 11885)
@@ -22,7 +22,7 @@
 
 <h3>quick start</h3>
 
-<p>To set-up a new simulation, proceed as follows:
+<p>To set up a new simulation, proceed as follows:
 
 <ol>
     <li>Click "Simulations".

Modified: cs/portal/trunk/northridge/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/views.py	2008-05-01 17:37:50 UTC (rev 11884)
+++ cs/portal/trunk/northridge/SeismoWebPortal/views.py	2008-05-01 20:06:06 UTC (rev 11885)
@@ -12,8 +12,9 @@
 from forms import RegistrationAddManipulator, RegistrationChangeManipulator
 from models import Simulation, Model, Mesh, Station, StationList, StationNetwork, DataSource, Region
 from models import Run, Job, OutputFile
-from cmt import CMTSolution
 
+import cmt
+
 import os, os.path
 from HTMLParser import HTMLParser
 
@@ -195,7 +196,7 @@
 
     count = simulation.events.source_set.count()
     for event in simulation.events.source_set.all():
-        cmtSolution = CMTSolution.createFromDBModel(event)
+        cmtSolution = cmt.CMTSolution.createFromDBModel(event)
 
         # NYI: Specfem requires this to be zero for one
         # source, and positive for others.  Set it to zero for
@@ -637,7 +638,8 @@
             r.save()
     
     return render_to_response('SeismoWebPortal/event_search_results.html',
-                              {'event_list': parser.cmtList },
+                              {'event_list': parser.cmtList,
+                               'error': parser.error},
                               RequestContext(request, {})) 
 
 
@@ -749,7 +751,7 @@
 
     count = event.source_set.count()
     for event in event.source_set.all():
-        cmtSolution = CMTSolution.createFromDBModel(event)
+        cmtSolution = cmt.CMTSolution.createFromDBModel(event)
         response.write(str(cmtSolution))
 
     return response
@@ -763,7 +765,8 @@
     def __init__(self):
         HTMLParser.__init__(self)
         self.state = 0
-        self.cmtList = None
+        self.cmtList = []
+        self.error = None
         
     def handle_starttag(self, tag, attrs):
         if self.state == 0:
@@ -772,6 +775,9 @@
         elif self.state == 2:
             if tag == 'pre':
                 self.state = 3
+        elif self.state == -1:
+            if tag == 'p':
+                self.state = -2
         return
 
     def handle_endtag(self, tag):
@@ -786,8 +792,13 @@
         if self.state == 1:
             if data.find('Output in CMTSOLUTION format') != -1:
                 self.state = 2
+            elif data.startswith('CMT search error'):
+                self.state = -1
         elif self.state == 3:
-            self.cmtList = CMTSolution.parse(data)
+            self.cmtList = cmt.CMTSolution.parse(data)
+        elif self.state == -2:
+            self.error = data
+            self.state = -3
         return
 
 
@@ -907,7 +918,7 @@
     simulation = get_object_or_404(Simulation, id=sim_id)
     
     for source in simulation.events.source_set.all():
-        cmt = CMTSolution.createFromDBModel(source)
+        cmt = cmt.CMTSolution.createFromDBModel(source)
 
         logs = [int(log10(fabs(x))) for x in (cmt.Mrr, cmt.Mtt, cmt.Mpp, cmt.Mrt, cmt.Mrp, cmt.Mtp)]
         biggestLog = max(logs)



More information about the cig-commits mailing list