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

leif at geodynamics.org leif at geodynamics.org
Fri May 30 16:32:11 PDT 2008


Author: leif
Date: 2008-05-30 16:32:11 -0700 (Fri, 30 May 2008)
New Revision: 12064

Modified:
   cs/portal/trunk/northridge/SeismoWebPortal/forms.py
   cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
   cs/portal/trunk/northridge/SeismoWebPortal/models.py
   cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
   cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_detail.html
   cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
   cs/portal/trunk/northridge/SeismoWebPortal/views.py
Log:
Restrict editing of runs.  Reinitialize status of copied runs.

Added a "New Run..." shortcut button to the bottom of event and
parameter detail pages.  (Christina Morency)


Modified: cs/portal/trunk/northridge/SeismoWebPortal/forms.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/forms.py	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/forms.py	2008-05-30 23:32:11 UTC (rev 12064)
@@ -574,6 +574,7 @@
         return '\n'.join(output)
 
     def isValidChoice(self, data, form):
+        from django.utils.translation import gettext
         str_data = str(data)
         str_choices = []
         for value, display_name in self.choices[0]:

Modified: cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py	2008-05-30 23:32:11 UTC (rev 12064)
@@ -8,6 +8,7 @@
 from django.http import HttpResponse, HttpResponseRedirect, Http404
 from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
 from django.core.paginator import ObjectPaginator, InvalidPage
+from django.utils.datastructures import MultiValueDict
 from HTMLParser import HTMLParser
 
 import cmt
@@ -18,6 +19,7 @@
 class Object(object):
 
     creatable = True
+    def editable(self, builtIn): return not builtIn
     uploadable = False
     downloadableAsText = False
     downloadableAsKML = False
@@ -45,7 +47,14 @@
 
         if manipulator is None:
             manipulator = cls.addManipulator()
-        if request.POST:
+
+        if request.POST.get('_fromTemplate'):
+            errors = {}
+            new_data = MultiValueDict()
+            new_data.update(manipulator.flatten_data())
+            new_data.update(request.POST.copy())
+
+        elif request.POST:
             # If data was POSTed, we're trying to create a new object
             new_data = request.POST.copy()
 
@@ -73,6 +82,7 @@
                     return HttpResponseRedirect(new_object.get_absolute_url())
                 else:
                     return HttpResponseRedirect(cls.urlForObject(new_object, request.root))
+
         else:
             # No POST, so we want a brand new form without any data or errors
             errors = {}
@@ -341,11 +351,16 @@
         from copy import copy
         obj = self.obj
         dup = copy(obj)
+        self._initDuplicate(dup)
+        dup.save()
+        return dup
+
+    def _initDuplicate(self, dup):
         dup.id = None
+        obj = self.obj
         if hasattr(obj, 'name'):
             dup.name = "copy of %s" % obj.name
-        dup.save()
-        return dup
+        return
 
     def __init__(self, obj):
         self.obj = obj
@@ -776,6 +791,9 @@
 class Run(Object):
     Model = models.Run
 
+    def editable(self, builtIn):
+        return super(Run, self).editable(builtIn) and self.obj.status == "unconfirmed"
+
     @classmethod
     def addManipulator(cls):
         from forms import RunManipulator
@@ -791,7 +809,12 @@
         obj.save()
         return HttpResponseRedirect(self.urlForObject(self, request.root))
 
+    def _initDuplicate(self, dup):
+        super(Run, self)._initDuplicate(dup)
+        dup.status = "unconfirmed"
+        return
 
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # support code
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Modified: cs/portal/trunk/northridge/SeismoWebPortal/models.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/models.py	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/models.py	2008-05-30 23:32:11 UTC (rev 12064)
@@ -306,7 +306,11 @@
 
     code = 1
 
+    @classmethod
+    def contentType(cls):
+        return ContentType.objects.get_for_model(cls)
 
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # Mineos
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -384,7 +388,11 @@
 
     code = 2
 
+    @classmethod
+    def contentType(cls):
+        return ContentType.objects.get_for_model(cls)
 
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # Runs, Jobs
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html	2008-05-30 23:32:11 UTC (rev 12064)
@@ -69,3 +69,13 @@
 {% endif %}
 
 {% endif %}
+
+<div class=shortcut>
+    <form method="post" action="{{root}}/">
+        <input type="hidden" name="class" value="Run">
+        <input type="hidden" name="action" value="new">
+        <input type="hidden" name="event" value="{{object.id}}">
+        <input type="hidden" name="_fromTemplate" value="True">
+        <img src="{{root}}/images/rocket.gif" width=32 height=32><input type="submit" value="New Run..." />
+    </form>
+</div>

Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_detail.html	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_detail.html	2008-05-30 23:32:11 UTC (rev 12064)
@@ -12,3 +12,13 @@
     <dt>select frequency range</dt><dd>{{ object.fmin }} <= f < {{ object.fmax }}</dd>
     <dt>sampling period</dt><dd>{{ object.step }}s</dd>
 </dl>
+
+<div class=shortcut>
+    <form method="post" action="{{root}}/">
+        <input type="hidden" name="class" value="Run">
+        <input type="hidden" name="action" value="new">
+        <input type="hidden" name="parameters" value="{{object.contentType.id}},{{object.id}}">
+        <input type="hidden" name="_fromTemplate" value="True">
+        <img src="{{root}}/images/rocket.gif" width=32 height=32><input type="submit" value="New Run..." />
+    </form>
+</div>

Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html	2008-05-30 23:32:11 UTC (rev 12064)
@@ -11,3 +11,13 @@
     <dt>rotation</dt><dd>{{ object.rotation }}</dd>
     <dt>ellipticity</dt><dd>{{ object.ellipticity }}</dd>
 </dl>
+
+<div class=shortcut>
+    <form method="post" action="{{root}}/">
+        <input type="hidden" name="class" value="Run">
+        <input type="hidden" name="action" value="new">
+        <input type="hidden" name="parameters" value="{{object.contentType.id}},{{object.id}}">
+        <input type="hidden" name="_fromTemplate" value="True">
+        <img src="{{root}}/images/rocket.gif" width=32 height=32><input type="submit" value="New Run..." />
+    </form>
+</div>

Modified: cs/portal/trunk/northridge/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/views.py	2008-05-30 21:17:57 UTC (rev 12063)
+++ cs/portal/trunk/northridge/SeismoWebPortal/views.py	2008-05-30 23:32:11 UTC (rev 12064)
@@ -107,7 +107,7 @@
             c.update(dict(
                 object = obj,
                 # menus/buttons
-                editable = not builtIn,
+                editable = obj.editable(builtIn),
                 duplicatable = obj.duplicatable,
                 deletable = not builtIn,
                 downloadableAsText = obj.downloadableAsText,



More information about the cig-commits mailing list