class RTAdmin(RelatedFieldAdmin, LeafletGeoAdmin, GeolevelsAdmin): list_display = ('id', 'sort_province_by_name', 'sort_city_by_name', 'sort_subdistrict_by_name', 'sort_village_by_name', 'rw', 'name', 'note') raw_id_fields = ['rw'] search_fields = [ 'rw__village__subdistrict__city__province__name', 'rw__village__subdistrict__city__name', 'rw__village__subdistrict__name', 'rw__village__name' ] # No use searching RW by name form = RTForm sort_province_by_name = getter_for_related_field( 'rw__village__subdistrict__city__province', admin_order_field='rw__village__subdistrict__province__name') sort_city_by_name = getter_for_related_field( 'rw__village__subdistrict__city', admin_order_field='rw__village__subdistrict__city__name') sort_subdistrict_by_name = getter_for_related_field( 'rw__village__subdistrict', admin_order_field='rw__village__subdistrict__name') sort_village_by_name = getter_for_related_field( 'rw__village', admin_order_field='rw__village__name')
class SubdistrictAdmin(RelatedFieldAdmin, LeafletGeoAdmin, GeolevelsAdmin): list_display = ('id', 'sort_province_by_name', 'sort_city_by_name', 'name', 'note') search_fields = ['city__province__name', 'city__name', 'name'] form = SubdistrictForm sort_province_by_name = getter_for_related_field( 'city__province', admin_order_field='city__province__name') sort_city_by_name = getter_for_related_field( 'city', admin_order_field='city__name')
class CityAdmin(RelatedFieldAdmin, LeafletGeoAdmin, GeolevelsAdmin): list_display = ('id', 'sort_province_by_name', 'name', 'note') search_fields = ['province__name', 'name'] form = CityForm sort_province_by_name = getter_for_related_field( 'province', admin_order_field='province__name')
class ConcertAdmin(RelatedFieldAdmin): list_display = ('name', 'main_performer_link', 'main_performer__is_on_tour') list_select_related = ('main_performer',) main_performer__is_on_tour = getter_for_related_field('main_performer__is_on_tour', boolean=True) def main_performer_link(self, obj): url = reverse("admin:main_musician_change", args=[obj.main_performer.id]) return format_html('<a href="%s">{}</a>', (url, escape(str(obj)))) main_performer_link.short_description = "Main performer"
class PackageTransactionAdmin(ExportMixin, RelatedFieldAdmin): resource_class = PackageTransactionResource list_display = ( 'id', 'user_attendance', 'created', 'realized', 'status', 'author', 'user_attendance__team__subsidiary', 'user_attendance__team__subsidiary__company__name', 't_shirt_size__name', 'team_package__box__delivery_batch__id', 'team_package__box__tracking_link', ) team_package__box__delivery_batch__id = getter_for_related_field( 'team_package__box__delivery_batch__id', short_description=_('ID krabice')) search_fields = ( 'id', 'user_attendance__userprofile__nickname', 'user_attendance__userprofile__user__first_name', 'user_attendance__userprofile__user__last_name', 'user_attendance__userprofile__user__username', 'user_attendance__team__subsidiary__company__name', ) list_filter = [ campaign_filter_generator('user_attendance__campaign'), 'status', 'team_package__box__delivery_batch__id', 'team_package__box__dispatched', ] raw_id_fields = [ 'user_attendance', 'team_package', ] readonly_fields = ( 'author', 'created', 'updated_by', ) list_max_show_all = 10000 form = PackageTransactionForm def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related( 'user_attendance__userprofile__user', 'user_attendance__team__subsidiary__city', 't_shirt_size__campaign', )
class PackageTransactionAdmin(ExportMixin, RelatedFieldAdmin): resource_class = PackageTransactionResource list_display = ( "id", "user_attendance", "created", "realized", "status", "author", "user_attendance__team__subsidiary", "user_attendance__team__subsidiary__company__name", "t_shirt_size__name", "team_package__box__delivery_batch__id", "team_package__box__tracking_link", ) team_package__box__delivery_batch__id = getter_for_related_field( "team_package__box__delivery_batch__id", short_description=_("ID krabice") ) search_fields = ( "id", "user_attendance__userprofile__nickname", "user_attendance__userprofile__user__first_name", "user_attendance__userprofile__user__last_name", "user_attendance__userprofile__user__username", "user_attendance__team__subsidiary__company__name", ) list_filter = [ campaign_filter_generator("user_attendance__campaign"), "status", "team_package__box__delivery_batch__id", "team_package__box__dispatched", ] raw_id_fields = [ "user_attendance", "team_package", ] readonly_fields = ( "author", "created", "updated_by", ) list_max_show_all = 10000 form = PackageTransactionForm def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related( "user_attendance__userprofile__user", "user_attendance__team__subsidiary__city", "t_shirt_size__campaign", )
class RWAdmin(RelatedFieldAdmin, LeafletGeoAdmin, GeolevelsAdmin): list_display = ('id', 'sort_province_by_name', 'sort_city_by_name', 'sort_subdistrict_by_name', 'sort_village_by_name', 'name', 'note') search_fields = [ 'village__subdistrict__city__province__name', 'village__subdistrict__city__name', 'village__subdistrict__name', 'village__name' ] form = RWForm sort_province_by_name = getter_for_related_field( 'village__subdistrict__city__province', admin_order_field='village__subdistrict__city__province__name') sort_city_by_name = getter_for_related_field( 'village__subdistrict__city', admin_order_field='village__subdistrict__city__name') sort_subdistrict_by_name = getter_for_related_field( 'village__subdistrict', admin_order_field='village__subdistrict__name') sort_village_by_name = getter_for_related_field( 'village', admin_order_field='village__name')
class TeamPackageAdmin(ExportMixin, RelatedFieldAdmin, NestedModelAdmin): list_display = ( 'identifier', 'dispatched', 'box__dispatched', 'box__identifier', 'box__tracking_link', 'box__name', 'box__delivery_batch__id', 'box__delivery_batch__created', 'team__name', 'team__subsidiary', 'team__subsidiary__company', ) box__identifier = getter_for_related_field( 'box__identifier', short_description=_('ID krabice')) team__name = getter_for_related_field('team__name', short_description=_('Tým')) box__name = getter_for_related_field('box__name', short_description=_('Krabice')) list_filter = ( campaign_filter_generator('box__delivery_batch__campaign'), 'dispatched', 'box__dispatched', ('box__delivery_batch__created', DateRangeFilter), 'box__delivery_batch__id', ) raw_id_fields = ( 'box', 'team', ) search_fields = ( 'id', 'team__name', 'team__subsidiary__address_street', 'team__subsidiary__company__name', 'box__id', 'box__carrier_identification', ) inlines = (NestedPackageTransactionInline, ) def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related( 'team__subsidiary__city', 'box__subsidiary__city', 'box__delivery_batch', ) def get_search_results(self, request, queryset, search_term): search_term = search_term.strip() if re.match(IDENTIFIER_REGEXP, search_term): if search_term[0] == 'T': queryset = queryset.filter(id=search_term[1:]) use_distinct = True elif search_term[0] == 'S': queryset = queryset.filter(box__id=search_term[1:]) use_distinct = True else: queryset, use_distinct = super().get_search_results( request, queryset, search_term) return queryset, use_distinct
class AlbumAdmin(RelatedFieldAdmin): list_display = ('name', 'artist', 'artist__first_name', 'artist__last_name', 'artist__full_name', 'artist__active', '__str__') artist__active = getter_for_related_field('artist__active', boolean=True)
class TeamPackageAdmin(ExportMixin, RelatedFieldAdmin, NestedModelAdmin): list_display = ( "identifier", "dispatched", "box__dispatched", "box__identifier", "box__tracking_link", "box__name", "box__delivery_batch__id", "box__delivery_batch__created", "team__name", "team__subsidiary", "team__subsidiary__company", ) box__identifier = getter_for_related_field( "box__identifier", short_description=_("ID krabice") ) team__name = getter_for_related_field("team__name", short_description=_("Tým")) box__name = getter_for_related_field("box__name", short_description=_("Krabice")) list_filter = ( campaign_filter_generator("box__delivery_batch__campaign"), "dispatched", "box__dispatched", ("box__delivery_batch__created", DateRangeFilter), "box__delivery_batch__id", ) raw_id_fields = ( "box", "team", ) search_fields = ( "id", "team__name", "team__subsidiary__address_street", "team__subsidiary__company__name", "box__id", "box__carrier_identification", ) inlines = (NestedPackageTransactionInline,) def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related( "team__subsidiary__city", "box__subsidiary__city", "box__delivery_batch", ) def get_search_results(self, request, queryset, search_term): search_term = search_term.strip() if re.match(IDENTIFIER_REGEXP, search_term): if search_term[0] == "T": queryset = queryset.filter(id=search_term[1:]) use_distinct = True elif search_term[0] == "S": queryset = queryset.filter(box__id=search_term[1:]) use_distinct = True else: queryset, use_distinct = super().get_search_results( request, queryset, search_term ) return queryset, use_distinct