def _form_rows(self, domain): time_filter = form_es.submitted datespan = DateSpan(datetime.now() - timedelta(days=self.window), datetime.utcnow()) apps = get_brief_apps_in_domain(domain.name) apps = {a.id: a.name for a in apps} users_filter = form_es.user_id( EMWF.user_es_query( domain.name, ['t__0'], # All mobile workers self.couch_user).values_list('_id', flat=True)) query = (form_es.FormES().domain(domain.name).filter( time_filter(gte=datespan.startdate, lt=datespan.enddate_adjusted)).filter(users_filter)) rows = [] for hit in query.run().hits: username = hit['form']['meta']['username'] submitted = self._format_date( datetime.strptime(hit['received_on'][:19], '%Y-%m-%dT%H:%M:%S')) rows.append([ hit['form']['@name'], submitted, apps[hit['app_id']] if hit['app_id'] in apps else 'App not found', username, ] + self._domain_properties(domain)) return rows
def scope_filter(self): # Filter to be applied in AND with filters for export for restricted user # Restricts to forms submitted by users at accessible locations accessible_user_ids = (user_ids_at_accessible_locations( self.request.domain, self.request.couch_user )) return form_es.user_id(accessible_user_ids)
def _get_users_filter(self, mobile_user_and_group_slugs): user_ids = (EMWF.user_es_query(self.domain, mobile_user_and_group_slugs, self.request.couch_user) .values_list('_id', flat=True)) if HQUserType.UNKNOWN in EMWF.selected_user_types(mobile_user_and_group_slugs): user_ids.append(SYSTEM_USER_ID) return form_es.user_id(user_ids)
def _get_users_filter(self, mobile_user_and_group_slugs): user_ids = (EMWF.user_es_query( self.domain, mobile_user_and_group_slugs, self.request.couch_user).values_list('_id', flat=True)) if HQUserType.UNKNOWN in EMWF.selected_user_types( mobile_user_and_group_slugs): user_ids.append(SYSTEM_USER_ID) return form_es.user_id(user_ids)
def _get_users_filter(self, mobile_user_and_group_slugs): truthy_only = functools.partial(filter, None) users_data = EMWF.pull_users_and_groups(self.domain, mobile_user_and_group_slugs, include_inactive=True) selected_user_types = EMWF.selected_user_types( mobile_user_and_group_slugs) all_mobile_workers_selected = HQUserType.REGISTERED in selected_user_types if not all_mobile_workers_selected or users_data.admin_and_demo_users: return form_es.user_id( truthy_only(u.user_id for u in users_data.combined_users)) else: negated_ids = util.get_all_users_by_domain( self.domain, user_filter=HQUserType.all_but_users(), simplified=True, ) return es_filters.NOT( form_es.user_id( truthy_only(user.user_id for user in negated_ids)))
def _get_users_filter(self, mobile_user_and_group_slugs): truthy_only = functools.partial(filter, None) users_data = EMWF.pull_users_and_groups( self.domain, mobile_user_and_group_slugs, include_inactive=True ) selected_user_types = EMWF.selected_user_types(mobile_user_and_group_slugs) all_mobile_workers_selected = HQUserType.REGISTERED in selected_user_types if not all_mobile_workers_selected or users_data.admin_and_demo_users: return form_es.user_id(truthy_only( u.user_id for u in users_data.combined_users )) else: negated_ids = util.get_all_users_by_domain( self.domain, user_filter=HQUserType.all_but_users(), simplified=True, ) return es_filters.NOT(form_es.user_id(truthy_only( user.user_id for user in negated_ids )))
def hits(self, domain_name): time_filter = form_es.submitted datespan = DateSpan(datetime.now() - timedelta(days=self.window), datetime.utcnow()) users_filter = form_es.user_id( EMWF.user_es_query( domain_name, ['t__0'], # All mobile workers self.couch_user).values_list('_id', flat=True)) query = (form_es.FormES().domain(domain_name).filter( time_filter(gte=datespan.startdate, lt=datespan.enddate_adjusted)).filter(users_filter)) return query.run().hits
def hits(self, domain_name): time_filter = form_es.submitted datespan = DateSpan(datetime.now() - timedelta(days=self.window), datetime.utcnow()) users_filter = form_es.user_id(EMWF.user_es_query(domain_name, ['t__0'], # All mobile workers self.couch_user) .values_list('_id', flat=True)) query = (form_es.FormES() .domain(domain_name) .filter(time_filter(gte=datespan.startdate, lt=datespan.enddate_adjusted)) .filter(users_filter)) return query.run().hits
def to_es_filter(self): return user_id(self.submitted_by)
def _get_users_filter(self, mobile_user_and_group_slugs): user_ids = (EMWF.user_es_query( self.domain, mobile_user_and_group_slugs, self.request.couch_user).values_list('_id', flat=True)) return form_es.user_id(user_ids)
def query_location_restricted_forms(query, request): accessible_ids = _get_location_accessible_ids(request) return query.OR(form_es.user_id(accessible_ids))