Source code for pretalx.event.domain.organiser

# SPDX-FileCopyrightText: 2018-present Tobias Kunze
# SPDX-License-Identifier: AGPL-3.0-only WITH LicenseRef-Pretalx-AGPL-3.0-Terms

from django.db import transaction
from django_scopes import scope

from pretalx.common.models import ActivityLog
from pretalx.event.domain.event import shred_event
from pretalx.event.models import Organiser, Team


def create_organiser_with_team(*, name, slug, users=None):
    organiser = Organiser.objects.create(name=name, slug=slug)
    team = Team.objects.create(
        organiser=organiser,
        name=f"Team {name}",
        can_create_events=True,
        can_change_teams=True,
        can_change_organiser_settings=True,
    )
    for user in users:
        team.members.add(user)
    return organiser, team


[docs] @transaction.atomic def shred_organiser(organiser, person=None): """Irrevocably delete ``organiser`` and all dependent events and data.""" ActivityLog.objects.create( person=person, action_type="pretalx.organiser.delete", content_object=organiser, is_orga_action=True, data={"slug": organiser.slug, "name": str(organiser.name)}, ) for event in organiser.events.all(): with scope(event=event): shred_event(event, person=person) # We keep our logged actions, even with the now-broken content type organiser.delete()