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, })
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
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