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)