9f12763f8b
Server: - ListOfSpeakers (LOS) is now a speprate model, containing of an id, speakers, closed and a content_object. - Moved all speaker related views from ItemViewSet to the new ListOfSpeakersViewSet. - Make Mixins for content objects of items and lists of speakers. - Migrations: Move the lists of speakers from items to the LOS model. Client: - Removed the speaker repo and moved functionality to the new ListOfSpeakersRepositoryService. - Splitted base classes for agenda item content objects to items and LOS. - CurrentAgendaItemService -> CurrentListOfSpeakersSerivce - Cleaned up the list of speakers component.
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from django.db import models
|
|
|
|
from ..agenda.mixins import AgendaItemWithListOfSpeakersMixin
|
|
from ..mediafiles.models import Mediafile
|
|
from ..utils.models import RESTModelMixin
|
|
from .access_permissions import TopicAccessPermissions
|
|
|
|
|
|
class TopicManager(models.Manager):
|
|
"""
|
|
Customized model manager to support our get_full_queryset method.
|
|
"""
|
|
|
|
def get_full_queryset(self):
|
|
"""
|
|
Returns the normal queryset with all topics. In the background all
|
|
attachments and the related agenda item are prefetched from the
|
|
database.
|
|
"""
|
|
return self.get_queryset().prefetch_related(
|
|
"attachments", "lists_of_speakers", "agenda_items"
|
|
)
|
|
|
|
|
|
class Topic(RESTModelMixin, AgendaItemWithListOfSpeakersMixin, models.Model):
|
|
"""
|
|
Model for slides with custom content. Used to be called custom slide.
|
|
"""
|
|
|
|
access_permissions = TopicAccessPermissions()
|
|
|
|
objects = TopicManager()
|
|
|
|
title = models.CharField(max_length=256)
|
|
text = models.TextField(blank=True)
|
|
attachments = models.ManyToManyField(Mediafile, blank=True)
|
|
|
|
class Meta:
|
|
default_permissions = ()
|
|
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
def get_title_information(self):
|
|
return {"title": self.title}
|