[cig-commits] r7821 - in cs/pythia/trunk/opal: components template

leif at geodynamics.org leif at geodynamics.org
Wed Aug 15 02:54:40 PDT 2007


Author: leif
Date: 2007-08-15 02:54:39 -0700 (Wed, 15 Aug 2007)
New Revision: 7821

Modified:
   cs/pythia/trunk/opal/components/Editor.py
   cs/pythia/trunk/opal/components/ListEditor.py
   cs/pythia/trunk/opal/components/ObjectEditor.py
   cs/pythia/trunk/opal/components/WebComponent.py
   cs/pythia/trunk/opal/components/__init__.py
   cs/pythia/trunk/opal/template/loader.py
Log:
Worked on the unearthed generic CRUD editors.  Started using Cheetah
instead of Django's template system.


Modified: cs/pythia/trunk/opal/components/Editor.py
===================================================================
--- cs/pythia/trunk/opal/components/Editor.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/components/Editor.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -11,7 +11,7 @@
 #
 
 
-from WebComponent import UnearthedComponent
+from WebComponent import WebComponent
 
 
 class Action(object):
@@ -20,8 +20,12 @@
         self.name = name
 
 
-class Editor(UnearthedComponent):
+class Editor(WebComponent):
 
+
+    Action = Action
+
+
     def __init__(self, **attrs):
         super(Editor, self).__init__(**attrs)
         self.Model = attrs['Model']
@@ -44,11 +48,10 @@
 
 
     def subcomponent(self, slug, **attrs):
-        from django.http import Http404
         try:
             model = self.manager.get(slug = slug)
         except self.Model.DoesNotExist:
-            raise Http404
+            raise self.Http404
         return self.createSubcomponent(slug, model=model, **attrs)
 
 

Modified: cs/pythia/trunk/opal/components/ListEditor.py
===================================================================
--- cs/pythia/trunk/opal/components/ListEditor.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/components/ListEditor.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -17,22 +17,26 @@
 class ListEditor(Editor):
 
 
+    from ObjectEditor import ObjectEditor
+
+
     def __init__(self, **attrs):
         super(ListEditor, self).__init__(**attrs)
         self.allowEmpty = attrs.get('allowEmpty', True)
-        self.SubEditor = attrs.get('SubEditor', ObjectEditor)
+        self.SubEditor = attrs.get('SubEditor', self.ObjectEditor)
 
 
     def getView(self, request):
-        from django.views.generic.create_update import create_object
         action = request.GET.get('action')
         if action is None:
             response = self.getListView(request)
         elif action == 'new':
-            response = create_object(request, self.Model,
-                                     extra_context = self.getFormContext(request),
-                                     post_save_redirect = self.parentURL,
-                                     )
+            response = self.genericCreateObject(
+                request,
+                self.Model,
+                extra_context = self.getFormContext(request),
+                post_save_redirect = self.parentURL,
+                )
         else:
             self.unknownAction(action, request)
             response = self.getListView(request)
@@ -40,14 +44,15 @@
 
 
     def getListView(self, request):
-        from django.views.generic.list_detail import object_list
-        return object_list(request, self.querySet(),
-                           allow_empty = self.allowEmpty,
-                           extra_context = self.context,
-                           )
+        return self.genericObjectList(
+            request,
+            self.querySet(),
+            allow_empty = self.allowEmpty,
+            extra_context = self.context,
+            )
 
     def getActions(self):
-        return [Action('new', "New")]
+        return [self.Action('new', "New")]
 
 
 # end of file

Modified: cs/pythia/trunk/opal/components/ObjectEditor.py
===================================================================
--- cs/pythia/trunk/opal/components/ObjectEditor.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/components/ObjectEditor.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -23,21 +23,25 @@
 
 
     def getView(self, request):
-        from django.views.generic.create_update import delete_object, update_object
         id = self.model.id
         action = request.GET.get('action')
         if action is None:
             response = self.getDetailView(request)
         elif action == 'edit':
-            response = update_object(request, self.Model,
-                                     object_id = id,
-                                     extra_context = self.getFormContext(request),
-                                     )
+            response = self.genericUpdateObject(
+                request,
+                self.Model,
+                object_id = id,
+                extra_context = self.getFormContext(request),
+                )
         elif action == 'delete':
-            response = delete_object(request, self.Model, self.parentURL,
-                                     object_id = id,
-                                     extra_context = self.getFormContext(request),
-                                     )
+            response = self.genericDeleteObject(
+                request,
+                self.Model,
+                self.parentURL,
+                object_id = id,
+                extra_context = self.getFormContext(request),
+                )
         else:
             self.unknownAction(action, request)
             response = self.getDetailView(request)
@@ -45,11 +49,12 @@
 
 
     def getDetailView(self, request):
-        from django.views.generic.list_detail import object_detail
-        return object_detail(request, self.querySet(),
-                             object_id = self.model.id,
-                             extra_context = self.context,
-                             )
+        return self.genericObjectDetail(
+            request,
+            self.querySet(),
+            object_id = self.model.id,
+            extra_context = self.context,
+            )
 
 
     def getActions(self):

