Protect numbering of the agenda
This commit is contained in:
parent
71b3cc181f
commit
fa5b81dad8
@ -20,6 +20,7 @@ Agenda:
|
||||
- Autoupdates for all children if the item type has changed [#3659].
|
||||
- Added config variable to hide internal items when projecting
|
||||
subitems [#3701].
|
||||
- Added config value to enable numbering of items [#3697].
|
||||
|
||||
Motions:
|
||||
- New export dialog [#3185].
|
||||
|
@ -9,6 +9,15 @@ def get_config_variables():
|
||||
|
||||
It has to be evaluated during app loading (see apps.py).
|
||||
"""
|
||||
yield ConfigVariable(
|
||||
name='agenda_enable_numbering',
|
||||
label='Enable numbering for agenda items',
|
||||
input_type='boolean',
|
||||
default_value=True,
|
||||
weight=200,
|
||||
group='Agenda',
|
||||
subgroup='General')
|
||||
|
||||
yield ConfigVariable(
|
||||
name='agenda_number_prefix',
|
||||
default_value='',
|
||||
|
@ -769,6 +769,7 @@ angular.module('OpenSlidesApp.agenda.site', [
|
||||
.config([
|
||||
'gettext',
|
||||
function (gettext) {
|
||||
gettext('Enable numbering for agenda items');
|
||||
gettext('Numbering prefix for agenda items');
|
||||
gettext('This prefix will be set if you run the automatic agenda numbering.');
|
||||
gettext('Agenda');
|
||||
|
@ -78,11 +78,14 @@
|
||||
<translate>Sort ...</translate>
|
||||
</a>
|
||||
<!-- auto numbering button -->
|
||||
<button os-perms="agenda.can_manage" class="btn btn-default btn-sm"
|
||||
ng-click="autoNumbering()">
|
||||
<i class="fa fa-sort-numeric-asc"></i>
|
||||
<translate>Numbering</translate>
|
||||
</button>
|
||||
<span ng-if="config('agenda_enable_numbering')">
|
||||
<button os-perms="agenda.can_manage" class="btn btn-default btn-sm"
|
||||
ng-bootbox-confirm="{{ 'Are you sure you want to number all agenda items?' | translate }}"
|
||||
ng-bootbox-confirm-action="autoNumbering()">
|
||||
<i class="fa fa-sort-numeric-asc"></i>
|
||||
<translate>Numbering</translate>
|
||||
</button>
|
||||
</span>
|
||||
<!-- Export drop down list (for manager) -->
|
||||
<div os-perms="motions.can_manage" class="pull-right" uib-dropdown>
|
||||
<button type="button" class="btn btn-default btn-sm" id="dropdownExport" uib-dropdown-toggle>
|
||||
|
@ -305,6 +305,9 @@ class ItemViewSet(ListModelMixin, RetrieveModelMixin, UpdateModelMixin, GenericV
|
||||
Auto numbering of the agenda according to the config. Manually added
|
||||
item numbers will be overwritten.
|
||||
"""
|
||||
if not config['agenda_enable_numbering']:
|
||||
raise ValidationError({'detail': _('Numbering of agenda items is deactivated.')})
|
||||
|
||||
Item.objects.number_all(numeral_system=config['agenda_numeral_system'])
|
||||
return Response({'detail': _('The agenda has been numbered.')})
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
<!-- checkbox -->
|
||||
<div ng-if="type === 'checkbox'" class="config-checkbox">
|
||||
<i class="fa" id="{{ key }}"
|
||||
<i class="fa pointer" id="{{ key }}"
|
||||
ng-click="$parent.value = !$parent.value; save(configOption, $parent.value)"
|
||||
ng-class="$parent.value ? 'fa-check-square-o' : 'fa-square-o'"></i>
|
||||
</div>
|
||||
|
@ -393,6 +393,12 @@ class Numbering(TestCase):
|
||||
self.assertEqual(Item.objects.get(pk=self.item_2_1.pk).item_number, '2.1')
|
||||
self.assertEqual(Item.objects.get(pk=self.item_3.pk).item_number, '3')
|
||||
|
||||
def test_deactivated_numbering(self):
|
||||
config['agenda_enable_numbering'] = False
|
||||
|
||||
response = self.client.post(reverse('item-numbering'))
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
def test_roman_numbering(self):
|
||||
config['agenda_numeral_system'] = 'roman'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user