"""Admin views for API managment."""
from django.contrib import admin
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _

from config_models.admin import ConfigurationModelAdmin
from openedx.core.djangoapps.api_admin.models import ApiAccessRequest, ApiAccessConfig


@admin.register(ApiAccessRequest)
class ApiAccessRequestAdmin(admin.ModelAdmin):
    """Admin for API access requests."""
    list_display = ('user', 'status', 'website')
    list_filter = ('status',)
    search_fields = ('user__email',)
    raw_id_fields = ('user',)
    readonly_fields = ('user', 'email_address', 'website', 'reason', 'company_name', 'company_address', 'contacted',)
    exclude = ('site',)

    def email_address(self, obj):
        """User email requesting for API Access."""
        return obj.user.email

    def get_fieldsets(self, request, obj=None):
        return (
            (None, {
                'fields': (
                    'user', 'email_address', 'website', 'reason', 'company_name', 'company_address',
                )
            },),
            ('Status', {
                'description': _(
                    'Once you have approved this request, go to {catalog_admin_url} to set up a catalog for this user.'
                ).format(
                    catalog_admin_url='<a href="{0}">{0}</a>'.format(reverse('api_admin:catalog-search'))
                ),
                'fields': ('status',),
            }),
        )

admin.site.register(ApiAccessConfig, ConfigurationModelAdmin)
