60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
from django.contrib.gis import admin
|
|
from location import models
|
|
from django.contrib.gis.geos import Point
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
@admin.register(models.Country)
|
|
class CountryAdmin(admin.ModelAdmin):
|
|
"""Country admin."""
|
|
|
|
|
|
@admin.register(models.Region)
|
|
class RegionAdmin(admin.ModelAdmin):
|
|
"""Region admin."""
|
|
|
|
|
|
@admin.register(models.City)
|
|
class CityAdmin(admin.ModelAdmin):
|
|
"""City admin."""
|
|
|
|
|
|
@admin.register(models.Address)
|
|
class AddressAdmin(admin.OSMGeoAdmin):
|
|
"""Address admin."""
|
|
list_display = ('__str__', 'geo_lon', 'geo_lat')
|
|
readonly_fields = ['geo_lon', 'geo_lat', ]
|
|
fieldsets = (
|
|
(_('Main'), {
|
|
'fields': ['street_name_1', 'street_name_2', 'number']
|
|
}),
|
|
(_('Location'), {
|
|
'fields': ['coordinates', 'geo_lon', 'geo_lat', ]
|
|
}),
|
|
(_('Address detail'), {
|
|
'fields': ['city', 'postal_code', ]
|
|
}),
|
|
|
|
)
|
|
|
|
def geo_lon(self, item):
|
|
# Point(longitude, latitude)
|
|
if isinstance(item.coordinates, Point):
|
|
return item.coordinates.x
|
|
|
|
def geo_lat(self, item):
|
|
if isinstance(item.coordinates, Point):
|
|
return item.coordinates.y
|
|
|
|
|
|
@admin.register(models.EstablishmentWineOriginAddress)
|
|
class EstablishmentWineOriginAddress(admin.ModelAdmin):
|
|
"""Admin model for EstablishmentWineOriginAddress."""
|
|
raw_id_fields = ['establishment', ]
|
|
|
|
|
|
@admin.register(models.WineOriginAddress)
|
|
class WineOriginAddress(admin.ModelAdmin):
|
|
"""Admin page for model WineOriginAddress."""
|
|
raw_id_fields = ['product', ]
|