def gauge_pending_user_confirmations(): metric_name = 'commcare.pending_user_confirmations' from corehq.apps.users.models import Invitation for stats in (Invitation.objects.filter(is_accepted=False).all() .values('domain').annotate(Count('domain'))): metrics_gauge( metric_name, stats['domain__count'], tags={ 'domain': stats['domain'], 'user_type': 'web', }, multiprocess_mode=MPM_MAX ) from corehq.apps.users.analytics import get_inactive_commcare_users_in_domain for doc in Domain.get_all(include_docs=False): domain_name = doc['key'] users = get_inactive_commcare_users_in_domain(domain_name) num_unconfirmed = sum(1 for u in users if not u.is_account_confirmed) if num_unconfirmed: metrics_gauge( metric_name, num_unconfirmed, tags={ 'domain': domain_name, 'user_type': 'mobile', }, multiprocess_mode=MPM_MAX )
def __getitem__(self, item): if isinstance(item, slice): limit = item.stop - item.start if self.show_archived: return get_inactive_commcare_users_in_domain(self.domain, start_at=item.start, limit=limit) else: return get_active_commcare_users_in_domain(self.domain, start_at=item.start, limit=limit) raise ValueError('Invalid type of argument. Item should be an instance of slice class.')
def __getitem__(self, item): if isinstance(item, slice): limit = item.stop - item.start if self.show_archived: return get_inactive_commcare_users_in_domain(self.domain, start_at=item.start, limit=limit) else: return get_active_commcare_users_in_domain(self.domain, start_at=item.start, limit=limit) raise ValueError( 'Invalid type of argument. Item should be an instance of slice class.')
def test_get_inactive_commcare_users_in_domain_no_results(self): self.assertEqual(0, len(get_inactive_commcare_users_in_domain('missing')))
def test_get_inactive_commcare_users_in_domain(self): users = get_inactive_commcare_users_in_domain('test') self.assertEqual(1, len(users)) self.assertEqual('inactive', users[0].username)