Skip to content

Commit

Permalink
Merge pull request #286 from basedosdados/refactor/open-data
Browse files Browse the repository at this point in the history
Refactor/open data
  • Loading branch information
mfagundes authored Aug 2, 2023
2 parents 49f4b25 + 5b2a452 commit b304d15
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
17 changes: 17 additions & 0 deletions basedosdados_api/api/v1/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,23 @@ def contains_closed_data(self):
def get_graphql_contains_closed_data(self):
return self.contains_closed_data

@property
def contains_open_data(self):
"""Returns true if there are tables or columns with open coverages"""
open_data = False
tables = self.tables.all()
for table in tables:
table_coverages = table.coverages.filter(is_closed=False)
if table_coverages:
open_data = True
break

return open_data

@property
def get_graphql_contains_open_data(self):
return self.contains_open_data

@property
def contains_closed_tables(self):
closed_tables = self.tables.all().filter(is_closed=True)
Expand Down
5 changes: 5 additions & 0 deletions basedosdados_api/api/v1/search_indexes.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class DatasetIndex(indexes.SearchIndex, indexes.Indexable):
is_closed = indexes.BooleanField(model_attr="is_closed")
contains_tables = indexes.BooleanField(model_attr="contains_tables")
contains_closed_data = indexes.BooleanField(model_attr="contains_closed_data")
contains_open_data = indexes.BooleanField(model_attr="contains_open_data")
contains_open_tables = indexes.BooleanField(model_attr="contains_open_tables")
contains_closed_tables = indexes.BooleanField(model_attr="contains_closed_tables")
contains_raw_data_sources = indexes.BooleanField(
Expand Down Expand Up @@ -207,6 +208,10 @@ def prepare(self, obj):
contains_closed_data = data.get("contains_closed_data", False)
data["contains_closed_data"] = contains_closed_data

# Contains open data
contains_open_data = data.get("contains_open_data", False)
data["contains_open_data"] = contains_open_data

# Contains open tables
contains_open_tables = data.get("contains_open_tables", False)
data["contains_open_tables"] = contains_open_tables
Expand Down
9 changes: 9 additions & 0 deletions basedosdados_api/api/v1/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ def get(self, request, *args, **kwargs):
all_filters.append({"match": {"contains_tables": True}})
if "closed_data" in options:
all_filters.append({"match": {"contains_closed_data": True}})
if "open_data" in options:
all_filters.append({"match": {"contains_open_data": True}})
if "raw_data_sources" in options:
all_filters.append({"match": {"contains_raw_data_sources": True}})
if "information_requests" in options:
Expand Down Expand Up @@ -187,6 +189,12 @@ def get(self, request, *args, **kwargs):
"size": agg_page_size,
}
},
"contains_open_data_counts": {
"terms": {
"field": "contains_open_data",
"size": agg_page_size,
}
},
"contains_open_tables_counts": {
"terms": {
"field": "contains_open_tables",
Expand Down Expand Up @@ -338,6 +346,7 @@ def get(self, request, *args, **kwargs):
cleaned_results["contains_closed_data"] = r.get(
"contains_closed_data", False
)
cleaned_results["contains_open_data"] = r.get("contains_open_data", False)
cleaned_results["contains_closed_tables"] = r.get(
"contains_closed_tables", False
)
Expand Down

0 comments on commit b304d15

Please sign in to comment.