Code Duplication    Length = 26-26 lines in 2 locations

src/bika/lims/workflow/analysisrequest/guards.py 2 locations

@@ 90-115 (lines=26) @@
87
    return analyses_ready
88
89
90
def guard_verify(analysis_request):
91
    """Returns whether the transition "verify" can be performed or not.
92
    Returns True if at there is at least one analysis in a non-dettached state
93
    and all analyses in a non-detached state are in "verified" state.
94
    """
95
    # Discard detached analyses
96
    analyses = analysis_request.getAnalyses(full_objects=True)
97
    analyses = filter(lambda an: api.get_workflow_status_of(an) not in
98
                                 ANALYSIS_DETACHED_STATES, analyses)
99
100
    # If not all analyses are for internal use, rely on "regular" analyses
101
    internals = map(IInternalUse.providedBy, analyses)
102
    omit_internals = not all(internals)
103
104
    analyses_ready = False
105
    for analysis in analyses:
106
        # Omit analyses for internal use
107
        if omit_internals and IInternalUse.providedBy(analysis):
108
            continue
109
110
        # All analyses must be in verified (or further) status
111
        if not IVerified.providedBy(analysis):
112
            return False
113
114
        analyses_ready = True
115
    return analyses_ready
116
117
118
def guard_prepublish(analysis_request):
@@ 62-87 (lines=26) @@
59
    return True
60
61
62
def guard_submit(analysis_request):
63
    """Return whether the transition "submit" can be performed or not.
64
    Returns True if there is at least one analysis in a non-detached state and
65
    all analyses in a non-detached analyses have been submitted.
66
    """
67
    # Discard detached analyses
68
    analyses = analysis_request.getAnalyses(full_objects=True)
69
    analyses = filter(lambda an: api.get_workflow_status_of(an) not in
70
                                 ANALYSIS_DETACHED_STATES, analyses)
71
72
    # If not all analyses are for internal use, rely on "regular" analyses
73
    internals = map(IInternalUse.providedBy, analyses)
74
    omit_internals = not all(internals)
75
76
    analyses_ready = False
77
    for analysis in analyses:
78
        # Omit analyses for internal use
79
        if omit_internals and IInternalUse.providedBy(analysis):
80
            continue
81
82
        analysis_status = api.get_workflow_status_of(analysis)
83
        if analysis_status in ['assigned', 'unassigned', 'registered']:
84
            return False
85
86
        analyses_ready = True
87
    return analyses_ready
88
89
90
def guard_verify(analysis_request):