Skip to content

Commit

Permalink
also check behavior-fields for IPrimaryField
Browse files Browse the repository at this point in the history
  • Loading branch information
pbauer committed Feb 13, 2014
1 parent 3bb0628 commit bac63c1
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions plone/dexterity/primary.py
@@ -1,9 +1,8 @@
from plone.dexterity.interfaces import IDexterityContent
from plone.dexterity.interfaces import IDexterityFTI
from plone.dexterity.utils import iterSchemata
from plone.rfc822.interfaces import IPrimaryField
from plone.rfc822.interfaces import IPrimaryFieldInfo
from zope.component import adapts
from zope.component import getUtility
from zope.interface import implements
from zope.schema import getFieldsInOrder

Expand All @@ -14,16 +13,17 @@ class PrimaryFieldInfo(object):

def __init__(self, context):
self.context = context
fti = getUtility(IDexterityFTI, name=context.portal_type)
self.schema = fti.lookupSchema()
primary = [
(name, field) for name, field in getFieldsInOrder(self.schema)
if IPrimaryField.providedBy(field)
]
primary = None
for i in iterSchemata(context):
fields = getFieldsInOrder(i)
for name, field in fields:
if IPrimaryField.providedBy(field):
primary = (name, field)
break
if not primary:
raise TypeError('Could not adapt', context, IPrimaryFieldInfo)
self.fieldname, self.field = primary[0]
self.fieldname, self.field = primary

@property
def value(self):
return self.field.get(self.context)

0 comments on commit bac63c1

Please sign in to comment.