Example #1
0
    def get_xform_ids(self, request):
        if 'select_all' in self.request.POST:
            # Altough evaluating form_ids and sending to task would be cleaner,
            # heavier calls should be in an async task instead
            import six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error
            form_query_string = six.moves.urllib.parse.unquote(self.request.POST.get('select_all'))
            from django.http import HttpRequest, QueryDict
            from django_otp.middleware import OTPMiddleware

            _request = HttpRequest()
            _request.couch_user = request.couch_user
            _request.user = request.couch_user.get_django_user()
            _request.domain = self.domain
            _request.couch_user.current_domain = self.domain
            _request.can_access_all_locations = request.couch_user.has_permission(self.domain,
                                                                                  'access_all_locations')
            _request.session = request.session

            _request.GET = QueryDict(form_query_string)
            OTPMiddleware().process_request(_request)

            dispatcher = EditDataInterfaceDispatcher()
            xform_ids = dispatcher.dispatch(
                _request,
                render_as='form_ids',
                domain=self.domain,
                report_slug=BulkFormManagementInterface.slug,
                skip_permissions_check=True,
            )
        else:
            xform_ids = self.request.POST.getlist('xform_ids')

        return xform_ids
Example #2
0
    def sidebar_items(self):
        items = []

        context = {
            'request': self._request,
            'domain': self.domain,
        }

        if self.can_export_data:
            from corehq.apps.data_interfaces.dispatcher import DataInterfaceDispatcher
            items.extend(DataInterfaceDispatcher.navigation_sections(context))

        if self.can_edit_commcare_data:
            from corehq.apps.data_interfaces.dispatcher import EditDataInterfaceDispatcher
            edit_section = EditDataInterfaceDispatcher.navigation_sections(context)

            from corehq.apps.data_interfaces.views import CaseGroupListView, CaseGroupCaseManagementView
            if self.couch_user.is_previewer:
                edit_section[0][1].append({
                    'title': CaseGroupListView.page_title,
                    'url': reverse(CaseGroupListView.urlname, args=[self.domain]),
                    'subpages': [
                        {
                            'title': CaseGroupCaseManagementView.page_title,
                            'urlname': CaseGroupCaseManagementView.urlname,
                        }
                    ]
                })

            items.extend(edit_section)
            
        return items
Example #3
0
def default_data_view_url(request, domain):
    if request.couch_user.can_view_reports():
        return reverse(DataInterfaceDispatcher.name(), args=[domain, ExcelExportReport.slug])

    exportable_reports = request.couch_user.get_exportable_reports(domain)
    if exportable_reports:
        return reverse(DataInterfaceDispatcher.name(), args=[domain, exportable_reports[0]])

    if request.couch_user.can_edit_data():
        return reverse(EditDataInterfaceDispatcher.name(), args=[domain, CaseReassignmentInterface.slug])
    raise Http404()
Example #4
0
def default(request, domain):
    if not request.project or request.project.is_snapshot:
        raise Http404()

    if request.couch_user.can_view_reports():
        return HttpResponseRedirect(reverse(DataInterfaceDispatcher.name(),
                                            args=[domain, ExcelExportReport.slug]))
    exportable_reports = request.couch_user.get_exportable_reports(domain)
    if exportable_reports:
        return HttpResponseRedirect(reverse(DataInterfaceDispatcher.name(),
                                            args=[domain, exportable_reports[0]]))
    if request.couch_user.can_edit_data():
        return HttpResponseRedirect(reverse(EditDataInterfaceDispatcher.name(),
                                            args=[domain, CaseReassignmentInterface.slug]))
    raise Http404()
Example #5
0
def xform_management_job_poll(request, domain, download_id,
                              template="data_interfaces/partials/xform_management_status.html"):
    mode = FormManagementMode(request.GET.get('mode'), validate=True)
    try:
        context = get_download_context(download_id, check_state=True)
    except TaskFailedError:
        return HttpResponseServerError()

    context.update({
        'on_complete_short': mode.complete_short,
        'mode': mode,
        'form_management_url': reverse(EditDataInterfaceDispatcher.name(),
                                       args=[domain, BulkFormManagementInterface.slug])
    })
    return render(request, template, context)
