示例#1
0
def validate_application_group_for_runType(value, field_label, runType,
                                           runType_label):
    errors = []

    if value:
        value = value.strip()
        applicationGroups = ApplicationGroup.objects.filter(
            name__iexact=value) | ApplicationGroup.objects.filter(
                description__iexact=value)
        if applicationGroups:
            applicationGroup = applicationGroups[0]
            if runType:
                runTypeObjs = RunType.objects.filter(runType__iexact=runType)
                if runTypeObjs:
                    associations = runTypeObjs[0].applicationGroups
                    if not associations.filter(name=applicationGroup.name):
                        errors.append(
                            validation.invalid_choice_related_choice(
                                field_label,
                                value,
                                associations.values_list("name", flat=True),
                                runType_label,
                                runType,
                            ))
            if not runType:
                errors.append(validation.missing_error(runType_label))
            if not runTypeObjs:
                errors.append(
                    validation.invalid_not_found_error(runType_label, runType))
        else:
            errors.append(
                validation.invalid_not_found_error(field_label, value))

    return errors
示例#2
0
def validate_reference(referenceName, displayedName="Reference"):

    errors = []
    ref_short_name = ""

    if referenceName:
        input = referenceName.strip()

        selectedRefs = ReferenceGenome.objects.filter(name=input)

        if selectedRefs:
            ref_short_name = selectedRefs[0].short_name
        else:
            selectedRefs = ReferenceGenome.objects.filter(name__iexact=input)
            if selectedRefs:
                ref_short_name = selectedRefs[0].short_name
            else:
                selectedRefs = ReferenceGenome.objects.filter(short_name=input)

                if selectedRefs:
                    ref_short_name = selectedRefs[0].short_name
                else:
                    selectedRefs = ReferenceGenome.objects.filter(short_name__iexact=input)
                    if selectedRefs:
                        ref_short_name = selectedRefs[0].short_name
                    else:
                        errors.append(validation.invalid_not_found_error(displayedName, referenceName))

    return errors, ref_short_name
示例#3
0
def validate_reference(referenceName, displayedName='Reference'):

    errors = []
    ref_short_name = ""

    if referenceName:
        input = referenceName.strip()

        selectedRefs = ReferenceGenome.objects.filter(name=input)

        if selectedRefs:
            ref_short_name = selectedRefs[0].short_name
        else:
            selectedRefs = ReferenceGenome.objects.filter(name__iexact=input)
            if selectedRefs:
                ref_short_name = selectedRefs[0].short_name
            else:
                selectedRefs = ReferenceGenome.objects.filter(short_name=input)

                if selectedRefs:
                    ref_short_name = selectedRefs[0].short_name
                else:
                    selectedRefs = ReferenceGenome.objects.filter(
                        short_name__iexact=input)
                    if selectedRefs:
                        ref_short_name = selectedRefs[0].short_name
                    else:
                        errors.append(
                            validation.invalid_not_found_error(
                                displayedName, referenceName))

    return errors, ref_short_name
示例#4
0
def validate_reference(value, field_label, runType, applicationGroupName,
                       application_label):
    errors = []
    ref_short_name = ""
    value = value.strip() if value else ""

    if value:
        applProduct = ApplProduct.objects.filter(
            isActive=True,
            applType__runType=runType,
            applicationGroup__name=applicationGroupName,
        ) or ApplProduct.objects.filter(isActive=True,
                                        applType__runType=runType)

        if applProduct and not applProduct[0].isReferenceSelectionSupported:
            errors.append(
                validation.invalid_invalid_value_related(
                    field_label, value, application_label))
        else:
            selectedRefs = (
                ReferenceGenome.objects.filter(name=value)
                or ReferenceGenome.objects.filter(name__iexact=value)
                or ReferenceGenome.objects.filter(short_name=value)
                or ReferenceGenome.objects.filter(short_name__iexact=value))

            if selectedRefs:
                ref_short_name = selectedRefs[0].short_name
            else:
                errors.append(
                    validation.invalid_not_found_error(field_label, value))

    return errors, ref_short_name
示例#5
0
def validate_plan_templating_kit_name(value, field_label, isNewPlan=None):
    errors = []
    warnings = []

    if not validation.has_value(value):
        errors.append(validation.required_error(field_label))
    else:
        value = value.strip()
        query_kwargs = {"kitType__in": ["TemplatingKit", "IonChefPrepKit"]}

        query_args = (Q(name=value) | Q(description=value), )
        kit = KitInfo.objects.filter(*query_args, **query_kwargs)

        if not kit:
            errors.append(
                validation.invalid_not_found_error(field_label, value))
        elif kit and not kit[0].isActive:
            if isNewPlan:
                errors.append(validation.invalid_not_active(
                    field_label, value))
            else:
                warnings.append(
                    validation.invalid_not_active(field_label, value))

    return errors, warnings
