Code Duplication    Length = 44-48 lines in 2 locations

gvm/protocols/gmpv208/entities/filter.py 2 locations

@@ 232-279 (lines=48) @@
229
230
        return self._send_xml_command(cmd)
231
232
    def modify_filter(
233
        self,
234
        filter_id: str,
235
        *,
236
        comment: Optional[str] = None,
237
        name: Optional[str] = None,
238
        term: Optional[str] = None,
239
        filter_type: Optional[FilterType] = None,
240
    ) -> Any:
241
        """Modifies an existing filter.
242
243
        Arguments:
244
            filter_id: UUID of the filter to be modified
245
            comment: Comment on filter.
246
            name: Name of filter.
247
            term: Filter term.
248
            filter_type: Resource type filter applies to.
249
250
        Returns:
251
            The response. See :py:meth:`send_command` for details.
252
        """
253
        if not filter_id:
254
            raise RequiredArgument(
255
                function=self.modify_filter.__name__, argument='filter_id'
256
            )
257
258
        cmd = XmlCommand("modify_filter")
259
        cmd.set_attribute("filter_id", filter_id)
260
261
        if comment:
262
            cmd.add_element("comment", comment)
263
264
        if name:
265
            cmd.add_element("name", name)
266
267
        if term:
268
            cmd.add_element("term", term)
269
270
        if filter_type:
271
            if not isinstance(filter_type, FilterType):
272
                raise InvalidArgumentType(
273
                    function=self.modify_filter.__name__,
274
                    argument='filter_type',
275
                    arg_type=FilterType.__name__,
276
                )
277
            cmd.add_element("type", filter_type.value)
278
279
        return self._send_xml_command(cmd)
280
@@ 110-153 (lines=44) @@
107
        cmd.add_element("copy", filter_id)
108
        return self._send_xml_command(cmd)
109
110
    def create_filter(
111
        self,
112
        name: str,
113
        *,
114
        filter_type: Optional[FilterType] = None,
115
        comment: Optional[str] = None,
116
        term: Optional[str] = None,
117
    ) -> Any:
118
        """Create a new filter
119
120
        Arguments:
121
            name: Name of the new filter
122
            filter_type: Filter for entity type
123
            comment: Comment for the filter
124
            term: Filter term e.g. 'name=foo'
125
126
        Returns:
127
            The response. See :py:meth:`send_command` for details.
128
        """
129
        if not name:
130
            raise RequiredArgument(
131
                function=self.create_filter.__name__, argument="name"
132
            )
133
134
        cmd = XmlCommand("create_filter")
135
        _xmlname = cmd.add_element("name", name)
136
137
        if comment:
138
            cmd.add_element("comment", comment)
139
140
        if term:
141
            cmd.add_element("term", term)
142
143
        if filter_type:
144
            if not isinstance(filter_type, FilterType):
145
                raise InvalidArgumentType(
146
                    function=self.create_filter.__name__,
147
                    argument="filter_type",
148
                    arg_type=FilterType.__name__,
149
                )
150
151
            cmd.add_element("type", filter_type.value)
152
153
        return self._send_xml_command(cmd)
154
155
    def delete_filter(
156
        self, filter_id: str, *, ultimate: Optional[bool] = False