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 })
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})
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
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
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)
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)
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)
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)
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}))
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}))
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)
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)