def export_all_form_metadata_async(req, domain): datespan = req.datespan if req.GET.get("startdate") and req.GET.get( "enddate") else None group_id = req.GET.get("group") ufilter = UserTypeFilter.get_user_filter(req)[0] users = list( util.get_all_users_by_domain(domain=domain, group=group_id, user_filter=ufilter, simplified=True)) user_ids = filter(None, [u["user_id"] for u in users]) format = req.GET.get("format", Format.XLS_2007) filename = "%s_forms" % domain download = DownloadBase() download.set_task( create_metadata_export.delay( download.download_id, domain, format=format, filename=filename, datespan=datespan, user_ids=user_ids, )) return download.get_start_response()
def export_all_form_metadata_async(req, domain): datespan = req.datespan if req.GET.get("startdate") and req.GET.get("enddate") else None group_id = req.GET.get("group") ufilter = UserTypeFilter.get_user_filter(req)[0] users = util.get_all_users_by_domain( domain=domain, group=group_id, user_filter=ufilter, simplified=True, include_inactive=True ) user_ids = filter(None, [u["user_id"] for u in users]) format = req.GET.get("format", Format.XLS_2007) filename = "%s_forms" % domain download = DownloadBase() download.set_task(create_metadata_export.delay( download.download_id, domain, format=format, filename=filename, datespan=datespan, user_ids=user_ids, )) return download.get_start_response()
def export_data(req, domain): """ Download all data for a couchdbkit model """ try: export_tag = json.loads(req.GET.get("export_tag", "null") or "null") except ValueError: return HttpResponseBadRequest() group, users = util.get_group_params(domain, **json_request(req.GET)) include_errors = string_to_boolean(req.GET.get("include_errors", False)) kwargs = { "format": req.GET.get("format", Format.XLS_2007), "previous_export_id": req.GET.get("previous_export", None), "filename": export_tag, "use_cache": string_to_boolean(req.GET.get("use_cache", "True")), "max_column_size": int(req.GET.get("max_column_size", 2000)), "separator": req.GET.get("separator", "|") } user_filter, _ = UserTypeFilter.get_user_filter(req) if user_filter: filtered_users = users_matching_filter(domain, user_filter) def _ufilter(user): try: return user['form']['meta']['userID'] in filtered_users except KeyError: return False filter = _ufilter else: filter = SerializableFunction(util.group_filter, group=group) errors_filter = instances if not include_errors else None kwargs['filter'] = couchexport.util.intersect_functions( filter, errors_filter) if kwargs['format'] == 'raw': resp = export_raw_data([domain, export_tag], filename=export_tag) else: try: resp = export_data_shared([domain, export_tag], **kwargs) except CouchExportException as e: return HttpResponseBadRequest(e) if resp: return resp else: messages.error( req, "Sorry, there was no data found for the tag '%s'." % export_tag) next = req.GET.get("next", "") if not next: next = export.ExcelExportReport.get_url(domain=domain) return HttpResponseRedirect(next)
def export_data(req, domain): """ Download all data for a couchdbkit model """ try: export_tag = json.loads(req.GET.get("export_tag", "null") or "null") except ValueError: return HttpResponseBadRequest() group, users = util.get_group_params(domain, **json_request(req.GET)) include_errors = string_to_boolean(req.GET.get("include_errors", False)) kwargs = { "format": req.GET.get("format", Format.XLS_2007), "previous_export_id": req.GET.get("previous_export", None), "filename": export_tag, "use_cache": string_to_boolean(req.GET.get("use_cache", "True")), "max_column_size": int(req.GET.get("max_column_size", 2000)), "separator": req.GET.get("separator", "|"), } user_filter, _ = UserTypeFilter.get_user_filter(req) if user_filter: filtered_users = users_matching_filter(domain, user_filter) def _ufilter(user): try: return user["form"]["meta"]["userID"] in filtered_users except KeyError: return False filter = _ufilter else: filter = SerializableFunction(util.group_filter, group=group) errors_filter = instances if not include_errors else None kwargs["filter"] = couchexport.util.intersect_functions(filter, errors_filter) if kwargs["format"] == "raw": resp = export_raw_data([domain, export_tag], filename=export_tag) else: try: resp = export_data_shared([domain, export_tag], **kwargs) except CouchExportException as e: return HttpResponseBadRequest(e) if resp: return resp else: messages.error(req, "Sorry, there was no data found for the tag '%s'." % export_tag) next = req.GET.get("next", "") if not next: next = export.ExcelExportReport.get_url(domain=domain) return HttpResponseRedirect(next)
def download_cases(request, domain): include_closed = json.loads(request.GET.get('include_closed', 'false')) try: format = Format.from_format( request.GET.get('format') or Format.XLS_2007) except URLError as e: return HttpResponseBadRequest(e.reason) group = request.GET.get('group', None) user_filter, _ = UserTypeFilter.get_user_filter(request) async = request.GET.get('async') == 'true' kwargs = { 'domain': domain, 'include_closed': include_closed, 'format': format, 'group': group, 'user_filter': user_filter, } payload_func = SerializableFunction(generate_case_export_payload, **kwargs) content_disposition = 'attachment; filename="{domain}_data.{ext}"'.format( domain=domain, ext=format.extension) mimetype = "%s" % format.mimetype def generate_payload(payload_func): if async: download = DownloadBase() a_task = prepare_download.delay(download.download_id, payload_func, content_disposition, mimetype) download.set_task(a_task) return download.get_start_response() else: payload = payload_func() response = HttpResponse(payload) response['Content-Type'] = mimetype response['Content-Disposition'] = content_disposition return response return generate_payload(payload_func)
def download_cases(request, domain): include_closed = json.loads(request.GET.get('include_closed', 'false')) try: format = Format.from_format(request.GET.get('format') or Format.XLS_2007) except URLError as e: return HttpResponseBadRequest(e.reason) group = request.GET.get('group', None) user_filter, _ = UserTypeFilter.get_user_filter(request) async = request.GET.get('async') == 'true' kwargs = { 'domain': domain, 'include_closed': include_closed, 'format': format, 'group': group, 'user_filter': user_filter, } payload_func = SerializableFunction(generate_case_export_payload, **kwargs) content_disposition = 'attachment; filename="{domain}_data.{ext}"'.format(domain=domain, ext=format.extension) mimetype = "%s" % format.mimetype def generate_payload(payload_func): if async: download = DownloadBase() a_task = prepare_download.delay(download.download_id, payload_func, content_disposition, mimetype) download.set_task(a_task) return download.get_start_response() else: payload = payload_func() response = HttpResponse(payload) response['Content-Type'] = mimetype response['Content-Disposition'] = content_disposition return response return generate_payload(payload_func)
def download_cases(request, domain): include_closed = json.loads(request.GET.get("include_closed", "false")) try: format = Format.from_format(request.GET.get("format") or Format.XLS_2007) except URLError as e: return HttpResponseBadRequest(e.reason) group = request.GET.get("group", None) user_filter, _ = UserTypeFilter.get_user_filter(request) async = request.GET.get("async") == "true" kwargs = { "domain": domain, "include_closed": include_closed, "format": format, "group": group, "user_filter": user_filter, } payload_func = SerializableFunction(generate_case_export_payload, **kwargs) content_disposition = 'attachment; filename="{domain}_data.{ext}"'.format(domain=domain, ext=format.extension) mimetype = "%s" % format.mimetype def generate_payload(payload_func): if async: download = DownloadBase() a_task = prepare_download.delay(download.download_id, payload_func, content_disposition, mimetype) download.set_task(a_task) return download.get_start_response() else: payload = payload_func() response = HttpResponse(payload) response["Content-Type"] = mimetype response["Content-Disposition"] = content_disposition return response return generate_payload(payload_func)