|
1 |
| -from django import http |
| 1 | +from django import forms, http |
2 | 2 | from django.apps import apps as django_apps
|
3 | 3 | from django.conf import settings
|
4 | 4 | from django.contrib import admin
|
5 | 5 | from django.contrib.admin import helpers
|
6 | 6 | from django.contrib.admin.utils import unquote
|
7 | 7 | from django.contrib.auth import get_permission_codename, get_user_model
|
8 | 8 | from django.core.exceptions import PermissionDenied
|
| 9 | +from django.forms import fields |
9 | 10 | from django.shortcuts import get_object_or_404, render
|
10 | 11 | from django.urls import re_path, reverse
|
11 | 12 | from django.utils.encoding import force_str
|
@@ -224,9 +225,31 @@ def render_history_view(self, request, template, context, **kwargs):
|
224 | 225 |
|
225 | 226 | def save_model(self, request, obj, form, change):
|
226 | 227 | """Set special model attribute to user for reference after save"""
|
| 228 | + obj._change_reason = form.cleaned_data["history_change_reason"] |
227 | 229 | obj._history_user = request.user
|
228 | 230 | super().save_model(request, obj, form, change)
|
229 | 231 |
|
| 232 | + class form(forms.ModelForm): |
| 233 | + history_change_reason = forms.CharField(required=False) |
| 234 | + |
| 235 | + def get_fields(self, request, obj=None): |
| 236 | + return [ |
| 237 | + field |
| 238 | + for field in super().get_fields(request, obj) |
| 239 | + if field != "history_change_reason" |
| 240 | + ] |
| 241 | + |
| 242 | + def get_fieldsets(self, request, obj=None): |
| 243 | + return super().get_fieldsets(request, obj) + [ |
| 244 | + ( |
| 245 | + "History", |
| 246 | + { |
| 247 | + "classes": ["collapse"], |
| 248 | + "fields": ["history_change_reason"], |
| 249 | + }, |
| 250 | + ) |
| 251 | + ] |
| 252 | + |
230 | 253 | @property
|
231 | 254 | def content_type_model_cls(self):
|
232 | 255 | """Returns the ContentType model class."""
|
|
0 commit comments