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
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Serializers for UI plugin api."""
3from django.utils.translation import gettext_lazy as _
5from rest_framework import serializers
8class PluginUIFeatureSerializer(serializers.Serializer):
9 """Serializer for a plugin ui feature."""
11 class Meta:
12 """Meta for serializer."""
14 fields = [
15 'plugin_name',
16 'feature_type',
17 'key',
18 'title',
19 'description',
20 'icon',
21 'options',
22 'context',
23 'source',
24 ]
26 # Required fields
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 )
33 feature_type = serializers.CharField(
34 label=_('Feature Type'), required=True, allow_blank=False
35 )
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 )
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 )
47 # Long-form description of the feature (optional)
48 description = serializers.CharField(
49 label=_('Feature Description'), required=False, allow_blank=True
50 )
52 # Optional icon
53 icon = serializers.CharField(
54 label=_('Feature Icon'), required=False, allow_blank=True
55 )
57 # Additional options, specific to the particular UI feature
58 options = serializers.DictField(label=_('Feature Options'), default=None)
60 # Server side context, supplied to the client side for rendering
61 context = serializers.DictField(label=_('Feature Context'), default=None)
63 source = serializers.CharField(
64 label=_('Feature Source (javascript)'), required=False, allow_blank=True
65 )