def _get_assigned_cases(checkin_case): query = (CaseSearchES().domain(checkin_case.domain).filter( filters.OR(case_type("patient"), case_type("contact"))).case_property_query( "assigned_to_primary_checkin_case_id", checkin_case.case_id)) return [CommCareCase.wrap(flatten_result(hit)) for hit in query.run().hits]
def _get_assigned_cases(checkin_case): """ An assigned case is a case for which all of the following are true Case type patient or contact Exists in the same domain as the user case The case property assigned_to_primary_checkin_case_id equals an associated checkin case's case_id """ query = (CaseSearchES().domain(checkin_case.domain).filter( filters.OR(case_type("patient"), case_type("contact"))).case_property_query( "assigned_to_primary_checkin_case_id", checkin_case.case_id)) return [CommCareCase.wrap(flatten_result(hit)) for hit in query.run().hits]
def get_most_recent_case_type(domain): # gets most recently submitted case type in a domain query = (CaseSearchES().domain(domain).NOT( case_es.case_type(USER_LOCATION_OWNER_MAP_TYPE))) query = query.sort('modified_on', desc=True) result = query.size(1).values_list('type', flat=True) return result[0] if len(result) > 0 else None
def initial_value(cls, request, domain): initial_value = super(CaseTypeReportFilter, cls).initial_value(request, domain) if initial_value is None: query = (CaseSearchES().domain(domain) .NOT(case_es.case_type(USER_LOCATION_OWNER_MAP_TYPE))) result = query.size(1).values_list('type', flat=True) initial_value = result[0] if len(result) > 0 else None return initial_value
def _build_query(self): query = (self.search_class() .domain(self.domain) .size(self.pagination.count) .start(self.pagination.start)) query.es_query['sort'] = self.get_sorting_block() mobile_user_and_group_slugs = self.request.GET.getlist(EMWF.slug) user_types = EMWF.selected_user_types(mobile_user_and_group_slugs) if self.case_filter: query = query.filter(self.case_filter) query = query.NOT(case_es.case_type("user-owner-mapping-case")) if self.case_type: query = query.case_type(self.case_type) if self.case_status: query = query.is_closed(self.case_status == 'closed') if self.request.can_access_all_locations and (EMWF.show_all_data(mobile_user_and_group_slugs) or EMWF.no_filters_selected(mobile_user_and_group_slugs)): pass elif self.request.can_access_all_locations and EMWF.show_project_data(mobile_user_and_group_slugs): # Show everything but stuff we know for sure to exclude ids_to_exclude = self.get_special_owner_ids( admin=HQUserType.ADMIN not in user_types, unknown=HQUserType.UNKNOWN not in user_types, web=HQUserType.WEB not in user_types, demo=HQUserType.DEMO_USER not in user_types, commtrack=False, ) query = query.NOT(case_es.owner(ids_to_exclude)) elif self.request.can_access_all_locations and EMWF.show_deactivated_data(mobile_user_and_group_slugs): owner_ids = (user_es.UserES() .show_only_inactive() .domain(self.domain) .get_ids()) query = query.OR(case_es.owner(owner_ids)) else: # Only show explicit matches query = query.owner(self.case_owners) if not self.request.can_access_all_locations: query = query.OR(self.scope_filter()) search_string = CaseSearchFilter.get_value(self.request, self.domain) if search_string: query = query.set_query({"query_string": {"query": search_string}}) return query
def _build_query(self): query = (self.search_class().domain(self.domain).size( self.pagination.count).start(self.pagination.start)) query.es_query['sort'] = self.get_sorting_block() mobile_user_and_group_slugs = self.request.GET.getlist(EMWF.slug) user_types = EMWF.selected_user_types(mobile_user_and_group_slugs) if self.case_filter: query = query.filter(self.case_filter) query = query.NOT(case_es.case_type("user-owner-mapping-case")) if self.case_type: query = query.case_type(self.case_type) if self.case_status: query = query.is_closed(self.case_status == 'closed') if self.request.can_access_all_locations and ( EMWF.show_all_data(mobile_user_and_group_slugs) or EMWF.no_filters_selected(mobile_user_and_group_slugs)): pass elif self.request.can_access_all_locations and EMWF.show_project_data( mobile_user_and_group_slugs): # Show everything but stuff we know for sure to exclude ids_to_exclude = self.get_special_owner_ids( admin=HQUserType.ADMIN not in user_types, unknown=HQUserType.UNKNOWN not in user_types, web=HQUserType.WEB not in user_types, demo=HQUserType.DEMO_USER not in user_types, commtrack=False, ) query = query.NOT(case_es.owner(ids_to_exclude)) elif self.request.can_access_all_locations and EMWF.show_deactivated_data( mobile_user_and_group_slugs): owner_ids = (user_es.UserES().show_only_inactive().domain( self.domain).get_ids()) query = query.OR(case_es.owner(owner_ids)) else: # Only show explicit matches query = query.owner(self.case_owners) if not self.request.can_access_all_locations: query = query.OR(self.scope_filter()) search_string = CaseSearchFilter.get_value(self.request, self.domain) if search_string: query = query.set_query({"query_string": {"query": search_string}}) return query
def _build_query(self): query = (self.search_class().domain(self.domain).size( self.pagination.count).start(self.pagination.start)) query.es_query['sort'] = self.get_sorting_block() mobile_user_and_group_slugs = self.request.GET.getlist(EMWF.slug) if self.case_filter: query = query.filter(self.case_filter) query = query.NOT(case_es.case_type("user-owner-mapping-case")) if self.case_type: query = query.case_type(self.case_type) if self.case_status: query = query.is_closed(self.case_status == 'closed') case_owner_filters = [] if (self.request.can_access_all_locations and EMWF.show_project_data(mobile_user_and_group_slugs)): case_owner_filters.append( all_project_data_filter(self.domain, mobile_user_and_group_slugs)) if (self.request.can_access_all_locations and EMWF.show_deactivated_data(mobile_user_and_group_slugs)): case_owner_filters.append(deactivated_case_owners(self.domain)) # Only show explicit matches if (EMWF.selected_user_ids(mobile_user_and_group_slugs) or EMWF.selected_user_types(mobile_user_and_group_slugs) or EMWF.selected_group_ids(mobile_user_and_group_slugs) or EMWF.selected_location_ids(mobile_user_and_group_slugs)): track_es_report_load(self.domain, self.slug, len(self.case_owners)) case_owner_filters.append(case_es.owner(self.case_owners)) query = query.OR(*case_owner_filters) if not self.request.can_access_all_locations: query = query_location_restricted_cases(query, self.request) search_string = CaseSearchFilter.get_value(self.request, self.domain) if search_string: query = query.set_query({"query_string": {"query": search_string}}) return query
def _build_query(self): query = (self.search_class() .domain(self.domain) .size(self.pagination.count) .start(self.pagination.start)) query.es_query['sort'] = self.get_sorting_block() mobile_user_and_group_slugs = self.request.GET.getlist(EMWF.slug) if self.case_filter: query = query.filter(self.case_filter) query = query.NOT(case_es.case_type("user-owner-mapping-case")) if self.case_type: query = query.case_type(self.case_type) if self.case_status: query = query.is_closed(self.case_status == 'closed') if self.request.can_access_all_locations and ( EMWF.show_all_data(mobile_user_and_group_slugs) or EMWF.no_filters_selected(mobile_user_and_group_slugs) ): pass elif (self.request.can_access_all_locations and EMWF.show_project_data(mobile_user_and_group_slugs)): query = query_all_project_data( query, self.domain, mobile_user_and_group_slugs ) elif (self.request.can_access_all_locations and EMWF.show_deactivated_data(mobile_user_and_group_slugs)): query = query_deactivated_data(query, self.domain) else: # Only show explicit matches query = query.owner(self.case_owners) if not self.request.can_access_all_locations: query = query_location_restricted_cases(query, self.request) search_string = CaseSearchFilter.get_value(self.request, self.domain) if search_string: query = query.set_query({"query_string": {"query": search_string}}) return query
def _build_query(self): query = (case_es.CaseES() .domain(self.domain) .size(self.pagination.count) .start(self.pagination.start)) query.es_query['sort'] = self.get_sorting_block() if self.case_filter: query = query.filter(self.case_filter) query = query.NOT(case_es.case_type("user-owner-mapping-case")) if self.case_type: query = query.case_type(self.case_type) if self.case_status: query = query.is_closed(self.case_status == 'closed') if EMWF.show_all_data(self.request): pass elif EMWF.show_project_data(self.request): # Show everything but stuff we know for sure to exclude user_types = EMWF.selected_user_types(self.request) ids_to_exclude = self.get_special_owner_ids( admin=HQUserType.ADMIN not in user_types, unknown=HQUserType.UNKNOWN not in user_types, demo=HQUserType.DEMO_USER not in user_types, commtrack=False, ) query = query.NOT(case_es.owner(ids_to_exclude)) else: # Only show explicit matches query = query.owner(self.case_owners) search_string = SearchFilter.get_value(self.request, self.domain) if search_string: query = query.set_query({"query_string": {"query": search_string}}) return query
def es_results(self): query = self._build_query() # FB 183468: Don't allow user cases to be reassigned query = query.NOT(case_es.case_type(USERCASE_TYPE)) return query.run().raw
def _get_base_query(self): return (CaseSearchES().domain(self.domain).NOT( case_es.case_type(USER_LOCATION_OWNER_MAP_TYPE)))
def _get_assigned_cases(checkin_case): return (CaseSearchES().domain(checkin_case.domain).filter( filters.OR(case_type("patient"), case_type("contact"))).case_property_query( "assigned_to_primary_checkin_case_id", checkin_case.case_id).values_list('domain', '_id'))
def _get_base_query(self): return (CaseSearchES() .domain(self.domain) .NOT(case_es.case_type("user-owner-mapping-case")))