Example #1
0
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)
Example #2
0
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)
Example #3
0
 def _get_filtered_users(self):
     user_types = self.cleaned_data['user_types']
     user_filter_toggles = [
         self._USER_MOBILE in user_types,
         self._USER_DEMO in user_types,
         self._USER_ADMIN in user_types,
         self._USER_UNKNOWN in user_types,
         self._USER_SUPPLY in user_types
     ]
     # todo refactor HQUserType
     user_filters = HQUserType._get_manual_filterset(
         (True,) * HQUserType.count,
         user_filter_toggles
     )
     return users_matching_filter(self.domain_object.name, user_filters)
Example #4
0
 def _get_filtered_users(self):
     user_types = self.cleaned_data['user_types']
     user_filter_toggles = [
         self._USER_MOBILE in user_types,
         self._USER_DEMO in user_types,
         # The following line results in all users who match the
         # HQUserType.ADMIN filter to be included if the unknown users
         # filter is selected.
         self._USER_UNKNOWN in user_types,
         self._USER_UNKNOWN in user_types,
         self._USER_SUPPLY in user_types
     ]
     # todo refactor HQUserType
     user_filters = HQUserType._get_manual_filterset(
         (True, ) * HQUserType.count, user_filter_toggles)
     return users_matching_filter(self.domain_object.name, user_filters)
Example #5
0
 def _get_filtered_users(self):
     user_types = self.cleaned_data['user_types']
     user_filter_toggles = [
         self._USER_MOBILE in user_types,
         self._USER_DEMO in user_types,
         # The following line results in all users who match the
         # HQUserType.ADMIN filter to be included if the unknown users
         # filter is selected.
         self._USER_UNKNOWN in user_types,
         self._USER_UNKNOWN in user_types,
         self._USER_SUPPLY in user_types
     ]
     # todo refactor HQUserType
     user_filters = HQUserType._get_manual_filterset(
         (True,) * HQUserType.count,
         user_filter_toggles
     )
     return users_matching_filter(self.domain_object.name, user_filters)