Source code for pretalx.person.models.information

from django.db import models
from django.utils.translation import gettext_lazy as _
from django.utils.translation import pgettext_lazy
from i18nfield.fields import I18nCharField, I18nTextField

from pretalx.common.models.mixins import PretalxModel
from pretalx.common.text.path import path_with_hash
from pretalx.common.text.phrases import phrases
from pretalx.common.urls import EventUrls


def resource_path(instance, filename):
    return path_with_hash(
        filename, base_path=f"{instance.event.slug}/speaker_information/"
    )


[docs] class SpeakerInformation(PretalxModel): """Represents any information organisers want to show all or some submitters or speakers.""" event = models.ForeignKey( to="event.Event", related_name="information", on_delete=models.CASCADE ) target_group = models.CharField( choices=( ("submitters", phrases.base.all_choices), ("accepted", _("All accepted speakers")), ("confirmed", _("Only confirmed speakers")), ), default="accepted", max_length=11, ) limit_tracks = models.ManyToManyField( to="submission.Track", verbose_name=_("Limit to tracks"), blank=True, help_text=_("Leave empty to show this information to all tracks."), ) limit_types = models.ManyToManyField( to="submission.SubmissionType", verbose_name=_("Limit to proposal types"), blank=True, help_text=_("Leave empty to show this information for all proposal types."), ) title = I18nCharField( verbose_name=pgettext_lazy("email subject", "Subject"), max_length=200 ) text = I18nTextField(verbose_name=_("Text"), help_text=phrases.base.use_markdown) resource = models.FileField( verbose_name=_("File"), null=True, blank=True, help_text=_("Please try to keep your upload small, preferably below 16 MB."), upload_to=resource_path, ) class orga_urls(EventUrls): base = edit = "{self.event.orga_urls.information}{self.pk}/" delete = "{base}delete"