title: ReferenceField causes AttributeError: 'function' object has no attribute '__of__' in a custom content type
body: <p>I have created a custom content type that has a ReferenceField.  When I set allowed_types to a default content type, such as Document or Folder, I do not get any problems upon saving or reindexing.  However, when I set allowed_types to another custom content type, I get a very strange error.  It appears I can set the UID in the ReferenceField fine and base_view does not break, but I cannot save or reindex the object.</p>
  
  <p>Using:
  Plone 4.0.1
  Zope 2.12.11
  Python 2.6.5 (r265:79063, Nov 21 2010, 11:58:21) [GCC 4.2.1 (Apple Inc. build 5664)]</p>
  
  <p>Any ideas?</p>
  
  <pre><code>atapi.ReferenceField(
      'issue_source',
      storage=atapi.AnnotationStorage(),
      widget=atapi.ReferenceWidget(
          label=_(u"Issue Source"),
          description=_(u"Please select the source document to which this issue corresponds."),
      ),
      required=True,
      relationship='issue_issue_source',
      allowed_types=('Source Document'), # specify portal type names here ('Example Type',)
      multiValued=False,            #One to One relationship
  ),
  </code></pre>
  
  <p>In ipzope:</p>
  
  <pre><code>&gt;&gt;&gt; issue
  &lt;Issue at /Plone/Members/test_user2/test-issue&gt;
  &gt;&gt;&gt; issue.isReferenceable
  1
  &gt;&gt;&gt; source_document
  &lt;SourceDocument at /Plone/test-folder/test-doc&gt;
  &gt;&gt;&gt; issue.setIssue_source(source_document.UID())
  &gt;&gt;&gt; issue.getIssue_source()
  &lt;SourceDocument at /Plone/test-folder/test-doc&gt;
  &gt;&gt;&gt; source_document
  &lt;SourceDocument at /Plone/test-folder/test-doc&gt;
  &gt;&gt;&gt; issue.reindexObject()
  &gt; /Applications/Plone/plone-site/eggs/Products.CMFDynamicViewFTI-4.0-py2.6.egg/Products/CMFDynamicViewFTI/browserdefault.py(77)__call__()
       76         context = aq_inner(self)
  ---&gt; 77         template = template.__of__(context)
       78         return template(context, context.REQUEST)
  ipdb&gt; quit
  ------------------------------------------------------------
  Traceback (most recent call last):
    File "&lt;ipython console&gt;", line 1, in &lt;module&gt;
    File "/Applications/Plone/plone-site/eggs/Products.Archetypes-1.6.3-py2.6.egg/Products/Archetypes/CatalogMultiplex.py", line 123, in reindexObject
      c.catalog_object(self, url, idxs=lst)
    File "/Applications/Plone/plone-site/eggs/Plone-4.0.1-py2.6.egg/Products/CMFPlone/CatalogTool.py", line 287, in catalog_object
      update_metadata, pghandler=pghandler)
    File "/Applications/Plone/plone-site/eggs/Products.PDBDebugMode-1.3.1-py2.6.egg/Products/PDBDebugMode/zcatalog.py", line 20, in catalog_object
      update_metadata=update_metadata, pghandler=pghandler)
    File "/Applications/Plone/plone-site/eggs/Zope2-2.12.11-py2.6-macosx-10.4-x86_64.egg/Products/ZCatalog/ZCatalog.py", line 529, in catalog_object
      update_metadata=update_metadata)
    File "/Applications/Plone/plone-site/eggs/Zope2-2.12.11-py2.6-macosx-10.4-x86_64.egg/Products/ZCatalog/Catalog.py", line 348, in catalogObject
      self.updateMetadata(object, uid)
    File "/Applications/Plone/plone-site/eggs/Zope2-2.12.11-py2.6-macosx-10.4-x86_64.egg/Products/ZCatalog/Catalog.py", line 278, in updateMetadata
      newDataRecord = self.recordify(object)
    File "/Applications/Plone/plone-site/eggs/Zope2-2.12.11-py2.6-macosx-10.4-x86_64.egg/Products/ZCatalog/Catalog.py", line 417, in recordify
      if(attr is not MV and safe_callable(attr)): attr=attr()
    File "/Applications/Plone/plone-site/eggs/Products.CMFDynamicViewFTI-4.0-py2.6.egg/Products/CMFDynamicViewFTI/browserdefault.py", line 77, in __call__
      template = template.__of__(context)
  AttributeError: 'function' object has no attribute '__of__'
  </code></pre>
  
  <p>When I click save through the web I get a slightly different error message:</p>
  
  <pre><code>2011-08-09 15:19:16 ERROR Zope.SiteErrorLog 1312895956.510.252592718824 http://127.0.0.1:8080/Plone/Members/test_user2/test-doc/atct_edit
  Traceback (innermost last):
    Module ZPublisher.Publish, line 127, in publish
    Module ZPublisher.mapply, line 77, in mapply
    Module Products.PDBDebugMode.runcall, line 70, in pdb_runcall
    Module ZPublisher.Publish, line 47, in call_object
    Module Products.CMFFormController.FSControllerPageTemplate, line 91, in __call__
    Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in _call
    Module Products.CMFFormController.ControllerBase, line 231, in getNext
    Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__
    Module ZPublisher.mapply, line 77, in mapply
    Module ZPublisher.Publish, line 47, in call_object
    Module Products.CMFFormController.FSControllerPythonScript, line 107, in __call__
    Module Products.CMFFormController.ControllerBase, line 231, in getNext
    Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__
    Module ZPublisher.mapply, line 77, in mapply
    Module ZPublisher.Publish, line 47, in call_object
    Module Products.CMFFormController.FSControllerPythonScript, line 105, in __call__
    Module Products.CMFFormController.Script, line 145, in __call__
    Module Products.CMFCore.FSPythonScript, line 130, in __call__
    Module Shared.DC.Scripts.Bindings, line 324, in __call__
    Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
    Module Products.PythonScripts.PythonScript, line 344, in _exec
    Module script, line 1, in content_edit
     - &lt;FSControllerPythonScript at /Plone/content_edit used for /Plone/Members/test_user2/test-doc&gt;
     - Line 1
    Module Products.CMFCore.FSPythonScript, line 130, in __call__
    Module Shared.DC.Scripts.Bindings, line 324, in __call__
    Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
    Module Products.PythonScripts.PythonScript, line 344, in _exec
    Module script, line 13, in content_edit_impl
     - &lt;FSPythonScript at /Plone/content_edit_impl used for /Plone/Members/test_user2/test-doc&gt;
     - Line 13
    Module Products.Archetypes.BaseObject, line 658, in processForm
    Module Products.Archetypes.BaseObject, line 650, in _processForm
     - __traceback_info__: (&lt;Issue at /Plone/Members/test_user2/test-doc&gt;, &lt;Field nextPreviousEnabled(boolean:rw)&gt;, &lt;bound method Issue.setNextPreviousEnabled of &lt;Issue at /Plone/Members/test_user2/test-doc&gt;&gt;)
    Module Products.Archetypes.CatalogMultiplex, line 123, in reindexObject
    Module Products.CMFPlone.CatalogTool, line 287, in catalog_object
    Module Products.PDBDebugMode.zcatalog, line 20, in catalog_object
    Module Products.ZCatalog.ZCatalog, line 529, in catalog_object
    Module Products.ZCatalog.Catalog, line 348, in catalogObject
    Module Products.ZCatalog.Catalog, line 278, in updateMetadata
    Module Products.ZCatalog.Catalog, line 417, in recordify
    Module Products.CMFDynamicViewFTI.browserdefault, line 77, in __call__
  AttributeError: 'function' object has no attribute '__of__'
  &gt; /Applications/Plone/plone-site/eggs/Products.CMFDynamicViewFTI-4.0-py2.6.egg/Products/CMFDynamicViewFTI/browserdefault.py(77)__call__()
       76         context = aq_inner(self)
  ---&gt; 77         template = template.__of__(context)
       78         return template(context, context.REQUEST)
  </code></pre>