Passed
Push — 2.x ( 96e9ed...864250 )
by Jordi
07:30
created

FieldTraversal.__init__()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nop 3
1
# -*- coding: utf-8 -*-
2
3
from bika.lims import api
4
from zope.component import adapter
5
from zope.interface import Interface
6
from zope.interface import implementer
7
from zope.publisher.interfaces.browser import IBrowserRequest
8
from zope.traversing.interfaces import ITraversable
9
from zope.traversing.interfaces import TraversalError
10
11
12
@adapter(Interface, IBrowserRequest)
13
@implementer(ITraversable)
14
class FieldTraversal(object):
15
    """Allow to traverse schema fields via the ++field++ namespace.
16
    """
17
    def __init__(self, context, request=None):
18
        self.context = context
19
        self.request = request
20
21
    def traverse(self, name, ignored):
22
        fields = api.get_fields(self.context)
23
        field = fields.get(name)
24
        if not field:
25
            raise TraversalError(name)
26
        field = field.bind(self.context)
27
        return field
28