예제 #1
0
파일: views.py 프로젝트: aidjek/TS
def _get_chiptype_json(request, chipType, plan):
    chipResource = ChipResource()
    chipResource_serialize_json = None
    if chipType:
        try:
            try:
                chip = chipResource.obj_get(name=chipType)
            except Chip.DoesNotExist:
                chip = chipResource.obj_get(name=chipType[:3])

            chipResource_bundle = chipResource.build_bundle(obj=chip,
                                                            request=request)
            chipResource_serialize_json = chipResource.serialize(
                None, chipResource.full_dehydrate(chipResource_bundle),
                'application/json')
        except Chip.DoesNotExist:
            logger.error(
                "views._get_chiptype_json() Plan.pk=%d; name=%s has invalid chip type=%s"
                % (plan.id, plan.planName, chipType))
            chipResource_bundle = None
            chipResource_serialize_json = json.dumps("INVALID")

    else:
        chipResource_bundle = None
        chipResource_serialize_json = json.dumps(None)
    return chipResource_serialize_json
예제 #2
0
def _get_chiptype_json(request, chipType):
    chipResource = ChipResource()
    chipResource_serialize_json = None
    if chipType:
        chip = chipResource.obj_get(name=chipType)
        chipResource_bundle = chipResource.build_bundle(obj=chip,
                                                        request=request)
        chipResource_serialize_json = chipResource.serialize(
            None, chipResource.full_dehydrate(chipResource_bundle),
            'application/json')
    else:
        chipResource_bundle = None
        chipResource_serialize_json = json.dumps(None)
    return chipResource_serialize_json
예제 #3
0
def _get_chiptype_json(request, chipType, plan):
    chipResource = ChipResource()
    chipResource_serialize_json = None
    if chipType:
        try:
            try:
                chip = chipResource.obj_get(name = chipType)
            except Chip.DoesNotExist:
                chip = chipResource.obj_get(name = chipType[:3])

            chipResource_bundle = chipResource.build_bundle(obj=chip, request=request)
            chipResource_serialize_json = chipResource.serialize(None, chipResource.full_dehydrate(chipResource_bundle), 'application/json')
        except Chip.DoesNotExist:
            logger.error("views._get_chiptype_json() Plan.pk=%d; name=%s has invalid chip type=%s" %(plan.id, plan.planName, chipType))
            chipResource_bundle = None
            chipResource_serialize_json = json.dumps("INVALID")
            
    else:
        chipResource_bundle = None
        chipResource_serialize_json = json.dumps(None)
    return chipResource_serialize_json
예제 #4
0
파일: views.py 프로젝트: aidjek/TS
def _plan_template_helper(request, _id, isForTemplate, intent):
    data = _get_allApplProduct_data(isForTemplate)
    planTemplate = get_object_or_404(PlannedExperiment, pk=_id)
    runType = get_object_or_404(RunType, runType=planTemplate.runType)

    # add experiment attributes
    experiment = planTemplate.experiment
    exp_keys = [
        ('autoAnalyze', 'autoAnalyze'),
        ('flows', 'flows'),
        ('notes', 'notes'),
        ('sequencekitname', 'sequencekitname'),
    ]
    for plankey, key in exp_keys:
        setattr(planTemplate, plankey, getattr(experiment, key, ''))

    chipResource = ChipResource()
    try:
        chip = chipResource.obj_get(name=experiment.chipType)
        if chip:
            setattr(planTemplate, "chipType", experiment.chipType)
    except Chip.DoesNotExist:
        try:
            chip = chipResource.obj_get(name=experiment.chipType[:3])
            if chip:
                setattr(planTemplate, "chipType", experiment.chipType[:3])
        except Chip.DoesNotExist:
            setattr(planTemplate, "chipType", experiment.chipType)

    setattr(planTemplate, "sample", experiment.get_sample())
    setattr(planTemplate, "sampleDisplayedName",
            experiment.get_sampleDisplayedName())

    setattr(planTemplate, "isIonChef", planTemplate.is_ionChef())

    # add EAS attributes
    if experiment:
        eas = experiment.get_EAS()
    else:
        eas = None

    eas_keys = [('barcodedSamples', 'barcodedSamples'),
                ('barcodeId', 'barcodeKitName'),
                ('bedfile', 'targetRegionBedFile'),
                ('forward3primeadapter', 'threePrimeAdapter'),
                ('libraryKey', 'libraryKey'),
                ('librarykitname', 'libraryKitName'),
                ('regionfile', 'hotSpotRegionBedFile'),
                ('selectedPlugins', 'selectedPlugins')]
    for plankey, key in eas_keys:
        setattr(planTemplate, plankey, getattr(eas, key, ''))

    if eas:
        setattr(planTemplate, "library",
                eas.reference if eas.reference != "none" else '')
    else:
        setattr(planTemplate, "library", "")

    chipTypeDetails = None
    if planTemplate.chipType:
        chipTypeDetails = get_object_or_404(Chip, name=planTemplate.chipType)

    selectedProjectNames = [
        selectedProject.name
        for selectedProject in list(planTemplate.projects.all())
    ]
    logger.debug("views._plan_template_helper selectedProjectNames=%s" %
                 selectedProjectNames)

    # mark plugins selected if any
    for plugin in data['plugins']:
        if plugin.name in planTemplate.selectedPlugins.keys():
            plugin.selected = True
            plugin.userInput = json.dumps(
                planTemplate.selectedPlugins[plugin.name].get(
                    'userInput', None))
        else:
            plugin.selected = False

    # mark uploaders selected if any
    for plugin in data['uploaders']:
        if plugin.name in planTemplate.selectedPlugins.keys():
            plugin.selected = True

            ##in case we're copying old plans that have dict {} data type for userInput. new format is list of dict [{}]
            userInput = planTemplate.selectedPlugins[plugin.name].get(
                'userInput', None)

            plugin.userInput = json.dumps(userInput)

            if (isinstance(userInput, dict)):
                plugin.userInput = json.dumps([userInput])

            if 'IonReporter' in plugin.name:
                data['irConfigSaved'] = plugin.userInput
                data[
                    'irConfigSaved_version'] = 1.0 if plugin.name == 'IonReporterUploader_V1_0' else plugin.version

        else:
            plugin.selected = False

    #planTemplateData contains what are available for selection
    #and what each application product's characteristics and default selection
    ctxd = {
        "intent": intent,
        "planTemplateData": data,
        "selectedApplProductData": "",
        "selectedPlanTemplate": planTemplate,
        "selectedRunType": runType,
        "selectedProjectNames": selectedProjectNames,
        "selectedChipTypeDetails": chipTypeDetails
    }
    context = RequestContext(request, ctxd)
    return context
