[cig-commits] r7789 - in cs/pythia/trunk: cig/web/seismo/events cig/web/seismo/events/templates/events cig/web/seismo/stations opal/components opal/controllers opal/core/handlers opal/db opal/sites opal/utils/translation opal/views

leif at geodynamics.org leif at geodynamics.org
Wed Aug 8 17:36:02 PDT 2007


Author: leif
Date: 2007-08-08 17:36:01 -0700 (Wed, 08 Aug 2007)
New Revision: 7789

Added:
   cs/pythia/trunk/cig/web/seismo/events/templates/events/base.html
Modified:
   cs/pythia/trunk/cig/web/seismo/events/__init__.py
   cs/pythia/trunk/cig/web/seismo/events/components.py
   cs/pythia/trunk/cig/web/seismo/events/parsers.py
   cs/pythia/trunk/cig/web/seismo/stations/__init__.py
   cs/pythia/trunk/opal/components/WebComponent.py
   cs/pythia/trunk/opal/controllers/FormController.py
   cs/pythia/trunk/opal/core/handlers/base.py
   cs/pythia/trunk/opal/db/queries.py
   cs/pythia/trunk/opal/sites/WebSite.py
   cs/pythia/trunk/opal/utils/translation/trans_real.py
   cs/pythia/trunk/opal/views/View.py
Log:
Debugged recent changes.  The 'events' applet is now -- once again --
fully functional.


Modified: cs/pythia/trunk/cig/web/seismo/events/__init__.py
===================================================================
--- cs/pythia/trunk/cig/web/seismo/events/__init__.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/cig/web/seismo/events/__init__.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -1,2 +1,2 @@
 
-from EventBrowser import EventBrowser
+#from components import EventBrowser

Modified: cs/pythia/trunk/cig/web/seismo/events/components.py
===================================================================
--- cs/pythia/trunk/cig/web/seismo/events/components.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/cig/web/seismo/events/components.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -45,9 +45,9 @@
 from models import Event, Source, DataSource, Region
 from parsers import HarvardCMTSearchResultsParser
 
-from cig.seismo.events import CMTSolution
 from opal import forms
 from opal.components import WebComponent
+from opal.db.queries import primaryInquirer
 from opal.http import HttpResponseRedirect
 from opal.shortcuts import render_to_response
 from opal.template.context import RequestContext
@@ -56,11 +56,14 @@
 class EventBrowser(WebComponent):
 
 
+    name = "events"
+
+
     models = [Event, Source, DataSource, Region]
 
 
-    def __init__(self, home):
-        WebComponent.__init__()
+    def __init__(self, home="/"):
+        WebComponent.__init__(self)
 
         self.home = home # '/specfem3dglobe/events/'
         
@@ -85,7 +88,7 @@
     def eventList(self, request):
         return self.genericObjectList(
             request,
-            queryset = Event.user_objects.all(),
+            Event.user_objects.all(),
             allow_empty = True,
             )
 
@@ -93,16 +96,16 @@
     def eventDetail(self, request, object_id):
         return self.genericObjectDetail(
             request,
-            object_id = object_id,
             queryset = Event.user_objects.all(),
+            query = primaryInquirer.newQuery(object_id),
             )
+    
 
-
     def editEvent(self, request, object_id):
         return self.genericUpdateObject(
             request,
-            object_id = object_id,
             model = Event,
+            query = primaryInquirer.newQuery(object_id),
             post_save_redirect = self.home,
             follow = { 'user': False },
             )
@@ -111,8 +114,8 @@
     def deleteEvent(self, request, object_id):
         return self.genericDeleteObject(
             request,
-            object_id = object_id,
             model = Event,
+            query = primaryInquirer.newQuery(object_id),
             post_delete_redirect = self.home,
             )
 
@@ -169,7 +172,8 @@
             if not errors:
                 manipulator.do_html2python(new_data)
                 new_event = manipulator.save(new_data, request.user)
-                url = "%s/%i/" % (dirname(dirname(request.path)), new_event.id)
+                #url = "%s/%i/" % (dirname(dirname(request.path)), new_event.id)
+                url = self.home
                 return HttpResponseRedirect(url)
         else:
             errors = new_data = {}
@@ -193,7 +197,8 @@
             if not errors:
                 manipulator.do_html2python(new_data)
                 new_event = manipulator.save(new_data, request.user)
-                url = "%s/%i/" % (dirname(dirname(request.path)), new_event.id)
+                #url = "%s/%i/" % (dirname(dirname(request.path)), new_event.id)
+                url = self.home
                 return HttpResponseRedirect(url)
         else:
             errors = new_data = {}
