Passed
Push — 2.x ( a4d7e0...003ec3 )
by Jordi
07:40
created

IDChooser.chooseID()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 2
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 plone.app.content.namechooser import NormalizingNameChooser
5
from senaite.core.idserver import generateUniqueId
6
from senaite.core.interfaces import IAutoGenerateID
7
from zope.container.interfaces import INameChooser
8
9
from zope.interface import implementer
10
11
12
@implementer(INameChooser)
13
class IDChooser(object):
14
    """Choose a vaild ID for the given container and object
15
    """
16
    def __init__(self, context):
17
        self.context = context
18
19
    def chooseID(self, name, object):
20
        return self.chooseName(name, object)
21
22
    def checkName(self, name, object):
23
        return True
24
25
    def chooseName(self, name, object):
26
        """Choose a valid ID for the given object
27
        """
28
        if api.is_at_type(object):
29
            return self.chooseATName(name, object)
30
        return self.chooseDXName(name, object)
31
32
    def chooseATName(self, name, object):
33
        return generateUniqueId(object, container=self.context)
34
35
    def chooseDXName(self, name, object):
36
        if not IAutoGenerateID.providedBy(object):
37
            return self.chooseDefaultName(name, object)
38
        return generateUniqueId(object, container=self.context)
39
40
    def chooseDefaultName(self, name, object):
41
        default_chooser = NormalizingNameChooser(self.context)
42
        return default_chooser.chooseName(name, object)
43