64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
"""
|
|
django admin page for the course creators table
|
|
"""
|
|
|
|
from course_creators.models import CourseCreator, update_creator_state
|
|
from course_creators.views import update_course_creator_group
|
|
|
|
from django.contrib import admin
|
|
from django.dispatch import receiver
|
|
|
|
|
|
def get_email(obj):
|
|
""" Returns the email address for a user """
|
|
return obj.user.email
|
|
|
|
get_email.short_description = 'email'
|
|
|
|
|
|
class CourseCreatorAdmin(admin.ModelAdmin):
|
|
"""
|
|
Admin for the course creator table.
|
|
"""
|
|
|
|
# Fields to display on the overview page.
|
|
list_display = ['user', get_email, 'state', 'state_changed', 'note']
|
|
readonly_fields = ['user', 'state_changed']
|
|
# Controls the order on the edit form (without this, read-only fields appear at the end).
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': ['user', 'state', 'state_changed', 'note']
|
|
}),
|
|
)
|
|
# Fields that filtering support
|
|
list_filter = ['state', 'state_changed']
|
|
# Fields that search supports.
|
|
search_fields = ['user__username', 'user__email', 'state', 'note']
|
|
# Turn off the action bar (we have no bulk actions)
|
|
actions = None
|
|
|
|
def has_add_permission(self, request):
|
|
return False
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
return False
|
|
|
|
def has_change_permission(self, request, obj=None):
|
|
return request.user.is_staff
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
# Store who is making the request.
|
|
obj.admin = request.user
|
|
obj.save()
|
|
|
|
|
|
admin.site.register(CourseCreator, CourseCreatorAdmin)
|
|
|
|
|
|
@receiver(update_creator_state, sender=CourseCreator)
|
|
def update_creator_group_callback(sender, **kwargs):
|
|
"""
|
|
Callback for when the model's creator status has changed.
|
|
"""
|
|
update_course_creator_group(kwargs['caller'], kwargs['user'], kwargs['add'])
|