Example #6
0
def xform_management_job_poll(
        request,
        domain,
        download_id,
        template="data_interfaces/partials/xform_management_status.html"):
    mode = FormManagementMode(request.GET.get('mode'), validate=True)
    try:
        context = get_download_context(download_id, check_state=True)
    except TaskFailedError:
        return HttpResponseServerError()

    context.update({
        'on_complete_short':
        mode.complete_short,
        'mode':
        mode,
        'form_management_url':
        reverse(EditDataInterfaceDispatcher.name(),
                args=[domain, BulkFormManagementInterface.slug])
    })
    return render(request, template, context)
Example #7
0
    url(r'^xform_management/$', XFormManagementView.as_view(), name=XFormManagementView.urlname),
    url(
        r'^xform_management/status/(?P<mode>{archive}|{restore})/(?P<download_id>{id_regex})/$'.format(
            archive=FormManagementMode.ARCHIVE_MODE,
            restore=FormManagementMode.RESTORE_MODE,
            id_regex="[0-9a-fA-Z]{25,32}",
        ),
        XFormManagementStatusView.as_view(),
        name=XFormManagementStatusView.urlname
    ),
    url(r'^xform_management/status/poll/(?P<download_id>[0-9a-fA-Z]{25,32})/$',
        xform_management_job_poll, name='xform_management_job_poll'),
    url(r'^case_groups/$', CaseGroupListView.as_view(), name=CaseGroupListView.urlname),
    url(r'^case_groups/(?P<group_id>[\w-]+)/$',
        CaseGroupCaseManagementView.as_view(), name=CaseGroupCaseManagementView.urlname),
    url(r'^automatic_updates/$', AutomaticUpdateRuleListView.as_view(),
        name=AutomaticUpdateRuleListView.urlname),
    url(r'^automatic_updates/add/$', AddAutomaticUpdateRuleView.as_view(),
        name=AddAutomaticUpdateRuleView.urlname),
    url(r'^automatic_updates/edit/(?P<rule_id>\d+)/$', EditAutomaticUpdateRuleView.as_view(),
        name=EditAutomaticUpdateRuleView.urlname),
    EditDataInterfaceDispatcher.url_pattern(),
]

urlpatterns = [
    url(r'^$', default, name="data_interfaces_default"),
    url(r'^edit/', include(edit_data_urls)),
    url(r'^export/', include('corehq.apps.export.urls')),
    DataInterfaceDispatcher.url_pattern(),
]
Example #8
0
        ),
        XFormManagementStatusView.as_view(),
        name=XFormManagementStatusView.urlname),
    url(r'^xform_management/status/poll/(?P<download_id>[0-9a-fA-Z]{25,32})/$',
        xform_management_job_poll,
        name='xform_management_job_poll'),
    url(r'^case_groups/$',
        CaseGroupListView.as_view(),
        name=CaseGroupListView.urlname),
    url(r'^case_groups/(?P<group_id>[\w-]+)/$',
        CaseGroupCaseManagementView.as_view(),
        name=CaseGroupCaseManagementView.urlname),
    url(r'^automatic_updates/$',
        AutomaticUpdateRuleListView.as_view(),
        name=AutomaticUpdateRuleListView.urlname),
    url(r'^automatic_updates/add/$',
        AddAutomaticUpdateRuleView.as_view(),
        name=AddAutomaticUpdateRuleView.urlname),
    url(r'^automatic_updates/edit/(?P<rule_id>\d+)/$',
        EditAutomaticUpdateRuleView.as_view(),
        name=EditAutomaticUpdateRuleView.urlname),
    EditDataInterfaceDispatcher.url_pattern(),
]

urlpatterns = [
    url(r'^$', default, name="data_interfaces_default"),
    url(r'^edit/', include(edit_data_urls)),
    url(r'^export/', include('corehq.apps.export.urls')),
    DataInterfaceDispatcher.url_pattern(),
]