Passed
Pull Request — 2.x (#1806)
by Ramon
06:55 queued 02:08
created

senaite.core.z3cform.widgets.number   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 38
dl 0
loc 51
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A NumberWidget.max() 0 5 2
A NumberWidget.update() 0 5 2
A NumberWidget.min() 0 5 2

1 Function

Rating   Name   Duplication   Size   Complexity  
A IntFieldWidget() 0 6 1
1
# -*- coding: utf-8 -*-
2
3
import zope.component
4
import zope.interface
5
import zope.schema
6
import zope.schema.interfaces
7
from senaite.core.interfaces import ISenaiteFormLayer
8
from senaite.core.schema.interfaces import IIntField
9
from senaite.core.z3cform.interfaces import INumberWidget
10
from z3c.form import interfaces
11
from z3c.form.browser import text
12
from z3c.form.browser import widget
13
from z3c.form.interfaces import INPUT_MODE
14
from z3c.form.widget import FieldWidget
15
from zope.component import adapter
16
from zope.interface import implementer_only
17
18
19
@implementer_only(INumberWidget)
20
class NumberWidget(text.TextWidget):
21
    """Input type "number" widget implementation.
22
    """
23
    klass = u"number-widget"
24
    value = u""
25
26
    def update(self):
27
        super(NumberWidget, self).update()
28
        widget.addFieldClass(self)
29
        if self.mode == INPUT_MODE:
30
            self.addClass("form-control")
31
32
    @property
33
    def min(self):
34
        if not self.field:
35
            return None
36
        return self.field.min
37
38
    @property
39
    def max(self):
40
        if not self.field:
41
            return None
42
        return self.field.max
43
44
45
@adapter(IIntField, ISenaiteFormLayer)
46
@zope.interface.implementer(interfaces.IFieldWidget)
47
def IntFieldWidget(field, request):
48
    """IFieldWidget widget factory for NumberWidget.
49
    """
50
    return FieldWidget(field, NumberWidget(request))
51