def _get_couchdb_counts(domain): couch_db_counts = Counter() for provider in DOC_PROVIDERS: if isinstance(provider, DocTypeIDProvider): doc_type = provider.doc_type if doc_type == 'CommCareUser': continue # want to split deleted doc_class = get_document_class_by_doc_type(doc_type) count = get_doc_count_in_domain_by_class(domain, doc_class) couch_db_counts.update({doc_type: count}) for _ in CommCareMultimedia.get_db().view('hqmedia/by_domain', key=domain, include_docs=False): couch_db_counts.update(['CommCareMultimedia']) mobile_user_count = get_mobile_user_count(domain) couch_db_counts.update({ 'WebUser': get_web_user_count(domain), 'CommCareUser': mobile_user_count, 'CommCareUser-Deleted': get_doc_count_in_domain_by_class(domain, CommCareUser) - mobile_user_count }) return couch_db_counts
def _get_couchdb_counts(domain): couch_db_counts = Counter() for provider in DOC_PROVIDERS: if isinstance(provider, DocTypeIDProvider): for doc_type in provider.doc_types: if doc_type == 'CommCareUser': continue # want to split deleted doc_class = get_document_class_by_doc_type(doc_type) count = get_doc_count_in_domain_by_class(domain, doc_class) couch_db_counts.update({doc_type: count}) for row in CommCareMultimedia.get_db().view('hqmedia/by_domain', key=domain, include_docs=False): couch_db_counts.update(['CommCareMultimedia']) mobile_user_count = get_mobile_user_count(domain) couch_db_counts.update({ 'WebUser': get_web_user_count(domain), 'CommCareUser': mobile_user_count, 'CommCareUser-Deleted': get_doc_count_in_domain_by_class(domain, CommCareUser) - mobile_user_count }) # this is very slow, excluding for now # for _, doc_ids in SyncLogIDProvider().get_doc_ids(domain): # couch_db_counts['SyncLog'] += len(doc_ids) # return couch_db_counts
def releases_ajax(request, domain, app_id, template='app_manager/partials/releases.html'): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) context.update({ 'release_manager': True, 'can_send_sms': can_send_sms, 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': ( get_sms_autocomplete_context(request, domain)['sms_contacts'] if can_send_sms else [] ), 'build_profile_access': build_profile_access, 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'vellum_case_management': app.vellum_case_management, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), }) if not app.is_remote_app(): # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass response = render(request, template, context) response.set_cookie('lang', encode_if_unicode(context['lang'])) return response
def releases_ajax(request, domain, app_id, template='app_manager/partials/releases.html'): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) context.update({ 'release_manager': True, 'can_send_sms': can_send_sms, 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': ( get_sms_autocomplete_context(request, domain)['sms_contacts'] if can_send_sms else [] ), 'build_profile_access': build_profile_access }) if not app.is_remote_app(): # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass response = render(request, template, context) response.set_cookie('lang', encode_if_unicode(context['lang'])) return response
def get_releases_context(request, domain, app_id): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) context.update({ 'intro_only': len(app.modules) == 0 and toggles.APP_MANAGER_V2.enabled(domain), 'release_manager': True, 'can_send_sms': can_send_sms, 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': (get_sms_autocomplete_context( request, domain)['sms_contacts'] if can_send_sms else []), 'build_profile_access': build_profile_access and not toggles.APP_MANAGER_V2.enabled(domain), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), }) if not app.is_remote_app(): # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass return context
def releases_ajax(request, domain, app_id, template='app_manager/v1/partials/releases.html'): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) context.update({ 'intro_only': len(app.modules) == 0, 'release_manager': True, 'can_send_sms': can_send_sms, 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': ( get_sms_autocomplete_context(request, domain)['sms_contacts'] if can_send_sms else [] ), 'build_profile_access': build_profile_access and not toggles.APP_MANAGER_V2.enabled(domain), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), }) if not app.is_remote_app(): # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass response = render(request, template, context) response.set_cookie('lang', encode_if_unicode(context['lang'])) return response
def couch_doc_counts(request, domain): from casexml.apps.case.models import CommCareCase from couchforms.models import XFormInstance start = string_to_datetime(request.GET.get('start')) if request.GET.get('start') else None end = string_to_datetime(request.GET.get('end')) if request.GET.get('end') else None return json_response({ cls.__name__: get_doc_count_in_domain_by_class(domain, cls, start, end) for cls in [CommCareCase, XFormInstance] })
def test_get_doc_count_in_domain_by_class(self): group = Group(domain=self.domain) group.save() self.addCleanup(group.delete) group2 = Group(domain=self.domain) group2.save() self.addCleanup(group2.delete) count = get_doc_count_in_domain_by_class(self.domain, Group) self.assertEqual(count, 2)
def get_releases_context(request, domain, app_id): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) prompt_settings_form = PromptUpdateSettingsForm.from_app( app, request_user=request.couch_user) context.update({ 'release_manager': True, 'can_send_sms': can_send_sms, 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': (get_sms_autocomplete_context( request, domain)['sms_contacts'] if can_send_sms else []), 'build_profile_access': build_profile_access, 'application_profile_url': reverse(LanguageProfilesView.urlname, args=[domain, app_id]), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), 'latest_build_id': get_latest_build_id(domain, app_id), 'prompt_settings_url': reverse(PromptSettingsUpdateView.urlname, args=[domain, app_id]), 'prompt_settings_form': prompt_settings_form, }) if not app.is_remote_app(): context.update({ 'enable_update_prompts': app.enable_update_prompts, }) if not toggles.USER_TESTING_SIMPLIFY.enabled_for_request(request): ab = ab_tests.ABTest(ab_tests.APP_BUILDER_VIDEO, request) context.update({ 'ab_test': ab.context, 'show_video': ab.version == ab_tests.APP_BUILDER_VIDEO_ON, }) if len(app.modules) == 0: context.update({'intro_only': True}) # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass return context
def get_releases_context(request, domain, app_id): app = get_app(domain, app_id) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) prompt_settings_form = PromptUpdateSettingsForm.from_app( app, request_user=request.couch_user) context = { 'release_manager': True, 'can_send_sms': can_send_sms, 'can_view_cloudcare': has_privilege(request, privileges.CLOUDCARE), 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'latest_released_version': get_latest_released_app_version(domain, app_id), 'sms_contacts': (get_sms_autocomplete_context( request, domain)['sms_contacts'] if can_send_sms else []), 'build_profile_access': build_profile_access, 'application_profile_url': reverse(LanguageProfilesView.urlname, args=[domain, app_id]), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'latest_build_id': get_latest_build_id(domain, app_id), 'prompt_settings_url': reverse(PromptSettingsUpdateView.urlname, args=[domain, app_id]), 'prompt_settings_form': prompt_settings_form, 'full_name': request.couch_user.full_name, 'can_manage_releases': can_manage_releases(request.couch_user, request.domain, app_id), 'can_edit_apps': request.couch_user.can_edit_apps(), } if not app.is_remote_app(): context.update({ 'enable_update_prompts': app.enable_update_prompts, }) if len(app.modules) == 0: context.update({'intro_only': True}) # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass return context
def _get_couchdb_counts(domain): couch_db_counts = Counter() for provider in DOC_PROVIDERS: if isinstance(provider, DocTypeIDProvider): for doc_type in provider.doc_types: if doc_type == 'CommCareUser': continue # want to split deleted doc_class = get_document_class_by_doc_type(doc_type) count = get_doc_count_in_domain_by_class(domain, doc_class) couch_db_counts.update({doc_type: count}) mobile_user_count = get_mobile_user_count(domain) couch_db_counts.update({ 'WebUser': get_web_user_count(domain), 'CommCareUser': mobile_user_count, 'CommCareUser-Deleted': get_doc_count_in_domain_by_class(domain, CommCareUser) - mobile_user_count }) return couch_db_counts
def _get_primary_db_counts(domain): db_counts = Counter() db_counts.update(get_primary_db_form_counts(domain)) db_counts.update(get_primary_db_case_counts(domain)) mobile_user_count = get_mobile_user_count(domain) db_counts.update({ 'WebUser': get_web_user_count(domain), 'CommCareUser': mobile_user_count, 'CommCareUser-Deleted': get_doc_count_in_domain_by_class(domain, CommCareUser) - mobile_user_count }) return db_counts
def get_releases_context(request, domain, app_id): app = get_app(domain, app_id) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) prompt_settings_form = PromptUpdateSettingsForm.from_app(app, request_user=request.couch_user) context = { 'release_manager': True, 'can_send_sms': can_send_sms, 'can_view_cloudcare': has_privilege(request, privileges.CLOUDCARE), 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'latest_released_version': get_latest_released_app_version(domain, app_id), 'sms_contacts': ( get_sms_autocomplete_context(request, domain)['sms_contacts'] if can_send_sms else [] ), 'build_profile_access': build_profile_access, 'application_profile_url': reverse(LanguageProfilesView.urlname, args=[domain, app_id]), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), 'latest_build_id': get_latest_build_id(domain, app_id), 'prompt_settings_url': reverse(PromptSettingsUpdateView.urlname, args=[domain, app_id]), 'prompt_settings_form': prompt_settings_form, 'full_name': request.couch_user.full_name, 'can_manage_releases': can_manage_releases(request.couch_user, request.domain, app_id) } if not app.is_remote_app(): context.update({ 'enable_update_prompts': app.enable_update_prompts, }) if len(app.modules) == 0: context.update({'intro_only': True}) # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass return context
def get_releases_context(request, domain, app_id): app = get_app(domain, app_id) context = get_apps_base_context(request, domain, app) can_send_sms = domain_has_privilege(domain, privileges.OUTBOUND_SMS) build_profile_access = domain_has_privilege(domain, privileges.BUILD_PROFILES) prompt_settings_form = PromptUpdateSettingsForm.from_app( app, request_user=request.couch_user) is_in_mobile_experiment = toggles.MOBILE_SIGNUP_REDIRECT_AB_TEST_CONTROLLER.enabled( request.couch_user.username) is_mobile_ab = toggles.MOBILE_SIGNUP_REDIRECT_AB_TEST.enabled( request.couch_user.username, toggles.NAMESPACE_USER) if is_in_mobile_experiment: context.update({ 'mobile_experience_ab_test': { 'name': 'mobile_signups_test_march2018test', 'version': 'variation' if is_mobile_ab else 'control', }, }) context.update({ 'release_manager': True, 'can_send_sms': can_send_sms, 'can_view_cloudcare': has_privilege(request, privileges.CLOUDCARE), 'has_mobile_workers': get_doc_count_in_domain_by_class(domain, CommCareUser) > 0, 'sms_contacts': (get_sms_autocomplete_context( request, domain)['sms_contacts'] if can_send_sms else []), 'build_profile_access': build_profile_access, 'application_profile_url': reverse(LanguageProfilesView.urlname, args=[domain, app_id]), 'lastest_j2me_enabled_build': CommCareBuildConfig.latest_j2me_enabled_config().label, 'fetchLimit': request.GET.get('limit', DEFAULT_FETCH_LIMIT), 'latest_build_id': get_latest_build_id(domain, app_id), 'prompt_settings_url': reverse(PromptSettingsUpdateView.urlname, args=[domain, app_id]), 'prompt_settings_form': prompt_settings_form, 'full_name': request.couch_user.full_name, 'is_mobile_experience': (is_in_mobile_experiment and is_mobile_ab), }) if not app.is_remote_app(): context.update({ 'enable_update_prompts': app.enable_update_prompts, }) if len(app.modules) == 0: context.update({'intro_only': True}) # Multimedia is not supported for remote applications at this time. try: multimedia_state = app.check_media_state() context.update({ 'multimedia_state': multimedia_state, }) except ReportConfigurationNotFoundError: pass return context
def count(self): return get_doc_count_in_domain_by_class(self.domain, Group)