예제 #5
0
def _plan_template_helper(request, _id, isForTemplate, intent):
    data = _get_allApplProduct_data(isForTemplate)
    planTemplate = get_object_or_404(PlannedExperiment, pk=_id)
    runType = get_object_or_404(RunType, runType=planTemplate.runType)

    # add experiment attributes
    experiment = planTemplate.experiment
    exp_keys = [
          ('autoAnalyze', 'autoAnalyze'),
          ('flows', 'flows'),
          ('notes', 'notes'),
          ('sequencekitname', 'sequencekitname'),
    ]
    for plankey, key in exp_keys:
        setattr(planTemplate, plankey, getattr(experiment,key,''))

    chipResource = ChipResource()
    try:
        chip = chipResource.obj_get(name = experiment.chipType)
        if chip:
            setattr(planTemplate, "chipType", experiment.chipType)
    except Chip.DoesNotExist:
        try:
            chip = chipResource.obj_get(name = experiment.chipType[:3])
            if chip:
                setattr(planTemplate, "chipType", experiment.chipType[:3])
        except Chip.DoesNotExist:
            setattr(planTemplate, "chipType", experiment.chipType)
    
    setattr(planTemplate, "sample", experiment.get_sample())
    setattr(planTemplate, "sampleDisplayedName", experiment.get_sampleDisplayedName())
    
    setattr(planTemplate, "isIonChef", planTemplate.is_ionChef())
        
    # add EAS attributes
    if experiment:
        eas = experiment.get_EAS()
    else:
        eas = None
        
    eas_keys = [
          ('barcodedSamples', 'barcodedSamples'),
          ('barcodeId', 'barcodeKitName'),
          ('bedfile', 'targetRegionBedFile'),
          ('forward3primeadapter', 'threePrimeAdapter'),          
          ('libraryKey', 'libraryKey'),
          ('librarykitname', 'libraryKitName'),
          ('regionfile', 'hotSpotRegionBedFile'),
          ('selectedPlugins', 'selectedPlugins')
    ]
    for plankey, key in eas_keys:
        setattr(planTemplate, plankey, getattr(eas,key,''))

    if eas:
        setattr(planTemplate, "library", eas.reference if eas.reference != "none" else '')
    else:
        setattr(planTemplate, "library", "")
    
    chipTypeDetails = None
    if planTemplate.chipType:
        chipTypeDetails = get_object_or_404(Chip, name=planTemplate.chipType)

    selectedProjectNames = [selectedProject.name for selectedProject in list(planTemplate.projects.all())]
    logger.debug("views._plan_template_helper selectedProjectNames=%s" % selectedProjectNames)

    # mark plugins selected if any
    for plugin in data['plugins']:
        if plugin.name in planTemplate.selectedPlugins.keys():
            plugin.selected = True
            plugin.userInput = json.dumps(planTemplate.selectedPlugins[plugin.name].get('userInput',None))
        else:
            plugin.selected = False

    # mark uploaders selected if any
    for plugin in data['uploaders']:
        if plugin.name in planTemplate.selectedPlugins.keys():
            plugin.selected = True
         
            ##in case we're copying old plans that have dict {} data type for userInput. new format is list of dict [{}]
            userInput = planTemplate.selectedPlugins[plugin.name].get('userInput',None)
            
            plugin.userInput = json.dumps(userInput)
            
            if (isinstance(userInput, dict)):
                plugin.userInput = json.dumps([userInput])                
                    
            if 'IonReporter' in plugin.name:
                data['irConfigSaved'] = plugin.userInput
                data['irConfigSaved_version'] = 1.0 if plugin.name == 'IonReporterUploader_V1_0' else plugin.version           
         
        else:
            plugin.selected = False

    #planTemplateData contains what are available for selection
    #and what each application product's characteristics and default selection
    ctxd = {
        "intent": intent,
        "planTemplateData": data,
        "selectedApplProductData": "",
        "selectedPlanTemplate": planTemplate,
        "selectedRunType": runType,
        "selectedProjectNames": selectedProjectNames,
        "selectedChipTypeDetails": chipTypeDetails
    }
    context = RequestContext(request, ctxd)
    return context