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

makinacorpus / django-leaflet / 4858896651

pending completion
4858896651

push

github

GitHub
Moved CSS and height/width to custom CSS file (#363)

8 of 8 new or added lines in 2 files covered. (100.0%)

426 of 506 relevant lines covered (84.19%)

8.42 hits per line

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

90.48
/leaflet/admin.py
1
from django.contrib.admin import ModelAdmin
10✔
2
from django.core.exceptions import ImproperlyConfigured
10✔
3
from django.forms import Media
10✔
4

5
try:
10✔
6
    from djgeojson.fields import GeoJSONField
10✔
7
except ImportError:
10✔
8
    GeoJSONField = type(object)
10✔
9
try:
10✔
10
    from django.contrib.gis.db.models import GeometryField
10✔
11
except (ImportError, ImproperlyConfigured):
×
12
    # When GEOS is not installed
13
    GeometryField = type(object)
×
14

15
from .forms.widgets import LeafletWidget
10✔
16

17

18
class LeafletAdminWidget(LeafletWidget):
10✔
19
    include_media = True
10✔
20

21
    @property
10✔
22
    def media(self):
8✔
23
        return super().media + Media(css={'screen': ['leaflet/leaflet_django.css']})
10✔
24

25

26
class LeafletGeoAdminMixin:
10✔
27
    widget = LeafletAdminWidget
10✔
28
    map_template = 'leaflet/admin/widget.html'
10✔
29
    modifiable = True
10✔
30
    display_raw = False
10✔
31
    settings_overrides = {}
10✔
32

33
    def formfield_for_dbfield(self, db_field, request=None, **kwargs):
10✔
34
        """
35
        Overloaded from ModelAdmin to set Leaflet widget
36
        in form field init params.
37
        """
38
        is_geometry = isinstance(db_field, (GeometryField, GeoJSONField))
10✔
39
        is_editable = is_geometry and (db_field.dim < 3 or
10✔
40
                                       self.widget.supports_3d)
41

42
        if is_editable:
10✔
43
            # Setting the widget with the newly defined widget.
44
            widget = self.widget
10✔
45
            if 'widget' in kwargs and issubclass(kwargs['widget'], LeafletWidget):
10✔
46
                # If the widget is already a LeafletWidget of some kind
47
                # Then use it rather than a blank one.
48
                widget = kwargs['widget']
×
49

50
            kwargs['widget'] = self._get_map_widget(db_field, widget)
10✔
51
            return db_field.formfield(**kwargs)
10✔
52
        else:
53
            return super().formfield_for_dbfield(db_field, request, **kwargs)
×
54

55
    def _get_map_widget(self, db_field, widget):
10✔
56
        """
57
        Overriden LeafletWidget with LeafletGeoAdmin params.
58
        """
59
        class LeafletMap(widget):
10✔
60
            template_name = self.map_template
10✔
61
            geom_type = db_field.geom_type
10✔
62
            modifiable = self.modifiable
10✔
63
            display_raw = self.display_raw
10✔
64
            settings_overrides = self.settings_overrides
10✔
65
        return LeafletMap
10✔
66

67

68
class LeafletGeoAdmin(LeafletGeoAdminMixin, ModelAdmin):
10✔
69
    pass
10✔
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