• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iplweb / bpp / #820

19 Oct 2025 06:59PM UTC coverage: 65.093% (+5.3%) from 59.791%
#820

push

coveralls-python

Michał Pasternak
Fixes

4215 of 9430 branches covered (44.7%)

Branch coverage included in aggregate %.

27562 of 39388 relevant lines covered (69.98%)

0.7 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

55.0
src/pbn_api/admin/sentdata.py
1
from django.contrib import admin
1✔
2

3
from bpp.admin.helpers.pbn_api.gui import sprobuj_wyslac_do_pbn_gui
1✔
4
from pbn_api.admin.base import BasePBNAPIAdminNoReadonly
1✔
5
from pbn_api.admin.widgets import JSONWithActionsWidget
1✔
6
from pbn_api.models import SentData
1✔
7

8

9
@admin.register(SentData)
1✔
10
class SentDataAdmin(BasePBNAPIAdminNoReadonly):
1✔
11
    list_display = [
1✔
12
        "object",
13
        "last_updated_on",
14
        "typ_rekordu",
15
        "pbn_uid_id",
16
        "uploaded_okay",
17
        "exception_details",
18
    ]
19
    ordering = ("-last_updated_on",)
1✔
20
    search_fields = ["data_sent", "exception"]
1✔
21
    readonly_fields = [
1✔
22
        "content_type",
23
        "object_id",
24
        "last_updated_on",
25
        "uploaded_okay",
26
        "exception",
27
        "pbn_uid_id",
28
        "typ_rekordu",
29
    ]
30
    fields = readonly_fields + ["data_sent"]
1✔
31
    list_filter = ["uploaded_okay", "typ_rekordu"]
1✔
32

33
    list_per_page = 25
1✔
34

35
    # Override the base class formfield_overrides to use our custom widget
36
    formfield_overrides = {}
1✔
37

38
    def wyslij_ponownie(self, request, qset):
1✔
39
        pass
×
40

41
        for elem in qset:
×
42
            obj = elem.object
×
43
            sprobuj_wyslac_do_pbn_gui(request, obj)
×
44

45
    wyslij_ponownie.short_description = "Wyślij ponownie (tylko błędne)"
1✔
46

47
    def wyslij_ponownie_force(self, request, qset):
1✔
48
        for elem in qset:
×
49
            obj = elem.object
1✔
50
            sprobuj_wyslac_do_pbn_gui(request, obj, force_upload=True)
×
51

52
    wyslij_ponownie_force.short_description = (
1✔
53
        "Wyślij ponownie (wszystko; wymuś ponowny transfer)"
54
    )
55

56
    actions = [wyslij_ponownie, wyslij_ponownie_force]
1✔
57

58
    def has_delete_permission(self, request, *args, **kw):
1✔
59
        return True
1✔
60

61
    def has_add_permission(self, request):
1✔
62
        return False
1✔
63

64
    def has_change_permission(self, request, obj=None):
1✔
65
        return True
1✔
66

67
    def formfield_for_dbfield(self, db_field, request, **kwargs):
1✔
68
        # Override widget for data_sent field
69
        if db_field.name == "data_sent":
1!
70
            # Try to get the object ID from the URL
71
            object_id = None
×
72
            if request and "object_id" in request.resolver_match.kwargs:
×
73
                object_id = request.resolver_match.kwargs["object_id"]
×
74

75
            widget = JSONWithActionsWidget(
×
76
                attrs={"data-object-id": object_id or "unknown"}
77
            )
78
            kwargs["widget"] = widget
×
79
            kwargs["label"] = "Wysłane dane"
×
80

81
        return super().formfield_for_dbfield(db_field, request, **kwargs)
×
82

83
    def exception_details(self, obj):
1✔
84
        if obj.exception:
×
85
            try:
1✔
86
                return obj.exception.split('"details":')[1][:-3]
×
87
            except BaseException:
×
88
                return obj.exception
×
89

90
    exception_details.short_description = "Opis problemu"
1✔
91
    exception_details.admin_order_field = "exception"
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc