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
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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)))
Exemplo n.º 6
0
 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
         )))
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
 def to_es_filter(self):
     return user_id(self.submitted_by)
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 def to_es_filter(self):
     return user_id(self.submitted_by)
Exemplo n.º 12
0
def query_location_restricted_forms(query, request):
    accessible_ids = _get_location_accessible_ids(request)
    return query.OR(form_es.user_id(accessible_ids))