示例#6
0
def validate_reference(value,
                       runType,
                       applicationGroupName,
                       displayedName='Reference'):
    errors = []
    ref_short_name = ""
    value = value.strip() if value else ""

    if value:
        applProduct = ApplProduct.objects.filter(isActive=True, applType__runType=runType, applicationGroup__name=applicationGroupName) \
            or ApplProduct.objects.filter(isActive=True, applType__runType=runType)

        if applProduct and not applProduct[0].isReferenceSelectionSupported:
            errors.append(displayedName +
                          " selection is not supported for this Application")
        else:
            selectedRefs = ReferenceGenome.objects.filter(name=value) or \
                ReferenceGenome.objects.filter(name__iexact=value) or \
                ReferenceGenome.objects.filter(short_name=value) or \
                ReferenceGenome.objects.filter(short_name__iexact=value)

            if selectedRefs:
                ref_short_name = selectedRefs[0].short_name
            else:
                errors.append(
                    validation.invalid_not_found_error(displayedName, value))

    return errors, ref_short_name
示例#7
0
def validate_reference_short_name(value, displayedName='Reference'):
    errors = []
    if validation.has_value(value):
        value = value.strip()
        reference = ReferenceGenome.objects.filter(short_name=value, enabled=True)
        if not reference.exists():
            errors.append(validation.invalid_not_found_error(displayedName, value))

    return errors
示例#8
0
def validate_reference_short_name(value, displayedName='Reference'):
    errors = []
    if validation.has_value(value):
        value = value.strip()
        reference = ReferenceGenome.objects.filter(short_name=value, enabled=True)
        if not reference.exists():
            generic_not_found_error = validation.invalid_not_found_error(displayedName, value)
            error_fixing_message = ". To import it, visit Settings > References > Import Preloaded Ion References"
            reference_error_message = generic_not_found_error.strip() + error_fixing_message
            errors.append(reference_error_message)
    return errors
示例#9
0
def validate_reference_short_name(value, displayedName='Reference'):
    errors = []
    if validation.has_value(value):
        value = value.strip()
        reference = ReferenceGenome.objects.filter(short_name=value, enabled=True)
        if not reference.exists():
            generic_not_found_error = validation.invalid_not_found_error(displayedName, value)
            error_fixing_message = ". To import it, visit Settings > References > Import Preloaded Ion References"
            reference_error_message = generic_not_found_error.strip() + error_fixing_message
            errors.append(reference_error_message)
    return errors
示例#10
0
def validate_sample_grouping(value, field_label):
    errors = []

    if value:
        value = value.strip()

        groupings = SampleGroupType_CV.objects.filter(
            displayedName__iexact=value)
        if not groupings:
            errors.append(
                validation.invalid_not_found_error(field_label, value))

    return errors
示例#11
0
def validate_barcode_kit_name(value, field_label):
    errors = []

    if validation.has_value(value):
        value = value.strip()
        kits = dnaBarcode.objects.filter(name=value)
        if not kits:
            errors.append(
                validation.invalid_not_found_error(
                    field_label,
                    value))  # "%s %s not found" % (displayedName, value)

    return errors
示例#12
0
def validate_reference_short_name(value, field_label):
    errors = []
    if validation.has_value(value):
        value = value.strip()
        reference = ReferenceGenome.objects.filter(short_name=value,
                                                   enabled=True)
        if not reference.exists():
            generic_not_found_error = validation.invalid_not_found_error(
                field_label, value)
            error_fixing_message = ugettext_lazy(
                "references_genome_download.messages.help.import"
            )  # "To import it, visit Settings > References > Import Preloaded Ion References"
            reference_error_message = (generic_not_found_error.strip() +
                                       error_fixing_message.strip()
                                       )  # avoid lazy
            errors.append(reference_error_message)
    return errors
示例#13
0
def validate_optional_kit_name(value, kitType, field_label, isNewPlan=None):
    errors = []
    warnings = []
    if validation.has_value(value):
        kit = get_kitInfo_by_name_or_description(value, kitType)

        if not kit:
            errors.append(
                validation.invalid_not_found_error(field_label, value))
        elif kit and not kit.isActive:
            if isNewPlan:
                errors.append(validation.invalid_not_active(
                    field_label, value))
            else:
                warnings.append(
                    validation.invalid_not_active(field_label, value))

    return errors, warnings
