def publish(self, request, pk): """ Dispatches a publish task. """ publisher = self.get_object() serializer = RepositoryPublishURLSerializer( data=request.data, context={'request': request} ) serializer.is_valid(raise_exception=True) repository_version = serializer.validated_data.get('repository_version') # Safe because version OR repository is enforced by serializer. if not repository_version: repository = serializer.validated_data.get('repository') repository_version = RepositoryVersion.latest(repository) result = enqueue_with_reservation( tasks.publish, [repository_version.repository, publisher], kwargs={ 'publisher_pk': publisher.pk, 'repository_version_pk': repository_version.pk } ) return OperationPostponedResponse(result, request)
def publish(self, request, pk): """ Publishes a repository. Either the ``repository`` or the ``repository_version`` fields can be provided but not both at the same time. """ publisher = self.get_object() serializer = RepositoryPublishURLSerializer( data=request.data, context={'request': request}, ) serializer.is_valid(raise_exception=True) repository_version = serializer.validated_data.get( 'repository_version') result = enqueue_with_reservation( tasks.publish_verbatim, [repository_version.repository, publisher], kwargs={ 'publisher_pk': str(publisher.pk), 'repository_version_pk': str(repository_version.pk) } ) return core.OperationPostponedResponse(result, request)
def publish(self, request, pk): """ Publishes a repository. Either the ``repository`` or the ``repository_version`` fields can be provided but not both at the same time. """ publisher = self.get_object() serializer = RepositoryPublishURLSerializer( data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) repository_version = serializer.validated_data.get( 'repository_version') result = enqueue_with_reservation( tasks.publish, [repository_version.repository, publisher], kwargs={ 'publisher_pk': str(publisher.pk), 'repository_version_pk': str(repository_version.pk) }) return OperationPostponedResponse(result, request)
def create(self, request): """ Queues a task that publishes a new Ansible Publication. """ serializer = RepositoryPublishURLSerializer( data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) repository_version = serializer.validated_data.get( 'repository_version') # Safe because version OR repository is enforced by serializer. if not repository_version: repository = serializer.validated_data.get('repository') repository_version = RepositoryVersion.latest(repository) result = enqueue_with_reservation( tasks.publish, [repository_version.repository], kwargs={'repository_version_pk': str(repository_version.pk)}) return OperationPostponedResponse(result, request)