Exemple #1
0
def download_index(request, domain, app_id):
    """
    A landing page, mostly for debugging, that has links the jad and jar as well as
    all the resource files that will end up zipped into the jar.

    """
    files = defaultdict(list)
    try:
        for file_ in source_files(request.app):
            form_filename = re.search(r'modules-(\d+)\/forms-(\d+)', file_[0])
            if form_filename:
                module_id, form_id = form_filename.groups()
                module = request.app.get_module(module_id)
                form = module.get_form(form_id)
                section_name = "m{} - {}".format(
                    module_id,
                    ", ".join(["({}) {}".format(lang, name)
                               for lang, name in module.name.items()])
                )
                files[section_name].append({
                    'name': file_[0],
                    'source': file_[1],
                    'readable_name': "f{} - {}".format(
                        form_id,
                        ", ".join(["({}) {}".format(lang, name)
                                   for lang, name in form.name.items()])
                    ),
                })
            else:
                files[None].append({
                    'name': file_[0],
                    'source': file_[1],
                    'readable_name': None,
                })
    except Exception:
        messages.error(
            request,
            _(
                "We were unable to get your files "
                "because your Application has errors. "
                "Please click <strong>Make New Version</strong> "
                "for feedback on how to fix these errors."
            ),
            extra_tags='html'
        )
    enabled_build_profiles = []
    latest_enabled_build_profiles = {}
    if request.app.is_released and toggles.RELEASE_BUILDS_PER_PROFILE.enabled(domain):
        latest_enabled_build_profiles = get_latest_enabled_versions_per_profile(request.app.copy_of)
        enabled_build_profiles = [_id for _id, version in latest_enabled_build_profiles.items()
                                  if version == request.app.version]

    return render(request, "app_manager/download_index.html", {
        'app': request.app,
        'files': OrderedDict(sorted(files.items(), key=lambda x: x[0] or '')),
        'supports_j2me': request.app.build_spec.supports_j2me(),
        'enabled_build_profiles': enabled_build_profiles,
        'latest_enabled_build_profiles': latest_enabled_build_profiles,
    })
Exemple #2
0
def get_apps_base_context(request, domain, app):

    lang, langs = get_langs(request, app)

    if getattr(request, 'couch_user', None):
        timezone = get_timezone_for_user(request.couch_user, domain)
    else:
        timezone = None

    context = {
        'lang': lang,
        'langs': langs,
        'domain': domain,
        'app': app,
        'app_subset': {
            'commcare_minor_release': app.commcare_minor_release,
            'doc_type': app.get_doc_type(),
            'form_counts_by_module': [len(m.forms) for m in app.modules] if not app.is_remote_app() else [],
            'version': app.version,
        } if app else {},
        'timezone': timezone,
    }

    if app and not app.is_remote_app():
        app.assert_app_v2()
        show_advanced = (
            toggles.APP_BUILDER_ADVANCED.enabled(domain)
            or getattr(app, 'commtrack_enabled', False)
        )

        disable_report_modules = (
            is_master_linked_domain(domain)
            and not toggles.MOBILE_UCR_LINKED_DOMAIN.enabled(domain)
        )

        # ideally this should be loaded on demand
        practice_users = []
        if app.enable_practice_users:
            try:
                practice_users = get_practice_mode_mobile_workers(request.domain)
            except ESError:
                notify_exception(request, 'Error getting practice mode mobile workers')

        latest_version_for_build_profiles = {}
        if toggles.RELEASE_BUILDS_PER_PROFILE.enabled(domain):
            latest_version_for_build_profiles = get_latest_enabled_versions_per_profile(app.get_id)

        context.update({
            'show_advanced': show_advanced,
            'show_report_modules': toggles.MOBILE_UCR.enabled(domain),
            'disable_report_modules': disable_report_modules,
            'show_shadow_modules': toggles.APP_BUILDER_SHADOW_MODULES.enabled(domain),
            'show_shadow_forms': show_advanced,
            'show_training_modules': toggles.TRAINING_MODULE.enabled(domain) and app.enable_training_modules,
            'practice_users': [{"id": u['_id'], "text": u["username"]} for u in practice_users],
            'latest_version_for_build_profiles': latest_version_for_build_profiles,
        })

    return context
Exemple #3
0
def get_apps_base_context(request, domain, app):

    lang, langs = get_langs(request, app)

    if getattr(request, 'couch_user', None):
        timezone = get_timezone_for_user(request.couch_user, domain)
    else:
        timezone = None

    context = {
        'lang': lang,
        'langs': langs,
        'domain': domain,
        'app': app,
        'app_subset': {
            'commcare_minor_release':
            app.commcare_minor_release,
            'doc_type':
            app.get_doc_type(),
            'form_counts_by_module':
            [len(m.forms)
             for m in app.modules] if not app.is_remote_app() else [],
            'version':
            app.version,
        } if app else {},
        'timezone': timezone,
    }

    if app and not app.is_remote_app():
        app.assert_app_v2()
        show_advanced = (toggles.APP_BUILDER_ADVANCED.enabled(domain)
                         or getattr(app, 'commtrack_enabled', False))

        show_biometric = (toggles.BIOMETRIC_INTEGRATION.enabled(domain)
                          and app.is_biometric_enabled)

        disable_report_modules = (
            is_master_linked_domain(domain)
            and not toggles.MOBILE_UCR_LINKED_DOMAIN.enabled(domain))

        # ideally this should be loaded on demand
        practice_users = []
        if app.enable_practice_users:
            try:
                practice_users = get_practice_mode_mobile_workers(
                    request.domain)
            except ESError:
                notify_exception(request,
                                 'Error getting practice mode mobile workers')

        latest_version_for_build_profiles = {}
        if toggles.RELEASE_BUILDS_PER_PROFILE.enabled(domain):
            latest_version_for_build_profiles = get_latest_enabled_versions_per_profile(
                app.get_id)

        context.update({
            'show_advanced':
            show_advanced,
            'show_biometric':
            show_biometric,
            'show_report_modules':
            toggles.MOBILE_UCR.enabled(domain),
            'disable_report_modules':
            disable_report_modules,
            'show_shadow_modules':
            toggles.APP_BUILDER_SHADOW_MODULES.enabled(domain),
            'show_shadow_forms':
            show_advanced,
            'show_training_modules':
            toggles.TRAINING_MODULE.enabled(domain)
            and app.enable_training_modules,
            'practice_users': [{
                "id": u['_id'],
                "text": u["username"]
            } for u in practice_users],
            'latest_version_for_build_profiles':
            latest_version_for_build_profiles,
        })

    return context