Beispiel #1
0
def create_preview(content, log_type, expires, **kwargs) -> dict:
    """
    Create a log using specified data.
    :param content: Raw content of log.
    :type content: str
    :param log_type: Type of log, can be none if :param content is a list.
    :type log_type: Union[str, None]
    :param expires: Expiration time of log.
    :type expires: Union[int, None]
    :param kwargs: Extraneous data.
    """
    data = {
        'type':
        log_type,
        'content':
        content,
        'uuid':
        Log.generate_uuid(content),
        'expires':
        pendulum.now().add(
            seconds=int(expires)).isoformat() if expires else None
    }

    result = celery.chain(v1_tasks.parse_text.s(log_type, content),
                          tasks.parse_json.s())()
    data['data'] = {**result.get(), **kwargs}

    return data
def create_log(content, log_type, owner, expires, privacy, guild, **kwargs) -> Log:
    """
    Create a log using specified data.
    :param content: Raw content of log.
    :type content: list
    :param log_type: Type of log, can be none if :param content is a list.
    :type log_type: Union[str, None]
    :param owner: Log owner.
    :param expires: Expiration time of log.
    :type expires: Union[str, None]
    :param privacy: Log privacy setting.
    :type privacy: str
    :param guild: Linked guild of log. Must be set if privacy setting is either guild or mods.
    :type guild: int
    :param kwargs: Extraneous data.
    """
    data = {'type': log_type, 'content': json.dumps(content, indent=4), 'owner': owner, 'privacy': privacy,
            'guild': guild}
    uuid = data['uuid'] = Log.generate_uuid(content)
    if Log.objects.filter(uuid=uuid).exists():
        return Log.objects.get(uuid=uuid)

    data['expires'] = pendulum.parse(expires) if expires else None

    result = celery.chain(tasks.parse_json.s(content) | tasks.create_pages.s(uuid))()

    data['data'] = {'tasks': list(reversed(result.as_list())), **kwargs}

    return Log.objects.create(**data)
Beispiel #3
0
def create_log(content, log_type, owner, expires, privacy, guild,
               **kwargs) -> Log:
    """
    Create a log using specified data.
    :param content: Raw content of log.
    :type content: str
    :param log_type: Type of log, can be none if :param content is a list.
    :type log_type: Union[str, None]
    :param owner: Log owner.
    :param expires: Expiration time of log.
    :type expires: Union[int, None]
    :param privacy: Log privacy setting.
    :type privacy: str
    :param guild: Linked guild of log. Must be set if privacy setting is either guild or mods.
    :type guild: int
    :param kwargs: Extraneous data.
    """
    data = {
        'type': log_type,
        'content': content,
        'owner': owner,
        'privacy': privacy,
        'guild': guild
    }
    uuid = data['uuid'] = Log.generate_uuid(content)
    if Log.objects.filter(uuid=uuid).exists():
        return Log.objects.get(uuid=uuid)

    data['expires'] = pendulum.now().add(
        seconds=int(expires)) if expires else None

    messages = [
        '{current}/{total} messages parsed... ({percent}%)',
        '{current}/{total} messages formatted... ({percent}%)',
        'Saving messages... ({percent}%)'
    ]
    result = celery.chain(v1_tasks.parse_text.s(log_type, content),
                          tasks.parse_json.s() | tasks.create_pages.s(uuid))()

    task_ids = utils.get_chain_tasks(result)
    data['data'] = {
        'tasks': utils.add_task_messages(task_ids, messages=messages),
        **kwargs
    }

    return Log.objects.create(**data)