from django.contrib import admin
from django.shortcuts import reverse, redirect
from unfold.admin import ModelAdmin
from .models import Head, MainServices, Services, Cta, MainProjects, Projects, ProjectCategory, MainExperience, MainTeam, Team, MainGetMore, GetMore, MainReviews, Reviews, MainPackages, Packages, Features, PackageFeature, GeneralInfo

# Register your models here.
@admin.register(Head)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'background_image')
    list_display_links = ('id', 'title',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(MainServices)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'image',)
    list_display_links = ('id', 'title', 'image',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(Services)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'description', 'icon',)
    list_display_links = ('id', 'title', 'description', 'icon',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(Cta)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'description', 'background_image',)
    list_display_links = ('id', 'title', 'description', 'background_image',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(MainProjects)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'description',)
    list_display_links = ('id', 'title', 'description',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(Projects)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'image', 'url', 'project_category',)
    list_display_links = ('id', 'title', 'image', 'url', 'project_category',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(ProjectCategory)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'category_name',)
    list_display_links = ('id', 'category_name',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(MainExperience)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'description', 'years',)
    list_display_links = ('id', 'title', 'description', 'years',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(MainTeam)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title',)
    list_display_links = ('id', 'title',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(Team)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'name', 'position', 'photo',)
    list_display_links = ('id', 'name', 'position', 'photo',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(MainGetMore)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title',)
    list_display_links = ('id', 'title',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(GetMore)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'image', 'state',)
    list_display_links = ('id', 'title', 'image', 'state',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(MainReviews)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title',)
    list_display_links = ('id', 'title',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(Reviews)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'name', 'position', 'photo',)
    list_display_links = ('id', 'name', 'position', 'photo',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(MainPackages)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'description',)
    list_display_links = ('id', 'title', 'description',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)

@admin.register(Packages)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'title', 'price', 'is_popular',)
    list_display_links = ('id', 'title', 'price', 'is_popular',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(Features)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'name',)
    list_display_links = ('id', 'name',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(PackageFeature)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'package', 'feature', 'is_active',)
    list_display_links = ('id', 'package', 'feature', 'is_active',)
    list_per_page = 10
    list_max_show_all = 100

@admin.register(GeneralInfo)
class CustomAdminClass(ModelAdmin):
    list_display = ('id', 'company_name', 'logo', 'email1', 'email2', 'address',)
    list_display_links = ('id', 'company_name', 'logo', 'email1', 'email2', 'address',)
    list_per_page = 10
    list_max_show_all = 100

    def changelist_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        first_obj = self.model.objects.first()
        if first_obj is not None:
            return redirect(reverse('admin:%s_%s_change' % (self.model._meta.app_label, self.model._meta.model_name), args=(first_obj.pk,)))
        return super().changelist_view(request, extra_context)