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