diff --git a/iranian_cities/admin.py b/iranian_cities/admin.py index fc03e27..8b5b98c 100644 --- a/iranian_cities/admin.py +++ b/iranian_cities/admin.py @@ -12,7 +12,10 @@ class IranianCitiesAdmin(admin.ModelAdmin): + """Custom admin model for Iranian cities with a custom form field for foreign key.""" + def formfield_for_foreignkey(self, db_field: ForeignKey, request: HttpRequest, **kwargs: Any) -> Any: + """Override the default form field for foreign keys to use ForeignKeyRawIdWidget.""" db: Optional[str] = kwargs.get('using') kwargs['widget'] = widgets.ForeignKeyRawIdWidget( db_field.remote_field, self.admin_site, using=db) @@ -26,6 +29,7 @@ def formfield_for_foreignkey(self, db_field: ForeignKey, request: HttpRequest, * class CountyInline(BaseTabularInline): + """Inline admin model for County.""" model = County extra = 1 raw_id_fields = ['province'] @@ -33,6 +37,7 @@ class CountyInline(BaseTabularInline): class DistrictInline(BaseTabularInline): + """Inline admin model for District.""" model = District extra = 1 raw_id_fields = ['county', 'province'] @@ -40,6 +45,7 @@ class DistrictInline(BaseTabularInline): class CityInline(BaseTabularInline): + """Inline admin model for City.""" model = City extra = 1 raw_id_fields = ['district', 'county', 'province'] @@ -47,6 +53,7 @@ class CityInline(BaseTabularInline): class RuralDistrictInline(BaseTabularInline): + """Inline admin model for RuralDistrict.""" model = RuralDistrict extra = 1 raw_id_fields = ['district', 'county', 'province'] @@ -54,6 +61,7 @@ class RuralDistrictInline(BaseTabularInline): class VillageInline(BaseTabularInline): + """Inline admin model for Village.""" model = Village extra = 1 raw_id_fields = ['rural_district', 'district', 'county', 'province'] @@ -62,12 +70,14 @@ class VillageInline(BaseTabularInline): @admin.register(Province) class ProvinceAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for Province.""" list_display = ['name', 'code'] search_fields = ['name', 'code'] @admin.register(County) class CountyAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for County.""" list_display = ['name', 'code', 'province'] list_filter = ['province'] search_fields = ['name', 'code', 'province__name'] @@ -76,6 +86,7 @@ class CountyAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.M @admin.register(City) class CityAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for City.""" list_display = [ 'name', 'code', 'city_type', 'district', 'county', 'province' @@ -90,6 +101,7 @@ class CityAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.Mod @admin.register(District) class DistrictAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for District.""" list_display = ['name', 'code', 'county', 'province'] list_filter = ['province'] search_fields = ['name', 'code', 'county__name', 'province__name'] @@ -98,6 +110,7 @@ class DistrictAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin @admin.register(RuralDistrict) class RuralDistrictAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for RuralDistrict.""" list_display = ['name', 'code', 'district', 'county', 'province'] list_filter = ['province'] search_fields = ['name', 'code', 'district__name', 'county__name', 'province__name'] @@ -106,6 +119,7 @@ class RuralDistrictAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, @admin.register(Village) class VillageAdmin(IranianCitiesAdminReadOnlyEnabled, DynamicInlineAdmin, admin.ModelAdmin): + """Admin model for Village.""" list_display = [ 'name', 'code', 'village_type', 'rural_district', 'district', 'county', 'province' diff --git a/iranian_cities/mixins/base_inline.py b/iranian_cities/mixins/base_inline.py index 954b407..f71e715 100644 --- a/iranian_cities/mixins/base_inline.py +++ b/iranian_cities/mixins/base_inline.py @@ -2,5 +2,6 @@ class BaseTabularInline(admin.TabularInline): + """Base class for inline models using a tabular layout.""" extra = 1 max_num = 5