コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
ファイル: releases.py プロジェクト: saketkanth/commcare-hq
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
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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]
    })
コード例 #9
0
 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)
コード例 #10
0
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
コード例 #11
0
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]
    })
コード例 #12
0
 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)
コード例 #13
0
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
コード例 #14
0
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
コード例 #15
0
ファイル: tools.py プロジェクト: dimagi/commcare-hq
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
コード例 #16
0
ファイル: tools.py プロジェクト: taylordowns2000/commcare-hq
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
コード例 #17
0
ファイル: releases.py プロジェクト: kkrampa/commcare-hq
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
コード例 #18
0
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
コード例 #19
0
 def count(self):
     return get_doc_count_in_domain_by_class(self.domain, Group)