Coverage for paperless/admin.py: 56%
23 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 09:07 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 09:07 +0000
1from django import forms
2from django.contrib import admin
3from django.contrib.auth.admin import UserAdmin
4from django.contrib.auth.models import User
7class PaperlessUserForm(forms.ModelForm):
8 """
9 Custom form for the User model that adds validation to prevent non-superusers
10 from changing the superuser status of a user.
11 """
13 class Meta:
14 model = User
15 fields = [
16 "username",
17 "first_name",
18 "last_name",
19 "email",
20 "is_staff",
21 "is_active",
22 "is_superuser",
23 "groups",
24 "user_permissions",
25 ]
27 def clean(self):
28 cleaned_data = super().clean()
29 user_being_edited = self.instance
30 is_superuser = cleaned_data.get("is_superuser")
32 if (
33 not self.request.user.is_superuser
34 and is_superuser != user_being_edited.is_superuser
35 ):
36 raise forms.ValidationError(
37 "Superuser status can only be changed by a superuser",
38 )
40 return cleaned_data
43class PaperlessUserAdmin(UserAdmin):
44 form = PaperlessUserForm
46 def get_form(self, request, obj=None, **kwargs):
47 form = super().get_form(request, obj, **kwargs)
48 form.request = request
49 return form
52admin.site.unregister(User)
53admin.site.register(User, PaperlessUserAdmin)