Coverage for src/backend/InvenTree/InvenTree/admin.py: 75%
36 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Admin classes."""
3from django.contrib import admin
4from django.http.request import HttpRequest
5from django.utils import timezone
7from allauth.usersessions.admin import UserSessionAdmin
8from allauth.usersessions.models import UserSession
9from django_q.admin import ScheduleAdmin
10from django_q.models import Schedule
11from djmoney.contrib.exchange.admin import RateAdmin
12from djmoney.contrib.exchange.models import Rate
15class CustomRateAdmin(RateAdmin):
16 """Admin interface for the Rate class."""
18 def has_add_permission(self, request: HttpRequest) -> bool:
19 """Disable the 'add' permission for Rate objects."""
20 return False
23admin.site.unregister(Rate)
24admin.site.register(Rate, CustomRateAdmin)
27def run_schedule_now(modeladmin, request, queryset):
28 """Immediately queue the selected scheduled tasks for execution."""
29 queryset.update(next_run=timezone.now())
30 count = queryset.count()
31 modeladmin.message_user(request, f'{count} task(s) queued for immediate execution.')
34run_schedule_now.short_description = 'Run selected tasks now'
37class ReadOnlyScheduleAdmin(ScheduleAdmin):
38 """Read-only admin interface for django-q Schedule objects."""
40 actions = [run_schedule_now]
42 def has_add_permission(self, request: HttpRequest) -> bool:
43 """Prevent adding new Schedule objects."""
44 return False
46 def has_change_permission(self, request: HttpRequest, obj=None) -> bool:
47 """Prevent changing existing Schedule objects."""
48 return False
50 def has_delete_permission(self, request: HttpRequest, obj=None) -> bool:
51 """Prevent deleting Schedule objects."""
52 return False
55admin.site.unregister(Schedule)
56admin.site.register(Schedule, ReadOnlyScheduleAdmin)
59class InvenTreeUserSessionAdmin(UserSessionAdmin):
60 """Admin interface for UserSession - view and delete only, no add or edit."""
62 def has_add_permission(self, request: HttpRequest) -> bool:
63 """Prevent creating sessions via admin."""
64 return False
66 def has_change_permission(self, request: HttpRequest, obj=None) -> bool:
67 """Prevent editing sessions via admin."""
68 return False
71admin.site.unregister(UserSession)
72admin.site.register(UserSession, InvenTreeUserSessionAdmin)