@@ -209,15 +214,16 @@
     def sourceDetail(self, request, object_id):
         return self.genericObjectDetail(
             request,
-            queryset = Source.objects.all()
+            queryset = Source.objects.all(),
+            query = primaryInquirer.newQuery(object_id),
             )
 
 
     def editSource(self, request, object_id):
         return self.genericUpdateObject(
             request,
-            object_id = object_id,
             model = Source,
+            query = primaryInquirer.newQuery(object_id),
             post_save_redirect = self.home,
             follow = { 'user': False },
             )
@@ -226,8 +232,8 @@
     def deleteSource(self, request, object_id):
         return self.genericDeleteObject(
             request,
-            object_id = object_id,
             model = Source,
+            query = primaryInquirer.newQuery(object_id),
             post_delete_redirect = self.home,
             )
 

Modified: cs/pythia/trunk/cig/web/seismo/events/parsers.py
===================================================================
--- cs/pythia/trunk/cig/web/seismo/events/parsers.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/cig/web/seismo/events/parsers.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -43,6 +43,7 @@
 
 
 from HTMLParser import HTMLParser
+from cig.seismo.events import CMTSolution
 
 
 class HarvardCMTSearchResultsParser(HTMLParser):

Added: cs/pythia/trunk/cig/web/seismo/events/templates/events/base.html
===================================================================
--- cs/pythia/trunk/cig/web/seismo/events/templates/events/base.html	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/cig/web/seismo/events/templates/events/base.html	2007-08-09 00:36:01 UTC (rev 7789)
@@ -0,0 +1,9 @@
+<html>
+    <head>
+        <title>Events</title>
+    </head>
+    <body>
+        {% block content %}
+        {% endblock %}
+    </body>
+</html>

Modified: cs/pythia/trunk/cig/web/seismo/stations/__init__.py
===================================================================
--- cs/pythia/trunk/cig/web/seismo/stations/__init__.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/cig/web/seismo/stations/__init__.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -1,2 +1,2 @@
 
-from StationBrowser import StationBrowser
+#from components import StationBrowser

Modified: cs/pythia/trunk/opal/components/WebComponent.py
===================================================================
--- cs/pythia/trunk/opal/components/WebComponent.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/components/WebComponent.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -18,6 +18,7 @@
 from opal.template import Context, RequestContext, loader
 from opal import http
 
+
 class WebComponent(Component):
 
 
@@ -46,47 +47,56 @@
 
     # generic views
 
-    def genericObjectList(request, **kwds):
-        view = views.ListView(**kwds)
+    def genericObjectList(self, request, queryset, **kwds):
+        view = views.ListView(queryset = queryset, **kwds)
         return view.response(request)
 
 
-    def genericObjectDetail(request, **kwds):
-        view = views.DetailView(**kwds)
+    def genericObjectDetail(self, request, queryset, query, **kwds):
+        # NYI: Unlike Django's object_detail() function, this discards
+        # 'queryset'.  This may not be appropriate, even though this
+        # is a view of a single object: e.g., if the queryset is a
+        # per-user query, then perhaps 'Http404' should be raised.
+        # OTOH, in Django's create_update functions (replicated in the
+        # CRUD stuff below), 'model' seems to be good enough; which
+        # begs the question as to why this method doesn't take a
+        # 'model' instead of a 'queryset'.
+        model = queryset.model
+        view = views.DetailView(model, query, **kwds)
         return view.response(request)
 
 
     # generic views -- CRUD
 
-    def genericCreateObject(request, post_save_redirect=None, follow=None, **kwds):
+    def genericCreateObject(self, request, model, query, post_save_redirect=None, follow=None, **kwds):
         controller = controllers.CreationController(
             post_redirect = post_save_redirect,
             follow = follow,
             )
-        view = views.DetailView(controller = controller, **kwds)
+        view = views.DetailView(model, query, controller = controller, **kwds)
         return view.response(request)
 
 
-    def genericUpdateObject(request, post_save_redirect=None, follow=None, **kwds):
+    def genericUpdateObject(self, request, model, query, post_save_redirect=None, follow=None, **kwds):
         controller = controllers.UpdateController(
             post_redirect = post_save_redirect,
             follow = follow,
             )
-        view = views.DetailView(controller = controller, **kwds)
+        view = views.DetailView(model, query, controller = controller, **kwds)
         return view.response(request)
 
 
-    def genericDeleteObject(request, post_delete_redirect, **kwds):
+    def genericDeleteObject(self, request, model, query, post_delete_redirect, **kwds):
         controller = controllers.DeletionController(
             post_redirect = post_delete_redirect,
             )