示例#14
0
def validate_library_key(value, field_label):
    errors = []
    selectedLibKey = None
    if not value:
        errors.append(validation.required_error(field_label))
    else:
        try:
            selectedLibKey = LibraryKey.objects.get(name__iexact=value.strip())
        except LibraryKey.DoesNotExist:
            try:
                selectedLibKey = LibraryKey.objects.get(
                    sequence__iexact=value.strip())
            except LibraryKey.DoesNotExist:
                logger.debug(
                    "plan_validator.validate_lib_key ...%s not found" % input)
                selectedLibKey = None

        if not selectedLibKey:
            errors.append(
                validation.invalid_not_found_error(
                    field_label, value))  # 'Library key %s not found' % value

    return errors, selectedLibKey
示例#15
0
def validate_reference(value, runType, applicationGroupName, displayedName='Reference'):
    errors = []
    ref_short_name = ""
    value = value.strip() if value else ""

    if value:
        applProduct = ApplProduct.objects.filter(isActive=True, applType__runType=runType, applicationGroup__name=applicationGroupName) \
            or ApplProduct.objects.filter(isActive=True, applType__runType=runType)

        if applProduct and not applProduct[0].isReferenceSelectionSupported:
            errors.append(displayedName+" selection is not supported for this Application")
        else:
            selectedRefs = ReferenceGenome.objects.filter(name=value) or \
                ReferenceGenome.objects.filter(name__iexact=value) or \
                ReferenceGenome.objects.filter(short_name=value) or \
                ReferenceGenome.objects.filter(short_name__iexact=value)

            if selectedRefs:
                ref_short_name = selectedRefs[0].short_name
            else:
                errors.append(validation.invalid_not_found_error(displayedName, value))

    return errors, ref_short_name
示例#16
0
    def validateField_in_section(self, field_name, new_field_value):
        """
        field validation for a step that acts as a section to another step
        """
        # logger.debug("at validateField_in_section field_name=%s; new_field_value=%s" %(field_name, new_field_value))

        if field_name == ReferenceFieldNames.REFERENCE:
            if new_field_value and new_field_value not in [
                    ref.short_name for ref in self.prepopulatedFields[
                        ReferenceFieldNames.REFERENCES]
            ]:
                self.prepopulatedFields[
                    ReferenceFieldNames.REFERENCE_MISSING] = True
                self.validationErrors[
                    field_name] = validation.invalid_not_found_error(
                        _("workflow.step.reference.fields.default_reference.label"
                          ),
                        new_field_value,
                    )  # Reference Library not found: %s" % new_field_value
            else:
                self.prepopulatedFields[
                    ReferenceFieldNames.REFERENCE_MISSING] = False
                self.validationErrors.pop(field_name, None)

        # if the plan has been sequenced, do not enforce the target bed file to be selected

        if self.prepopulatedFields[ReferenceFieldNames.PLAN_STATUS] != "run":
            if field_name == ReferenceFieldNames.TARGET_BED_FILE:
                reference = self.savedFields[ReferenceFieldNames.REFERENCE]
                targetRegionBedFile = new_field_value

                runType = (
                    self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE]
                    if self.prepopulatedFields[ReferenceFieldNames.RUN_TYPE]
                    else "")
                applicationGroupName = self.prepopulatedFields[
                    ReferenceFieldNames.APPLICATION_GROUP_NAME]
                logger.debug(
                    " validateField_in_section reference=%s; targetBed=%s; runType=%s; applicationGroupName=%s"
                    % (reference, new_field_value, runType,
                       applicationGroupName))

                errors = []
                isSameRefInfoPerSample = self.savedFields[
                    ReferenceFieldNames.SAME_REF_INFO_PER_SAMPLE]
                if isSameRefInfoPerSample:
                    errors = validate_targetRegionBedFile_for_runType(
                        targetRegionBedFile,
                        field_label=
                        _("workflow.step.reference.fields.default_targetBedFile.label"
                          ),
                        runType=runType,
                        reference=reference,
                        nucleotideType="",
                        applicationGroupName=applicationGroupName,
                    )

                if errors:
                    self.validationErrors[field_name] = "".join(errors)
                else:
                    self.validationErrors.pop(field_name, None)