diff --git a/analysis/forms/forms.py b/analysis/forms/forms.py index 612e37499..428d104ef 100644 --- a/analysis/forms/forms.py +++ b/analysis/forms/forms.py @@ -354,15 +354,6 @@ def save(self, commit=True): return obj -class InputSamplesForm(forms.Form): - sample = forms.ModelChoiceField(queryset=Sample.objects.none(), required=True) - - def __init__(self, *args, **kwargs): - samples = kwargs.pop("samples") - super().__init__(*args, **kwargs) - self.fields['sample'].queryset = Sample.objects.filter(pk__in=[sample.pk for sample in samples]) - - class VCFLocusFilterForm(forms.Form): def __init__(self, *args, **kwargs): diff --git a/analysis/views/views.py b/analysis/views/views.py index d4e2e28e0..bf9bacef6 100644 --- a/analysis/views/views.py +++ b/analysis/views/views.py @@ -29,7 +29,7 @@ from analysis import forms from analysis.analysis_templates import populate_analysis_from_template_run from analysis.exceptions import NonFatalNodeError, NodeOutOfDateException -from analysis.forms import SelectGridColumnForm, UserTrioWizardForm, VCFLocusFilterForm, InputSamplesForm, \ +from analysis.forms import SelectGridColumnForm, UserTrioWizardForm, VCFLocusFilterForm, \ AnalysisChoiceForm, AnalysisTemplateTypeChoiceForm, AnalysisTemplateVersionForm, AnalysisTemplateForm from analysis.graphs.column_boxplot_graph import ColumnBoxplotGraph from analysis.grids import VariantGrid @@ -55,6 +55,7 @@ from library.utils import full_class_name, defaultdict_to_dict from library.utils.database_utils import run_sql, queryset_to_sql from pedigree.models import Pedigree +from snpdb.forms import SampleChoiceForm from snpdb.graphs import graphcache from snpdb.models import UserSettings, Sample, \ Cohort, CohortSample, ImportStatus, VCF, get_igv_data, Trio, Variant, GenomeBuild @@ -944,8 +945,9 @@ def _get_sample_form(self): samples = self.variant_tag.analysis.get_samples() if samples: - form = InputSamplesForm(samples=samples) + form = SampleChoiceForm() form.fields['sample'].required = False + form.fields['sample'].queryset = Sample.objects.filter(pk__in=[s.pk for s in samples]) else: form = super()._get_sample_form() return form diff --git a/classification/templates/classification/create_classification_for_variant.html b/classification/templates/classification/create_classification_for_variant.html index e98342c15..d0dce6f9a 100644 --- a/classification/templates/classification/create_classification_for_variant.html +++ b/classification/templates/classification/create_classification_for_variant.html @@ -211,15 +211,15 @@

Create Classification Record for {{ variant }}

{% labelled label="Sample" %}
- {{ variant_sample_autocomplete_form.sample }} - {{ variant_sample_autocomplete_form.media }} - - + {{ variant_sample_autocomplete_form.sample }} + {{ variant_sample_autocomplete_form.media }} + +
{% endlabelled %} diff --git a/snpdb/models/models_vcf.py b/snpdb/models/models_vcf.py index 966b7b894..34bf76b62 100644 --- a/snpdb/models/models_vcf.py +++ b/snpdb/models/models_vcf.py @@ -372,10 +372,16 @@ def cohort_genotype_collection(self): return self.vcf.cohort.cohort_genotype_collection def get_genotype(self, variant: Variant) -> 'SampleGenotype': + from snpdb.models import CohortGenotype + + cgc = self.cohort_genotype_collection + collections = [cgc] + if cgc.common_collection: + collections.append(cgc.common_collection) try: - cg = self.cohort_genotype_collection.cohortgenotype_set.get(variant=variant) + cg = CohortGenotype.objects.filter(collection__in=collections).get(variant=variant) sample_genotype = cg.get_sample_genotype(self) - except ObjectDoesNotExist: + except CohortGenotype.DoesNotExist: sample_genotype = None return sample_genotype