예제 #1
0
def history_view(request, object_class, object_id, extra_context=None):
    """Renders the history view."""
    object_klass = get_obj_meta(object_class).Klass

    if not object_klass:
        raise Http404
    object_ = get_object_or_404(object_klass, pk=object_id)

    action_list = _get_action_list(request,
                                   object_,
                                   extra_context=extra_context)

    if len(action_list) < 2:
        # Less than two history items aren't enough to compare ;)
        comparable = False
    else:
        comparable = True
        # for pre selecting the compare radio buttons depend on the ordering:
        action_list[0]["first"] = True
        action_list[1]["second"] = True

    return render(
        request, 'reversion_compare/object_history.html', {
            "object_id": object_.pk,
            "object": object_,
            "action_list": action_list,
            "comparable": comparable,
            "compare_view": True
        })
예제 #2
0
파일: views.py 프로젝트: Marlburo/inventory
def history_view(request, object_class, object_id, extra_context=None):
    """Renders the history view."""
    object_klass = get_obj_meta(object_class).Klass

    if not object_klass:
        raise Http404
    object_ = get_object_or_404(object_klass, pk=object_id)

    action_list = _get_action_list(request, object_,
                                    extra_context=extra_context)

    if len(action_list) < 2:
        # Less than two history items aren't enough to compare ;)
        comparable = False
    else:
        comparable = True
        # for pre selecting the compare radio buttons depend on the ordering:
        action_list[0]["first"] = True
        action_list[1]["second"] = True

    return render(request, 'reversion_compare/object_history.html',
                    {"object_id": object_.pk,
                    "object": object_,
                    "action_list": action_list,
                    "comparable": comparable,
                    "compare_view": True})
예제 #3
0
def record_search_ajax(request):
    """
    This function will return a list of records matching the 'query' of type
    'record_type'. It's used for ajaxy stuff.
    """
    query = request.GET.get('query', '')
    record_type = request.GET.get('record_type', '')
    obj_meta = get_obj_meta(record_type)
    if not record_type:
        raise Http404
    if not query and record_type:
        return render(request, 'record/record_search_results.html', {
            'objs': [],
            'record_type': record_type,
        })

    if not obj_meta.Klass:
        raise Http404
    records, error = search_type(query, record_type)
    if error:
        total_obj_count = 0
        records = []
    else:
        try:
            total_obj_count = records.count()
            records = records[:50]
        except DatabaseError, e:
            if "Got error " in str(e) and " from regexp" in str(e):
                # This is nasty. If the user is using an invalid regex patter,
                # the db might shit a brick
                total_obj_count = 0
                records = []
            else:
                raise
예제 #4
0
def record_search_ajax(request):
    """
    This function will return a list of records matching the 'query' of type
    'record_type'. It's used for ajaxy stuff.
    """
    query = request.GET.get("query", "")
    record_type = request.GET.get("record_type", "")
    obj_meta = get_obj_meta(record_type)
    if not record_type:
        raise Http404
    if not query and record_type:
        return render(request, "record/record_search_results.html", {"objs": [], "record_type": record_type})

    if not obj_meta.Klass:
        raise Http404
    records, error = search_type(query, record_type)
    if error:
        records = []
    else:
        try:
            records = records[:50]
        except MySQLdb.OperationalError, e:
            if "Got error " in str(e) and " from regexp" in str(e):
                # This is nasty. If the user is using an invalid regex patter,
                # the db might shit a brick
                records = []
            else:
                raise
예제 #5
0
파일: views.py 프로젝트: Marlburo/inventory
def record_search_ajax(request):
    """
    This function will return a list of records matching the 'query' of type
    'record_type'. It's used for ajaxy stuff.
    """
    query = request.GET.get('query', '')
    record_type = request.GET.get('record_type', '')
    obj_meta = get_obj_meta(record_type)
    if not record_type:
        raise Http404
    if not query and record_type:
        return render(request, 'record/record_search_results.html', {
            'objs': [],
            'record_type': record_type,
        })

    if not obj_meta.Klass:
        raise Http404
    records, error = search_type(query, record_type)
    if error:
        total_obj_count = 0
        records = []
    else:
        try:
            total_obj_count = records.count()
            records = records[:50]
        except DatabaseError, e:
            if "Got error " in str(e) and " from regexp" in str(e):
                # This is nasty. If the user is using an invalid regex patter,
                # the db might shit a brick
                total_obj_count = 0
                records = []
            else:
                raise
예제 #6
0
def record_ajax(request):
    # This function is pretty much a router
    if request.method == 'POST':
        return _record_post(request)
    else:
        record_type = request.GET.get('record_type', '')
        record_pk = request.GET.get('record_pk', '')
        obj_meta = get_obj_meta(record_type)()
        return obj_meta.get(request, record_type, record_pk)
예제 #7
0
def record_ajax(request):
    # This function is pretty much a router
    if request.method == "POST":
        return _record_post(request)
    else:
        record_type = request.GET.get("record_type", "")
        record_pk = request.GET.get("record_pk", "")
        obj_meta = get_obj_meta(record_type)()
        return obj_meta.get(request, record_type, record_pk)
예제 #8
0
파일: views.py 프로젝트: Marlburo/inventory
def record_ajax(request):
    # This function is pretty much a router
    if request.method == 'POST':
        return _record_post(request)
    else:
        record_type = request.GET.get('record_type', '')
        record_pk = request.GET.get('record_pk', '')
        obj_meta = get_obj_meta(record_type)()
        return obj_meta.get(request, record_type, record_pk)
