OpenSlides/openslides/config/views.py

117 lines
3.9 KiB
Python
Raw Normal View History

2011-07-31 10:46:29 +02:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
openslides.config.views
2011-07-31 10:46:29 +02:00
~~~~~~~~~~~~~~~~~~~~~~~
Views for the config app.
2011-07-31 10:46:29 +02:00
2012-04-25 22:29:19 +02:00
:copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
2011-07-31 10:46:29 +02:00
:license: GNU GPL, see LICENSE for more details.
"""
from django.conf import settings
2011-07-31 10:46:29 +02:00
from django.contrib import messages
from django.core.urlresolvers import reverse
2012-04-18 09:33:09 +02:00
from django.utils.importlib import import_module
from django.utils.translation import ugettext as _
2012-02-15 12:04:11 +01:00
from openslides import get_version, get_git_commit_id, RELEASE
from openslides.utils.template import Tab
from openslides.utils.views import FormView, TemplateView
from .forms import GeneralConfigForm
from .models import config
# TODO: Do not import the participant module in config
from openslides.participant.api import get_or_create_anonymous_group
2012-03-18 17:11:58 +01:00
2011-07-31 10:46:29 +02:00
2012-03-16 14:31:59 +01:00
class GeneralConfig(FormView):
"""
Gereral config values.
"""
permission_required = 'config.can_manage_config'
form_class = GeneralConfigForm
template_name = 'config/general.html'
success_url_name = 'config_general'
2012-03-16 14:31:59 +01:00
def get_initial(self):
return {
2012-02-15 12:04:11 +01:00
'event_name': config['event_name'],
'event_description': config['event_description'],
'event_date': config['event_date'],
'event_location': config['event_location'],
'event_organizer': config['event_organizer'],
'welcome_title': config['welcome_title'],
'welcome_text': config['welcome_text'],
'system_enable_anonymous': config['system_enable_anonymous'],
2012-03-16 14:31:59 +01:00
}
def form_valid(self, form):
2012-04-15 13:26:01 +02:00
# event
2012-03-16 14:31:59 +01:00
config['event_name'] = form.cleaned_data['event_name']
config['event_description'] = form.cleaned_data['event_description']
config['event_date'] = form.cleaned_data['event_date']
config['event_location'] = form.cleaned_data['event_location']
config['event_organizer'] = form.cleaned_data['event_organizer']
2012-04-15 13:26:01 +02:00
# welcome widget
config['welcome_title'] = form.cleaned_data['welcome_title']
config['welcome_text'] = form.cleaned_data['welcome_text']
2012-04-15 13:26:01 +02:00
# system
2012-03-16 14:31:59 +01:00
if form.cleaned_data['system_enable_anonymous']:
config['system_enable_anonymous'] = True
get_or_create_anonymous_group()
2011-11-14 23:40:19 +01:00
else:
2012-03-16 14:31:59 +01:00
config['system_enable_anonymous'] = False
2012-04-15 13:26:01 +02:00
messages.success(
self.request, _('General settings successfully saved.'))
return super(GeneralConfig, self).form_valid(form)
class VersionConfig(TemplateView):
"""
Show version infos.
"""
permission_required = 'config.can_manage_config'
template_name = 'config/version.html'
def get_context_data(self, **kwargs):
context = super(VersionConfig, self).get_context_data(**kwargs)
# OpenSlides version. During development the git commit id is added.
openslides_version_string = get_version()
if not RELEASE:
openslides_version_string += ' Commit: %s' % get_git_commit_id()
context['versions'] = [('OpenSlides', openslides_version_string)]
# Version of plugins.
2012-04-18 09:33:09 +02:00
for plugin in settings.INSTALLED_PLUGINS:
try:
mod = import_module(plugin)
plugin_version = get_version(mod.VERSION)
except (ImportError, AttributeError, AssertionError):
continue
try:
plugin_name = mod.NAME
except AttributeError:
plugin_name = mod.__name__.split('.')[0]
context['versions'].append((plugin_name, plugin_version))
return context
2012-03-16 14:31:59 +01:00
2012-03-18 17:11:58 +01:00
def register_tab(request):
"""
Register the config tab.
"""
selected = request.path.startswith('/config/')
2012-03-18 17:11:58 +01:00
return Tab(
title=_('Configuration'),
app='config',
2012-03-18 17:11:58 +01:00
url=reverse('config_general'),
permission=request.user.has_perm('config.can_manage_config'),
2012-03-18 17:11:58 +01:00
selected=selected,
)