commit
865860a96f
@ -77,7 +77,7 @@ class Item(MPTTModel, SlideMixin):
|
|||||||
"""
|
"""
|
||||||
Type of the agenda item.
|
Type of the agenda item.
|
||||||
|
|
||||||
See Agenda.ITEM_TYPE for more informations.
|
See Item.ITEM_TYPE for more information.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
duration = models.CharField(null=True, blank=True, max_length=5,
|
duration = models.CharField(null=True, blank=True, max_length=5,
|
||||||
@ -191,11 +191,11 @@ class Item(MPTTModel, SlideMixin):
|
|||||||
* normal slide of the item
|
* normal slide of the item
|
||||||
|
|
||||||
The method returns only one of them according to the config value
|
The method returns only one of them according to the config value
|
||||||
'presentation_argument' and the attribut 'related_sid'.
|
'presentation_argument' and the attribute 'related_sid'.
|
||||||
"""
|
"""
|
||||||
if config['presentation_argument'] == 'summary':
|
if config['presentation_argument'] == 'summary':
|
||||||
data = {'title': self.get_title(),
|
data = {'title': self.get_title(),
|
||||||
'items': self.get_children(),
|
'items': self.get_children().filter(type__exact=Item.AGENDA_ITEM),
|
||||||
'template': 'projector/AgendaSummary.html'}
|
'template': 'projector/AgendaSummary.html'}
|
||||||
|
|
||||||
elif config['presentation_argument'] == 'show_list_of_speakers':
|
elif config['presentation_argument'] == 'show_list_of_speakers':
|
||||||
|
@ -84,7 +84,10 @@ def agenda_list_of_speakers(sender, **kwargs):
|
|||||||
"""
|
"""
|
||||||
slide = get_slide_from_sid(get_active_slide(only_sid=True), element=True)
|
slide = get_slide_from_sid(get_active_slide(only_sid=True), element=True)
|
||||||
if not isinstance(slide, Item):
|
if not isinstance(slide, Item):
|
||||||
# Only show list of speakers on Agenda-Items
|
# Only show list of speakers overlay on agenda items
|
||||||
|
return None
|
||||||
|
if config['presentation_argument'] == 'show_list_of_speakers':
|
||||||
|
# Do not show list of speakers overlay on the list of speakers slide
|
||||||
return None
|
return None
|
||||||
clear_projector_cache()
|
clear_projector_cache()
|
||||||
list_of_speakers = slide.get_list_of_speakers(
|
list_of_speakers = slide.get_list_of_speakers(
|
||||||
|
@ -35,8 +35,8 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div id="overlay_list_of_speaker_box">
|
<div id="overlay_list_of_speaker_box">
|
||||||
|
<h3>{% trans 'List of speakers' %}:</h3>
|
||||||
{% if list_of_speakers %}
|
{% if list_of_speakers %}
|
||||||
<h3>{% trans "List of speakers" %}:</h3>
|
|
||||||
<ul>
|
<ul>
|
||||||
{% for speaker_dict in list_of_speakers %}
|
{% for speaker_dict in list_of_speakers %}
|
||||||
<li>
|
<li>
|
||||||
|
@ -135,7 +135,7 @@
|
|||||||
<p>
|
<p>
|
||||||
{% if is_on_the_list_of_speakers %}
|
{% if is_on_the_list_of_speakers %}
|
||||||
<a href="{% url 'agenda_speaker_delete' object.id %}" class="btn">{% trans "Remove me from the list" %}</a>
|
<a href="{% url 'agenda_speaker_delete' object.id %}" class="btn">{% trans "Remove me from the list" %}</a>
|
||||||
{% elif not object.speaker_list_closed and perms.can_be_speaker %}
|
{% elif not object.speaker_list_closed and perms.agenda.can_be_speaker %}
|
||||||
<a href="{% url 'agenda_speaker_append' object.id %}" class="btn">{% trans "Put me on the list" %}</a>
|
<a href="{% url 'agenda_speaker_append' object.id %}" class="btn">{% trans "Put me on the list" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
@ -450,13 +450,14 @@ class CurrentListOfSpeakersView(RedirectView):
|
|||||||
"""
|
"""
|
||||||
Returns the URL to the item_view if:
|
Returns the URL to the item_view if:
|
||||||
|
|
||||||
* the current slide is an item and
|
* the current slide is an item,
|
||||||
* the user has the permission to see the item
|
* the user has the permission to see the item and
|
||||||
|
* the list of speakers of the item is not closed,
|
||||||
|
|
||||||
in other case, it returns the URL to the dashboard.
|
in other case, it returns the URL to the dashboard.
|
||||||
|
|
||||||
This method also add the request.user to the list of speakers, if he
|
This method also adds the request.user to the list of speakers, if he
|
||||||
has the right permissions.
|
has the right permissions and the list is not closed.
|
||||||
"""
|
"""
|
||||||
item = self.get_item()
|
item = self.get_item()
|
||||||
request = self.request
|
request = self.request
|
||||||
@ -466,6 +467,10 @@ class CurrentListOfSpeakersView(RedirectView):
|
|||||||
'Please choose the agenda item manually from the agenda.'))
|
'Please choose the agenda item manually from the agenda.'))
|
||||||
return reverse('dashboard')
|
return reverse('dashboard')
|
||||||
|
|
||||||
|
if item.speaker_list_closed:
|
||||||
|
messages.error(request, _('The list of speakers is closed.'))
|
||||||
|
return reverse('dashboard')
|
||||||
|
|
||||||
if self.request.user.has_perm('agenda.can_be_speaker'):
|
if self.request.user.has_perm('agenda.can_be_speaker'):
|
||||||
try:
|
try:
|
||||||
Speaker.objects.add(self.request.user, item)
|
Speaker.objects.add(self.request.user, item)
|
||||||
|
@ -6,7 +6,9 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{% trans 'Version' %}</h1>
|
<h1>{% trans 'Version' %}</h1>
|
||||||
|
<ul>
|
||||||
{% for version in versions %}
|
{% for version in versions %}
|
||||||
<p>{{ version.0 }} {% trans "Version" %}: {{ version.1 }}</p>
|
<li>{{ version.0 }} – {% trans "Version" %} {{ version.1 }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -19,7 +19,7 @@ from openslides.utils.views import TemplateView
|
|||||||
|
|
||||||
class VersionView(TemplateView):
|
class VersionView(TemplateView):
|
||||||
"""
|
"""
|
||||||
Show version infos.
|
Shows version infos.
|
||||||
"""
|
"""
|
||||||
template_name = 'core/version.html'
|
template_name = 'core/version.html'
|
||||||
|
|
||||||
@ -32,20 +32,35 @@ class VersionView(TemplateView):
|
|||||||
# OpenSlides version. During development the git commit id is added.
|
# OpenSlides version. During development the git commit id is added.
|
||||||
openslides_version_string = get_version()
|
openslides_version_string = get_version()
|
||||||
if not RELEASE:
|
if not RELEASE:
|
||||||
openslides_version_string += ' Commit: %s' % get_git_commit_id()
|
openslides_version_string += ' – Commit %s' % get_git_commit_id()
|
||||||
context['versions'] = [('OpenSlides', openslides_version_string)]
|
context['versions'] = [('OpenSlides', openslides_version_string)]
|
||||||
|
|
||||||
# Versions of plugins.
|
# Versions of plugins.
|
||||||
for plugin in settings.INSTALLED_PLUGINS:
|
for plugin in settings.INSTALLED_PLUGINS:
|
||||||
|
# Get plugin
|
||||||
try:
|
try:
|
||||||
mod = import_module(plugin)
|
mod = import_module(plugin)
|
||||||
plugin_version = get_version(mod.VERSION)
|
except ImportError:
|
||||||
except (ImportError, AttributeError, AssertionError):
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Get version.
|
||||||
try:
|
try:
|
||||||
plugin_name = mod.NAME
|
plugin_version = mod.get_version()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
plugin_name = mod.__name__.split('.')[0]
|
try:
|
||||||
|
plugin_version = mod.VERSION
|
||||||
|
except AttributeError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Get name.
|
||||||
|
try:
|
||||||
|
plugin_name = mod.get_name()
|
||||||
|
except AttributeError:
|
||||||
|
try:
|
||||||
|
plugin_name = mod.NAME
|
||||||
|
except AttributeError:
|
||||||
|
plugin_name = mod.__name__.split('.')[0]
|
||||||
|
|
||||||
context['versions'].append((plugin_name, plugin_version))
|
context['versions'].append((plugin_name, plugin_version))
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
@ -102,9 +102,9 @@ def import_users(csv_file):
|
|||||||
user.reset_password()
|
user.reset_password()
|
||||||
count_success += 1
|
count_success += 1
|
||||||
except csv.Error:
|
except csv.Error:
|
||||||
error_messages.appen(_('Import aborted because of severe errors in the input file.'))
|
error_messages.append(_('Import aborted because of severe errors in the input file.'))
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
error_messages.appen(_('Import file has wrong character encoding, only UTF-8 is supported!'))
|
error_messages.append(_('Import file has wrong character encoding, only UTF-8 is supported!'))
|
||||||
return (count_success, error_messages)
|
return (count_success, error_messages)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user