')
- .draggable()
- .resizable({handles: "se", autoHide: true})
.appendTo("body");
}
diff --git a/frontend/summary/dataPivot/DataPivotUtilities.js b/frontend/summary/dataPivot/DataPivotUtilities.js
index a6d9522e50..821e2c2498 100644
--- a/frontend/summary/dataPivot/DataPivotUtilities.js
+++ b/frontend/summary/dataPivot/DataPivotUtilities.js
@@ -1,5 +1,6 @@
import $ from "$";
+import {renderClientSideAutosuggest} from "shared/components/Autocomplete";
import {_DataPivot_settings_conditionalFormat} from "./ConditionalFormat";
import DataPivot from "./DataPivot";
import {NULL_CASE} from "./shared";
@@ -150,7 +151,8 @@ class _DataPivot_settings_label {
class _DataPivot_settings_filters {
constructor(data_pivot, values) {
- var self = this;
+ var self = this,
+ valueTd = $("
")
.append($("").append(this.content.field_name))
.append($(" | ").append(this.content.quantifier))
- .append($(" | ").append(this.content.value))
+ .append(this.content.valueTd)
.append(movement_td)
- .on("change autocompletechange autocompleteselect", "input,select", function() {
- self.data_push();
- });
+ .on("change blur", "input,select", () => this.data_push());
var content = this.content,
- enable_autocomplete = function(request, response) {
+ enable_autocomplete = function() {
var field = content.field_name.find("option:selected").val(),
- values = Array.from(new Set(data_pivot.data.map(v => v[field])).values());
- content.value.autocomplete("option", {source: values});
+ values = Array.from(new Set(data_pivot.data.map(v => v[field])).values()),
+ initialValue = valueTd.find("input").val() || valueTd.data("initialValue");
+ renderClientSideAutosuggest(valueTd[0], "value", initialValue, values);
};
- this.content.field_name.on("change", enable_autocomplete);
- enable_autocomplete();
+ this.content.field_name.on("change", enable_autocomplete).trigger("change");
this.data_push();
return this;
@@ -221,7 +218,7 @@ class _DataPivot_settings_filters {
data_push() {
this.values.field_name = this.content.field_name.find("option:selected").val();
this.values.quantifier = this.content.quantifier.find("option:selected").val();
- this.values.value = this.content.value.val();
+ this.values.value = this.content.valueTd.find("input").val();
}
}
diff --git a/frontend/summary/summaryForms/BaseVisualForm.js b/frontend/summary/summaryForms/BaseVisualForm.js
index 6cf94f1118..0079c85f65 100644
--- a/frontend/summary/summaryForms/BaseVisualForm.js
+++ b/frontend/summary/summaryForms/BaseVisualForm.js
@@ -26,7 +26,6 @@ class BaseVisualForm {
// check if any data have changed
$data.find(":input").on("change", setDataChanged);
- $data.on("djselectableadd djselectableremove", setDataChanged);
// whenever data is synced, rebuild
$settings.on("dataSynced", this.unpackSettings.bind(this));
diff --git a/frontend/summary/summaryForms/BaseVisualFormReact.js b/frontend/summary/summaryForms/BaseVisualFormReact.js
index b1e399e04c..4622733676 100644
--- a/frontend/summary/summaryForms/BaseVisualFormReact.js
+++ b/frontend/summary/summaryForms/BaseVisualFormReact.js
@@ -92,10 +92,10 @@ class BaseVisualForm extends Component {
}
fetchEndpoints = (input, callback) => {
- const url = `${this.config.endpoint_url}?related=${this.config.assessment}&term=${input}`;
+ const url = `${this.config.endpoint_url}?animal_group__experiment__study__assessment_id=${this.config.assessment}&q=${input}`;
fetch(url, h.fetchGet)
.then(response => response.json())
- .then(json => callback(json.data));
+ .then(json => callback(json.results));
};
renderForm() {
diff --git a/frontend/summary/summaryForms/CrossviewForm.js b/frontend/summary/summaryForms/CrossviewForm.js
index a01df58de7..ba33eb2efc 100644
--- a/frontend/summary/summaryForms/CrossviewForm.js
+++ b/frontend/summary/summaryForms/CrossviewForm.js
@@ -5,6 +5,7 @@ import Endpoint from "animal/Endpoint";
import CrossviewPlot from "summary/summary/CrossviewPlot";
import Crossview from "summary/summary/Crossview";
import {DATA_FILTER_OPTIONS, filterLogicHelpText, filterQueryHelpText} from "../summary/filters";
+import {renderClientSideAutosuggest} from "shared/components/Autocomplete";
import BaseVisualForm from "./BaseVisualForm";
import {TextField, IntegerField, ColorField, CheckboxField, RadioField} from "./Fields";
@@ -211,11 +212,10 @@ class CrossviewEndpointFilterField extends TableField {
var fieldTd = this.addTdSelect("field", _.keys(CrossviewPlot._filters)),
field = fieldTd.find("select"),
valueTd = this.addTdText("value"),
- value = valueTd.find("input"),
setAutocomplete = () => {
var isLog = $('input[name="dose_isLog"]').prop("checked"),
- opts = CrossviewPlot.get_options(this.parent.endpoints, field.val(), isLog);
- value.autocomplete({source: opts});
+ options = CrossviewPlot.get_options(this.parent.endpoints, field.val(), isLog);
+ renderClientSideAutosuggest(valueTd[0], "value", "", options);
};
field.on("change", setAutocomplete).trigger("change");
diff --git a/frontend/summary/summaryForms/EndpointAggregationFormReact.js b/frontend/summary/summaryForms/EndpointAggregationFormReact.js
index 61bb783eb1..33f63833a1 100644
--- a/frontend/summary/summaryForms/EndpointAggregationFormReact.js
+++ b/frontend/summary/summaryForms/EndpointAggregationFormReact.js
@@ -69,6 +69,8 @@ class EndpointAggregationForm extends BaseVisualForm {
isMulti
name="endpoints"
loadOptions={_.debounce(this.fetchEndpoints, 500)}
+ getOptionLabel={opt => opt.text}
+ getOptionValue={opt => opt.id}
value={this.state.endpoints}
onChange={this.handleEndpointSelect}
/>
diff --git a/hawc/apps/animal/autocomplete.py b/hawc/apps/animal/autocomplete.py
new file mode 100644
index 0000000000..187602192e
--- /dev/null
+++ b/hawc/apps/animal/autocomplete.py
@@ -0,0 +1,38 @@
+from typing import Optional
+
+from ..common.autocomplete import BaseAutocomplete, SearchLabelMixin, register
+from . import models
+
+
+@register
+class ExperimentAutocomplete(BaseAutocomplete):
+ model = models.Experiment
+ search_fields = ["name"]
+ filter_fields = ["study_id", "study__assessment_id"]
+
+
+@register
+class AnimalGroupAutocomplete(BaseAutocomplete):
+ model = models.AnimalGroup
+ search_fields = ["name"]
+ filter_fields = ["experiment_id", "experiment__study__assessment_id"]
+
+
+@register
+class EndpointAutocomplete(SearchLabelMixin, BaseAutocomplete):
+ paginate_by = 50
+ model = models.Endpoint
+ search_fields = [
+ "animal_group__experiment__study__short_citation",
+ "animal_group__experiment__name",
+ "animal_group__name",
+ "name",
+ ]
+ filter_fields = [
+ "animal_group__experiment__study_id",
+ "animal_group__experiment__study__assessment_id",
+ ]
+
+ @classmethod
+ def get_base_queryset(cls, filters: Optional[dict] = None):
+ return super().get_base_queryset(filters).select_related("animal_group__experiment__study")
diff --git a/hawc/apps/animal/forms.py b/hawc/apps/animal/forms.py
index 50ba267221..2b89009972 100644
--- a/hawc/apps/animal/forms.py
+++ b/hawc/apps/animal/forms.py
@@ -9,18 +9,29 @@
from django.forms.models import BaseModelFormSet, modelformset_factory
from django.urls import reverse
-from ..assessment.lookups import DssToxIdLookup, EffectTagLookup, SpeciesLookup, StrainLookup
+from ..assessment.autocomplete import (
+ DSSToxAutocomplete,
+ EffectTagAutocomplete,
+ SpeciesAutocomplete,
+ StrainAutocomplete,
+)
from ..assessment.models import DoseUnits
-from ..common import selectable
+from ..common.autocomplete import (
+ AutocompleteChoiceField,
+ AutocompleteMultipleChoiceField,
+ AutocompleteSelectMultipleWidget,
+ AutocompleteSelectWidget,
+ AutocompleteTextWidget,
+)
from ..common.forms import (
BaseFormHelper,
CopyAsNewSelectorForm,
QuillField,
form_actions_apply_filters,
)
-from ..study.lookups import AnimalStudyLookup
+from ..study.autocomplete import StudyAutocomplete
from ..vocab.constants import VocabularyNamespace
-from . import constants, lookups, models
+from . import autocomplete, constants, models
class ExperimentForm(ModelForm):
@@ -28,6 +39,21 @@ class Meta:
model = models.Experiment
exclude = ("study",)
field_classes = {"description": QuillField}
+ widgets = {
+ "dtxsid": AutocompleteSelectWidget(autocomplete_class=DSSToxAutocomplete),
+ "chemical": AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="chemical"
+ ),
+ "cas": AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="cas"
+ ),
+ "chemical_source": AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="chemical_source"
+ ),
+ "guideline_compliance": AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="guideline_compliance"
+ ),
+ }
def __init__(self, *args, **kwargs):
parent = kwargs.pop("parent", None)
@@ -35,26 +61,6 @@ def __init__(self, *args, **kwargs):
if parent:
self.instance.study = parent
- self.fields["dtxsid"].widget = selectable.AutoCompleteSelectWidget(
- lookup_class=DssToxIdLookup
- )
-
- self.fields["chemical"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.ExpChemicalLookup, allow_new=True
- )
-
- self.fields["cas"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.ExpCasLookup, allow_new=True
- )
-
- self.fields["chemical_source"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.ExpChemSourceLookup, allow_new=True
- )
-
- self.fields["guideline_compliance"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.ExpGlpLookup, allow_new=True
- )
-
# change checkbox to select box
self.fields["has_multiple_generations"].widget = forms.Select(
choices=((True, "Yes"), (False, "No"))
@@ -131,7 +137,8 @@ def clean_purity_qualifier(self):
class ExperimentSelectorForm(CopyAsNewSelectorForm):
label = "Experiment"
- lookup_class = lookups.ExperimentByStudyLookup
+ parent_field = "study_id"
+ autocomplete_class = autocomplete.ExperimentAutocomplete
class AnimalGroupForm(ModelForm):
@@ -231,7 +238,8 @@ def clean(self):
class AnimalGroupSelectorForm(CopyAsNewSelectorForm):
label = "Animal group"
- lookup_class = lookups.AnimalGroupByExperimentLookup
+ parent_field = "experiment_id"
+ autocomplete_class = autocomplete.AnimalGroupAutocomplete
class GenerationalAnimalGroupForm(AnimalGroupForm):
@@ -361,14 +369,6 @@ def dosegroup_formset_factory(groups, num_dose_groups):
class EndpointForm(ModelForm):
-
- effects = selectable.AutoCompleteSelectMultipleField(
- lookup_class=EffectTagLookup,
- required=False,
- help_text="Any additional descriptive-tags used to categorize the outcome",
- label="Additional tags",
- )
-
class Meta:
model = models.Endpoint
fields = (
@@ -415,6 +415,10 @@ class Meta:
"organ_term": forms.HiddenInput,
"effect_term": forms.HiddenInput,
"effect_subtype_term": forms.HiddenInput,
+ "effects": AutocompleteSelectMultipleWidget(autocomplete_class=EffectTagAutocomplete),
+ "statistical_test": AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="statistical_test"
+ ),
}
field_classes = {"results_notes": QuillField, "endpoint_notes": QuillField}
@@ -423,6 +427,11 @@ def __init__(self, *args, **kwargs):
assessment = kwargs.pop("assessment", None)
super().__init__(*args, **kwargs)
+ self.fields["effects"].label = "Additional tags"
+ self.fields[
+ "effects"
+ ].help_text = "Any additional descriptive-tags used to categorize the outcome"
+
self.fields["NOEL"].widget = forms.Select()
self.fields["LOEL"].widget = forms.Select()
self.fields["FEL"].widget = forms.Select()
@@ -433,26 +442,6 @@ def __init__(self, *args, **kwargs):
self.fields["LOEL"].label = noel_names.loel
self.fields["LOEL"].help_text = noel_names.loel_help_text
- self.fields["system"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.EndpointSystemLookup, allow_new=True
- )
-
- self.fields["organ"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.EndpointOrganLookup, allow_new=True
- )
-
- self.fields["effect"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.EndpointEffectLookup, allow_new=True
- )
-
- self.fields["effect_subtype"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.EndpointEffectSubtypeLookup, allow_new=True
- )
-
- self.fields["statistical_test"].widget = selectable.AutoCompleteWidget(
- lookup_class=lookups.EndpointStatisticalTestLookup, allow_new=True
- )
-
if animal_group:
self.instance.animal_group = animal_group
self.instance.assessment = assessment
@@ -700,11 +689,8 @@ def __init__(self, **defaults):
class EndpointSelectorForm(CopyAsNewSelectorForm):
label = "Endpoint"
- lookup_class = lookups.EndpointByStudyLookup
-
-
-class UploadFileForm(forms.Form):
- file = forms.FileField()
+ parent_field = "animal_group__experiment__study_id"
+ autocomplete_class = autocomplete.EndpointAutocomplete
class EndpointFilterForm(forms.Form):
@@ -726,51 +712,59 @@ class EndpointFilterForm(forms.Form):
("animal_group__experiment__chemical", "chemical"),
]
- studies = selectable.AutoCompleteSelectMultipleField(
+ studies = AutocompleteMultipleChoiceField(
+ autocomplete_class=StudyAutocomplete,
label="Study reference",
- lookup_class=AnimalStudyLookup,
help_text="ex: Smith et al. 2010",
required=False,
)
chemical = forms.CharField(
label="Chemical name",
- widget=selectable.AutoCompleteWidget(lookups.ExpChemicalLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="chemical"
+ ),
help_text="ex: sodium",
required=False,
)
cas = forms.CharField(
label="CAS",
- widget=selectable.AutoCompleteWidget(lookups.RelatedExperimentCASLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.ExperimentAutocomplete, field="cas"
+ ),
help_text="ex: 107-02-8",
required=False,
)
lifestage_exposed = forms.CharField(
label="Lifestage exposed",
- widget=selectable.AutoCompleteWidget(lookups.RelatedAnimalGroupLifestageExposedLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.AnimalGroupAutocomplete, field="lifestage_exposed"
+ ),
help_text="ex: pup",
required=False,
)
lifestage_assessed = forms.CharField(
label="Lifestage assessed",
- widget=selectable.AutoCompleteWidget(lookups.RelatedAnimalGroupLifestageAssessedLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.AnimalGroupAutocomplete, field="lifestage_assessed"
+ ),
help_text="ex: adult",
required=False,
)
- species = selectable.AutoCompleteSelectField(
+ species = AutocompleteChoiceField(
+ autocomplete_class=SpeciesAutocomplete,
label="Species",
- lookup_class=SpeciesLookup,
help_text="ex: Mouse",
required=False,
)
- strain = selectable.AutoCompleteSelectField(
+ strain = AutocompleteChoiceField(
+ autocomplete_class=StrainAutocomplete,
label="Strain",
- lookup_class=StrainLookup,
help_text="ex: B6C3F1",
required=False,
)
@@ -790,42 +784,52 @@ class EndpointFilterForm(forms.Form):
name = forms.CharField(
label="Endpoint name",
- widget=selectable.AutoCompleteWidget(lookups.EndpointByAssessmentTextLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="name"
+ ),
help_text="ex: heart weight",
required=False,
)
system = forms.CharField(
label="System",
- widget=selectable.AutoCompleteWidget(lookups.RelatedEndpointSystemLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="system"
+ ),
help_text="ex: endocrine",
required=False,
)
organ = forms.CharField(
label="Organ",
- widget=selectable.AutoCompleteWidget(lookups.RelatedEndpointOrganLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="organ"
+ ),
help_text="ex: pituitary",
required=False,
)
effect = forms.CharField(
label="Effect",
- widget=selectable.AutoCompleteWidget(lookups.RelatedEndpointEffectLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="effect"
+ ),
help_text="ex: alanine aminotransferase (ALT)",
required=False,
)
effect_subtype = forms.CharField(
label="Effect Subtype",
- widget=selectable.AutoCompleteWidget(lookups.RelatedEndpointEffectSubtypeLookup),
+ widget=AutocompleteTextWidget(
+ autocomplete_class=autocomplete.EndpointAutocomplete, field="effect_subtype"
+ ),
help_text="ex: ",
required=False,
)
tags = forms.CharField(
label="Tags",
- widget=selectable.AutoCompleteWidget(EffectTagLookup),
+ widget=AutocompleteTextWidget(autocomplete_class=EffectTagAutocomplete, field="name"),
help_text="ex: antibody response",
required=False,
)
@@ -845,16 +849,26 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
noel_names = assessment.get_noel_names()
- self.fields["dose_units"].queryset = DoseUnits.objects.get_animal_units(assessment.id)
+ self.fields["studies"].set_filters({"assessment_id": assessment.id, "bioassay": True})
+ self.fields["species"].set_filters(
+ {"animalgroup__experiment__study__assessment_id": assessment.id}
+ )
+ self.fields["strain"].set_filters(
+ {"animalgroup__experiment__study__assessment_id": assessment.id}
+ )
+
for field in self.fields:
- if field not in (
- "sex",
- "data_extracted",
- "dose_units",
- "order_by",
- "paginate_by",
- ):
- self.fields[field].widget.update_query_parameters({"related": assessment.id})
+ widget = self.fields[field].widget
+ if field in ("chemical", "cas"):
+ widget.update_filters({"study__assessment_id": assessment.id})
+ elif field in ("lifestage_exposed", "lifestage_assessed"):
+ widget.update_filters({"experiment__study__assessment_id": assessment.id})
+ elif field in ("name", "system", "organ", "effect", "effect_subtype"):
+ widget.update_filters(
+ {"animal_group__experiment__study__assessment_id": assessment.id}
+ )
+
+ self.fields["dose_units"].queryset = DoseUnits.objects.get_animal_units(assessment.id)
for i, (k, v) in enumerate(self.fields["order_by"].choices):
if v == "":
diff --git a/hawc/apps/animal/lookups.py b/hawc/apps/animal/lookups.py
deleted file mode 100644
index cc6e2b5960..0000000000
--- a/hawc/apps/animal/lookups.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from django.utils.safestring import mark_safe
-from selectable.registry import registry
-
-from ..common.helper import new_window_a
-from ..common.lookups import (
- DistinctStringLookup,
- RelatedDistinctStringLookup,
- RelatedLookup,
- UserSpecifiedRelatedLookup,
-)
-from . import models
-
-
-class RelatedExperimentCASLookup(RelatedDistinctStringLookup):
- model = models.Experiment
- distinct_field = "cas"
- related_filter = "study__assessment_id"
-
-
-class ExperimentByStudyLookup(RelatedLookup):
- model = models.Experiment
- search_fields = ("name__icontains",)
- related_filter = "study_id"
-
-
-class AnimalGroupByExperimentLookup(RelatedLookup):
- model = models.AnimalGroup
- search_fields = ("name__icontains",)
- related_filter = "experiment_id"
-
-
-class RelatedAnimalGroupLifestageExposedLookup(RelatedDistinctStringLookup):
- model = models.AnimalGroup
- distinct_field = "lifestage_exposed"
- related_filter = "experiment__study__assessment_id"
-
-
-class RelatedAnimalGroupLifestageAssessedLookup(RelatedDistinctStringLookup):
- model = models.AnimalGroup
- distinct_field = "lifestage_assessed"
- related_filter = "experiment__study__assessment_id"
-
-
-class RelatedEndpointSystemLookup(RelatedDistinctStringLookup):
- model = models.Endpoint
- distinct_field = "system"
- related_filter = "assessment_id"
-
-
-class RelatedEndpointOrganLookup(RelatedDistinctStringLookup):
- model = models.Endpoint
- distinct_field = "organ"
- related_filter = "assessment_id"
-
-
-class RelatedEndpointEffectLookup(RelatedDistinctStringLookup):
- model = models.Endpoint
- distinct_field = "effect"
- related_filter = "assessment_id"
-
-
-class RelatedEndpointEffectSubtypeLookup(RelatedDistinctStringLookup):
- model = models.Endpoint
- distinct_field = "effect_subtype"
- related_filter = "assessment_id"
-
-
-class ExpChemicalLookup(DistinctStringLookup):
- model = models.Experiment
- distinct_field = "chemical"
-
-
-class ExpCasLookup(DistinctStringLookup):
- model = models.Experiment
- distinct_field = "cas"
-
-
-class ExpChemSourceLookup(DistinctStringLookup):
- model = models.Experiment
- distinct_field = "chemical_source"
-
-
-class ExpGlpLookup(DistinctStringLookup):
- model = models.Experiment
- distinct_field = "guideline_compliance"
-
-
-class EndpointSystemLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "system"
-
-
-class EndpointOrganLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "organ"
-
-
-class EndpointEffectLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "effect"
-
-
-class EndpointEffectSubtypeLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "effect_subtype"
-
-
-class EndpointStatisticalTestLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "statistical_test"
-
-
-class EndpointNameLookup(DistinctStringLookup):
- model = models.Endpoint
- distinct_field = "name"
-
-
-class EndpointByStudyLookup(UserSpecifiedRelatedLookup):
- # Return names of endpoints available for a particular study
- model = models.Endpoint
- related_filter = "animal_group__experiment__study"
- search_fields = None # user choices below instead
- search_fields_choices = {
- "animal_group__experiment__name",
- "animal_group__name",
- "name",
- "created",
- "last_updated",
- "data_type",
- "response_units",
- "observation_time",
- "system",
- }
- order_by_choices = {"id", "name", "created", "last_updated"}
-
-
-class EndpointByAssessmentLookup(RelatedLookup):
- # Return names of endpoints available for a assessment study
- model = models.Endpoint
- search_fields = (
- "name__icontains",
- "animal_group__name__icontains",
- "animal_group__experiment__name__icontains",
- "animal_group__experiment__study__short_citation__icontains",
- )
- related_filter = "assessment_id"
-
- def get_item_label(self, obj):
- return mark_safe(
- f"{obj.animal_group.experiment.study} | {obj.animal_group.experiment} | {obj.animal_group} | {obj}"
- )
-
- def get_item_value(self, obj):
- return self.get_item_label(obj)
-
-
-class EndpointByAssessmentTextLookup(RelatedLookup):
- model = models.Endpoint
- search_fields = ("name__icontains",)
- related_filter = "assessment_id"
-
- def get_query(self, request, term):
- return super().get_query(request, term).distinct("name").order_by("name")
-
-
-class EndpointIdByAssessmentLookup(EndpointByAssessmentLookup):
- def get_item_value(self, obj):
- return obj.id
-
-
-class EndpointByAssessmentLookupHtml(EndpointByAssessmentLookup):
- def get_item_value(self, obj):
- return new_window_a(obj.get_absolute_url(), self.get_item_label(obj))
-
-
-registry.register(ExperimentByStudyLookup)
-registry.register(AnimalGroupByExperimentLookup)
-registry.register(RelatedExperimentCASLookup)
-registry.register(RelatedAnimalGroupLifestageExposedLookup)
-registry.register(RelatedAnimalGroupLifestageAssessedLookup)
-registry.register(RelatedEndpointSystemLookup)
-registry.register(RelatedEndpointOrganLookup)
-registry.register(RelatedEndpointEffectLookup)
-registry.register(RelatedEndpointEffectSubtypeLookup)
-
-registry.register(ExpChemicalLookup)
-registry.register(ExpCasLookup)
-registry.register(ExpChemSourceLookup)
-registry.register(ExpGlpLookup)
-registry.register(EndpointSystemLookup)
-registry.register(EndpointOrganLookup)
-registry.register(EndpointEffectLookup)
-registry.register(EndpointEffectSubtypeLookup)
-registry.register(EndpointStatisticalTestLookup)
-
-registry.register(EndpointNameLookup)
-registry.register(EndpointByStudyLookup)
-registry.register(EndpointByAssessmentLookup)
-registry.register(EndpointByAssessmentTextLookup)
-registry.register(EndpointIdByAssessmentLookup)
-registry.register(EndpointByAssessmentLookupHtml)
diff --git a/hawc/apps/animal/templates/animal/animalgroup_copy_selector.html b/hawc/apps/animal/templates/animal/animalgroup_copy_selector.html
index 8a25f4bc59..300dd297ea 100644
--- a/hawc/apps/animal/templates/animal/animalgroup_copy_selector.html
+++ b/hawc/apps/animal/templates/animal/animalgroup_copy_selector.html
@@ -2,11 +2,6 @@
{% load add_class %}
-{% load selectable_tags %}
-
-{% block extrastyle %}
- {% include_ui_theme %}
-{% endblock %}
{% block content %}
diff --git a/hawc/apps/animal/templates/animal/animalgroup_form.html b/hawc/apps/animal/templates/animal/animalgroup_form.html
index d42607a26d..6b7067ef70 100644
--- a/hawc/apps/animal/templates/animal/animalgroup_form.html
+++ b/hawc/apps/animal/templates/animal/animalgroup_form.html
@@ -2,11 +2,6 @@
{% load add_class %}
{% load crispy_forms_tags %}
-{% load selectable_tags %}
-
-{% block extrastyle %}
- {% include_ui_theme %}
-{% endblock %}
{% block content %}
diff --git a/hawc/apps/animal/templates/animal/endpoint_copy_selector.html b/hawc/apps/animal/templates/animal/endpoint_copy_selector.html
index 0f4a8a2363..4f13efb049 100644
--- a/hawc/apps/animal/templates/animal/endpoint_copy_selector.html
+++ b/hawc/apps/animal/templates/animal/endpoint_copy_selector.html
@@ -2,11 +2,6 @@
{% load add_class %}
-{% load selectable_tags %}
-
-{% block extrastyle %}
- {% include_ui_theme %}
-{% endblock %}
{% block content %}
@@ -30,16 +25,16 @@
|