Files
tripwithbonus/ReferenceDataApp/admin.py
2024-12-05 17:38:08 +03:00

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)