r13739 - in MoreFieldsAndWidgets/ATBackRef/trunk: . docs src/Products/ATBackRef src/Products/ATBackRef/skins/ATBackRef

"Ross Patterson" <[email protected]> Sat, 23 Jul 2011 18:12:52 +0000
Newsgroups gmane.comp.web.zope.plone.archetypes.cvs
Message-ID <[email protected]>
Author: rossp
Date: Sat Jul 23 18:12:52 2011
New Revision: 13739

Modified:
   MoreFieldsAndWidgets/ATBackRef/trunk/docs/README.txt
   MoreFieldsAndWidgets/ATBackRef/trunk/setup.py
   MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/backref.py
   MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/skins/ATBackRef/backreferencebrowserwidget.pt
Log:
Move a lambda out of the widget template into the field.

Workaround for a Chameleon bug with lambdas in templates:
https://github.com/malthe/chameleon/issues/27

Modified: MoreFieldsAndWidgets/ATBackRef/trunk/docs/README.txt
==============================================================================
--- MoreFieldsAndWidgets/ATBackRef/trunk/docs/README.txt	(original)
+++ MoreFieldsAndWidgets/ATBackRef/trunk/docs/README.txt	Sat Jul 23 18:12:52 2011
@@ -43,7 +43,7 @@
 Comaptibility
 -------------
 
-Works with Plone 3 and 4.
+Works with Plone 3 and 4.  Works with Chameleon.
 
 Licence
 -------

Modified: MoreFieldsAndWidgets/ATBackRef/trunk/setup.py
==============================================================================
--- MoreFieldsAndWidgets/ATBackRef/trunk/setup.py	(original)
+++ MoreFieldsAndWidgets/ATBackRef/trunk/setup.py	Sat Jul 23 18:12:52 2011
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import sys, os
 
-version = '2.1'
+version = '2.2'
 shortdesc ="Back Reference Field/Widget for Plone/Archetypes"
 longdesc = open(os.path.join(os.path.dirname(__file__), 'docs', 
                              'README.txt')).read()

Modified: MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/backref.py
==============================================================================
--- MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/backref.py	(original)
+++ MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/backref.py	Sat Jul 23 18:12:52 2011
@@ -138,6 +138,19 @@
             return None
         return res
 
+    def getBackReferenceImpl(self, instance):
+        """
+        Get the references efficiently, sorting if possible.
+        
+        If we are not using orderablereferencefield we don't have the
+        order attribute we swallow this error silently.
+        """
+        refs = instance.getBackReferenceImpl(self.relationship)
+        try:
+            refs.sort(key=lambda ref: ref.order)
+        except AttributeError:
+            pass
+        return refs
 
 
 registerField(BackReferenceField,

Modified: MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/skins/ATBackRef/backreferencebrowserwidget.pt
==============================================================================
--- MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/skins/ATBackRef/backreferencebrowserwidget.pt	(original)
+++ MoreFieldsAndWidgets/ATBackRef/trunk/src/Products/ATBackRef/skins/ATBackRef/backreferencebrowserwidget.pt	Sat Jul 23 18:12:52 2011
@@ -9,7 +9,7 @@
   <body>
 
     <metal:view_macro define-macro="view">
-      <tal:define define="refs               python:here.getBackReferenceImpl(field.relationship);
+      <tal:define define="refs               python:field.getBackReferenceImpl(here);
                           image_portal_types field/widget/image_portal_types;
                           image_method       field/widget/image_method|string:;
                           show_path          field/widget/show_path|nothing;
@@ -52,12 +52,6 @@
         </tal:block>
 
         <ul tal:condition="field/multiValued">
-          <tal:sort tal:content="nothing"
-                    tal:on-error="nothing"
-                    tal:define="foo python:refs.sort(lambda x,y: cmp(x.order, y.order))">
-             If we are not using orderablereferencefield we don't have the order attribute
-             we swallow this error silently using tal:on-error
-          </tal:sort>
           <tal:block tal:repeat="ref refs">
             <tal:block tal:define="obj ref/getSourceObject;
                                    obj_path python: '/'.join(obj.getPhysicalPath());

------------------------------------------------------------------------------
Storage Efficiency Calculator
This modeling tool is based on patent-pending intellectual property that
has been used successfully in hundreds of IBM storage optimization engage-
ments, worldwide.  Store less, Store more with what you own, Move data to 
the right place. Try It Now! http://www.accelacomm.com/jaw/sfnl/114/51427378/