OpenSlides/openslides/agenda/slides.py
Oskar Hahn ecf5248962 Rework of the projector with websocket
* Set a static projector title
* absolute_urls for the activate links
* update the projector when a slide changes (in save())
* insert the absolute_url template filter
* Preview to slides
* renamed is_active to is_active_slide
* The SlideMixin has to come before the PersonMixin
* Update list of speakers
* Render Countdown via JS
* Reconnect projector after connection lost
* Overlays can allways be active and do not appear in the widget
* Rewrote the clock as overlay
2013-09-24 23:35:05 +02:00

73 lines
2.2 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
openslides.agenda.slides
~~~~~~~~~~~~~~~~~~~~~~~
Slides for the agenda app.
:copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
:license: GNU GPL, see LICENSE for more details.
"""
from django.template.loader import render_to_string
from openslides.config.api import config
from openslides.projector.api import register_slide, get_projector_content
from .models import Item
def agenda_slide(**kwargs):
"""
Return the html code for all slides of the agenda app.
If no id is given, show a summary of all parent items.
If an id is given, show the item depending of the argument 'type'.
If 'type' is not set, show only the item.
If 'type' is 'summary', show a summary of all children of the item.
If 'type' is 'list_of_speakers', show the list of speakers for the item.
"""
item_pk = kwargs.get('pk', None)
slide_type = kwargs.get('type', None)
try:
item = Item.objects.get(pk=item_pk)
except Item.DoesNotExist:
item = None
if slide_type == 'summary' or item is None:
context = {}
if item is None:
items = Item.objects.filter(parent=None, type__exact=Item.AGENDA_ITEM)
else:
items = item.get_children().filter(type__exact=Item.AGENDA_ITEM)
context['title'] = item.get_title()
context['items'] = items
return render_to_string('agenda/item_slide_summary.html', context)
elif slide_type == 'list_of_speakers':
list_of_speakers = item.get_list_of_speakers(
old_speakers_count=config['agenda_show_last_speakers'])
context = {'title': item.get_title(),
'item': item,
'list_of_speakers': list_of_speakers}
return render_to_string('agenda/item_slide_list_of_speaker.html', context)
elif item.content_object:
slide_dict = {
'callback': item.content_object.slide_callback_name,
'pk': item.content_object.pk}
return get_projector_content(slide_dict)
else:
context = {'item': item}
return render_to_string('agenda/item_slide.html', context)
register_slide('agenda', agenda_slide)