[cig-commits] r11911 - in cs/portal/trunk/northridge/SeismoWebPortal: . templates/SeismoWebPortal
leif at geodynamics.org
leif at geodynamics.org
Fri May 2 20:46:11 PDT 2008
Author: leif
Date: 2008-05-02 20:46:11 -0700 (Fri, 02 May 2008)
New Revision: 11911
Added:
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html
Removed:
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalogs.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodels.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/station_index.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stations.html
Modified:
cs/portal/trunk/northridge/SeismoWebPortal/cmt.py
cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_confirm_delete.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_upload.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_upload.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/settings.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/single_source_event_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_confirm_delete.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_confirm_delete.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_confirm_delete.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_detail.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_form.html
cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_upload.html
cs/portal/trunk/northridge/SeismoWebPortal/urls.py
cs/portal/trunk/northridge/SeismoWebPortal/views.py
Log:
Generate taskbar; fixed toolbar. Introduced pluggable layout.
Modified: cs/portal/trunk/northridge/SeismoWebPortal/cmt.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/cmt.py 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/cmt.py 2008-05-03 03:46:11 UTC (rev 11911)
@@ -67,11 +67,11 @@
cmtList = []
cmtSolution = None
for line in stream:
- tokens = line.split(':')
+ tokens = line.strip().split(':')
if len(tokens) == 1:
if tokens[0]:
cmtSolution = CMTSolution()
- pde = tokens[0].lstrip()
+ pde = tokens[0]
cmtSolution.dataSource = pde[0:4].strip()
cmtSolution.year = int(pde[4:8])
tokens = pde[8:].split()
Modified: cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/mezzanine.py 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,22 +1,25 @@
-from django.core.xheaders import populate_xheaders
from django.template import loader, RequestContext
from django import oldforms
from django.db.models import FileField
from django.contrib.auth.views import redirect_to_login
from django.template import RequestContext
-from django.http import Http404, HttpResponse, HttpResponseRedirect
+from django.http import Http404, HttpResponseRedirect
from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
-from django.core.xheaders import populate_xheaders
from django.core.paginator import ObjectPaginator, InvalidPage
from django.utils.translation import gettext
+from HTMLParser import HTMLParser
+import cmt
+import fformats
+import models
+
class Object(object):
@classmethod
- def create(cls, request, model, template_name=None,
+ def create(cls, request, template_name=None,
template_loader=loader, extra_context=None, post_save_redirect=None,
login_required=False, follow=None, context_processors=None):
"""
@@ -27,6 +30,7 @@
form
the form wrapper for the object
"""
+ model = cls.Model
if extra_context is None: extra_context = {}
if login_required and not request.user.is_authenticated():
return redirect_to_login(request.path)
@@ -76,10 +80,10 @@
c[key] = value()
else:
c[key] = value
- return HttpResponse(t.render(c))
+ return t.render(c)
- def update(self, request, model, object_id=None, slug=None,
- slug_field=None, template_name=None, template_loader=loader,
+ def update(self, request,
+ template_name=None, template_loader=loader,
extra_context=None, post_save_redirect=None,
login_required=False, follow=None, context_processors=None,
template_object_name='object'):
@@ -97,18 +101,8 @@
if login_required and not request.user.is_authenticated():
return redirect_to_login(request.path)
- # Look up the object to be edited
- lookup_kwargs = {}
- if object_id:
- lookup_kwargs['%s__exact' % model._meta.pk.name] = object_id
- elif slug and slug_field:
- lookup_kwargs['%s__exact' % slug_field] = slug
- else:
- raise AttributeError("Generic edit view must be called with either an object_id or a slug/slug_field")
- try:
- object = model.objects.get(**lookup_kwargs)
- except ObjectDoesNotExist:
- raise Http404, "No %s found for %s" % (model._meta.verbose_name, lookup_kwargs)
+ model = self.Model
+ object = self.obj
manipulator = model.ChangeManipulator(getattr(object, object._meta.pk.attname), follow=follow)
@@ -149,11 +143,9 @@
c[key] = value()
else:
c[key] = value
- response = HttpResponse(t.render(c))
- populate_xheaders(request, response, model, getattr(object, object._meta.pk.attname))
- return response
+ return t.render(c)
- def delete(self, request, model, post_delete_redirect,
+ def delete(self, request, post_delete_redirect,
object_id=None, slug=None, slug_field=None, template_name=None,
template_loader=loader, extra_context=None,
login_required=False, context_processors=None, template_object_name='object'):
@@ -173,18 +165,8 @@
if login_required and not request.user.is_authenticated():
return redirect_to_login(request.path)
- # Look up the object to be edited
- lookup_kwargs = {}
- if object_id:
- lookup_kwargs['%s__exact' % model._meta.pk.name] = object_id
- elif slug and slug_field:
- lookup_kwargs['%s__exact' % slug_field] = slug
- else:
- raise AttributeError("Generic delete view must be called with either an object_id or a slug/slug_field")
- try:
- object = model._default_manager.get(**lookup_kwargs)
- except ObjectDoesNotExist:
- raise Http404, "No %s found for %s" % (model._meta.app_label, lookup_kwargs)
+ model = self.Model
+ object = self.obj
if request.method == 'POST':
object.delete()
@@ -203,15 +185,13 @@
c[key] = value()
else:
c[key] = value
- response = HttpResponse(t.render(c))
- populate_xheaders(request, response, model, getattr(object, object._meta.pk.attname))
- return response
+ return t.render(c)
@classmethod
- def list(cls, request, queryset, paginate_by=None, page=None,
+ def list(cls, request, paginate_by=None, page=None,
allow_empty=False, template_name=None, template_loader=loader,
extra_context=None, context_processors=None, template_object_name='object',
- mimetype=None):
+ ):
"""
Generic list of objects.
@@ -244,7 +224,9 @@
the result number of the first object in the
object_list (1-indexed)
"""
+
if extra_context is None: extra_context = {}
+ queryset = cls.Model.objects.all()
queryset = queryset._clone()
if paginate_by:
paginator = ObjectPaginator(queryset, paginate_by)
@@ -288,13 +270,13 @@
model = queryset.model
template_name = "%s/%s_list.html" % (model._meta.app_label, model._meta.object_name.lower())
t = template_loader.get_template(template_name)
- return HttpResponse(t.render(c), mimetype=mimetype)
+ return t.render(c)
- def detail(self, request, queryset, object_id=None, slug=None,
- slug_field=None, template_name=None, template_name_field=None,
+ def detail(self, request,
+ template_name=None, template_name_field=None,
template_loader=loader, extra_context=None,
context_processors=None, template_object_name='object',
- mimetype=None):
+ ):
"""
Generic detail of an object.
@@ -304,17 +286,8 @@
the object
"""
if extra_context is None: extra_context = {}
- model = queryset.model
- if object_id:
- queryset = queryset.filter(pk=object_id)
- elif slug and slug_field:
- queryset = queryset.filter(**{slug_field: slug})
- else:
- raise AttributeError, "Generic detail view must be called with either an object_id or a slug/slug_field."
- try:
- obj = queryset.get()
- except ObjectDoesNotExist:
- raise Http404, "No %s found matching the query" % (model._meta.verbose_name)
+ model = self.Model
+ obj = self.obj
if not template_name:
template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
if template_name_field:
@@ -330,9 +303,235 @@
c[key] = value()
else:
c[key] = value
- response = HttpResponse(t.render(c), mimetype=mimetype)
- populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.name))
- return response
+ return t.render(c)
+ def __init__(self, objId):
+ self.objId = objId
+ self.obj = self._lookupObject()
+ return
+ def _lookupObject(self):
+ # Look up the object to be edited
+ object_id = self.objId
+ model = self.Model
+ lookup_kwargs = {}
+ lookup_kwargs['%s__exact' % model._meta.pk.name] = object_id
+ try:
+ object = model.objects.get(**lookup_kwargs)
+ except ObjectDoesNotExist:
+ raise Http404, "No %s found for %s" % (model._meta.verbose_name, lookup_kwargs)
+ #raise Http404, "No %s found for %s" % (model._meta.app_label, lookup_kwargs)
+ return object
+
+ @classmethod
+ def title(cls):
+ return cls.Model._meta.verbose_name
+
+ @classmethod
+ def upload(cls, request, template_loader=loader, post_save_redirect=None):
+ from forms import UploadManipulator
+
+ ModelClass = cls.Model
+
+ manipulator = UploadManipulator(cls.FileFormat())
+ help_visible = False #get_help_visible(request)
+
+ if request.method == 'POST':
+ new_data = request.POST.copy()
+ errors = {}
+ if new_data.has_key('show_help'):
+ help_visible = True
+ request.session['help_visible'] = help_visible
+ elif new_data.has_key('hide_help'):
+ help_visible = False
+ request.session['help_visible'] = help_visible
+ else:
+ new_data.update(request.FILES)
+ errors = manipulator.get_validation_errors(new_data)
+ if not errors:
+ manipulator.do_html2python(new_data)
+ obj = manipulator.save(new_data)
+ return HttpResponseRedirect(post_save_redirect)
+ else:
+ errors = new_data = {}
+
+ form = oldforms.FormWrapper(manipulator, new_data, errors)
+ template_name = "%s/%s_upload.html" % (ModelClass._meta.app_label, ModelClass._meta.object_name.lower())
+ t = template_loader.get_template(template_name)
+ c = RequestContext(request, {'form': form, 'help_visible': help_visible})
+ return t.render(c)
+
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+class Event(Object):
+ Model = models.Event
+ FileFormat = fformats.CMTSolutionFormat
+
+ @classmethod
+ def create(cls, request):
+ from forms import SingleSourceEventAddManipulator
+ return cls._manipulate(request, SingleSourceEventAddManipulator(), None)
+
+ def update(self, request):
+ from forms import SingleSourceEventChangeManipulator
+ event = self.obj
+ if not event.singleSource:
+ return super(Event, self).update(request)
+ return self._manipulate(request, SingleSourceEventChangeManipulator(event), event)
+
+ @classmethod
+ def _manipulate(cls, request, manipulator, event):
+ if request.method == 'POST':
+ new_data = request.POST.copy()
+ errors = manipulator.get_validation_errors(new_data)
+ if not errors:
+ manipulator.do_html2python(new_data)
+ new_data['class'] = None; del new_data['class']
+ new_data['object'] = None; del new_data['object']
+ new_data['action'] = None; del new_data['action']
+ obj = manipulator.save(new_data)
+ return HttpResponseRedirect("/specfem3dglobe/")
+ else:
+ new_data = manipulator.flatten_data()
+ errors = {}
+
+ form = oldforms.FormWrapper(manipulator, new_data, errors)
+ t = loader.get_template('SeismoWebPortal/single_source_event_form.html')
+ c = RequestContext(request, dict(
+ form = form,
+ action = request.path,
+ object = event,
+ ))
+ return t.render(c)
+
+ @classmethod
+ def search(cls, request):
+ import urllib2
+
+ if not request.GET.get('itype'):
+ t = loader.get_template('SeismoWebPortal/event_search.html')
+ c = RequestContext(request, {})
+ return t.render(c)
+
+ # Simply forward the search request to globalcmt.org.
+ query = request.GET.urlencode()
+ #url = "http://www.seismology.harvard.edu/cgi-bin/CMT3/form?" + query
+ url = "http://www.globalcmt.org/cgi-bin/globalcmt-cgi-bin/CMT3/form?" + query
+ src = urllib2.urlopen(url)
+
+ # Parse the results.
+ parser = HarvardCMTSearchResultsParser()
+ parser.feed(src.read())
+
+ parser.close()
+ src.close()
+
+ # Make sure secondary objects exist in the database.
+ for event in parser.cmtList:
+ # The try-get()-except shouldn't be necessary, but simply
+ # using save() causes Django to die in the database backend.
+ try:
+ ds = models.DataSource.objects.get(name=event.dataSource)
+ except models.DataSource.DoesNotExist:
+ ds = models.DataSource(event.dataSource)
+ ds.save()
+ try:
+ ds = models.Region.objects.get(name=event.regionName)
+ except:
+ r = models.Region(event.regionName)
+ r.save()
+
+ t = loader.get_template('SeismoWebPortal/event_search_results.html')
+ c = RequestContext(request,
+ {'event_list': parser.cmtList,
+ 'error': parser.error,
+ }
+ )
+ return t.render(c)
+
+
+# support code
+
+class HarvardCMTSearchResultsParser(HTMLParser):
+
+ def __init__(self):
+ HTMLParser.__init__(self)
+ self.state = 0
+ self.cmtList = []
+ self.error = None
+
+ def handle_starttag(self, tag, attrs):
+ if self.state == 0:
+ if tag == 'body':
+ self.state = 1
+ 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):
+ if tag == 'body':
+ self.state = 0
+ elif self.state == 3:
+ if tag == 'pre':
+ self.state = 1
+ return
+
+ def handle_data(self, data):
+ from StringIO import StringIO
+ 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 = cmt.CMTSolution.parse(StringIO(data))
+ elif self.state == -2:
+ self.error = data
+ self.state = -3
+ return
+
+
+class StationList(Object):
+ Model = models.StationList
+ FileFormat = fformats.StationListFormat
+
+
+class Specfem3DGlobeMesh(Object):
+ Model = models.Specfem3DGlobeMesh
+
+
+class Specfem3DGlobeParameters(Object):
+ Model = models.Specfem3DGlobeParameters
+
+
+class MineosModeCatalog(Object):
+ Model = models.MineosModeCatalog
+
+
+class MineosModel(Object):
+ Model = models.MineosModel
+ FileFormat = fformats.MineosModelFormat
+
+
+class MineosParameters(Object):
+ Model = models.MineosParameters
+
+
+classes = [
+ Event,
+ StationList,
+ Specfem3DGlobeMesh,
+ Specfem3DGlobeParameters,
+ MineosModeCatalog,
+ MineosModel,
+ MineosParameters,
+ ]
+
+
# end of file
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_confirm_delete.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_confirm_delete.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_confirm_delete.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,13 +1,10 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>delete event</h2>
-<form method="post" action="/specfem3dglobe/events/{{ object.id }}/delete/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="Event">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="delete">
<p>Are you sure you want to delete the event "{{ object }}"?
<p><input type="submit" value="Delete" />
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_detail.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,18 +1,7 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{{ object.name }}</h2>
<div class=toolbar>
- {% if object.singleSource %}
- <form action="edit/" method="get"><input type="submit" value="Edit..." /></form>
- {% else %}
- <form action="edit/" method="get"><input type="submit" value="Rename..." /></form>
- {% endif %}
-
- <form action="delete/" method="get"><input type="submit" value="Delete" /></form>
<a href="gearth.kml"><img src="/specfem3dglobe/pics/kml.icon.gif" title="View in Google Earth" alt="View in Google Earth"></a>
[<a href="CMTSOLUTION.txt">download as text</a>]
</div>
@@ -66,5 +55,3 @@
{% endif %}
{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,15 +1,14 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>rename event</h2>
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
{% endif %}
-<form method="post" action="/specfem3dglobe/events/{{ object.id }}/edit/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="Event">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="edit">
<div class=tab30ex>
@@ -24,5 +23,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,14 +1,4 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
-<div class=toolbar>
- <form action="search/" method="get"><input type="submit" value="Search..." /></form>
- <form action="create/" method="get"><input type="submit" value="New..." /></form>
- <form action="upload/" method="get"><input type="submit" value="Upload..." /></form>
-</div>
-
{% if object_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><col class=even></colgroup>
@@ -29,7 +19,7 @@
<tbody>
{% for object in object_list %}
<tr>
- <th><a href="{{ object.id }}/">{{ object.name }}</a></th>
+ <th><a href="/specfem3dglobe/?class=Event&object={{object.id}}">{{ object.name }}</a></th>
{% if object.singleSource %}
<td>point-source</td>
<td>{{ object.singleSource.beachball }}</td>
@@ -57,5 +47,3 @@
{% else %}
<p>You have no events.
{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>event search</h2>
{% if form.has_errors %}
@@ -12,6 +8,8 @@
{% endif %}
<form method="get" action=".">
+ <input type="hidden" name="class" value="Event">
+ <input type="hidden" name="action" value="search">
<div class=tab30ex>
@@ -103,5 +101,3 @@
</div>
</form>
-
-{% endblock %}
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-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_search_results.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>event search results</h2>
{% if error %}
@@ -30,7 +26,9 @@
<tr>
<td>
<!-- an inline events/add form, already filled-out -->
- <form method="post" action="../create/">
+ <form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="Event">
+ <input type="hidden" name="action" value="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 }}"/>
@@ -73,5 +71,3 @@
{% endif %}
<p><a href="http://www.globalcmt.org/">Powered by the Global CMT Project.</a>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_upload.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_upload.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/event_upload.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>upload event</h2>
<div class=toolbar>
@@ -16,7 +12,7 @@
</form>
</div>
-<form action="/specfem3dglobe/events/upload/" method="post" enctype="multipart/form-data">
+<form action="/specfem3dglobe/?class=Event&action=upload" method="post" enctype="multipart/form-data">
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
@@ -61,5 +57,3 @@
</div>
{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/home.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -3,19 +3,7 @@
{% block desktop %}
-<div class=taskbar>
- <ul>
- <li class="first selected"><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
+{{taskbar}}
<h1 class=titlebar>home</h1>
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/mineosmodecatalogs.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{% if object %}edit{% else %}new{% endif %} Mineos mode catalog</h2>
<div class=toolbar>
@@ -73,5 +69,3 @@
</div>
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalog_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,12 +1,4 @@
-{% extends "SeismoWebPortal/mineosmodecatalogs.html" %}
-
-{% block content %}
-
-<div class=toolbar>
- <form action="create/" method="get"><input type="submit" value="New..." /></form>
-</div>
-
{% if object_list %}
<table rules=cols class=cool width="100%">
@@ -47,5 +39,3 @@
{% else %}
<p>You have no Mineos mode catalogs.
{% endif %}
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalogs.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalogs.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodecatalogs.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,25 +0,0 @@
-
-{% extends "SeismoWebPortal/base.html" %}
-
-{% block desktop %}
-
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li class=selected><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
-
-<h1 class=titlebar>mineos mode catalogs</h1>
-
-{% block content %}
-{% endblock %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/mineosmodels.html" %}
-
-{% block content %}
-
<div class=toolbar>
<form action="upload/" method="get"><input type="submit" value="Upload..." /></form>
</div>
@@ -28,5 +24,3 @@
{% else %}
<p>You have no Mineos models.
{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_upload.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_upload.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodel_upload.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,11 +1,7 @@
-{% extends "SeismoWebPortal/mineosmodels.html" %}
-
-{% block content %}
-
<h2 class=titlebar>upload mineos model</h2>
-<form action="/specfem3dglobe/mineosmodels/upload/" method="POST" enctype="multipart/form-data">
+<form action="/specfem3dglobe/?class=MineosModel&action=upload" method="POST" enctype="multipart/form-data">
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
@@ -26,5 +22,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodels.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodels.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosmodels.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,25 +0,0 @@
-
-{% extends "SeismoWebPortal/base.html" %}
-
-{% block desktop %}
-
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li class=selected><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
-
-<h1 class=titlebar>mineos models</h1>
-
-{% block content %}
-{% endblock %}
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,25 +0,0 @@
-
-{% extends "SeismoWebPortal/base.html" %}
-
-{% block desktop %}
-
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li class=selected><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
-
-<h1 class=titlebar>mineos parameters</h1>
-
-{% block content %}
-{% endblock %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/mineosparameters.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{% if object %}edit{% else %}new{% endif %} Mineos parameters</h2>
<div class=toolbar>
@@ -14,15 +10,17 @@
<input type="submit" name="show_help" value="Show Help" />
{% endif %}
</form>
+</div>
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="MineosParameters">
{% if object %}
- <form action="../delete/" method="get"><input type="submit" value="Delete" /></form>
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="edit">
+ {% else %}
+ <input type="hidden" name="action" value="new">
{% endif %}
-</div>
-
-<form method="post" action=".">
-
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
{% endif %}
@@ -91,5 +89,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/mineosparameters_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,12 +1,4 @@
-{% extends "SeismoWebPortal/mineosparameters.html" %}
-
-{% block content %}
-
-<div class=toolbar>
- <form action="create/" method="get"><input type="submit" value="New..." /></form>
-</div>
-
{% if object_list %}
<table rules=cols class=cool width="100%">
@@ -50,6 +42,3 @@
{% else %}
<p>You have no Mineos parameters.
{% endif %}
-
-{% endblock %}
-
Added: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/pluggable.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -0,0 +1,13 @@
+
+{% extends "SeismoWebPortal/base.html" %}
+
+{% block desktop %}
+
+{{toolbar}}
+{{taskbar}}
+
+<h1 class=titlebar>{{title}}</h1>
+
+{{content}}
+
+{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/settings.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/settings.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/settings.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -3,19 +3,7 @@
{% block desktop %}
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li class=selected><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
+{{taskbar}}
{% block content %}
{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/single_source_event_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/single_source_event_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/single_source_event_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/events.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{% if object %}edit{% else %}new{% endif %} event</h2>
{% if form.has_errors %}
@@ -10,6 +6,13 @@
{% endif %}
<form method="post" action="{{ action }}">
+ <input type="hidden" name="class" value="Event">
+ {% if object %}
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="edit">
+ {% else %}
+ <input type="hidden" name="action" value="new">
+ {% endif %}
<div class=tab30ex>
@@ -120,5 +123,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_confirm_delete.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_confirm_delete.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_confirm_delete.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,13 +1,10 @@
-{% extends "SeismoWebPortal/meshes.html" %}
-
-{% block content %}
-
<h2 class=titlebar>delete mesh</h2>
-<form method="post" action="/specfem3dglobe/specfem3dglobemeshes/{{ object.id }}/delete/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="Specfem3DGlobeMesh">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="delete">
<p>Are you sure you want to delete the mesh "{{ object }}"?
<p><input type="submit" value="Delete" />
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobemesh_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/meshes.html" %}
-
-{% block content %}
-
<div class=toolbar>
<form action="create/" method="post">
<select name="nchunks" size="1">
@@ -82,5 +78,3 @@
{% else %}
<p>You have no meshes.
{% endif %}
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,25 +0,0 @@
-
-{% extends "SeismoWebPortal/base.html" %}
-
-{% block desktop %}
-
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li class=selected><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
-
-<h1 class=titlebar>specfem 3d globe parameters</h1>
-
-{% block content %}
-{% endblock %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_confirm_delete.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_confirm_delete.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_confirm_delete.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,13 +1,10 @@
-{% extends "SeismoWebPortal/specfem3dglobeparameters.html" %}
-
-{% block content %}
-
<h2 class=titlebar>delete specfem 3d globe parameters</h2>
-<form method="post" action="/specfem3dglobe/specfem3dglobeparameters/{{ object.id }}/delete/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="Specfem3DGlobeParameters">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="delete">
<p>Are you sure you want to delete the parameters "{{ object }}"?
<p><input type="submit" value="Delete" />
</form>
-{% endblock %}
-
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_detail.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/specfem3dglobeparameters.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{{ object.name }}</h2>
<div class=toolbar>
@@ -21,5 +17,3 @@
</div>
</div>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/specfem3dglobeparameters.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{% if object %}edit{% else %}new{% endif %} Specfem 3D Globe parameters</h2>
<div class=toolbar>
@@ -107,5 +103,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/specfem3dglobeparameters_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,12 +1,4 @@
-{% extends "SeismoWebPortal/specfem3dglobeparameters.html" %}
-
-{% block content %}
-
-<div class=toolbar>
- <form action="create/" method="get"><input type="submit" value="New..." /></form>
-</div>
-
{% if object_list %}
<table rules=groups>
@@ -43,5 +35,3 @@
{% else %}
<p>You have no Specfem 3D Globe parameters.
{% endif %}
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/station_index.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/station_index.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/station_index.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,40 +0,0 @@
-
-{% extends "SeismoWebPortal/stations.html" %}
-
-{% block content %}
-
-<div class=toolbar>
- <form action="upload/" method="get"><input type="submit" value="Upload..." /></form>
-</div>
-
-{% if station_lists %}
- <table border=0 rules=groups>
- <colgroup><col class=odd><col class=even><col class=odd></colgroup>
-
- <thead>
- <tr>
- <th>name</th>
- <th>number of stations</th>
- <th>downloads</th>
- </tr>
- </thead>
-
- <tbody>
- {% for station_list in station_lists %}
- <tr>
- <td><a href="{{ station_list.id }}/">{{ station_list.name }}</a></td>
- <td>{{ station_list.station_set.count }}</td>
- <td>
- <a href="{{ station_list.id }}/gearth.kml"><img src="/specfem3dglobe/pics/kml.icon.gif" title="View in Google Earth" alt="View in Google Earth"></a>
- [<a href="{{ station_list.id }}/stations.txt">text</a>]
- </td>
- </tr>
- {% endfor %}
- </tbody>
-
- </table>
-{% else %}
- <p>You have no stations.
-{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_confirm_delete.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_confirm_delete.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_confirm_delete.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,13 +1,10 @@
-{% extends "SeismoWebPortal/stations.html" %}
-
-{% block content %}
-
<h2 class=titlebar>delete station list</h2>
-<form method="post" action="/specfem3dglobe/stations/{{ object.id }}/delete/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="StationList">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="delete">
<p>Are you sure you want to delete the station list "{{ object }}"?
<p><input type="submit" value="Delete" />
</form>
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_detail.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_detail.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_detail.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,13 +1,7 @@
-{% extends "SeismoWebPortal/stations.html" %}
-
-{% block content %}
-
<h2 class=titlebar>{{ object.name }}</h2>
<div class=toolbar>
- <form action="edit/" method="get"><input type="submit" value="Rename..." /></form>
- <form action="delete/" method="get"><input type="submit" value="Delete" /></form>
<a href="gearth.kml"><img src="/specfem3dglobe/pics/kml.icon.gif" title="View in Google Earth" alt="View in Google Earth"></a>
[<a href="stations.txt">download as text</a>]
</div>
@@ -44,5 +38,3 @@
</table>
{% endif %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_form.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_form.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_form.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,15 +1,14 @@
-{% extends "SeismoWebPortal/stations.html" %}
-
-{% block content %}
-
<h2 class=titlebar>rename station list</h2>
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
{% endif %}
-<form method="post" action="/specfem3dglobe/stations/{{ object.id }}/edit/">
+<form method="post" action="/specfem3dglobe/">
+ <input type="hidden" name="class" value="StationList">
+ <input type="hidden" name="object" value="{{object.id}}">
+ <input type="hidden" name="action" value="edit">
<div class=tab30ex>
@@ -26,5 +25,3 @@
</div> <!-- tab30ex -->
</form>
-
-{% endblock %}
Copied: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html (from rev 11876, cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/station_index.html)
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html (rev 0)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_list.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -0,0 +1,30 @@
+
+{% if object_list %}
+ <table border=0 rules=groups>
+ <colgroup><col class=odd><col class=even><col class=odd></colgroup>
+
+ <thead>
+ <tr>
+ <th>name</th>
+ <th>number of stations</th>
+ <th>downloads</th>
+ </tr>
+ </thead>
+
+ <tbody>
+ {% for object in object_list %}
+ <tr>
+ <td><a href="/specfem3dglobe/?class=StationList&object={{object.id}}">{{ object.name }}</a></td>
+ <td>{{ object.station_set.count }}</td>
+ <td>
+ <a href="{{ object.id }}/gearth.kml"><img src="/specfem3dglobe/pics/kml.icon.gif" title="View in Google Earth" alt="View in Google Earth"></a>
+ [<a href="{{ object.id }}/stations.txt">text</a>]
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+
+ </table>
+{% else %}
+ <p>You have no station lists.
+{% endif %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_upload.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_upload.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stationlist_upload.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,8 +1,4 @@
-{% extends "SeismoWebPortal/stations.html" %}
-
-{% block content %}
-
<h2 class=titlebar>upload station list</h2>
<div class=toolbar>
@@ -16,7 +12,7 @@
</form>
</div>
-<form action="/specfem3dglobe/stations/upload/" method="POST" enctype="multipart/form-data">
+<form action="/specfem3dglobe/?class=StationList&action=upload" method="POST" enctype="multipart/form-data">
{% if form.has_errors %}
<p><span class=error>Please correct the following error{{ form.error_dict|pluralize }}.</span>
@@ -82,5 +78,3 @@
</div>
{% endif %}
-
-{% endblock %}
Deleted: cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stations.html
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stations.html 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/templates/SeismoWebPortal/stations.html 2008-05-03 03:46:11 UTC (rev 11911)
@@ -1,25 +0,0 @@
-
-{% extends "SeismoWebPortal/base.html" %}
-
-{% block desktop %}
-
-<div class=taskbar>
- <ul>
- <li class=first><a href="/specfem3dglobe/">home</a>
- <li><a href="/specfem3dglobe/specfem3dglobeparameters/">3D</a>
- <li><a href="/specfem3dglobe/mineosparameters/">1D</a>
- <li><a href="/specfem3dglobe/mineosmodecatalogs/">modes</a>
- <li><a href="/specfem3dglobe/mineosmodels/">1D models</a>
- <li><a href="/specfem3dglobe/events/">events</a>
- <li class=selected><a href="/specfem3dglobe/stations/">stations</a>
- <li><a href="/specfem3dglobe/specfem3dglobemeshes/">meshes</a>
- <li><a href="/specfem3dglobe/registration/">profile</a>
- </ul>
-</div>
-
-<h1 class=titlebar>stations</h1>
-
-{% block content %}
-{% endblock %}
-
-{% endblock %}
Modified: cs/portal/trunk/northridge/SeismoWebPortal/urls.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/urls.py 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/urls.py 2008-05-03 03:46:11 UTC (rev 11911)
@@ -130,7 +130,6 @@
(r'^events/(?P<object_id>\d+)/gearth\.kml$','SeismoWebPortal.views.event_detail_gearth'),
# stations
- (r'^stations/$', 'SeismoWebPortal.views.station_index'),
(r'^stations/upload/$', 'SeismoWebPortal.views.upload', upload_args(models.StationList)),
(r'^stations/(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', {'queryset': models.StationList.objects.all()}),
(r'^stations/(?P<object_id>\d+)/edit/$', 'django.views.generic.create_update.update_object', cu_args(models.StationList, 'stations')),
Modified: cs/portal/trunk/northridge/SeismoWebPortal/views.py
===================================================================
--- cs/portal/trunk/northridge/SeismoWebPortal/views.py 2008-05-02 23:57:15 UTC (rev 11910)
+++ cs/portal/trunk/northridge/SeismoWebPortal/views.py 2008-05-03 03:46:11 UTC (rev 11911)
@@ -15,7 +15,6 @@
import mezzanine
import os, os.path
-from HTMLParser import HTMLParser
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -34,50 +33,73 @@
if request.user.is_anonymous():
return render_to_response('SeismoWebPortal/splash.html', {},
RequestContext(request, {}))
- if not request.GET:
+
+ className = request.REQUEST.get('class')
+ if className is None:
return render_to_response('SeismoWebPortal/home.html',
{},
- RequestContext(request, {}))
+ RequestContext(request, dict(taskbar = taskbar('home'))))
try:
- className = request.GET['class']
- except KeyError:
- raise Http404
-
- try:
- Class = getattr(models, className)
+ Class = getattr(mezzanine, className)
except AttributeError:
raise Http404
+
+ ret = None
+ obj = None
- obj = mezzanine.Object()
- objId = request.GET.get('object')
+ objId = request.REQUEST.get('object')
+ action = request.REQUEST.get('action')
if objId is None:
- return obj.list(request, Class.objects.all())
+ if action is None:
+ ret = Class.list(request)
+ elif action == 'new':
+ ret = Class.create(request)
+ elif action == 'upload':
+ ret = Class.upload(request, post_save_redirect = "/specfem3dglobe/")
+ elif action == 'search':
+ ret = Class.search(request)
- try:
- objId = int(objId)
- except ValueError:
- raise Http404
+ else:
+ try:
+ objId = int(objId)
+ except ValueError:
+ raise Http404
- # NYI: mezzanine.Object instantiation belongs here.
+ obj = Class(objId)
- action = request.GET.get('action')
- if action is None:
- return obj.detail(request, Class.objects.all(),
- object_id = objId)
+ if action is None:
+ ret = obj.detail(request)
+ elif action == 'edit':
+ ret = obj.update(request)
+ elif action == 'delete':
+ ret = obj.delete(request, "/specfem3dglobe/")
- if action == 'edit':
- return obj.update(request, Class,
- object_id = objId)
+ if ret is None:
+ raise Http404
- if action == 'delete':
- return obj.delete(request, Class, "/",
- object_id = objId)
+ if isinstance(ret, HttpResponse):
+ return ret
+ from django.template import loader, Context
+ response = HttpResponse(mimetype='text/html')
+ t = loader.get_template('SeismoWebPortal/pluggable.html')
+ c = RequestContext(request, dict(
+ toolbar = toolbar(Class, obj),
+ taskbar = taskbar(Class),
+ title = Class.title(),
+ content = ret,
+ ))
+ response.write(t.render(c))
+ return response
+
+
+def commentOnly():
# Brainstorm: fixed-target action buttons/menus
# * create/new
# * update/edit/(rename)
+ # * duplicate
# * delete
# * upload
# * search
@@ -87,10 +109,45 @@
# * save [live edit?]
# * undo [trash?]
# * help [probably css collapsable]
+ return
- raise Http404
+def toolbar(Class, obj):
+ from StringIO import StringIO
+ html = StringIO()
+ print >>html, '<div class=toolbar><ul>'
+ for action in ['new', 'upload', 'search']:
+ print >>html, ('<a href="/specfem3dglobe/?class=%s&action=%s">%s</a>' %
+ (Class.__name__, action, action))
+ if obj:
+ for action in ['edit', 'delete']:
+ print >>html, ('<a href="/specfem3dglobe/?class=%s&object=%d&action=%s">%s</a>' %
+ (Class.__name__, obj.obj.id, action, action))
+ print >>html, '</ul></div>'
+ return html.getvalue()
+
+def taskbar(selected):
+ from StringIO import StringIO
+ html = StringIO()
+ print >>html, '<div class=taskbar><ul>'
+ print >>html, ('<li class="%s"><a href="/specfem3dglobe/">home</a></li>' %
+ (selected == "home" and "selected" or ""))
+ for i, Class in enumerate(mezzanine.classes):
+ cssClass = ""
+ if Class is selected:
+ cssClass = "selected"
+ url = '/specfem3dglobe/?class=%s' % Class.__name__
+ title = Class.title()
+ print >>html, ('<li class="%s"><a href="%s">%s</a></li>' %
+ (cssClass, url, title)
+ )
+ print >>html, ('<li class="%s"><a href="/specfem3dglobe/registration/">profile</a></li>' %
+ (selected == "profile" and "selected" or ""))
+ print >>html, '</ul></div>'
+ return html.getvalue()
+
+
def par_file(request, sim_id):
from django.template import loader, Context
@@ -388,7 +445,7 @@
# Populate the FormWrapper.
form = forms.FormWrapper(manipulator, new_data, errors, edit_inline = True)
- return render_to_response(template, { 'form': form }, RequestContext(request, {}))
+ return render_to_response(template, { 'form': form, 'taskbar': taskbar('profile') }, RequestContext(request, {}))
def notify_managers_of_new_user(request, user):
@@ -439,7 +496,8 @@
form.save(new_data)
request.user.message_set.create(message="Your password has been changed.")
return HttpResponseRedirect('/specfem3dglobe/')
- return render_to_response(template_name, {'form': forms.FormWrapper(form, new_data, errors)},
+ return render_to_response(template_name, {'form': forms.FormWrapper(form, new_data, errors),
+ 'taskbar': taskbar('profile')},
context_instance=RequestContext(request))
password_change = login_required(password_change)
@@ -528,132 +586,6 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-def event_search(request):
- import urllib2
-
- if not request.GET:
- return render_to_response('SeismoWebPortal/event_search.html',
- {},
- RequestContext(request, {}))
-
- # Simply forward the search request to globalcmt.org.
- query = request.GET.urlencode()
- #url = "http://www.seismology.harvard.edu/cgi-bin/CMT3/form?" + query
- url = "http://www.globalcmt.org/cgi-bin/globalcmt-cgi-bin/CMT3/form?" + query
- src = urllib2.urlopen(url)
-
- # Parse the results.
- parser = HarvardCMTSearchResultsParser()
- parser.feed(src.read())
-
- parser.close()
- src.close()
-
- # Make sure secondary objects exist in the database.
- for event in parser.cmtList:
- # The try-get()-except shouldn't be necessary, but simply
- # using save() causes Django to die in the database backend.
- try:
- ds = models.DataSource.objects.get(name=event.dataSource)
- except models.DataSource.DoesNotExist:
- ds = models.DataSource(event.dataSource)
- ds.save()
- try:
- ds = models.Region.objects.get(name=event.regionName)
- except:
- r = models.Region(event.regionName)
- r.save()
-
- return render_to_response('SeismoWebPortal/event_search_results.html',
- {'event_list': parser.cmtList,
- 'error': parser.error},
- RequestContext(request, {}))
-
-
-def manipulate_event(request, action=None, object_id=None):
- from forms import SingleSourceEventAddManipulator, SingleSourceEventChangeManipulator
-
- if action == "create":
- manipulator = SingleSourceEventAddManipulator()
- event = None
- elif action == "edit":
- event = get_object_or_404(models.Event, id=object_id)
- if not event.singleSource:
- return create_update.update_object(
- request,
- models.Event,
- object_id,
- post_save_redirect = '/specfem3dglobe/events/',
- )
- manipulator = SingleSourceEventChangeManipulator(event)
- else:
- raise Http404
-
- if request.method == 'POST':
- new_data = request.POST.copy()
- errors = manipulator.get_validation_errors(new_data)
- if not errors:
- manipulator.do_html2python(new_data)
- new_event = manipulator.save(new_data)
- url = "/specfem3dglobe/events/%i/" % new_event.id
- return HttpResponseRedirect(url)
- else:
- new_data = manipulator.flatten_data()
- errors = {}
-
- form = forms.FormWrapper(manipulator, new_data, errors)
- return render_to_response('SeismoWebPortal/single_source_event_form.html',
- {'form': form,
- 'action': request.path,
- 'object': event,
- },
- RequestContext(request, {}))
-
-manipulate_event = login_required(manipulate_event)
-
-
-def upload(request, ModelClass):
- import fformats
- from forms import UploadManipulator
- from os.path import dirname
-
- formats = {
- models.Event: fformats.CMTSolutionFormat,
- models.StationList: fformats.StationListFormat,
- models.MineosModel: fformats.MineosModelFormat,
- }
-
- manipulator = UploadManipulator(formats[ModelClass]())
- help_visible = get_help_visible(request)
-
- if request.method == 'POST':
- new_data = request.POST.copy()
- errors = {}
- if new_data.has_key('show_help'):
- help_visible = True
- request.session['help_visible'] = help_visible
- elif new_data.has_key('hide_help'):
- help_visible = False
- request.session['help_visible'] = help_visible
- else:
- new_data.update(request.FILES)
- errors = manipulator.get_validation_errors(new_data)
- if not errors:
- manipulator.do_html2python(new_data)
- obj = manipulator.save(new_data)
- url = "%s/%i/" % (dirname(dirname(request.path)), obj.id)
- return HttpResponseRedirect(url)
- else:
- errors = new_data = {}
-
- form = forms.FormWrapper(manipulator, new_data, errors)
- template_name = "%s/%s_upload.html" % (ModelClass._meta.app_label, ModelClass._meta.object_name.lower())
- return render_to_response(template_name,
- {'form': form, 'help_visible': help_visible},
- RequestContext(request, {}))
-upload = login_required(upload)
-
-
def event_detail_gearth(request, object_id):
event = get_object_or_404(models.Event, id=object_id)
return gearth_object_list(request,
@@ -686,51 +618,6 @@
return response
-# support code
-
-
-class HarvardCMTSearchResultsParser(HTMLParser):
-
- def __init__(self):
- HTMLParser.__init__(self)
- self.state = 0
- self.cmtList = []
- self.error = None
-
- def handle_starttag(self, tag, attrs):
- if self.state == 0:
- if tag == 'body':
- self.state = 1
- 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):
- if tag == 'body':
- self.state = 0
- elif self.state == 3:
- if tag == 'pre':
- self.state = 1
- return
-
- def handle_data(self, data):
- 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 = cmt.CMTSolution.parse(data)
- elif self.state == -2:
- self.error = data
- self.state = -3
- return
-
-
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Stations
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the cig-commits
mailing list