# -*- coding: utf-8 -*- # # Iterativ GmbH # http://www.iterativ.ch/ # # Copyright (c) 2018 Iterativ GmbH. All rights reserved. # # Created on 25.09.18 # @author: Ramon Wenger import bleach import re from typing import List, Union from wagtail.blocks import StreamValue from api.utils import get_object from assignments.models import Assignment from books.models import ContentBlock class AssignmentParameterException(Exception): pass class ContentTypeException(Exception): pass def get_previous_item(previous_contents: Union[StreamValue, List[dict]], item: dict): if isinstance(previous_contents, StreamValue): contents = previous_contents.raw_data else: contents = previous_contents return next((c for c in contents if c.get('id', None) == item['id']), None) def handle_text(text): is_list = bool(re.search(r'