Source code for sevenbridges.models.actions

import logging

from sevenbridges.http.client import client_info
from sevenbridges.meta.resource import Resource
from sevenbridges.meta.transformer import Transform
from sevenbridges.models.enums import FeedbackType

logger = logging.getLogger(__name__)


[docs]class Actions(Resource): _URL = { 'send_feedback': '/action/notifications/feedback', 'bulk_copy': '/action/files/copy' } def __str__(self): return '<Actions>' # noinspection PyShadowingBuiltins
[docs] @classmethod def send_feedback(cls, type=FeedbackType.IDEA, referrer=None, text=None, api=None): """ Sends feedback to sevenbridges. :param type: FeedbackType wither IDEA, PROBLEM or THOUGHT. :param text: Feedback text. :param referrer: Feedback referrer. :param api: Api instance. """ api = api if api else cls._API data = { 'type': type, 'text': text, 'referrer': referrer if referrer else str(client_info) } extra = { 'resource': cls.__name__, 'query': data } logger.info('Sending feedback', extra=extra) api.post(url=cls._URL['send_feedback'], data=data)
[docs] @classmethod def bulk_copy_files(cls, files, destination_project, api=None): """ Bulk copy of files. :param files: List containing files to be copied. :param destination_project: Destination project. :param api: Api instance. :return: MultiStatus copy result. """ api = api if api else cls._API files = [Transform.to_file(file) for file in files] data = { 'project': destination_project, 'file_ids': files } extra = { 'resource': cls.__name__, 'query': data } logger.info('Performing bulk copy', extra=extra) return api.post(url=cls._URL['bulk_copy'], data=data).json()