diff --git a/Makefile b/Makefile index 3dd614c86ac23378503faeb83ea56ac0ea4bf49c..67fcce0de7bdc7f54f95e5a5f60a02e7ca188ee5 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ #!/usr/bin/make -f -PYTHON = python3.11 +PYTHON = python3.12 VENV = .venv PORT = 8013 SETTINGS = registry.settings.dev diff --git a/contracts/admin.py b/contracts/admin.py index ba5f4fd6213308dd772f3e510a5fb7634dd8cfef..fee77c60e5c877aa7c6e253853da9f2e9bffe27a 100644 --- a/contracts/admin.py +++ b/contracts/admin.py @@ -88,7 +88,9 @@ class OwnPermissionsMixin( ) ): def save_model(self, request, obj, form, change): - if obj.created_by is None: + # If there is a primary key already assigned, this is an auto-generated + # contract that shouldn't have an author at all. + if obj.created_by is None and obj.pk is None: obj.created_by = request.user return super().save_model(request, obj, form, change) @@ -250,7 +252,7 @@ class ContractAdmin( search_fields = ("name",) readonly_fields = ( - "created_by", + # "created_by", -- Dynamic "created_on", "updated_on", ) @@ -606,8 +608,6 @@ class ContractAdmin( return parent_save_response def get_readonly_fields(self, request, obj=None): - readonly_fields = [] - fields = [] for fieldset in self.get_fieldsets(request): @@ -621,8 +621,14 @@ class ContractAdmin( ): fields.remove("status") + if request.user.is_superuser: + fields.remove("created_by") + return fields + if not request.user.is_superuser: + return list(self.readonly_fields) + ["created_by"] + return list(self.readonly_fields) def has_change_permission(self, request, obj=None): diff --git a/contracts/forms.py b/contracts/forms.py index bb3f457964809ba5f581d792b07e72418ed51735..d594115ea2af8000ac7b53e0b25156d68ab992e4 100644 --- a/contracts/forms.py +++ b/contracts/forms.py @@ -94,6 +94,7 @@ class ContractAdminForm(forms.ModelForm): and choice_key == Contract.StatusTypes.TO_BE_APPROVED and self.current_user.has_perm("contracts.approve") ): + print("allowing") allowed_choices.append( ( choice_key,