Source code for pysnow.attachment

# -*- coding: utf-8 -*-

import os
from pysnow.exceptions import InvalidUsage


[docs]class Attachment(object): """Attachment management :param resource: Table API resource to manage attachments for :param table_name: Name of the table to use in the attachment API """ def __init__(self, resource, table_name): self.resource = resource self.table_name = table_name
[docs] def get(self, sys_id=None, limit=100): """Returns a list of attachments :param sys_id: record sys_id to list attachments for :param limit: override the default limit of 100 :return: list of attachments """ if sys_id: return self.resource.get(query={'table_sys_id': sys_id, 'table_name': self.table_name}).all() return self.resource.get(query={'table_name': self.table_name}, limit=limit).all()
[docs] def upload(self, sys_id, file_path, name=None, multipart=False): """Attaches a new file to the provided record :param sys_id: the sys_id of the record to attach the file to :param file_path: local absolute path of the file to upload :param name: custom name for the uploaded file (instead of basename) :param multipart: whether or not to use multipart :return: the inserted record """ if not isinstance(multipart, bool): raise InvalidUsage('Multipart must be of type bool') resource = self.resource if name is None: name = os.path.basename(file_path) resource.parameters.add_custom({ 'table_name': self.table_name, 'table_sys_id': sys_id, 'file_name': name }) data = open(file_path, 'rb').read() headers = {} if multipart: headers["Content-Type"] = "multipart/form-data" path_append = '/upload' else: headers["Content-Type"] = "text/plain" path_append = '/file' return resource.request(method='POST', data=data, headers=headers, path_append=path_append)
[docs] def delete(self, sys_id): """Deletes the provided attachment record :param sys_id: attachment sys_id :return: delete result """ return self.resource.delete(query={'sys_id': sys_id})