def METHOD_NAME(self, request, *args, **kwargs):
    serializer = self.serializer_class(data=request.data)
    if serializer.is_valid():
        data = self.prepare_data(serializer.validated_data)
        contest = data.get('contest')
        existing_problem = data.get('existing_problem')
        form_data = data.get('form_data')
        if not self.check_permissions(request, contest, existing_problem):
            return Response(
                {'message': _("Permission denied.")},
                status=status.HTTP_403_FORBIDDEN,
            )
        form = self.form_class(contest, existing_problem, form_data, request.FILES)
        if form_data.get('round_id'):
            form.data['round_id'] = form_data['round_id']
        package_id = self.submit_upload_form(form, request, contest)
        if package_id is not None:
            return Response(
                {'package_id': package_id}, status=status.HTTP_201_CREATED
            )
        else:
            return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)