Modified: cs/pythia/trunk/opal/components/WebComponent.py
===================================================================
--- cs/pythia/trunk/opal/components/WebComponent.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/components/WebComponent.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -12,6 +12,7 @@
 
 
 from pyre.components import Component
+from pyre.inventory.ConfigurableClass import ConfigurableClass
 import opal.views as views
 import opal.controllers as controllers
 
@@ -19,6 +20,32 @@
 from opal import http
 
 
+class Property(object):
+    def __init__(self, **attrs):
+        self.__dict__.update(attrs)
+
+
+component = Property
+
+
+class WebComponentClass(ConfigurableClass):
+
+
+    def __init__(Class, name, bases, dct):
+        ConfigurableClass.__init__(Class, name, bases, dct)
+
+        subcomponentRegistry = {}
+
+        for name, prop in [kv for kv in dct.iteritems()
+                           if isinstance(kv[1], Property)]:
+            slug = prop.attrs.setdefault('slug', name)
+            subcomponentRegistry[slug] = prop
+
+        Class.subcomponentRegistry = subcomponentRegistry
+
+        return
+
+
 class WebComponent(Component):
 
 
@@ -123,47 +150,19 @@
         return http.HttpResponseServerError(t.render(Context({})))
 
 
-#------------------------------------------------------------------------
-# unearthed stuff
+    #------------------------------------------------------------------------
+    # unearthed stuff
 
 
-class Property(object):
-    def __init__(self, **attrs):
-        self.attrs = attrs
+    __metaclass__ = WebComponentClass
 
 
-component = Property
+    #from cig.web.views import View
+    from opal.http import Http404
 
 
-class ComponentClass(type):
-
-
-    def __init__(Class, name, bases, dct):
-        type.__init__(name, bases, dct)
-
-        subcomponentRegistry = {}
-
-        for name, prop in [kv for kv in dct.iteritems()
-                           if isinstance(kv[1], Property)]:
-            slug = prop.attrs.setdefault('slug', name)
-            subcomponentRegistry[slug] = prop
-
-        Class.subcomponentRegistry = subcomponentRegistry
-
-        return
-
-
-class UnearthedComponent(object):
-
-
-    __metaclass__ = ComponentClass
-
-
-    from cig.web.views import View
-
-
     def __init__(self, **attrs):
-        #super(object, self).__init__()
+        super(WebComponent, self).__init__()
         self.slug = attrs.get('slug')
         self.context = attrs.get('context', {})
         self.parentURL = attrs.get('url')
@@ -182,12 +181,11 @@
 
 
     def subcomponent(self, slug, **attrs):
-        from django.http import Http404
         self.expand(**attrs)
         try:
             c = self.subcomponents[slug]
         except KeyError:
-            raise Http404
+            raise self.Http404
         return c
 
 
@@ -207,7 +205,6 @@
 
 
     def resolve(self, path, **attrs):
-        from django.http import Http404
         context = attrs.setdefault('context', {})
         context.setdefault('root', self)
         item = path[0]
@@ -217,11 +214,12 @@
             self.selectedChild = subcomponent
             return subcomponent.resolve(path, **attrs)
         if path:
-            raise Http404
+            raise self.Http404
         self.isExpanded = True
         args = ()
         kwargs = {}
-        return self.View(component=self), args, kwargs
+        #return self.View(component=self), args, kwargs
+        return self.getView, args, kwargs
 
 
     # TreeNode protocol

Modified: cs/pythia/trunk/opal/components/__init__.py
===================================================================
--- cs/pythia/trunk/opal/components/__init__.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/components/__init__.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -13,6 +13,7 @@
 
 
 from WebComponent import WebComponent
+from ListEditor import ListEditor
 
 
 def actor(name):

Modified: cs/pythia/trunk/opal/template/loader.py
===================================================================
--- cs/pythia/trunk/opal/template/loader.py	2007-08-15 04:51:22 UTC (rev 7820)
+++ cs/pythia/trunk/opal/template/loader.py	2007-08-15 09:54:39 UTC (rev 7821)
@@ -80,11 +80,23 @@
     template = get_template_from_string(source, origin, template_name)
     return template
 
+class CheetahAdapter(object):
+    def __init__(self, template):
+        self.template = template
+    def render(self, context):
+        self.template.searchList().append(context)
+        return self.template.respond()
+
+useCheetah = True
+
 def get_template_from_string(source, origin=None, name=None):
     """
     Returns a compiled Template object for the given template code,
     handling template inheritance recursively.
     """
+    if useCheetah:
+        from Cheetah.Template import Template as CheetahTemplate
+        return CheetahAdapter(CheetahTemplate(source)) #, origin, name)
     return Template(source, origin, name)
 
 def render_to_string(template_name, dictionary=None, context_instance=None):



More information about the cig-commits mailing list