Coverage for paperless/admin.py: 56%

23 statements  

« 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 

5 

6 

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 """ 

12 

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 ] 

26 

27 def clean(self): 

28 cleaned_data = super().clean() 

29 user_being_edited = self.instance 

30 is_superuser = cleaned_data.get("is_superuser") 

31 

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 ) 

39 

40 return cleaned_data 

41 

42 

43class PaperlessUserAdmin(UserAdmin): 

44 form = PaperlessUserForm 

45 

46 def get_form(self, request, obj=None, **kwargs): 

47 form = super().get_form(request, obj, **kwargs) 

48 form.request = request 

49 return form 

50 

51 

52admin.site.unregister(User) 

53admin.site.register(User, PaperlessUserAdmin)