Skip to content

Commit

Permalink
curation: add eu/sub-community request checks
Browse files Browse the repository at this point in the history
  • Loading branch information
yashlamba authored and slint committed Dec 18, 2024
1 parent 2949968 commit 470f99a
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
8 changes: 7 additions & 1 deletion site/zenodo_rdm/curation/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
award_acronym_in_title,
contains_high_conf_keywords,
contains_low_conf_keywords,
eu_community_declined_request,
eu_subcommunity_declined_request,
published_before_award_start,
test_phrases_in_record,
user_verified,
Expand All @@ -31,6 +33,8 @@
"additional_desc_contains_low_conf_keywords": additional_desc_contains_low_conf_keywords,
"additional_desc_contains_high_conf_keywords": additional_desc_contains_high_conf_keywords,
"award_acronym_in_additional_description": award_acronym_in_additional_description,
"eu_community_declined_request": eu_community_declined_request,
"eu_subcommunity_declined_request": eu_subcommunity_declined_request,
}
"""Rules to run for EU Curation."""

Expand All @@ -45,8 +49,10 @@
"additional_desc_contains_low_conf_keywords": 0,
"additional_desc_contains_high_conf_keywords": 0,
"award_acronym_in_additional_description": 0,
"eu_community_declined_request": False,
"eu_subcommunity_declined_request": False,
}
"""Rule scores for EU Curation."""
"""Rule scores for EU Curation (bool value implies direct approval/decline)."""


CURATION_THRESHOLDS = {"EU_RECORDS_CURATION": 100}
Expand Down
68 changes: 68 additions & 0 deletions site/zenodo_rdm/curation/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@

import arrow
from flask import current_app
from invenio_access.permissions import system_identity
from invenio_communities.proxies import current_communities
from invenio_rdm_records.requests import CommunityInclusion, CommunitySubmission
from invenio_records_resources.proxies import current_service_registry
from invenio_requests.proxies import current_requests_service
from invenio_search.engine import dsl


def award_acronym_in_description(record):
Expand Down Expand Up @@ -157,3 +162,66 @@ def award_acronym_in_additional_description(record):
):
return True
return False


def eu_community_declined_request(record):
"""Check if record was rejected from EU community."""
community_requests = dsl.Q(
"bool",
must=[
dsl.Q(
"term",
**{"receiver.community": current_app.config.get("EU_COMMUNITY_UUID")},
),
dsl.Q("term", **{"topic.record": record.pid.pid_value}),
],
)
request_types = dsl.Q(
"bool",
should=[
dsl.Q("term", **{"type": CommunityInclusion.type_id}),
dsl.Q("term", **{"type": CommunitySubmission.type_id}),
],
minimum_should_match=1,
)
finalq = community_requests & request_types
results = current_requests_service.search(system_identity, extra_filter=finalq)

for result in results:
if result["is_closed"] and result["status"] == "declined":
return True
if result["is_open"] and not result["is_expired"]:
return True
return False


def eu_subcommunity_declined_request(record):
"""Check if record was rejected from EU sub community."""
record_requests = dsl.Q(
"bool",
must=[
dsl.Q("term", **{"topic.record": record.pid.pid_value}),
dsl.Q("term", **{"is_open": False}),
],
)
request_types = dsl.Q(
"bool",
should=[
dsl.Q("term", **{"type": CommunityInclusion.type_id}),
dsl.Q("term", **{"type": CommunitySubmission.type_id}),
],
minimum_should_match=1,
)
finalq = record_requests & request_types
results = current_requests_service.search(system_identity, extra_filter=finalq)

for result in results:
receiver = current_communities.service.record_cls.pid.resolve(
result["receiver"]["community"]
)
if receiver.parent and str(receiver.parent.id) == current_app.config.get(
"EU_COMMUNITY_UUID"
):
if result["status"] == "declined":
return True
return False

0 comments on commit 470f99a

Please sign in to comment.