64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
from ratelimitbackend import admin
|
|
from config_models.admin import ConfigurationModelAdmin
|
|
from verify_student.models import (
|
|
SoftwareSecurePhotoVerification,
|
|
InCourseReverificationConfiguration,
|
|
VerificationStatus,
|
|
SkippedReverification,
|
|
)
|
|
|
|
|
|
class SoftwareSecurePhotoVerificationAdmin(admin.ModelAdmin):
|
|
"""
|
|
Admin for the SoftwareSecurePhotoVerification table.
|
|
"""
|
|
list_display = ('id', 'user', 'status', 'receipt_id', 'submitted_at', 'updated_at')
|
|
raw_id_fields = ('user', 'reviewing_user')
|
|
search_fields = (
|
|
'receipt_id',
|
|
)
|
|
|
|
|
|
class VerificationStatusAdmin(admin.ModelAdmin):
|
|
"""
|
|
Admin for the VerificationStatus table.
|
|
"""
|
|
list_display = ('timestamp', 'user', 'status', 'checkpoint')
|
|
readonly_fields = ()
|
|
search_fields = ('checkpoint__checkpoint_location', 'user__username')
|
|
raw_id_fields = ('user',)
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
"""When editing an existing record, all fields should be read-only.
|
|
|
|
VerificationStatus records should be immutable; to change the user's
|
|
status, create a new record with the updated status and a more
|
|
recent timestamp.
|
|
|
|
"""
|
|
if obj:
|
|
return self.readonly_fields + ('status', 'checkpoint', 'user', 'response', 'error')
|
|
return self.readonly_fields
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
"""The verification status table is append-only. """
|
|
return False
|
|
|
|
|
|
class SkippedReverificationAdmin(admin.ModelAdmin):
|
|
"""Admin for the SkippedReverification table. """
|
|
list_display = ('created_at', 'user', 'course_id', 'checkpoint')
|
|
raw_id_fields = ('user',)
|
|
readonly_fields = ('user', 'course_id')
|
|
search_fields = ('user__username', 'course_id', 'checkpoint__checkpoint_location')
|
|
|
|
def has_add_permission(self, request):
|
|
"""Skipped verifications can't be created in Django admin. """
|
|
return False
|
|
|
|
|
|
admin.site.register(SoftwareSecurePhotoVerification, SoftwareSecurePhotoVerificationAdmin)
|
|
admin.site.register(InCourseReverificationConfiguration, ConfigurationModelAdmin)
|
|
admin.site.register(SkippedReverification, SkippedReverificationAdmin)
|
|
admin.site.register(VerificationStatus, VerificationStatusAdmin)
|