def default_dashboard_url(request, domain): couch_user = getattr(request, 'couch_user', None) if domain in settings.CUSTOM_DASHBOARD_PAGE_URL_NAMES: return reverse(settings.CUSTOM_DASHBOARD_PAGE_URL_NAMES[domain], args=[domain]) if couch_user and not couch_user.has_permission(domain, 'access_all_locations'): if couch_user.has_permission(domain, 'view_reports'): return reverse(CaseExportListView.urlname, args=[domain]) else: if can_view_case_exports(couch_user, domain): return reverse(CaseExportListView.urlname, args=[domain]) elif can_view_form_exports(couch_user, domain): return reverse(FormExportListView.urlname, args=[domain]) return reverse(LocationsListView.urlname, args=[domain]) if couch_user and user_has_custom_top_menu(domain, couch_user): return reverse('saved_reports', args=[domain]) if not domain_has_apps(domain): return reverse('default_app', args=[domain]) return reverse(DomainDashboardView.urlname, args=[domain])
def default_data_view_url(request, domain): from corehq.apps.export.views import ( FormExportListView, CaseExportListView, DeIdFormExportListView, user_can_view_deid_exports ) if can_view_form_exports(request.couch_user, domain): return reverse(FormExportListView.urlname, args=[domain]) elif can_view_case_exports(request.couch_user, domain): return reverse(CaseExportListView.urlname, args=[domain]) if user_can_view_deid_exports(domain, request.couch_user): return reverse(DeIdFormExportListView.urlname, args=[domain]) raise Http404()
def default_data_view_url(request, domain): from corehq.apps.export.views.list import ( CaseExportListView, FormExportListView, DeIdFormExportListView, ) from corehq.apps.export.views.utils import DataFileDownloadList, user_can_view_deid_exports if can_view_form_exports(request.couch_user, domain): return reverse(FormExportListView.urlname, args=[domain]) elif can_view_case_exports(request.couch_user, domain): return reverse(CaseExportListView.urlname, args=[domain]) if user_can_view_deid_exports(domain, request.couch_user): return reverse(DeIdFormExportListView.urlname, args=[domain]) if can_download_data_files(domain, request.couch_user): return reverse(DataFileDownloadList.urlname, args=[domain]) raise Http404()
def find_by_id(request, domain): can_view_cases = can_view_case_exports(request.couch_user, domain) can_view_forms = can_view_form_exports(request.couch_user, domain) if not can_view_cases and not can_view_forms: raise Http403() name = _("Find Case or Form Submission by ID") return render(request, 'data_interfaces/find_by_id.html', { 'domain': domain, 'current_page': { 'title': name, 'page_name': name, }, 'section': { 'page_name': DataInterfaceSection.section_name, 'url': reverse(DataInterfaceSection.urlname, args=[domain]), }, 'can_view_cases': can_view_cases, 'can_view_forms': can_view_forms, })
def _get_success_message(self, instance, cases=None): ''' Formplayer requests get a detailed success message pointing to the form/case affected. All other requests get a generic message. Message is formatted with markdown. ''' if not instance.metadata or instance.metadata.deviceID != FORMPLAYER_DEVICE_ID: return ' √ ' messages = [] user = CouchUser.get_by_user_id(instance.user_id) if not user or not user.is_web_user(): return _('Form successfully saved!') from corehq.apps.export.views import CaseExportListView, FormExportListView from corehq.apps.reports.views import CaseDataView, FormDataView form_link = case_link = form_export_link = case_export_link = None form_view = 'corehq.apps.reports.standard.inspect.SubmitHistory' if has_permission_to_view_report(user, instance.domain, form_view): form_link = reverse(FormDataView.urlname, args=[instance.domain, instance.form_id]) case_view = 'corehq.apps.reports.standard.cases.basic.CaseListReport' if cases and has_permission_to_view_report(user, instance.domain, case_view): if len(cases) == 1: case_link = reverse(CaseDataView.urlname, args=[instance.domain, cases[0].case_id]) else: case_link = ", ".join(["[{}]({})".format( c.name, reverse(CaseDataView.urlname, args=[instance.domain, c.case_id]) ) for c in cases]) if can_view_form_exports(user, instance.domain): form_export_link = reverse(FormExportListView.urlname, args=[instance.domain]) if cases and can_view_case_exports(user, instance.domain): case_export_link = reverse(CaseExportListView.urlname, args=[instance.domain]) # Start with generic message messages.append(_('Form successfully saved!')) # Add link to form/case if possible if form_link and case_link: if len(cases) == 1: messages.append( _("You submitted [this form]({}), which affected [this case]({}).") .format(form_link, case_link)) else: messages.append( _("You submitted [this form]({}), which affected these cases: {}.") .format(form_link, case_link)) elif form_link: messages.append(_("You submitted [this form]({}).").format(form_link)) elif case_link: if len(cases) == 1: messages.append(_("Your form affected [this case]({}).").format(case_link)) else: messages.append(_("Your form affected these cases: {}.").format(case_link)) # Add link to all form/case exports if form_export_link and case_export_link: messages.append( _("Click to export your [case]({}) or [form]({}) data.") .format(case_export_link, form_export_link)) elif form_export_link: messages.append(_("Click to export your [form data]({}).").format(form_export_link)) elif case_export_link: messages.append(_("Click to export your [case data]({}).").format(case_export_link)) return "\n\n".join(messages)
def _get_success_message(self, instance, cases=None): ''' Formplayer requests get a detailed success message pointing to the form/case affected. All other requests get a generic message. Message is formatted with markdown. ''' if not instance.metadata or instance.metadata.deviceID != FORMPLAYER_DEVICE_ID: return ' √ ' messages = [] user = CouchUser.get_by_user_id(instance.user_id) if not user or not user.is_web_user(): return _('Form successfully saved!') from corehq.apps.export.views.list import CaseExportListView, FormExportListView from corehq.apps.reports.views import CaseDataView, FormDataView form_link = case_link = form_export_link = case_export_link = None form_view = 'corehq.apps.reports.standard.inspect.SubmitHistory' if has_permission_to_view_report(user, instance.domain, form_view): form_link = reverse(FormDataView.urlname, args=[instance.domain, instance.form_id]) case_view = 'corehq.apps.reports.standard.cases.basic.CaseListReport' if cases and has_permission_to_view_report(user, instance.domain, case_view): if len(cases) == 1: case_link = reverse(CaseDataView.urlname, args=[instance.domain, cases[0].case_id]) else: case_link = ", ".join(["[{}]({})".format( c.name, reverse(CaseDataView.urlname, args=[instance.domain, c.case_id]) ) for c in cases]) if can_view_form_exports(user, instance.domain): form_export_link = reverse(FormExportListView.urlname, args=[instance.domain]) if cases and can_view_case_exports(user, instance.domain): case_export_link = reverse(CaseExportListView.urlname, args=[instance.domain]) # Start with generic message messages.append(_('Form successfully saved!')) # Add link to form/case if possible if form_link and case_link: if len(cases) == 1: messages.append( _("You submitted [this form]({}), which affected [this case]({}).") .format(form_link, case_link)) else: messages.append( _("You submitted [this form]({}), which affected these cases: {}.") .format(form_link, case_link)) elif form_link: messages.append(_("You submitted [this form]({}).").format(form_link)) elif case_link: if len(cases) == 1: messages.append(_("Your form affected [this case]({}).").format(case_link)) else: messages.append(_("Your form affected these cases: {}.").format(case_link)) # Add link to all form/case exports if form_export_link and case_export_link: messages.append( _("Click to export your [case]({}) or [form]({}) data.") .format(case_export_link, form_export_link)) elif form_export_link: messages.append(_("Click to export your [form data]({}).").format(form_export_link)) elif case_export_link: messages.append(_("Click to export your [case data]({}).").format(case_export_link)) return "\n\n".join(messages)