Coverage for apis_core/apis_entities/fields.py: 0%
44 statements
« prev ^ index » next coverage.py v7.5.3, created at 2025-09-03 06:15 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2025-09-03 06:15 +0000
1from dal.autocomplete import ListSelect2 as DALListSelect2
2from dal.autocomplete import ModelSelect2 as DALModelSelect2
3from dal.autocomplete import ModelSelect2Multiple as DALModelSelect2Multiple
4from dal.autocomplete import Select2 as DALSelect2
5from dal.autocomplete import Select2Multiple as DALSelect2Multiple
6from dal.autocomplete import TagSelect2 as DALTagSelect2
7from dal_select2.widgets import Select2WidgetMixin as DALSelect2WidgetMixin
8from django import forms
10from apis_core.apis_entities.widgets import PlaceLookup
13# "Rewrite" select2 widgets from Django Autocomplete Light so
14# that they don't use Django's admin-provided jQuery, which
15# causes errors with jQuery provided by us.
16class Select2WidgetMixin(DALSelect2WidgetMixin):
17 @property
18 def media(self):
19 m = super().media
20 js = list(m._js)
21 css = list(m._css["screen"])
22 js_remove_list = [
23 "admin/js/vendor/jquery/jquery.js",
24 "admin/js/vendor/jquery/jquery.min.js",
25 "autocomplete_light/jquery.post-setup.js",
26 "admin/js/vendor/select2/select2.full.js",
27 "admin/js/vendor/select2/select2.full.min.js",
28 "admin/js/vendor/select2/i18n/en.js",
29 ]
30 css_remove_list = [
31 "admin/css/vendor/select2/select2.css",
32 "admin/css/vendor/select2/select2.min.css",
33 "admin/css/autocomplete.css",
34 ]
35 for e in js_remove_list:
36 try:
37 js.remove(e)
38 except ValueError:
39 pass
40 for e in css_remove_list:
41 try:
42 css.remove(e)
43 except ValueError:
44 pass
46 js.append(
47 "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.full.min.js"
48 )
49 css.insert(
50 0,
51 "https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css",
52 )
53 return forms.Media(css={"screen": css}, js=js)
56class Select2(Select2WidgetMixin, DALSelect2):
57 pass
60class TagSelect2(Select2WidgetMixin, DALTagSelect2):
61 pass
64class Select2Multiple(Select2WidgetMixin, DALSelect2Multiple):
65 pass
68class ListSelect2(Select2WidgetMixin, DALListSelect2):
69 pass
72class ModelSelect2(Select2WidgetMixin, DALModelSelect2):
73 pass
76class ModelSelect2Multiple(Select2WidgetMixin, DALModelSelect2Multiple):
77 pass
80class PlaceLookupField(forms.CharField):
81 widget = PlaceLookup