コード例 #1
0
    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
コード例 #2
0
 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))
コード例 #3
0
 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'))))
コード例 #4
0
ファイル: xversion.py プロジェクト: rzg/django-xadmin
    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
コード例 #5
0
ファイル: xversion.py プロジェクト: Brandhor/django-xadmin
 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'))))
コード例 #6
0
ファイル: xversion.py プロジェクト: Brandhor/django-xadmin
    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
コード例 #7
0
ファイル: xversion.py プロジェクト: A-T-X/django-xadmin
 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'))))
コード例 #8
0
ファイル: xversion.py プロジェクト: Brandhor/django-xadmin
 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))
コード例 #9
0
 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"))))
コード例 #10
0
 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))
コード例 #11
0
    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
コード例 #12
0
    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)
コード例 #13
0
ファイル: xversion.py プロジェクト: rzg/django-xadmin
    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,
        )
コード例 #14
0
ファイル: xversion.py プロジェクト: 116pythonZS/imooc-django
    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)
コード例 #15
0
    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,
        )