import os from django.contrib import admin from django.utils.html import mark_safe from .models import Adventure, Checklist, ChecklistItem, Collection, Transportation, Note, AdventureImage, Visit, Category, Attachment from worldtravel.models import Country, Region, VisitedRegion, City, VisitedCity from allauth.account.decorators import secure_admin_login admin.autodiscover() admin.site.login = secure_admin_login(admin.site.login) class AdventureAdmin(admin.ModelAdmin): list_display = ('name', 'get_category', 'get_visit_count', 'user_id', 'is_public') list_filter = ( 'user_id', 'is_public') search_fields = ('name',) def get_category(self, obj): if obj.category and obj.category.display_name and obj.category.icon: return obj.category.display_name + ' ' + obj.category.icon elif obj.category and obj.category.name: return obj.category.name else: return 'No Category' get_category.short_description = 'Category' def get_visit_count(self, obj): return obj.visits.count() get_visit_count.short_description = 'Visit Count' class CountryAdmin(admin.ModelAdmin): list_display = ('name', 'country_code', 'number_of_regions') list_filter = ('subregion',) search_fields = ('name', 'country_code') def number_of_regions(self, obj): return Region.objects.filter(country=obj).count() number_of_regions.short_description = 'Number of Regions' class RegionAdmin(admin.ModelAdmin): list_display = ('name', 'country', 'number_of_visits') list_filter = ('country',) search_fields = ('name', 'country__name') # list_filter = ('country', 'number_of_visits') def number_of_visits(self, obj): return VisitedRegion.objects.filter(region=obj).count() number_of_visits.short_description = 'Number of Visits' class CityAdmin(admin.ModelAdmin): list_display = ('name', 'region', 'country') list_filter = ('region', 'region__country') search_fields = ('name', 'region__name', 'region__country__name') def country(self, obj): return obj.region.country.name country.short_description = 'Country' from django.contrib import admin from django.contrib.auth.admin import UserAdmin from users.models import CustomUser class CustomUserAdmin(UserAdmin): model = CustomUser list_display = ['username', 'is_staff', 'is_active', 'image_display'] readonly_fields = ('uuid',) search_fields = ('username',) fieldsets = UserAdmin.fieldsets + ( (None, {'fields': ('profile_pic', 'uuid', 'public_profile')}), ) def image_display(self, obj): if obj.profile_pic: public_url = os.environ.get('PUBLIC_URL', 'http://127.0.0.1:8000').rstrip('/') public_url = public_url.replace("'", "") return mark_safe(f'