Source code for dtlpy.entities.links

from .. import entities
from .. import PlatformException
from enum import Enum
import os
import mimetypes


[docs]class LinkTypeEnum(str, Enum): """ State enum """ ID = "id" URL = "url"
class Link: # noinspection PyShadowingBuiltins def __init__(self, name, type: LinkTypeEnum, ref, mimetype=None, dataset_id=None): self.type = type self.ref = ref self.name = name self.dataset_id = dataset_id self.mimetype = mimetype class UrlLink(Link): def __init__(self, ref, mimetype=None, name=None): if name is None: name = os.path.split(ref)[-1].replace('/', "").replace("\\", '').replace('.', '') name = name.split('?')[0] # noinspection PyShadowingBuiltins type = LinkTypeEnum.URL if not mimetype: mimetype = mimetypes.guess_type(ref.split('?')[0])[0] or 'image' super().__init__(name=name, type=type, mimetype=mimetype, ref=ref) @staticmethod def from_list(url_list): url_links = list() for url in url_list: url_links.append(UrlLink(ref=url)) return url_links class ItemLink(Link): def __init__(self, ref=None, name=None, dataset_id=None, item=None): if ref is None and item is None: raise PlatformException('400', 'Must provide either ref or item_id') if item is not None and not isinstance(item, entities.Item): raise PlatformException('400', 'Param item must be of type Item') if ref is None: ref = item.id if name is None: if item is not None: name = item.name else: name = ref if dataset_id is None and item is not None and isinstance(item, entities.Item): dataset_id = item.dataset_id # noinspection PyShadowingBuiltins type = LinkTypeEnum.ID super().__init__(name=name, type=type, ref=ref, dataset_id=dataset_id) @staticmethod def from_list(items): if not isinstance(items, list): items = [items] item_links = list() for item in items: if isinstance(item, str): item_links.append(ItemLink(ref=item)) elif isinstance(item, entities.Item): item_links.append(ItemLink(item=item)) else: raise PlatformException('400', 'Unknown item type. items should be a list of item entities/item ids') return item_links