jazzband / django-simple-history

Store model history and view/revert changes from admin site.
https://django-simple-history.readthedocs.org
BSD 3-Clause "New" or "Revised" License
2.22k stars 481 forks source link

history form renders incorrect if readonly (and pre-commit-ci) #1410

Open fetzig opened 1 month ago

fetzig commented 1 month ago

Rendering behaviour of history change_form isn't as expected if has_change_permission == False.

UPDATE: Also fixes the pre-commit-ci job by upgrading to python 3.9.

Description

django Admin renders a "form" full of readonly_fields in this case:


@admin.register(Foo)
class FooAdmin(SimpleHistoryAdmin):
    # ...

    def has_change_permission(self, request, obj=None):
        return False

Instead of rendering like the original change_form of Foo (just readonly fields), it renders form fields (input tags). But no submit buttons.

djangos ModelAdmin adds all fields to ModelAdmin.readonly_fields.

This behaviour has been copied ModelAdmin._changeform_view to SimpleHIstoryAdmin.history_form_view.

Related Issue

An Issue for this already exists: #1362

Motivation and Context

Getting SimpleHistoryModel to act as expected, which is to be consistent with djangos ModelAdmin.

How Has This Been Tested?

Comparing of SimpleHistoryModel behaviour with corresponding ModelAdmin and default django-simple-history settings.

Screenshots (if appropriate):

Types of changes

Checklist: