Skip to content

Commit

Permalink
cleanup imports, details objects in search component class files, re #…
Browse files Browse the repository at this point in the history
  • Loading branch information
whatisgalen committed Aug 21, 2024
1 parent 0749dfc commit d458d12
Show file tree
Hide file tree
Showing 15 changed files with 70 additions and 105 deletions.
28 changes: 16 additions & 12 deletions arches/app/search/components/advanced_search.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
from arches.app.models import models
from arches.app.models.models import (
Node,
DDataType,
GraphModel,
CardModel,
CardXNodeXWidget,
)
from arches.app.models.system_settings import settings
from arches.app.datatypes.datatypes import DataTypeFactory
from arches.app.utils.betterJSONSerializer import JSONDeserializer
from arches.app.search.elasticsearch_dsl_builder import Bool, Nested, Terms
from arches.app.search.elasticsearch_dsl_builder import Bool, Nested
from arches.app.search.components.base import BaseSearchFilter

details = {
Expand All @@ -11,7 +17,7 @@
"icon": "fa fa-check-circle-o",
"modulename": "advanced_search.py",
"classname": "AdvancedSearch",
"type": "filter",
"type": "advanced-search-type",
"componentpath": "views/components/search/advanced-search",
"componentname": "advanced-search",
"config": {},
Expand All @@ -32,7 +38,7 @@ def append_dsl(self, search_query_object, **kwargs):
null_query = Bool()
for key, val in advanced_filter.items():
if key != "op":
node = models.Node.objects.get(pk=key)
node = Node.objects.get(pk=key)
if self.request.user.has_perm("read_nodegroup", node.nodegroup):
datatype = datatype_factory.get_instance(node.datatype)
try:
Expand Down Expand Up @@ -69,27 +75,25 @@ def append_dsl(self, search_query_object, **kwargs):
def view_data(self):
ret = {}
resource_graphs = (
models.GraphModel.objects.exclude(
pk=settings.SYSTEM_SETTINGS_RESOURCE_MODEL_ID
)
GraphModel.objects.exclude(pk=settings.SYSTEM_SETTINGS_RESOURCE_MODEL_ID)
.exclude(isresource=False)
.exclude(publication=None)
)
searchable_datatypes = [
d.pk for d in models.DDataType.objects.filter(issearchable=True)
d.pk for d in DDataType.objects.filter(issearchable=True)
]
searchable_nodes = models.Node.objects.filter(
searchable_nodes = Node.objects.filter(
graph__isresource=True,
graph__publication__isnull=False,
datatype__in=searchable_datatypes,
issearchable=True,
)

resource_cards = models.CardModel.objects.filter(
resource_cards = CardModel.objects.filter(
graph__isresource=True, graph__publication__isnull=False
).select_related("nodegroup")
cardwidgets = models.CardXNodeXWidget.objects.filter(node__in=searchable_nodes)
datatypes = models.DDataType.objects.all()
cardwidgets = CardXNodeXWidget.objects.filter(node__in=searchable_nodes)
datatypes = DDataType.objects.all()

# only allow cards that the user has permission to read
searchable_cards = []
Expand Down
28 changes: 5 additions & 23 deletions arches/app/search/components/base.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,11 @@
from typing import List, Tuple, Any, Dict
from typing import List, Tuple, Any
from arches.app.const import ExtensionType
from arches.app.models import models
from arches.app.models.system_settings import settings
from arches.app.models.models import SearchComponent
from arches.app.utils.module_importer import get_class_from_modulename

details = {}
# details = {
# "searchcomponentid": "", # leave blank for the system to generate a uuid
# "name": "", # the name that shows up in the UI
# "icon": "", # the icon class to use
# "modulename": "base.py", # the name of this file
# "classname": "BaseSearchFilter", # the classname below",
# "type": "filter", # 'filter' if you want the component to show up dynamically
# "componentpath": "views/components/search/...", # path to ko component
# "componentname": "advanced-search", # lowercase unique name
# "config": {
# "linkedSearchFilters": [ # other components on which this one depends
# {
# "componentname": "search-results",
# "searchcomponentid": "00673743-8c1c-4cc0-bd85-c073a52e03ec",
# "sortorder": 3,
# }
# ]
# }
# }
# see docs for more info on developing search components:
# https://arches.readthedocs.io/en/latest/developing/reference/search-components/


class BaseSearchFilter:
Expand Down Expand Up @@ -69,7 +51,7 @@ def __init__(self, request=None, user=None):
self.user = user
self.search_filters = {
search_filter.componentname: search_filter
for search_filter in models.SearchComponent.objects.all()
for search_filter in SearchComponent.objects.all()
}
self.search_filters_instances = {}

Expand Down
41 changes: 12 additions & 29 deletions arches/app/search/components/base_search_view.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from arches.app.search.components.base import BaseSearchFilter
from arches.app.models import models
from arches.app.models.models import SearchComponent

details = {}
# details = {
Expand All @@ -13,44 +13,27 @@
# "componentname": "custom-search-view", # lowercase unique name
# "config": {
# "default": True, # set for search-view components; only 1 can be the default
# "availableComponents": [ # search components available to the frontend and permitted to be executed on the backend
# "linkedSearchFilters": [
# {
# "componentname":"map-filter","searchcomponentid":"09d97fc6-8c83-4319-9cef-3aaa08c3fbec","sortorder":1
# "componentname":"map-filter","searchcomponentid":"09d97fc6-8c83-4319-9cef-3aaa08c3fbec","layoutSortorder":1
# },
# {
# "componentname":"advanced-search","searchcomponentid":"f0e56205-acb5-475b-9c98-f5e44f1dbd2c","sortorder":2
# "componentname":"advanced-search","searchcomponentid":"f0e56205-acb5-475b-9c98-f5e44f1dbd2c","layoutSortorder":2
# },
# {
# "componentname":"related-resources-filter","searchcomponentid":"59f28272-d1f1-4805-af51-227771739aed","sortorder":3
# "componentname":"related-resources-filter","searchcomponentid":"59f28272-d1f1-4805-af51-227771739aed","layoutSortorder":3
# },
# {
# "componentname":"provisional-filter","searchcomponentid":"073406ed-93e5-4b5b-9418-b61c26b3640f","sortorder":4
# "componentname":"provisional-filter","searchcomponentid":"073406ed-93e5-4b5b-9418-b61c26b3640f","layoutSortorder":4
# },
# {
# "componentname":"term-filter","searchcomponentid":"1f42f501-ed70-48c5-bae1-6ff7d0d187da","sortorder":10
# "componentname":"term-filter","searchcomponentid":"1f42f501-ed70-48c5-bae1-6ff7d0d187da","layoutSortorder":10
# },
# {
# "componentname":"paging-filter","searchcomponentid":"7aff5819-651c-4390-9b9a-a61221ba52c6","sortorder":12
# "required": True, "componentname":"paging-filter","searchcomponentid":"7aff5819-651c-4390-9b9a-a61221ba52c6","layoutSortorder":12, "executionSortorder":2
# },
# {
# "componentname":"search-results","searchcomponentid":"00673743-8c1c-4cc0-bd85-c073a52e03ec","sortorder":13
# }
# ],
# "linkedSearchFilters": [ # components that must be applied on the backend
# {
# "componentname": "paging-filter",
# "searchcomponentid": "7aff5819-651c-4390-9b9a-a61221ba52c6",
# "sortorder": 1,
# },
# {
# "componentname": "provisional-filter",
# "searchcomponentid": "073406ed-93e5-4b5b-9418-b61c26b3640f",
# "sortorder": 2,
# },
# {
# "componentname": "search-results",
# "searchcomponentid": "00673743-8c1c-4cc0-bd85-c073a52e03ec",
# "sortorder": 3,
# "required": True, "componentname":"search-results","searchcomponentid":"00673743-8c1c-4cc0-bd85-c073a52e03ec","layoutSortorder":13, "executionSortorder":1
# }
# ]
# }
Expand All @@ -65,15 +48,15 @@ class BaseSearchView(BaseSearchFilter):

def __init__(self, request=None, user=None, componentname=None):
super().__init__(request=request, user=user, componentname=componentname)
self.searchview_component = models.SearchComponent.objects.get(
self.searchview_component = SearchComponent.objects.get(
componentname=componentname
)
required_filter_sort_order = {
item["componentname"]: int(item.get("executionSortorder", 99))
for item in self.searchview_component.config["linkedSearchFilters"]
}
self._required_search_filters = list(
models.SearchComponent.objects.filter(
SearchComponent.objects.filter(
searchcomponentid__in=[
linked_filter["searchcomponentid"]
for linked_filter in self.searchview_component.config[
Expand All @@ -94,7 +77,7 @@ def __init__(self, request=None, user=None, componentname=None):
for item in self.searchview_component.config["linkedSearchFilters"]
}
self._available_search_filters = list(
models.SearchComponent.objects.filter(
SearchComponent.objects.filter(
searchcomponentid__in=[
available_filter["searchcomponentid"]
for available_filter in self.searchview_component.config[
Expand Down
2 changes: 1 addition & 1 deletion arches/app/search/components/map_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"icon": "fa fa-map-marker",
"modulename": "map_filter.py",
"classname": "MapFilter",
"type": "filter",
"type": "map-filter-type",
"componentpath": "views/components/search/map-filter",
"componentname": "map-filter",
"config": {},
Expand Down
2 changes: 1 addition & 1 deletion arches/app/search/components/paging_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"icon": "",
"modulename": "paging_filter.py",
"classname": "PagingFilter",
"type": "paging",
"type": "paging-filter-type",
"componentpath": "views/components/search/paging-filter",
"componentname": "paging-filter",
"config": {},
Expand Down
2 changes: 1 addition & 1 deletion arches/app/search/components/provisional_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"icon": "",
"modulename": "provisional_filter.py",
"classname": "ProvisionalFilter",
"type": "",
"type": "provisional-filter-type",
"componentpath": "views/components/search/provisional-filter",
"componentname": "provisional-filter",
"config": {},
Expand Down
2 changes: 1 addition & 1 deletion arches/app/search/components/related_resources_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"icon": "fa fa-code-fork",
"modulename": "",
"classname": "",
"type": "filter",
"type": "related-resources-filter-type",
"componentpath": "views/components/search/related-resources-filter",
"componentname": "related-resources-filter",
"config": {},
Expand Down
3 changes: 1 addition & 2 deletions arches/app/search/components/resource_type_filter.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from arches.app.models.graph import Graph
from arches.app.utils.betterJSONSerializer import JSONDeserializer
from arches.app.search.elasticsearch_dsl_builder import Bool, Terms
from arches.app.search.components.base import BaseSearchFilter
Expand All @@ -11,7 +10,7 @@
"icon": "",
"modulename": "resource_type_filter.py",
"classname": "ResourceTypeFilter",
"type": "resource-type-filter",
"type": "resource-type-filter-type",
"componentpath": "views/components/search/resource-type-filter",
"componentname": "resource-type-filter",
"config": {},
Expand Down
3 changes: 1 addition & 2 deletions arches/app/search/components/saved_searches.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from arches.app.models.system_settings import settings
from arches.app.utils.betterJSONSerializer import JSONSerializer
from arches.app.search.components.base import BaseSearchFilter

details = {
Expand All @@ -8,7 +7,7 @@
"icon": "fa fa-bookmark",
"modulename": "saved_searches.py",
"classname": "SavedSearches",
"type": "popup",
"type": "saved-searches-type",
"componentpath": "views/components/search/saved-searches",
"componentname": "saved-searches",
"config": {},
Expand Down
4 changes: 1 addition & 3 deletions arches/app/search/components/search_export.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from arches.app.models.system_settings import settings
from arches.app.utils.betterJSONSerializer import JSONSerializer
from arches.app.search.components.base import BaseSearchFilter

details = {
Expand All @@ -8,7 +6,7 @@
"icon": "fa fa-download",
"modulename": "search_export.py",
"classname": "SearchExport",
"type": "popup",
"type": "search-export-type",
"componentpath": "views/components/search/search-export",
"componentname": "search-export",
"config": {},
Expand Down
6 changes: 3 additions & 3 deletions arches/app/search/components/search_results.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import uuid
from arches.app.models import models
from arches.app.models.models import Node
from arches.app.models.system_settings import settings
from arches.app.search.elasticsearch_dsl_builder import (
Bool,
Expand All @@ -22,7 +22,7 @@
"icon": "",
"modulename": "search_results.py",
"classname": "SearchResultsFilter",
"type": "results-list",
"type": "search-results-type",
"componentpath": "views/components/search/search-results",
"componentname": "search-results",
"config": {},
Expand Down Expand Up @@ -144,7 +144,7 @@ def post_search_hook(self, search_query_object, response_object, **kwargs):

def get_nodegroups_by_datatype_and_perm(request, datatype, permission):
nodes = []
for node in models.Node.objects.filter(datatype=datatype):
for node in Node.objects.filter(datatype=datatype):
if request.user.has_perm(permission, node.nodegroup):
nodes.append(str(node.nodegroup_id))
return nodes
Expand Down
3 changes: 1 addition & 2 deletions arches/app/search/components/sort_results.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from arches.app.search.components.base import BaseSearchFilter
from arches.app.search.elasticsearch_dsl_builder import Nested
from django.utils.translation import get_language

details = {
Expand All @@ -8,7 +7,7 @@
"icon": "",
"modulename": "sort_results.py",
"classname": "SortResults",
"type": "",
"type": "sort-results-type",
"componentpath": "views/components/search/sort-results",
"componentname": "sort-results",
"config": {},
Expand Down
Loading

0 comments on commit d458d12

Please sign in to comment.