[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