"""
COVID: Available Criteria
-------------------------
The following criteria can be used in messaging in projects using the ``covid`` custom module.
"""
from corehq.apps.es.case_search import CaseSearchES, wrap_case_search_hit
from corehq.apps.app_manager.const import USERCASE_TYPE
[docs]def associated_usercase_closed(case, now):
"""
Is this an open checkin case where the associated usercase has been closed?
"""
if case.closed or case.type != "checkin":
return False
usercase = get_usercase_from_checkin(case)
return (
usercase is not None
and case.domain == usercase.domain
and usercase.closed
)
def get_usercase_from_checkin(checkin_case):
username = checkin_case.get_case_property("username")
if not username:
return None
query = (
CaseSearchES()
.domain(checkin_case.domain)
.case_type(USERCASE_TYPE)
.case_property_query("username", username)
)
results = query.run().hits
if not results:
return None
return wrap_case_search_hit(results[0])