[cig-commits] r11754 - in cs/portal/trunk/seismo/SeismoWebPortal: . templates/SeismoWebPortal

leif at geodynamics.org leif at geodynamics.org
Sat Apr 5 19:24:40 PDT 2008


Author: leif
Date: 2008-04-05 19:24:40 -0700 (Sat, 05 Apr 2008)
New Revision: 11754

Modified:
   cs/portal/trunk/seismo/SeismoWebPortal/forms.py
   cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html
   cs/portal/trunk/seismo/SeismoWebPortal/views.py
Log:
Fixed retrieval of events from catalog.


Modified: cs/portal/trunk/seismo/SeismoWebPortal/forms.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/forms.py	2008-04-05 03:27:54 UTC (rev 11753)
+++ cs/portal/trunk/seismo/SeismoWebPortal/forms.py	2008-04-06 02:24:40 UTC (rev 11754)
@@ -293,20 +293,40 @@
         return
 
     def save(self, new_data, user):
-        from datetime import datetime
-
+        
         # Get/create the location.
         location = Location.getLocation(new_data['latitude'], new_data['longitude'])
-        del new_data['latitude']
-        del new_data['longitude']
 
         # Get/create the CMTSolution.
-        kwds = {}
-        for k in new_data.iterkeys():
-            kwds[k] = new_data[k] # convert from MultiValueDict to dict
-        kwds['location'] = location
-        cmtSolution = CMTSolution.getCMTSolution(**kwds)
+        cmtSolution = CMTSolution.getCMTSolution(
+            halfDuration = new_data['halfDuration'],
+            location = location,
+            depth = new_data['depth'],
+            Mrr = new_data['Mrr'],
+            Mtt = new_data['Mtt'],
+            Mpp = new_data['Mpp'],
+            Mrt = new_data['Mrt'],
+            Mrp = new_data['Mrp'],
+            Mtp = new_data['Mtp'],
+            )
+
+        # Create the new Event.
+        event = self.createEvent(new_data, location)
+
+        # Add the Source.
+        source = self.createSource(new_data, event, cmtSolution)
+
+        # Create a new workspace for this event.
+        workspace = EventWorkspace(event = event,
+                                   stations = StationList.favorite(),
+                                   )
+        workspace.save()
         
+        return workspace
+
+    def createEvent(self, new_data, location):
+        from datetime import datetime
+
         # Create the DataSource and Region.
         dataSource, created = DataSource.objects.get_or_create(name = "ZZZ")
         region, created = Region.objects.get_or_create(name = "ZZZZ")
@@ -322,21 +342,77 @@
             sourceMs = 0.0,
             region = region,
             )
+        
+        return event
 
-        # Add the Source.
+    def createSource(self, new_data, event, cmtSolution):
         source = Source.objects.create(
             event = event,
             eventName = "000000Z",
             timeShift = 0.0,
             cmtSolution = cmtSolution,
             )
+        return source
 
-        # Create a new workspace for this event.
-        workspace = EventWorkspace(event = event,
-                                   stations = StationList.favorite(),
-                                   )
-        workspace.save()
+
+class PDEEventAddManipulator(SingleSourceEventAddManipulator):
+
+    def __init__(self):
+        super(PDEEventAddManipulator, self).__init__()
         
