Source code for tcms.rpc.api.component

from django.forms.models import model_to_dict

from tcms.management.forms import ComponentForm
from tcms.management.models import Component
from tcms.rpc.api.forms.management import ComponentUpdateForm
from tcms.rpc.decorators import permissions_required
from tcms.rpc.views import rpc_method


[docs] @rpc_method( name="Component.filter", auth=permissions_required("management.view_component"), ) def filter(query): # pylint: disable=redefined-builtin """ .. function:: RPC Component.filter(query) Search and return the resulting list of components. :param query: Field lookups for :class:`tcms.management.models.Component` :type query: dict :return: List of serialized :class:`tcms.management.models.Component` objects :rtype: list(dict) """ return list( Component.objects.filter(**query) .values( "id", "name", "product", "initial_owner", "description", "cases", ) .order_by("id") .distinct() )
[docs] @rpc_method( name="Component.create", auth=permissions_required("management.add_component"), context_target="rpc_context", ) def create(values, rpc_context=None): """ .. function:: RPC Component.create(values) Create new component. :param values: Field values for :class:`tcms.management.models.Component` :type values: dict :param rpc_context: Provides access to the current request, protocol, entry point name and handler instance from the rpc method :type rpc_context: modernrpc.core.RpcRequestContext :return: Serialized :class:`tcms.management.models.Component` object :rtype: dict :raises ValueError: if data validation fails :raises PermissionDenied: if missing *management.add_component* permission .. note:: If ``initial_owner_id`` is not specified this field is set to the user issuing the RPC request! """ request = rpc_context.request if "initial_owner" not in values: values["initial_owner"] = request.user.pk if "description" not in values: values["description"] = "Created via API" form = ComponentForm(values, request=request) if form.is_valid(): component = form.save() return model_to_dict(component) raise ValueError(list(form.errors.items()))
[docs] @rpc_method( name="Component.update", auth=permissions_required("management.change_component"), context_target="rpc_context", ) def update(component_id, values, rpc_context=None): """ .. function:: RPC Component.update Update component with new values. :param component_id: PK of Component to be updated :type component_id: int :param values: Fields and values to be updated :type values: dict :param rpc_context: Provides access to the current request, protocol, entry point name and handler instance from the rpc method :type rpc_context: modernrpc.core.RpcRequestContext :return: Serialized :class:`tcms.management.models.Component` object :rtype: dict :raises ValueError: if data validation fails :raises PermissionDenied: if missing *management.change_component* permission """ request = rpc_context.request component = Component.objects.get(pk=component_id) form = ComponentUpdateForm(values, instance=component, request=request) if form.is_valid(): component = form.save() return model_to_dict(component) raise ValueError(list(form.errors.items()))