# encoding: utf-8 """ Admin site configurations for verify_student. """ from config_models.admin import ConfigurationModelAdmin from ratelimitbackend import admin from lms.djangoapps.verify_student.models import ( IcrvStatusEmailsConfiguration, SkippedReverification, SoftwareSecurePhotoVerification, VerificationStatus, ) @admin.register(SoftwareSecurePhotoVerification) 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', 'copy_id_photo_from',) search_fields = ('receipt_id', 'user__username',) @admin.register(VerificationStatus) 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 @admin.register(SkippedReverification) 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(IcrvStatusEmailsConfiguration, ConfigurationModelAdmin)