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

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 

9 

10from apis_core.apis_entities.widgets import PlaceLookup 

11 

12 

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 

45 

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) 

54 

55 

56class Select2(Select2WidgetMixin, DALSelect2): 

57 pass 

58 

59 

60class TagSelect2(Select2WidgetMixin, DALTagSelect2): 

61 pass 

62 

63 

64class Select2Multiple(Select2WidgetMixin, DALSelect2Multiple): 

65 pass 

66 

67 

68class ListSelect2(Select2WidgetMixin, DALListSelect2): 

69 pass 

70 

71 

72class ModelSelect2(Select2WidgetMixin, DALModelSelect2): 

73 pass 

74 

75 

76class ModelSelect2Multiple(Select2WidgetMixin, DALModelSelect2Multiple): 

77 pass 

78 

79 

80class PlaceLookupField(forms.CharField): 

81 widget = PlaceLookup