127 lines
3.8 KiB
Python
127 lines
3.8 KiB
Python
from django.conf import settings
|
|
from django.contrib import admin
|
|
|
|
from BaseModels.files_funcs import get_filenames_in_path
|
|
from BaseModels.print_funcs import print_ext
|
|
from sets.admin import Admin_Trans_BaseModel
|
|
from .models import *
|
|
from modeltranslation.admin import TranslationAdmin
|
|
from django.utils.translation import gettext as _
|
|
|
|
class Admin_Country(Admin_Trans_BaseModel):
|
|
fieldsets = [
|
|
[None, {
|
|
'classes': ['wide'],
|
|
'fields': [
|
|
'name', 'enable', 'short_code', 'code', 'flag'
|
|
]
|
|
}],
|
|
[_('Дополнительно'), {
|
|
'classes': ['wide', 'collapse'],
|
|
'fields': (
|
|
'timezone',
|
|
'geo_lat', 'geo_lon',
|
|
'json_data',
|
|
)
|
|
}],
|
|
]
|
|
|
|
def get_list_display(self, request):
|
|
objs = Country.objects.filter(flag=None)
|
|
for obj in objs:
|
|
self.import_flag(obj)
|
|
return super(Admin_Country, self).get_list_display(request)
|
|
|
|
def import_flag(self, obj):
|
|
# if not obj.flag:
|
|
filenames_list = get_filenames_in_path(str(settings.BASE_DIR) + '/Flagpack/')
|
|
files_Dict = {item.split(' - ')[0]: item for item in filenames_list}
|
|
if obj.short_code in files_Dict.keys():
|
|
obj.flag.save(
|
|
files_Dict[obj.short_code],
|
|
open(
|
|
str(settings.BASE_DIR) + '/Flagpack/' + files_Dict[obj.short_code], 'rb+')
|
|
)
|
|
return True
|
|
|
|
list_display = [
|
|
'image_thumb',
|
|
'id', 'name', 'name_en', 'name_ru',
|
|
'timezone',
|
|
'short_code', 'code',
|
|
'enable', 'area_id', 'parsing_finished_DT',
|
|
'order', 'modifiedDT', 'createDT']
|
|
search_fields = ['id', 'name_en', 'name_ru', 'short_code', 'code']
|
|
admin.site.register(Country, Admin_Country)
|
|
|
|
class Admin_City(Admin_Trans_BaseModel):
|
|
|
|
def cur_dt(self, obj):
|
|
if obj.timezone:
|
|
return obj.get_current_datetime()
|
|
else:
|
|
return '-'
|
|
cur_dt.short_description = 'текущее время'
|
|
|
|
fieldsets = [
|
|
[None, {
|
|
'classes': ['wide'],
|
|
'fields': [
|
|
'name', 'enable', 'country',
|
|
]
|
|
}],
|
|
[_('Дополнительно'), {
|
|
'classes': ['wide', 'collapse'],
|
|
'fields': (
|
|
'timezone',
|
|
'geo_lat', 'geo_lon',
|
|
'json_data',
|
|
)
|
|
}],
|
|
]
|
|
|
|
list_display = [
|
|
'id', 'name', 'name_en', 'name_ru',
|
|
'country',
|
|
'timezone', 'cur_dt',
|
|
'enable', 'area_id', 'parsing_finished_DT',
|
|
'order', 'modifiedDT', 'createDT']
|
|
search_fields = ['id', 'name_en', 'name_ru', 'country__name']
|
|
list_filter = ['country']
|
|
admin.site.register(City, Admin_City)
|
|
|
|
class Admin_Airport(Admin_Trans_BaseModel):
|
|
fieldsets = [
|
|
[None, {
|
|
'classes': ['wide'],
|
|
'fields': [
|
|
'name', 'enable',
|
|
'city', 'iata_code', 'icao_code',
|
|
'international_name',
|
|
# 'area_id'
|
|
]
|
|
}],
|
|
[_('Дополнительно'), {
|
|
'classes': ['wide', 'collapse'],
|
|
'fields': (
|
|
'timezone',
|
|
'geo_lat', 'geo_lon',
|
|
'json_data',
|
|
)
|
|
}],
|
|
]
|
|
|
|
list_display = [
|
|
'id', 'name', 'name_en', 'name_ru',
|
|
'city', 'iata_code', 'icao_code',
|
|
'timezone',
|
|
'international_name',
|
|
'enable', 'area_id', 'parsing_finished_DT',
|
|
'order', 'modifiedDT', 'createDT']
|
|
search_fields = ['id', 'name_en', 'name_ru', 'city__name', 'city__country__name', 'iata_code', 'icao_code', 'international_name']
|
|
list_filter = ['city__country']
|
|
raw_id_fields = [
|
|
'city'
|
|
]
|
|
|
|
admin.site.register(Airport, Admin_Airport) |