def get_context(self): context = super(RevisionListView, self).get_context() opts = self.opts action_list = [ { "revision": version.revision, "url": self.model_admin_url('revision', quote(version.object_id), version.id), "version": version } for version in self._order_version_queryset(self.revision_manager.get_for_object_reference( self.model, self.obj.pk, ).select_related("revision__user")) ] context.update({ 'title': _('Change history: %s') % force_unicode(self.obj), 'action_list': action_list, 'module_name': capfirst(force_unicode(opts.verbose_name_plural)), 'object': self.obj, 'app_label': opts.app_label, "changelist_url": self.model_admin_url("changelist"), "update_url": self.model_admin_url("change", self.obj.pk), 'opts': opts, }) return context
def block_nav_toggles(self, context, nodes): obj = getattr( self.admin_view, 'org_obj', getattr(self.admin_view, 'obj', None)) if obj: revisionlist_url = self.admin_view.model_admin_url( 'revisionlist', quote(obj.pk)) nodes.append(mark_safe('<a href="%s" class="navbar-toggle pull-right"><i class="icon-time"></i></a>' % revisionlist_url))
def block_nav_btns(self, context, nodes): obj = getattr( self.admin_view, 'org_obj', getattr(self.admin_view, 'obj', None)) if obj: revisionlist_url = self.admin_view.model_admin_url( 'revisionlist', quote(obj.pk)) nodes.append(mark_safe('<a href="%s" class="btn btn-default"><i class="icon-time"></i> <span>%s</span></a>' % (revisionlist_url, _(u'History'))))
def get_context(self): context = super(RevisionListView, self).get_context() opts = self.opts action_list = [ { "revision": version.revision, "url": self.model_admin_url("revision", quote(version.object_id), version.id), "version": version, } for version in self._order_version_queryset( self.revision_manager.get_for_object_reference(self.model, self.obj.pk).select_related("revision__user") ) ] context.update( { "title": _("Change history: %s") % force_unicode(self.obj), "action_list": action_list, "module_name": capfirst(force_unicode(opts.verbose_name_plural)), "object": self.obj, "app_label": opts.app_label, "changelist_url": self.model_admin_url("changelist"), "update_url": self.model_admin_url("change", self.obj.pk), "opts": opts, } ) return context
def block_nav_btns(self, context, nodes): obj = getattr( self.admin_view, 'org_obj', getattr(self.admin_view, 'obj', None)) if obj: revisionlist_url = self.admin_view.model_admin_url( 'revisionlist', quote(obj.pk)) nodes.append(mark_safe('<a href="%s" class="btn btn-default"><i class="fa fa-time"></i> <span>%s</span></a>' % (revisionlist_url, _(u'History'))))
def get_context(self): context = super(RevisionListView, self).get_context() opts = self.opts action_list = [ { "revision": version.revision, "url": self.model_admin_url('revision', quote(version.object_id), version.id), "version": version } for version in self._order_version_queryset(self.revision_manager.get_for_object_reference( self.model, self.obj.pk, ).select_related("revision__user")) ] context.update({ 'title': _('Change history: %s') % force_unicode(self.obj), 'action_list': action_list, 'model_name': capfirst(force_unicode(opts.verbose_name_plural)), 'object': self.obj, 'app_label': opts.app_label, "changelist_url": self.model_admin_url("changelist"), "update_url": self.model_admin_url("change", self.obj.pk), 'opts': opts, }) return context
def block_object_tools(self, context, nodes): obj = getattr( self.admin_view, 'org_obj', getattr(self.admin_view, 'obj', None)) if obj: revisionlist_url = self.admin_view.model_admin_url( 'revisionlist', quote(obj.pk)) nodes.append(mark_safe('<a href="%s" class="btn btn-small"><i class="icon-time"></i> %s</a>' % (revisionlist_url, _(u'History'))))
def block_nav_toggles(self, context, nodes): obj = getattr( self.admin_view, 'org_obj', getattr(self.admin_view, 'obj', None)) if obj: revisionlist_url = self.admin_view.model_admin_url( 'revisionlist', quote(obj.pk)) nodes.append(mark_safe('<a href="%s" class="navbar-toggle pull-right"><i class="fa fa-time"></i></a>' % revisionlist_url))
def block_nav_btns(self, context, nodes): obj = getattr(self.admin_view, "org_obj", getattr(self.admin_view, "obj", None)) if obj: revisionlist_url = self.admin_view.model_admin_url( "revisionlist", quote(obj.pk)) nodes.append( mark_safe( '<a href="%s" class="btn btn-default"><i class="fa fa-calendar"></i> <span>%s</span></a>' % (revisionlist_url, _(u"History"))))
def block_nav_toggles(self, context, nodes): obj = getattr(self.admin_view, "org_obj", getattr(self.admin_view, "obj", None)) if obj: revisionlist_url = self.admin_view.model_admin_url( "revisionlist", quote(obj.pk)) nodes.append( mark_safe( '<a href="%s" class="navbar-toggle pull-right"><i class="fa fa-calendar"></i></a>' % revisionlist_url))
def get_context(self): context = super(RevisionListView, self).get_context() opts = self.opts action_list = [{ "revision": version.revision, "url": self.model_admin_url("revision", quote(version.object_id), version.id), "version": version, } for version in self._reversion_order_version_queryset( Version.objects.get_for_object_reference( self.model, self.obj.pk, ).select_related("revision__user"))] context.update({ "title": _("Change history: %s") % force_text(self.obj), "action_list": action_list, "model_name": capfirst(force_text(opts.verbose_name_plural)), "object": self.obj, "app_label": opts.app_label, "changelist_url": self.model_admin_url("changelist"), "update_url": self.model_admin_url("change", self.obj.pk), "opts": opts, }) return context
def post(self, request, object_id, *args, **kwargs): object_id = unquote(object_id) self.obj = self.get_object(object_id) if not self.has_change_permission(self.obj): raise PermissionDenied params = self.request.POST if 'version_a' not in params or 'version_b' not in params: self.message_user(_("Must select two versions."), 'error') return self.get_response() version_a_id = params['version_a'] version_b_id = params['version_b'] if version_a_id == version_b_id: self.message_user( _("Please select two different versions."), 'error') return self.get_response() version_a = get_object_or_404(Version, pk=version_a_id) version_b = get_object_or_404(Version, pk=version_b_id) diffs = [] obj_a, detail_a = self.get_version_object(version_a) obj_b, detail_b = self.get_version_object(version_b) for f in (self.opts.fields + self.opts.many_to_many): if isinstance(f, RelatedObject): label = f.opts.verbose_name else: label = f.verbose_name value_a = f.value_from_object(obj_a) value_b = f.value_from_object(obj_b) is_diff = value_a != value_b if type(value_a) in (list, tuple) and type(value_b) in (list, tuple) \ and len(value_a) == len(value_b) and is_diff: is_diff = False for i in xrange(len(value_a)): if value_a[i] != value_a[i]: is_diff = True break if type(value_a) is QuerySet and type(value_b) is QuerySet: is_diff = list(value_a) != list(value_b) diffs.append((label, detail_a.get_field_result( f.name).val, detail_b.get_field_result(f.name).val, is_diff)) context = super(RevisionListView, self).get_context() context.update({ 'object': self.obj, 'opts': self.opts, 'version_a': version_a, 'version_b': version_b, 'revision_a_url': self.model_admin_url('revision', quote(version_a.object_id), version_a.id), 'revision_b_url': self.model_admin_url('revision', quote(version_b.object_id), version_b.id), 'diffs': diffs }) return TemplateResponse( self.request, self.revision_diff_template or self.get_template_list('views/revision_diff.html'), context, current_app=self.admin_site.name)
def post(self, request, object_id, *args, **kwargs): object_id = unquote(object_id) self.obj = self.get_object(object_id) if not self.has_change_permission(self.obj): raise PermissionDenied params = self.request.POST if "version_a" not in params or "version_b" not in params: self.message_user(_("Must select two versions."), "error") return self.get_response() version_a_id = params["version_a"] version_b_id = params["version_b"] if version_a_id == version_b_id: self.message_user(_("Please select two different versions."), "error") return self.get_response() version_a = get_object_or_404(Version, pk=version_a_id) version_b = get_object_or_404(Version, pk=version_b_id) diffs = [] obj_a, detail_a = self.get_version_object(version_a) obj_b, detail_b = self.get_version_object(version_b) for f in self.opts.fields + self.opts.many_to_many: if isinstance(f, RelatedObject): label = f.opts.verbose_name else: label = f.verbose_name value_a = f.value_from_object(obj_a) value_b = f.value_from_object(obj_b) is_diff = value_a != value_b if ( type(value_a) in (list, tuple) and type(value_b) in (list, tuple) and len(value_a) == len(value_b) and is_diff ): is_diff = False for i in xrange(len(value_a)): if value_a[i] != value_a[i]: is_diff = True break if type(value_a) is QuerySet and type(value_b) is QuerySet: is_diff = list(value_a) != list(value_b) diffs.append((label, detail_a.get_field_result(f.name).val, detail_b.get_field_result(f.name).val, is_diff)) context = super(RevisionListView, self).get_context() context.update( { "object": self.obj, "opts": self.opts, "version_a": version_a, "version_b": version_b, "revision_a_url": self.model_admin_url("revision", quote(version_a.object_id), version_a.id), "revision_b_url": self.model_admin_url("revision", quote(version_b.object_id), version_b.id), "diffs": diffs, } ) return TemplateResponse( self.request, self.revision_diff_template or self.get_template_list("views/revision_diff.html"), context, current_app=self.admin_site.name, )
def post(self, request, object_id, *args, **kwargs): object_id = unquote(object_id) self.obj = self.get_object(object_id) if not self.has_change_permission(self.obj): raise PermissionDenied params = self.request.POST if 'version_a' not in params or 'version_b' not in params: self.message_user(_("Must select two versions."), 'error') return self.get_response() version_a_id = params['version_a'] version_b_id = params['version_b'] if version_a_id == version_b_id: self.message_user( _("Please select two different versions."), 'error') return self.get_response() version_a = get_object_or_404(Version, pk=version_a_id) version_b = get_object_or_404(Version, pk=version_b_id) diffs = [] obj_a, detail_a = self.get_version_object(version_a) obj_b, detail_b = self.get_version_object(version_b) for f in (self.opts.fields + self.opts.many_to_many): if is_related_field2(f): label = f.opts.verbose_name else: label = f.verbose_name value_a = f.value_from_object(obj_a) value_b = f.value_from_object(obj_b) is_diff = value_a != value_b if type(value_a) in (list, tuple) and type(value_b) in (list, tuple) \ and len(value_a) == len(value_b) and is_diff: is_diff = False for i in xrange(len(value_a)): if value_a[i] != value_a[i]: is_diff = True break if type(value_a) is QuerySet and type(value_b) is QuerySet: is_diff = list(value_a) != list(value_b) diffs.append((label, detail_a.get_field_result( f.name).val, detail_b.get_field_result(f.name).val, is_diff)) context = super(RevisionListView, self).get_context() context.update({ 'object': self.obj, 'opts': self.opts, 'version_a': version_a, 'version_b': version_b, 'revision_a_url': self.model_admin_url('revision', quote(version_a.object_id), version_a.id), 'revision_b_url': self.model_admin_url('revision', quote(version_b.object_id), version_b.id), 'diffs': diffs }) return TemplateResponse( self.request, self.revision_diff_template or self.get_template_list('views/revision_diff.html'), context)
def post(self, request, object_id, *args, **kwargs): object_id = unquote(object_id) self.obj = self.get_object(object_id) if not self.has_change_permission(self.obj): raise PermissionDenied params = self.request.POST if "version_a" not in params or "version_b" not in params: self.message_user(_("Must select two versions."), "error") return self.get_response() version_a_id = params["version_a"] version_b_id = params["version_b"] if version_a_id == version_b_id: self.message_user(_("Please select two different versions."), "error") return self.get_response() version_a = get_object_or_404(Version, pk=version_a_id) version_b = get_object_or_404(Version, pk=version_b_id) diffs = [] obj_a, detail_a = self.get_version_object(version_a) obj_b, detail_b = self.get_version_object(version_b) for f in self.opts.fields + self.opts.many_to_many: if is_related_field2(f): label = f.opts.verbose_name else: label = f.verbose_name value_a = f.value_from_object(obj_a) value_b = f.value_from_object(obj_b) is_diff = value_a != value_b if (type(value_a) in (list, tuple) and type(value_b) in (list, tuple) and len(value_a) == len(value_b) and is_diff): is_diff = False for i in xrange(len(value_a)): if value_a[i] != value_a[i]: is_diff = True break if type(value_a) is QuerySet and type(value_b) is QuerySet: is_diff = list(value_a) != list(value_b) diffs.append(( label, detail_a.get_field_result(f.name).val, detail_b.get_field_result(f.name).val, is_diff, )) context = super(RevisionListView, self).get_context() context.update({ "object": self.obj, "opts": self.opts, "version_a": version_a, "version_b": version_b, "revision_a_url": self.model_admin_url("revision", quote(version_a.object_id), version_a.id), "revision_b_url": self.model_admin_url("revision", quote(version_b.object_id), version_b.id), "diffs": diffs, }) return TemplateResponse( self.request, self.revision_diff_template or self.get_template_list("views/revision_diff.html"), context, )