[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