Coverage for src/backend/InvenTree/plugin/base/ui/serializers.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 17:47 +0000

1"""Serializers for UI plugin api.""" 

2 

3from django.utils.translation import gettext_lazy as _ 

4 

5from rest_framework import serializers 

6 

7 

8class PluginUIFeatureSerializer(serializers.Serializer): 

9 """Serializer for a plugin ui feature.""" 

10 

11 class Meta: 

12 """Meta for serializer.""" 

13 

14 fields = [ 

15 'plugin_name', 

16 'feature_type', 

17 'key', 

18 'title', 

19 'description', 

20 'icon', 

21 'options', 

22 'context', 

23 'source', 

24 ] 

25 

26 # Required fields 

27 

28 # The name of the plugin that provides this feature 

29 plugin_name = serializers.CharField( 

30 label=_('Plugin Name'), required=True, allow_blank=False 

31 ) 

32 

33 feature_type = serializers.CharField( 

34 label=_('Feature Type'), required=True, allow_blank=False 

35 ) 

36 

37 # Item key to be used in the UI - this should be a DOM identifier and is not user facing 

38 key = serializers.CharField( 

39 label=_('Feature Label'), required=True, allow_blank=False 

40 ) 

41 

42 # Title to be used in the UI - this is user facing (and should be human readable) 

43 title = serializers.CharField( 

44 label=_('Feature Title'), required=False, allow_blank=True 

45 ) 

46 

47 # Long-form description of the feature (optional) 

48 description = serializers.CharField( 

49 label=_('Feature Description'), required=False, allow_blank=True 

50 ) 

51 

52 # Optional icon 

53 icon = serializers.CharField( 

54 label=_('Feature Icon'), required=False, allow_blank=True 

55 ) 

56 

57 # Additional options, specific to the particular UI feature 

58 options = serializers.DictField(label=_('Feature Options'), default=None) 

59 

60 # Server side context, supplied to the client side for rendering 

61 context = serializers.DictField(label=_('Feature Context'), default=None) 

62 

63 source = serializers.CharField( 

64 label=_('Feature Source (javascript)'), required=False, allow_blank=True 

65 )