from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.forms import TextInput, Textarea
from user import models as userModel, forms
from django.db import models
from . import models as customerModel
from django.conf import settings


class InlineAddress(admin.StackedInline):
    model = userModel.Address
    extra = 0
    formfield_overrides = {
        models.CharField: {'widget': TextInput(attrs={'size': '40'})},
        models.TextField: {'widget': Textarea(attrs={'rows': 4, 'cols': 60})},
    }
    form = forms.AddressForm

    class Media:
        js = ("user/address_city.js",)


@admin.register(customerModel.Customer)
class CustomerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'mobile')
    search_fields = ('first_name', 'last_name')
    exclude = ('password',)
    superAdmin_fieldsets = (
        ('اطلاعات شخصی', {'fields': ('first_name', 'last_name', 'mobile', 'email', 'username', 'gender')}),
        ('مجوز ها', {'fields': ('is_active',)}),
    )
    staff_fieldsets = (
        ('اطلاعات شخصی', {'fields': ('first_name', 'last_name', 'mobile', 'email', 'username', 'gender')}),
    )

    def change_view(self, request, *args, **kwargs):
        if not request.user.is_superuser:
            try:
                self.fieldsets = self.staff_fieldsets
                response = super(CustomerAdmin, self).change_view(request, *args, **kwargs)
            finally:
                self.fieldsets = UserAdmin.fieldsets
            return response
        else:
            try:
                self.fieldsets = self.superAdmin_fieldsets
                response = super(CustomerAdmin, self).change_view(request, *args, **kwargs)
            finally:
                self.fieldsets = UserAdmin.fieldsets
            return response

    inlines = [InlineAddress]
    readonly_fields = ['password', 'last_login', 'is_superuser', 'is_staff', 'email', 'date_joined',
                       'first_name', 'last_name', 'username', 'mobile', 'gender', 'is_active']

    def get_readonly_fields(self, request, obj=None):
        if request.user.is_superuser:
            return []
        return self.readonly_fields


@admin.register(customerModel.Request)
class ProductBenefitAdmin(admin.ModelAdmin):
    list_display = ('product', 'car', 'name', 'phone', 'jalali_created')
    search_fields = ('phone', 'product', 'car', 'name')
    list_filter = ('created',)
    list_per_page = settings.LIST_PER_PAGE