-        view = views.DetailView(controller = controller, **kwds)
+        view = views.DetailView(model, query, controller = controller, **kwds)
         return view.response(request)
 
 
     # errors
 
-    def handler404(request, template_name='404.html'):
+    def handler404(self, request, template_name='404.html'):
         """
         Default 404 handler, which looks for the requested URL in the redirects
         table, redirects if found, and displays 404 page if not redirected.
@@ -100,7 +110,7 @@
         return http.HttpResponseNotFound(t.render(RequestContext(request, {'request_path': request.path})))
 
 
-    def handler500(request, template_name='500.html'):
+    def handler500(self, request, template_name='500.html'):
         """
         500 error handler.
 

Modified: cs/pythia/trunk/opal/controllers/FormController.py
===================================================================
--- cs/pythia/trunk/opal/controllers/FormController.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/controllers/FormController.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -31,7 +31,7 @@
         self.errors = {}
 
 
-    def createGlobalContext(self):
+    def globalContext(self):
         context = dict()
         form = self.newFormWrapper()
         context['form'] = form

Modified: cs/pythia/trunk/opal/core/handlers/base.py
===================================================================
--- cs/pythia/trunk/opal/core/handlers/base.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/core/handlers/base.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -61,9 +61,9 @@
                 return response
 
         site = settings
-        resolver = site.resolve
+        resolver = site.urlResolver()
         try:
-            callback, callback_args, callback_kwargs = resolver.resolve(path)
+            callback, callback_args, callback_kwargs = resolver.resolve(request.path)
 
             # Apply view middleware
             for middleware_method in self._view_middleware:

Modified: cs/pythia/trunk/opal/db/queries.py
===================================================================
--- cs/pythia/trunk/opal/db/queries.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/db/queries.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -30,9 +30,11 @@
 
 
 class Inquirer(object):
+
+    Query = Query
     
     def newQuery(self, key):
-        return self.Query(fieldName, key)
+        return self.Query(self.fieldName, key)
 
     def __init__(self, fieldName):
         self.fieldName = fieldName

Modified: cs/pythia/trunk/opal/sites/WebSite.py
===================================================================
--- cs/pythia/trunk/opal/sites/WebSite.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/sites/WebSite.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -149,7 +149,7 @@
     TEMPLATE_LOADERS = pyre.list("template-loaders", default=[
         'opal.template.loaders.filesystem.load_template_source',
         'opal.template.loaders.app_directories.load_template_source',
-        'opal.template.loaders.eggs.load_template_source',
+        #'opal.template.loaders.eggs.load_template_source',
         ])
     TEMPLATE_LOADERS.meta['tip'] = """List of callables that know how to import templates from various sources. See the comments in opal/core/template/loader.py for interface documentation."""
 
@@ -382,11 +382,6 @@
     ##########
 
 
-    def resolve(self, path):
-        resolver = self.urlResolver()
-        return resolver.resolve(path)
-
-
     def urlResolver(self):
         from merlin import loadObject
         from opal.core import urlresolvers

Modified: cs/pythia/trunk/opal/utils/translation/trans_real.py
===================================================================
--- cs/pythia/trunk/opal/utils/translation/trans_real.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/utils/translation/trans_real.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -162,11 +162,7 @@
             res = _merge(projectpath)
 
         for appname in settings.INSTALLED_APPS:
-            p = appname.rfind('.')
-            if p >= 0:
-                app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:])
-            else:
-                app = __import__(appname, {}, {}, [])
+            app = __import__(appname, {}, {}, ['__name__'])
 
             apppath = os.path.join(os.path.dirname(app.__file__), 'locale')
 

Modified: cs/pythia/trunk/opal/views/View.py
===================================================================
--- cs/pythia/trunk/opal/views/View.py	2007-08-08 22:55:39 UTC (rev 7788)
+++ cs/pythia/trunk/opal/views/View.py	2007-08-09 00:36:01 UTC (rev 7789)
@@ -22,16 +22,16 @@
         self.model = model
         if controller is None:
             from opal.controllers import NoController
-            self.controller = NoController
+            self.controller = NoController()
         else:
             self.controller = controller
         self.controller.view = self
         if template_name:
             self.template_name = template_name
         else:
-            template_name = "%s/%s_%s.html" % (self.model._meta.app_label,
-                                               self.model._meta.object_name.lower(),
-                                               self.templateNameTag)
+            self.template_name = "%s/%s_%s.html" % (self.model._meta.app_label,
+                                                    self.model._meta.object_name.lower(),
+                                                    self.templateNameTag)
         if template_loader is None:
             from opal.template import loader
             self.template_loader = loader



More information about the cig-commits mailing list