Exemplo n.º 1
0
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,
        can_view_form_exports, can_view_case_exports)
    from corehq.apps.data_interfaces.interfaces import CaseReassignmentInterface

    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])

    if request.couch_user.can_edit_data:
        return CaseReassignmentInterface.get_url(domain)

    raise Http404()
Exemplo n.º 2
0
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,
        can_view_form_exports, can_view_case_exports)
    from corehq.apps.data_interfaces.interfaces import CaseReassignmentInterface

    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])

    if request.couch_user.can_edit_data:
        return CaseReassignmentInterface.get_url(domain)

    raise Http404()
Exemplo n.º 3
0
def find_by_id(request, domain):
    from corehq.apps.export.views.utils import (
        can_view_case_exports,
        can_view_form_exports,
    )
    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,
        })
Exemplo n.º 4
0
def find_by_id(request, domain):
    from corehq.apps.export.views.utils import can_view_form_exports, can_view_case_exports
    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,
    })
Exemplo n.º 5
0
    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.export.views.utils import can_view_case_exports, can_view_form_exports
        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)
Exemplo n.º 6
0
    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.export.views.utils import can_view_case_exports, can_view_form_exports
        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)