# from appointment.models import Appointment from django.contrib import admin from . import models from django_ledger import models as ledger_models from django.contrib import messages # from django_pdf_actions.actions import export_to_pdf_landscape, export_to_pdf_portrait # from appointment import models as appointment_models from import_export.admin import ExportMixin from import_export.resources import ModelResource # # Define resource class # class CarSerieResource(ModelResource): # class Meta: # model = models.CarSerie # # # Integrate into Django Admin # @admin.register(models.CarSerie) # class CarSeriesAdmin(ExportMixin, admin.ModelAdmin): # resource_class = CarSerieResource class CarTrimResource(ModelResource): class Meta: model = models.CarTrim @admin.register(models.CarTrim) class CarTrimAdmin(ExportMixin, admin.ModelAdmin): resource_class = CarTrimResource admin.site.register(models.Dealer) admin.site.register(models.Staff) admin.site.register(models.Vendor) admin.site.register(models.DealerSettings) # admin.site.register(models.SaleQuotation) # admin.site.register(models.SaleQuotationCar) admin.site.register(models.SaleOrder) admin.site.register(models.CustomGroup) # admin.site.register(models.CarFinance) admin.site.register(models.CarColors) admin.site.register(models.CarRegistration) admin.site.register(models.CustomCard) admin.site.register(models.CarSpecificationValue) admin.site.register(models.CarEquipment) admin.site.register(models.CarOptionValue) admin.site.register(models.ExteriorColors) admin.site.register(models.InteriorColors) # admin.site.register(models.Subscription) # admin.site.register(models.SubscriptionPlan) # admin.site.register(models.SubscriptionUser) admin.site.register(models.CarLocation) admin.site.register(models.CarReservation) admin.site.register(models.Organization) admin.site.register(models.Representative) # admin.site.register(models.CarTrim) admin.site.register(models.AdditionalServices) admin.site.register(models.Payment) admin.site.register(models.VatRate) admin.site.register(ledger_models.CustomerModel) admin.site.register(ledger_models.VendorModel) admin.site.register(ledger_models.ItemModel) admin.site.register(ledger_models.ItemTransactionModel) admin.site.register(models.Opportunity) admin.site.register(models.Notification) admin.site.register(models.Lead) admin.site.register(models.Activity) admin.site.register(models.Schedule) admin.site.register(models.Notes) admin.site.register(models.UserActivityLog) admin.site.register(models.DealersMake) admin.site.register(models.ExtraInfo) admin.site.register(models.Ticket) # admin.site.register(models.UserRegistration) @admin.register(models.Car) class CarAdmin(admin.ModelAdmin): search_fields = ("vin",) # actions = [export_to_pdf_landscape, export_to_pdf_portrait] @admin.register(models.CarMake) class CarMakeAdmin(admin.ModelAdmin): list_display = ("name", "arabic_name", "is_sa_import") search_fields = ("name", "arabic_name") list_filter = ( "is_sa_import", "name", ) # actions = [export_to_pdf_landscape, export_to_pdf_portrait] class Meta: verbose_name = "Car Make" ordering = ("name",) @admin.register(models.CarModel) class CarModelAdmin(admin.ModelAdmin): list_display = ("name", "arabic_name", "id_car_make", "get_is_sa_import") search_fields = ("id_car_model", "name", "arabic_name") list_filter = ("id_car_make__is_sa_import", "id_car_make") sortable_by = ["name", "arabic_name", "id_car_make"] def get_is_sa_import(self, obj): return obj.id_car_make.is_sa_import get_is_sa_import.boolean = True get_is_sa_import.short_description = "Is SA Import" class Meta: verbose_name = "Car Model" ordering = ("name",) @admin.register(models.CarSerie) class CarSeriesAdmin(admin.ModelAdmin): list_display = ( "name", "arabic_name", "id_car_model", ) search_fields = ("name",) list_filter = ( "id_car_model__id_car_make__is_sa_import", "id_car_model__id_car_make__name", ) class Meta: verbose_name = "Car Series" # @admin.register(models.CarTrim) # class CarTrimAdmin(admin.ModelAdmin): # list_display = ('name', 'arabic_name', # 'id_car_serie__name', # 'id_car_serie__id_car_model__name', # 'id_car_serie__id_car_model__id_car_make__name') # search_fields = ('name', 'arabic_name', 'id_car_serie__id_car_model__name') # list_filter = ('id_car_serie__id_car_model__id_car_make__is_sa_import', # 'id_car_serie__id_car_model__id_car_make__name') # # class Meta: # verbose_name = "Car Trim" @admin.register(models.CarSpecification) class CarSpecificationAdmin(admin.ModelAdmin): list_display = ("name", "arabic_name", "id_parent") search_fields = ("name", "id_parent") list_filter = ("id_parent",) class Meta: verbose_name = "Car Specification" @admin.register(models.CarOption) class CarOptionAdmin(admin.ModelAdmin): list_display = ("name", "arabic_name", "id_parent") search_fields = ("name", "id_parent") # list_filter = ('id_parent',) class Meta: verbose_name = "Car Option" # @admin.register(models.UserActivityLog) # class UserActivityLogAdmin(admin.ModelAdmin): # list_display = ('user', 'action', 'timestamp') # search_fields = ('user__username', 'action') # list_filter = ('timestamp',) # @admin.register(ledger_models.ItemTransactionModel) # class ItemTransactionModelAdmin(admin.ModelAdmin): # actions = [export_to_pdf_landscape, export_to_pdf_portrait] @admin.register(models.UserRegistration) class UserRegistrationAdmin(admin.ModelAdmin): # Fields to display in the list view list_display = [ "name", "arabic_name", "email", "crn", "vrn", "phone_number", "is_created", "created_at", ] # Filters in the right sidebar list_filter = [ "is_created", "created_at", ] # Searchable fields search_fields = ["name", "arabic_name", "email", "crn", "vrn", "phone_number"] # Read-only fields in detail view readonly_fields = ["created_at", "updated_at", "is_created", "password"] # Organize form layout fieldsets = [ ( "Account Information", {"fields": ("name", "arabic_name", "email", "phone_number")}, ), ("Business Details", {"fields": ("crn", "vrn", "address")}), ( "Status", { "fields": ("is_created", "password", "created_at", "updated_at"), "classes": ("collapse",), }, ), ] # Custom action to create accounts actions = ["create_dealer_accounts"] @admin.action(description="Create dealer account(s) for selected registrations") def create_dealer_accounts(self, request, queryset): created_count = 0 already_created_count = 0 failed_count = 0 for registration in queryset: try: if not registration.is_created: registration.create_account() # Your existing method created_count += 1 else: already_created_count += 1 except Exception as e: self.message_user( request, f"Error creating account for {registration.name}: {str(e)}", level=messages.ERROR, ) failed_count += 1 # Show summary message if created_count > 0: self.message_user( request, f"Successfully created {created_count} account(s).", level=messages.SUCCESS, ) if already_created_count > 0: self.message_user( request, f"{already_created_count} registration(s) were already created.", level=messages.INFO, ) if failed_count > 0: self.message_user( request, f"Failed to create {failed_count} account(s). Check logs.", level=messages.ERROR, )