+        # add fields for PDE info
+        self.fields.extend([forms.TextField('dataSource', maxlength=100, is_required=True),
+                            forms.DateField('when_date', is_required=True),
+                            forms.TimeField('when_time', is_required=True),
+                            forms.IntegerField('microsecond', is_required=True),
+                            forms.FloatField('sourceLatitude', max_digits=19, decimal_places=10, is_required=True),
+                            forms.FloatField('sourceLongitude', max_digits=19, decimal_places=10, is_required=True),
+                            forms.FloatField('sourceDepth', max_digits=19, decimal_places=10, is_required=True),
+                            forms.FloatField('sourceMB', max_digits=19, decimal_places=10, is_required=True),
+                            forms.FloatField('sourceMs', max_digits=19, decimal_places=10, is_required=True),
+                            forms.TextField('region', maxlength=100, is_required=True),
+                            forms.TextField('eventName', maxlength=100, is_required=True),
+                            forms.FloatField('timeShift', max_digits=19, decimal_places=10, is_required=True),
+                            ])
+        return
+
+    def createEvent(self, new_data, location):
+        from datetime import datetime
+
+        # Create the DataSource and Region.
+        dataSource, created = DataSource.objects.get_or_create(name = new_data['dataSource'])
+        region, created = Region.objects.get_or_create(name = new_data['region'])
+
+        # get/create the location
+        sourceLocation = Location.getLocation(new_data['sourceLatitude'], new_data['sourceLongitude'])
+
+        # Create the new Event.
+        event = Event.objects.create(
+            dataSource = dataSource,
+            when = datetime.combine(new_data['when_date'], new_data['when_time']),
+            microsecond = new_data['microsecond'],
+            sourceLocation = sourceLocation,
+            sourceDepth = new_data['sourceDepth'],
+            sourceMB = new_data['sourceMB'],
+            sourceMs = new_data['sourceMs'],
+            region = region,
+            )
+
+        return event
+
+    def createSource(self, new_data, event, cmtSolution):
+        source = Source.objects.create(
+            event = event,
+            eventName = new_data['eventName'],
+            timeShift = new_data['timeShift'],
+            cmtSolution = cmtSolution,
+            )
+        return source
+
+    def save(self, new_data, user):
+        workspace = super(PDEEventAddManipulator, self).save(new_data, user)
+        workspace.fsNode.name = new_data['eventName']
+        workspace.fsNode.save()
         return workspace
 
 
@@ -369,7 +445,7 @@
         location = Location.getLocation(new_data['latitude'], new_data['longitude'])
         del new_data['latitude']
         del new_data['longitude']
-
+       
         # Get/create the CMTSolution.
         kwds = {}
         for k in new_data.iterkeys():

Modified: cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html	2008-04-05 03:27:54 UTC (rev 11753)
+++ cs/portal/trunk/seismo/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html	2008-04-06 02:24:40 UTC (rev 11754)
@@ -23,7 +23,6 @@
             <td>
                 <!-- an inline events/add form, already filled-out -->
 	        <form method="post" action="{{root}}/config/events/new/">
-		    <input type="hidden" name="name"             value="{{ event.eventName }}"/>
 		    <input type="hidden" name="dataSource"       value="{{ event.dataSource }}"/>
 		    <input type="hidden" name="when_date"        value="{{ event.year }}-{{ event.month }}-{{ event.day }}"/>
 		    <input type="hidden" name="when_time"        value="{{ event.hour }}:{{ event.minuteStr }}:{{ event.secondStr }}"/>
@@ -46,7 +45,7 @@
 		    <input type="hidden" name="Mrt"              value="{{ event.Mrt }}"/>
 		    <input type="hidden" name="Mrp"              value="{{ event.Mrp }}"/>
 		    <input type="hidden" name="Mtp"              value="{{ event.Mtp }}"/>
-		<input type="submit" value="Add" />
+		<input type="submit" value="Open" />
 		</form>
 	    </td>
             <td>{{ event.beachball }}</td>

Modified: cs/portal/trunk/seismo/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/seismo/SeismoWebPortal/views.py	2008-04-05 03:27:54 UTC (rev 11753)
+++ cs/portal/trunk/seismo/SeismoWebPortal/views.py	2008-04-06 02:24:40 UTC (rev 11754)
@@ -1496,12 +1496,16 @@
 
 
 def manipulate_event(request, path, desktop, action=None, workspace=None, window=None):
-    from forms import SingleSourceEventAddManipulator, SingleSourceEventChangeManipulator
+    from forms import SingleSourceEventAddManipulator, SingleSourceEventChangeManipulator, PDEEventAddManipulator
 
     if path: raise Http404
     
     if action == "new":
-        manipulator = SingleSourceEventAddManipulator()
+        if request.method == 'POST' and request.POST.has_key('dataSource'):
+            # These POST forms are hidden in the globalcmt.org search results.
+            manipulator = PDEEventAddManipulator()
+        else:
+            manipulator = SingleSourceEventAddManipulator()
         event = None
         window = gui.ChildWindow(config.root + "/config/events/new/", "New")
         desktop.activeWindow.insertWindow(window)



More information about the cig-commits mailing list