def get_all_users_by_domain(domain=None, group=None, individual=None, user_filter=None, simplified=False, CommCareUser=None): """ WHEN THERE ARE A LOT OF USERS, THIS IS AN EXPENSIVE OPERATION. Returns a list of CommCare Users based on domain, group, and user filter (demo_user, admin, registered, unknown) """ if not CommCareUser: from corehq.apps.users.models import CommCareUser if group: # get all the users only in this group and don't bother filtering. if not isinstance(group, Group): group = Group.get(group) users = group.get_users(only_commcare=True) elif individual: try: users = [CommCareUser.get_by_user_id(individual)] except Exception: users = [] if users and users[0] is None: raise Http404() else: if not user_filter: user_filter = HQUserType.use_defaults() users = [] submitted_user_ids = get_all_userids_submitted(domain) registered_user_ids = dict([ (user.user_id, user) for user in CommCareUser.by_domain(domain) ]) for user_id in submitted_user_ids: if user_id in registered_user_ids and user_filter[ HQUserType.REGISTERED].show: user = registered_user_ids[user_id] users.append(user) elif not user_id in registered_user_ids and \ (user_filter[HQUserType.ADMIN].show or user_filter[HQUserType.DEMO_USER].show or user_filter[HQUserType.UNKNOWN].show): username = get_username_from_forms(domain, user_id) temp_user = TempCommCareUser(domain, username, user_id) if user_filter[temp_user.filter_flag].show: users.append(temp_user) if user_filter[HQUserType.UNKNOWN].show: users.append(TempCommCareUser(domain, '*', None)) if user_filter[HQUserType.REGISTERED].show: # now add all the registered users who never submitted anything for user_id in registered_user_ids: if not user_id in submitted_user_ids: user = CommCareUser.get_by_user_id(user_id) users.append(user) if simplified: return [_report_user_dict(user) for user in users] return users
def get_all_users_by_domain(domain=None, group=None, user_ids=None, user_filter=None, simplified=False, CommCareUser=None, include_inactive=False): """ WHEN THERE ARE A LOT OF USERS, THIS IS AN EXPENSIVE OPERATION. Returns a list of CommCare Users based on domain, group, and user filter (demo_user, admin, registered, unknown) """ user_ids = user_ids if user_ids and user_ids[0] else None if not CommCareUser: from corehq.apps.users.models import CommCareUser if group: # get all the users only in this group and don't bother filtering. if not isinstance(group, Group): group = Group.get(group) users = group.get_users(only_commcare=True) elif user_ids is not None: try: users = [CommCareUser.get_by_user_id(id) for id in user_ids] except Exception: users = [] if users and users[0] is None: raise Http404() else: if not user_filter: user_filter = HQUserType.use_defaults() users = [] submitted_user_ids = get_all_userids_submitted(domain) registered_user_ids = dict([(user.user_id, user) for user in CommCareUser.by_domain(domain)]) if include_inactive: registered_user_ids.update(dict([(u.user_id, u) for u in CommCareUser.by_domain(domain, is_active=False)])) for user_id in submitted_user_ids: if user_id in registered_user_ids and user_filter[HQUserType.REGISTERED].show: user = registered_user_ids[user_id] users.append(user) elif not user_id in registered_user_ids and \ (user_filter[HQUserType.ADMIN].show or user_filter[HQUserType.DEMO_USER].show or user_filter[HQUserType.UNKNOWN].show): username = get_username_from_forms(domain, user_id) temp_user = TempCommCareUser(domain, username, user_id) if user_filter[temp_user.filter_flag].show: users.append(temp_user) if user_filter[HQUserType.UNKNOWN].show: users.append(TempCommCareUser(domain, '*', None)) if user_filter[HQUserType.REGISTERED].show: # now add all the registered users who never submitted anything for user_id in registered_user_ids: if not user_id in submitted_user_ids: user = CommCareUser.get_by_user_id(user_id) users.append(user) if simplified: return [_report_user_dict(user) for user in users] return users
def report_context(self): context = super(CaseReassignmentInterface, self).report_context active_users = util.get_all_users_by_domain(self.domain, user_filter=HQUserType.use_defaults(), simplified=True) context.update( users=[dict(ownerid=user.get('user_id'), name=user.get('username_in_report'), type="user") for user in active_users], groups=[dict(ownerid=group.get_id, name=group.name, type="group") for group in self.all_case_sharing_groups] ) return context
def get_all_users_by_domain(domain, **kwargs): """ WHEN THERE ARE A LOT OF USERS, THIS IS AN EXPENSIVE OPERATION. Returns a list of CommCare Users based on domain, group, and user filter (demo_user, admin, registered, unknown) """ group = kwargs.get('group') individual = kwargs.get('individual') user_filter = kwargs.get('user_filter') simplified = kwargs.get('simplified', False) if group: # get all the users only in this group and don't bother filtering. if not isinstance(group, Group): group = Group.get(group) users = group.get_users(only_commcare=True) elif individual: try: users = [CommCareUser.get_by_user_id(individual)] except Exception: users = [] if users and users[0] is None: raise Http404() else: if not user_filter: user_filter = HQUserType.use_defaults() users = [] submitted_user_ids = get_all_userids_submitted(domain) registered_user_ids = [user.user_id for user in CommCareUser.by_domain(domain)] for user_id in submitted_user_ids: if user_id in registered_user_ids and user_filter[HQUserType.REGISTERED].show: user = CommCareUser.get_by_user_id(user_id) users.append(user) elif not user_id in registered_user_ids and \ (user_filter[HQUserType.ADMIN].show or user_filter[HQUserType.DEMO_USER].show or user_filter[HQUserType.UNKNOWN].show): username = get_username_from_forms(domain, user_id) temp_user = TempCommCareUser(domain, username, user_id) if user_filter[temp_user.filter_flag].show: users.append(temp_user) if user_filter[HQUserType.UNKNOWN].show: users.append(TempCommCareUser(domain, '', None)) if user_filter[HQUserType.REGISTERED].show: # now add all the registered users who never submitted anything for user_id in registered_user_ids: if not user_id in submitted_user_ids: user = CommCareUser.get_by_user_id(user_id) users.append(user) if simplified: return [_report_user_dict(user) for user in users] return users
def get_user_filter(cls, request): ufilter = group = individual = None try: if request.GET.get('ufilter', ''): ufilter = request.GET.getlist('ufilter') group = request.GET.get('group', '') individual = request.GET.get('individual', '') except KeyError: pass show_filter = True toggle = HQUserType.use_defaults() if ufilter and not (group or individual): toggle = HQUserType.use_filter(ufilter) elif group or individual: show_filter = False return toggle, show_filter
def report_context(self): context = super(CaseReassignmentInterface, self).report_context active_users = self.get_all_users_by_domain(user_filter=tuple( HQUserType.use_defaults()), simplified=True) context.update( users=[ dict(ownerid=user.get('user_id'), name=user.get('username_in_report'), type="user") for user in active_users ], groups=[ dict(ownerid=group.get_id, name=group.name, type="group") for group in self.all_case_sharing_groups ], user_ids=self.user_ids, ) return context
def get_user_filter(cls, request): ufilter = group = individual = None try: if request.GET.get("ufilter", ""): ufilter = request.GET.getlist("ufilter") group = request.GET.get("group", "") individual = request.GET.get("individual", "") except KeyError: pass except AttributeError: pass show_filter = True toggle = HQUserType.use_defaults() if not cls.always_show_filter and (group or individual): show_filter = False elif ufilter: toggle = HQUserType.use_filter(ufilter) return toggle, show_filter
def user_filter(self): if self.no_lucene: self._user_filter = HQUserType.use_defaults(show_all=True) return super(CaseListReport, self).user_filter