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

makinacorpus / django-leaflet / 531

pending completion
531

push

travis-ci

Gagaro
Add request to formfield_for_dbfield signature; fix #260 (#261)

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

11569 of 17296 relevant lines covered (66.89%)

0.67 hits per line

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

90.7
/leaflet/admin.py
1
# -*- coding: utf-8 -*-
2
from __future__ import unicode_literals
1✔
3

4
from django.contrib.admin import ModelAdmin
1✔
5
from django.core.exceptions import ImproperlyConfigured
1✔
6

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

17
from .forms.widgets import LeafletWidget
1✔
18

19

20
class LeafletGeoAdminMixin(object):
1✔
21
    widget = LeafletWidget
1✔
22
    map_template = 'leaflet/admin/widget.html'
1✔
23
    modifiable = True
1✔
24
    map_width = '100%'
1✔
25
    map_height = '400px'
1✔
26
    display_raw = False
1✔
27
    settings_overrides = {}
1✔
28

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

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

46
            kwargs['widget'] = self._get_map_widget(db_field, widget)
1✔
47
            return db_field.formfield(**kwargs)
1✔
48
        else:
49
            return super(LeafletGeoAdminMixin, self).formfield_for_dbfield(db_field, request, **kwargs)
×
50

51
    def _get_map_widget(self, db_field, widget):
1✔
52
        """
53
        Overriden LeafletWidget with LeafletGeoAdmin params.
54
        """
55
        class LeafletMap(widget):
1✔
56
            template_name = self.map_template
1✔
57
            include_media = True
1✔
58
            geom_type = db_field.geom_type
1✔
59
            modifiable = self.modifiable
1✔
60
            map_width = self.map_width
1✔
61
            map_height = self.map_height
1✔
62
            display_raw = self.display_raw
1✔
63
            settings_overrides = self.settings_overrides
1✔
64
        return LeafletMap
1✔
65

66

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

© 2024 Coveralls, Inc