Code Duplication    Length = 31-33 lines in 2 locations

src/senaite/core/z3cform/widgets/queryselect/widget.py 1 location

@@ 171-203 (lines=33) @@
168
            value = [value]
169
        return value
170
171
    def get_input_widget_attributes(self):
172
        """Return input widget attributes for the ReactJS component
173
        """
174
        context = self.get_context()
175
        values = self.get_value()
176
        attributes = {
177
            "data-id": self.id,
178
            "data-name": self.name,
179
            "data-values": values,
180
            "data-value_key": getattr(self, "value_key", "uid"),
181
            "data-api_url": self.get_api_url(),
182
            "data-query": getattr(self, "query", {}),
183
            "data-catalog": getattr(self, "catalog", "portal_catalog"),
184
            "data-search_index": getattr(self, "search_index", "Title"),
185
            "data-search_wildcard": getattr(self, "search_wildcard", True),
186
            "data-allow_user_value": getattr(self, "allow_user_value", False),
187
            "data-columns": getattr(self, "columns", []),
188
            "data-display_template": getattr(self, "display_template", None),
189
            "data-limit": getattr(self, "limit", 5),
190
            "data-multi_valued": getattr(self, "multi_valued", True),
191
            "data-disabled": getattr(self, "disabled", False),
192
            "data-readonly": getattr(self, "readonly", False),
193
            "data-hide_input_after_select": getattr(
194
                self, "hide_user_input_after_select", False),
195
        }
196
197
        for key, value in attributes.items():
198
            # lookup attributes for overrides
199
            value = self.lookup(key, self.field, context, default=value)
200
            # convert all attributes to JSON
201
            attributes[key] = json.dumps(value)
202
203
        return attributes
204
205
    def get_api_url(self):
206
        """JSON API URL to use for this widget

src/senaite/core/browser/widgets/queryselect.py 1 location

@@ 100-130 (lines=31) @@
97
            value = [value]
98
        return value
99
100
    def get_input_widget_attributes(self, context, field, value):
101
        """Return input widget attributes for the ReactJS component
102
        """
103
        attributes = {
104
            "data-id": field.getName(),
105
            "data-name": field.getName(),
106
            "data-values": self.to_value(value),
107
            "data-value_key": getattr(self, "value_key", "uid"),
108
            "data-api_url": self.get_api_url(),
109
            "data-query": getattr(self, "query", {}),
110
            "data-catalog": getattr(self, "catalog", "portal_catalog"),
111
            "data-search_index": getattr(self, "search_index", "Title"),
112
            "data-search_wildcard": getattr(self, "search_wildcard", True),
113
            "data-allow_user_value": getattr(self, "allow_user_value", False),
114
            "data-columns": getattr(self, "columns", []),
115
            "data-display_template": getattr(self, "display_template", None),
116
            "data-limit": getattr(self, "limit", 5),
117
            "data-multi_valued": getattr(self, "multi_valued", True),
118
            "data-disabled": getattr(self, "disabled", False),
119
            "data-readonly": getattr(self, "readonly", False),
120
            "data-hide_input_after_select": getattr(
121
                self, "hide_user_input_after_select", False),
122
        }
123
124
        for key, value in attributes.items():
125
            # lookup attributes for overrides
126
            value = self.lookup(key, field, context, default=value)
127
            # convert all attributes to JSON
128
            attributes[key] = json.dumps(value)
129
130
        return attributes
131
132
    def get_api_url(self):
133
        """JSON API URL to use for this widget