def parse_web_users(domain, task=None, total_count=None): user_dicts = [] max_location_length = 0 location_cache = LocationIdToSiteCodeCache(domain) for n, user in enumerate(get_all_user_rows(domain, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True)): user_dict = make_web_user_dict(user, location_cache, domain) user_dicts.append(user_dict) max_location_length = max(max_location_length, len(user_dict["location_code"])) if task: DownloadBase.set_progress(task, n, total_count) for m, invite in enumerate(Invitation.by_domain(domain)): user_dict = make_invited_web_user_dict(invite, location_cache) user_dicts.append(user_dict) if task: DownloadBase.set_progress(task, n + m, total_count) user_headers = [ 'username', 'first_name', 'last_name', 'email', 'role', 'last_access_date (read only)', 'last_login (read only)', 'status', 'remove' ] if domain_has_privilege(domain, privileges.LOCATIONS): user_headers.extend(json_to_headers( {'location_code': list(range(1, max_location_length + 1))} )) return user_headers, get_user_rows(user_dicts, user_headers)
def rows_for_domain(self, domain_obj): rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) domain_membership = user.get_domain_membership(domain_obj.name) last_accessed_domain = None if domain_membership: last_accessed_domain = domain_membership.last_accessed rows.append([ user.username, user.full_name, user.role_label(domain_obj.name), self.format_date(user.last_login), last_accessed_domain, _('Active User') ] + self.domain_properties(domain_obj)) for invite in Invitation.by_domain(domain_obj.name): rows.append([ invite.email, 'N/A', invite.get_role_name(), 'N/A', 'N/A', _('Invited') ] + self.domain_properties(domain_obj)) return rows
def rows_for_domain(self, domain_obj): rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) rows.append([ user.full_name, user.username, user.role_label(domain_obj.name), self.format_date(user.last_login), ] + self.domain_properties(domain_obj)) return rows
def rows_for_domain(self, domain_obj): rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=False, include_mobile_users=True, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) rows.append([ re.sub(r'@.*', '', user.username), user.full_name, self.format_date(user.created_on), self.format_date(user.reporting_metadata.last_sync_for_user.sync_date), self.format_date(user.reporting_metadata.last_submission_for_user.submission_date), user.reporting_metadata.last_submission_for_user.commcare_version or '', ] + self.domain_properties(domain_obj)) return rows
def _web_user_rows(self, domain): rows = [] for user in get_all_user_rows(domain.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = WebUser.wrap(user['doc']) rows.append([ user.full_name, user.username, user.role_label(domain.name), self._format_date(user.last_login), ] + self._domain_properties(domain)) return rows
def rows_for_domain(self, domain_obj): rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) rows.append([ user.full_name, user.username, user.role_label(domain_obj.name), self.format_date(user.last_login), ] + self.domain_properties(domain_obj)) return rows
def build_table(self): for domain in Domain.get_all(): logger.info("Building MALT for {}".format(domain.name)) for monthspan in self.monthspan_list: all_users = get_all_user_rows(domain.name, include_inactive=False, include_docs=True) for users in chunked(all_users, 1000): users_by_id = {user['id']: CouchUser.wrap_correctly(user['doc']) for user in users} try: malt_rows_to_save = self._get_malt_row_dicts(domain.name, monthspan, users_by_id) except Exception as ex: logger.error("Failed to get rows for domain {name}. Exception is {ex}".format (name=domain.name, ex=str(ex)), exc_info=True) if malt_rows_to_save: self._save_to_db(malt_rows_to_save, domain._id)
def build_table(self): for domain in Domain.get_all(): logger.info("Building MALT for {}".format(domain.name)) for monthspan in self.monthspan_list: all_users = get_all_user_rows(domain.name, include_inactive=False, include_docs=True) for users in chunked(all_users, 1000): users_by_id = {user['id']: CouchUser.wrap_correctly(user['doc']) for user in users} try: malt_rows_to_save = self._get_malt_row_dicts(domain.name, monthspan, users_by_id) except Exception as ex: logger.error("Failed to get rows for domain {name}. Exception is {ex}".format (name=domain.name, ex=str(ex)), exc_info=True) if malt_rows_to_save: self._save_to_db(malt_rows_to_save, domain._id)
def rows_for_domain(self, domain_obj): rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=False, include_mobile_users=True, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) rows.append([ re.sub(r'@.*', '', user.username), user.full_name, user.email, self.format_date(user.created_on), self.format_date( user.reporting_metadata.last_sync_for_user.sync_date), self.format_date(user.reporting_metadata. last_submission_for_user.submission_date), user.reporting_metadata.last_submission_for_user. commcare_version or '', user.user_id ] + self.domain_properties(domain_obj)) return rows
def _mobile_user_rows(self, domain): rows = [] for user in get_all_user_rows(domain.name, include_web_users=False, include_mobile_users=True, include_inactive=False, include_docs=True): user = CommCareUser.wrap(user['doc']) rows.append([ re.sub(r'@.*', '', user.username), user.full_name, self._format_date( user.reporting_metadata.last_sync_for_user.sync_date), self._format_date(user.reporting_metadata. last_submission_for_user.submission_date), user.reporting_metadata.last_submission_for_user. commcare_version or '', ] + self._domain_properties(domain)) return rows
def parse_web_users(domain, task=None, total_count=None): user_dicts = [] for n, user in enumerate(get_all_user_rows(domain, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True)): user_dict = make_web_user_dict(user, domain) user_dicts.append(user_dict) if task: DownloadBase.set_progress(task, n, total_count) for m, invite in enumerate(Invitation.by_domain(domain)): user_dict = make_invited_web_user_dict(invite) user_dicts.append(user_dict) if task: DownloadBase.set_progress(task, n + m, total_count) user_headers = [ 'username', 'first_name', 'last_name', 'email', 'role', 'last_access_date (read only)', 'last_login (read only)', 'status', 'remove' ] return user_headers, get_user_rows(user_dicts, user_headers)
def rows_for_domain(self, domain_obj): def _get_role_name(role): if role: if role == 'admin': return role else: role_id = role[len('user-role:'):] try: return UserRole.get(role_id).name except ResourceNotFound: return _('Unknown Role') else: return 'N/A' rows = [] for user in get_all_user_rows(domain_obj.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = CouchUser.wrap_correctly(user['doc']) domain_membership = user.get_domain_membership(domain_obj.name) last_accessed_domain = None if domain_membership: last_accessed_domain = domain_membership.last_accessed rows.append([ user.username, user.full_name, user.role_label(domain_obj.name), self.format_date(user.last_login), last_accessed_domain, _('Active User') ] + self.domain_properties(domain_obj)) for invite in Invitation.by_domain(domain_obj.name): rows.append([ invite.email, 'N/A', _get_role_name(invite.role), 'N/A', 'N/A', _('Invited') ] + self.domain_properties(domain_obj)) return rows