class DiscountCouponAdmin(ImportExportMixin, RelatedFieldAdmin): list_display = ( 'name', 'coupon_type__prefix', 'token', 'coupon_type', 'coupon_pdf', 'discount', 'user_attendance_number', 'note', 'receiver', 'attached_user_attendances_list', 'attached_user_attendances_count', 'sent', ) readonly_fields = ('token', 'created', 'updated', 'author', 'updated_by') list_editable = ('note', 'receiver', 'discount', 'user_attendance_number', 'sent') list_filter = ( campaign_filter_generator('coupon_type__campaign'), 'coupon_type__name', 'sent', 'user_attendance_number', NullUserAttendanceListFilter, ) search_fields = ('token', 'note', 'receiver')
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 DiscountCouponAdmin(ImportExportMixin, RelatedFieldAdmin): list_display = ( "name", "coupon_type__prefix", "token", "get_pdf", "coupon_type", "discount", "user_attendance_number", "note", "receiver", "recipient_name", "attached_user_attendances_list", "attached_user_attendances_count", ) exclude = ( "sent", "coupon_pdf", ) readonly_fields = ( "token", "created", "updated", "author", "updated_by", ) list_editable = ( "note", "receiver", "recipient_name", "discount", "user_attendance_number", ) list_filter = ( campaign_filter_generator("coupon_type__campaign"), "coupon_type__name", "user_attendance_number", NullUserAttendanceListFilter, ) search_fields = ( "token", "note", "receiver", ) resource_class = DiscountCouponResource actions = (smmapdfs.actions.make_pdfsandwich, )
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 SubsidiaryBoxAdmin(AdminAdvancedFiltersMixin, ImportExportMixin, RelatedFieldAdmin, AdminViews, NestedModelAdmin): admin_views = ((_('Označit balíky/krabice jako vyřízené'), '/admin/dispatch'), ) list_display = ( 'identifier', 'dispatched', 'all_packages_dispatched', 'dispatched_packages_count', 'packages_count', 'tracking_link', 'delivery_batch__id', 'delivery_batch__created', 'subsidiary__company__name', 'subsidiary', 'subsidiary__city', 'customer_sheets', 'created', ) inlines = (TeamPackageInline, ) raw_id_fields = ( 'delivery_batch', 'subsidiary', ) search_fields = ( 'id', 'carrier_identification', 'subsidiary__address_street', 'subsidiary__address_psc', 'subsidiary__address_recipient', 'subsidiary__address_city', 'subsidiary__company__name', ) advanced_filter_fields = ( 'carrier_identification', 'dispatched', 'delivery_batch__id', 'delivery_batch__created', 'subsidiary', 'customer_sheets', 'created', ) actions = [actions.delivery_box_batch_download] list_filter = [ campaign_filter_generator('delivery_batch__campaign'), 'dispatched', filters.AllPackagesDispatched, ('delivery_batch__created', DateRangeFilter), 'delivery_batch__id', ] readonly_fields = ( 'tracking_link', 'all_packages_dispatched', ) def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related('subsidiary__city', ).prefetch_related( 'teampackage_set', ) def get_search_results(self, request, queryset, search_term): search_term = search_term.strip() if re.match(IDENTIFIER_REGEXP, search_term) and search_term[0] == 'S': queryset = queryset.filter(id=search_term[1:]) use_distinct = True else: queryset, use_distinct = super().get_search_results( request, queryset, search_term) return queryset, use_distinct
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 SubsidiaryBoxAdmin( AdminAdvancedFiltersMixin, ImportExportMixin, RelatedFieldAdmin, AdminViews, NestedModelAdmin, ): admin_views = ((_("Označit balíky/krabice jako vyřízené"), "/admin/dispatch"),) list_display = ( "identifier", "dispatched", "all_packages_dispatched", "dispatched_packages_count", "packages_count", "tracking_link", "delivery_batch__id", "delivery_batch__created", "subsidiary__company__name", "subsidiary", "subsidiary__city", "customer_sheets", "created", ) inlines = (TeamPackageInline,) raw_id_fields = ( "delivery_batch", "subsidiary", ) search_fields = ( "id", "carrier_identification", "subsidiary__address_street", "subsidiary__address_psc", "subsidiary__address_recipient", "subsidiary__address_city", "subsidiary__company__name", ) advanced_filter_fields = ( "carrier_identification", "dispatched", "delivery_batch__id", "delivery_batch__created", "subsidiary", "customer_sheets", "created", ) actions = [ actions.delivery_box_batch_download, models.subsidiary_box.create_customer_sheets_action, ] list_filter = [ campaign_filter_generator("delivery_batch__campaign"), "dispatched", "teampackage__packagetransaction__t_shirt_size__name", "subsidiary__city", filters.AllPackagesDispatched, ("delivery_batch__created", DateRangeFilter), "delivery_batch__id", ] readonly_fields = ( "tracking_link", "all_packages_dispatched", ) def get_queryset(self, request): queryset = super().get_queryset(request) return queryset.select_related("subsidiary__city",).prefetch_related( "teampackage_set", ) def get_search_results(self, request, queryset, search_term): search_term = search_term.strip() if re.match(IDENTIFIER_REGEXP, search_term) and search_term[0] == "S": queryset = queryset.filter(id=search_term[1:]) use_distinct = True else: queryset, use_distinct = super().get_search_results( request, queryset, search_term ) return queryset, use_distinct def teampackage(self): # This is here just to fix smoke tests pass