示例#1
0
def delete_data(request, username=None, id_string=None):
    query = request.POST.get('query', None)
    if query is None:
        return HttpResponseBadRequest(_(u"Invalid query parameter"))

    try:
        simplejson.loads(query)
    except ValueError:
        return HttpResponseBadRequest(_(u"Invalid query parameter"))

    xform, owner = check_and_set_user_and_form(username, id_string, request)
    response_text = u''
    if not xform:
        return HttpResponseForbidden(_(u'Not shared.'))
    try:
        query_args = {
            "username": username, "id_string": id_string,
            "query": query,
            "fields": request.POST.get('fields', None),
            "sort": request.POST.get('sort', None),
            "limit": 1
        }

        if 'limit' in request.GET:
            query_args["limit"] = int(request.GET.get('limit'))
        cursor = ParsedInstance.query_mongo(**query_args)
    except ValueError as e:
        return HttpResponseBadRequest(e)
    else:
        records = list(record for record in cursor)
        if records.__len__():
            for record in records:
                Instance.delete_by_uuid(
                    username, id_string, uuid=record['_uuid'])
                audit = {
                    'xform': xform.id_string
                }
                audit_log(Actions.SUBMISSION_DELETED, request.user, owner,
                    _("Deleted submission with id '%(record_id)s' on '%(id_string)s'.") %\
                    {
                        'id_string': xform.id_string,
                        'record_id': record['_id']
                    }, audit, request)
            response_text = simplejson.dumps(records)
    if 'callback' in request.GET and request.GET.get('callback') != '':
        callback = request.GET.get('callback')
        response_text = ("%s(%s)" % (callback, response_text))
    return HttpResponse(response_text, mimetype='application/json')