예제 #9
0
파일: views.py 프로젝트: Marlburo/inventory
def compare_view(request, object_class, extra_context=None):
    """
    compare two versions.
    Used make_compare() to create the html diff.
    """
    form = SelectDiffForm(request.GET)
    if not form.is_valid():
        msg = "Wrong version IDs."
        if settings.DEBUG:
            msg += " (form errors: %s)" % ", ".join(form.errors)
        raise Http404(msg)

    object_id = request.GET.get('object_id', None)
    if not object_id:
        raise Http404("What object are you looking for?")

    version_id1 = form.cleaned_data["version_id1"]
    version_id2 = form.cleaned_data["version_id2"]

    object_klass = get_obj_meta(object_class).Klass
    if not object_klass:
        raise Http404("No {0} object type with id {1}".format(object_class,
                        object_id))
    obj = get_object_or_404(object_klass, pk=object_id)
    queryset = reversion.get_for_object(obj)
    version1 = get_object_or_404(queryset, pk=version_id1)
    version2 = get_object_or_404(queryset, pk=version_id2)

    if version_id1 > version_id2:
        # Compare always the newest one with the older one 
        version1, version2 = version2, version1

    compare_data, has_unfollowed_fields = compare(obj, version1, version2)

    opts = obj._meta

    context = {
        "opts": opts,
        "app_label": opts.app_label,
        "module_name": capfirst(opts.verbose_name),
        "title": _("Compare {0}".format(version1.object_repr)),
        "obj": obj,
        "compare_data": compare_data,
        "has_unfollowed_fields": has_unfollowed_fields,
        "version1": version1,
        "version2": version2,
    }
    extra_context = extra_context or {}
    context.update(extra_context)
    return render(request, 'reversion_compare/compare.html',
                    context)
예제 #10
0
def compare_view(request, object_class, extra_context=None):
    """
    compare two versions.
    Used make_compare() to create the html diff.
    """
    form = SelectDiffForm(request.GET)
    if not form.is_valid():
        msg = "Wrong version IDs."
        if settings.DEBUG:
            msg += " (form errors: %s)" % ", ".join(form.errors)
        raise Http404(msg)

    object_id = request.GET.get('object_id', None)
    if not object_id:
        raise Http404("What object are you looking for?")

    version_id1 = form.cleaned_data["version_id1"]
    version_id2 = form.cleaned_data["version_id2"]

    object_klass = get_obj_meta(object_class).Klass
    if not object_klass:
        raise Http404("No {0} object type with id {1}".format(
            object_class, object_id))
    obj = get_object_or_404(object_klass, pk=object_id)
    queryset = reversion.get_for_object(obj)
    version1 = get_object_or_404(queryset, pk=version_id1)
    version2 = get_object_or_404(queryset, pk=version_id2)

    if version_id1 > version_id2:
        # Compare always the newest one with the older one
        version1, version2 = version2, version1

    compare_data, has_unfollowed_fields = compare(obj, version1, version2)

    opts = obj._meta

    context = {
        "opts": opts,
        "app_label": opts.app_label,
        "module_name": capfirst(opts.verbose_name),
        "title": _("Compare {0}".format(version1.object_repr)),
        "obj": obj,
        "compare_data": compare_data,
        "has_unfollowed_fields": has_unfollowed_fields,
        "version1": version1,
        "version2": version2,
    }
    extra_context = extra_context or {}
    context.update(extra_context)
    return render(request, 'reversion_compare/compare.html', context)
예제 #11
0
def record_delete(request, record_type="", record_pk=""):
    if request.method != "POST":
        raise Http404
    obj_meta = get_obj_meta(record_type)

    try:
        object_ = obj_meta.Klass.objects.get(pk=record_pk)
    except obj_meta.Klass.DoesNotExist:
        error = "Could not find that object."
        return HttpResponse(json.dumps({"success": False, "error": error}))

    try:
        object_.delete()
    except ValidationError, e:
        error = e.messages[0]
        return HttpResponse(json.dumps({"success": False, "error": error}))
예제 #12
0
def record_delete(request, record_type='', record_pk=''):
    if request.method != 'POST':
        raise Http404

    obj_meta = get_obj_meta(record_type)

    try:
        object_ = obj_meta.Klass.objects.get(pk=record_pk)
    except obj_meta.Klass.DoesNotExist:
        error = "Could not find that object."
        return HttpResponse(json.dumps({'success': False, 'error': error}))

    try:
        object_.delete()
    except ValidationError, e:
        error = e.messages[0]
        return HttpResponse(json.dumps({'success': False, 'error': error}))
예제 #13
0
def _record_post(request):
    record_type = request.POST.get('record_type', '')
    record_pk = request.POST.get('record_pk', '')
    obj_meta = get_obj_meta(record_type)()
    return obj_meta.post(request, record_type, record_pk)
예제 #14
0
def _record_post(request):
    record_type = request.POST.get("record_type", "")
    record_pk = request.POST.get("record_pk", "")
    obj_meta = get_obj_meta(record_type)()
    return obj_meta.post(request, record_type, record_pk)
예제 #15
0
파일: views.py 프로젝트: Marlburo/inventory
def _record_post(request):
    record_type = request.POST.get('record_type', '')
    record_pk = request.POST.get('record_pk', '')
    obj_meta = get_obj_meta(record_type)()
    return obj_meta.post(request, record_type, record_pk)