Exemple #1
0
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')
Exemple #2
0
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',
        )
Exemple #3
0
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",
        )
Exemple #4
0
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, )
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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