Vereinheitlichen von `EpisodeContribution` und `RadioReportRole`
Es gibt mehrere Möglichkeiten Beteiligungen an Episoden anzugeben. Im Profil (z.B. https://produktion.lohro.de/manage/profiles/4) werden aktuell zwei Abfragen durchgeführt und dann dargestellt. In UserDetail
der core/views.py
gibt es
context["episodes_contributed_to"] = Episode.objects.filter(
contributions__user=self.kwargs["pk"]
).distinct()
und
context["radioreportroles"] = RadioReportRole.objects.filter(
user=self.kwargs["pk"]
)
Ersteres verweist letztlich auf class EpisodeContribution
, zweiteres auf auf class RadioReportRole
class EpisodeContribution(models.Model):
class Role(models.TextChoices):
EVERY = "every", _("- all -")
HOST = "host", _("Moderator")
NEWS = "news", _("News")
EDITOR = "editor", _("Editor")
CHIEF = "chief", _("Chief")
name = models.CharField(max_length=31, choices=Role.choices)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
public = models.BooleanField(_("Visible in Public"), blank=True, default=True)
episode = models.ForeignKey(
"program.Episode",
on_delete=models.CASCADE,
null=True,
blank=True,
related_name="contributions",
)
@property
def role(self):
return self.name
class RadioReportRole(models.Model):
class RadioReportRoles(models.TextChoices):
EVERY = "every", _("All")
INTERVIEWER = "interviewer", _("Interviewer")
EDITOR = "editor", _("Editor")
CUTTER = "cutter", _("Cutter")
VOICE = "voice", _("Voice")
TRANSLATOR = "translator", _("Translator")
name = models.CharField(
verbose_name=_("Name"), max_length=31, choices=RadioReportRoles.choices
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.PROTECT, verbose_name=_("User")
)
report = models.ForeignKey(
"RadioReport",
on_delete=models.CASCADE,
null=True,
blank=True,
related_name="roles",
verbose_name=_("Report"),
)
public = models.BooleanField(_("Visible in Public"), blank=True, default=True)
@property
def role(self):
return self.name
Wir brauchen vermutlich nur RadioReportRole
, da wir Episoden ja nur als Wrapper um RadioReports nutzen die einer Ausstrahlung (Broadcast) zugeordnet werden können. Bei der Migration muss aber geprüft werden, welche EpisodeRoles existieren und diese entsprechend in RadioReportRoles zu den entsprechend verbundenen RadioReports überführt werden.
Nachtrag: die EpisodeContribution
ist das umbenannte Model von BroadcastRole
und ist damit historisch etwas mit gewachsen.