Code Duplication    Length = 26-26 lines in 2 locations

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

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