Fix numbering with category prefix in simple workflow, fix #769
This commit is contained in:
parent
79dfd8a6ae
commit
96c5b1d2dc
@ -98,10 +98,6 @@ class MotionEditMixin(object):
|
|||||||
Saves the CreateForm or UpdateForm into a motion object.
|
Saves the CreateForm or UpdateForm into a motion object.
|
||||||
"""
|
"""
|
||||||
self.object = form.save(commit=False)
|
self.object = form.save(commit=False)
|
||||||
self.manipulate_object(form)
|
|
||||||
|
|
||||||
for attr in ['title', 'text', 'reason']:
|
|
||||||
setattr(self.version, attr, form.cleaned_data[attr])
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.object.category = form.cleaned_data['category']
|
self.object.category = form.cleaned_data['category']
|
||||||
@ -113,6 +109,11 @@ class MotionEditMixin(object):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
self.manipulate_object(form)
|
||||||
|
|
||||||
|
for attr in ['title', 'text', 'reason']:
|
||||||
|
setattr(self.version, attr, form.cleaned_data[attr])
|
||||||
|
|
||||||
self.object.save(use_version=self.version)
|
self.object.save(use_version=self.version)
|
||||||
|
|
||||||
# Save the submitter an the supporter so the motion.
|
# Save the submitter an the supporter so the motion.
|
||||||
@ -195,10 +196,13 @@ class MotionCreateView(MotionEditMixin, CreateView):
|
|||||||
return initial
|
return initial
|
||||||
|
|
||||||
def manipulate_object(self, form):
|
def manipulate_object(self, form):
|
||||||
self.version = self.object.get_new_version()
|
"""
|
||||||
|
Sets first state according to given or default workflow and initiates
|
||||||
|
a new version.
|
||||||
|
"""
|
||||||
workflow = form.cleaned_data.get('workflow', config['motion_workflow'])
|
workflow = form.cleaned_data.get('workflow', config['motion_workflow'])
|
||||||
self.object.reset_state(workflow)
|
self.object.reset_state(workflow)
|
||||||
|
self.version = self.object.get_new_version()
|
||||||
|
|
||||||
motion_create = MotionCreateView.as_view()
|
motion_create = MotionCreateView.as_view()
|
||||||
|
|
||||||
@ -234,6 +238,10 @@ class MotionUpdateView(MotionEditMixin, UpdateView):
|
|||||||
return initial
|
return initial
|
||||||
|
|
||||||
def manipulate_object(self, form):
|
def manipulate_object(self, form):
|
||||||
|
"""
|
||||||
|
Resets state if the workflow should change and decides whether to use a
|
||||||
|
new version or the last version.
|
||||||
|
"""
|
||||||
workflow = form.cleaned_data.get('workflow', None)
|
workflow = form.cleaned_data.get('workflow', None)
|
||||||
if (workflow is not None and
|
if (workflow is not None and
|
||||||
workflow != self.object.state.workflow):
|
workflow != self.object.state.workflow):
|
||||||
|
@ -13,7 +13,7 @@ from django.test.client import Client
|
|||||||
from openslides.config.api import config
|
from openslides.config.api import config
|
||||||
from openslides.utils.test import TestCase
|
from openslides.utils.test import TestCase
|
||||||
from openslides.participant.models import User, Group
|
from openslides.participant.models import User, Group
|
||||||
from openslides.motion.models import Motion, State
|
from openslides.motion.models import Motion, State, Category
|
||||||
|
|
||||||
|
|
||||||
class MotionViewTestCase(TestCase):
|
class MotionViewTestCase(TestCase):
|
||||||
@ -140,6 +140,16 @@ class TestMotionCreateView(MotionViewTestCase):
|
|||||||
'submitter': self.admin.person_id})
|
'submitter': self.admin.person_id})
|
||||||
self.assertFormError(response, 'form', 'text', 'This field is required.')
|
self.assertFormError(response, 'form', 'text', 'This field is required.')
|
||||||
|
|
||||||
|
def test_identifier_with_category_prefix(self):
|
||||||
|
category = Category.objects.create(name='category_oosozieh9eBa9aegujee', prefix='prefix_raiLie6keik6Eikeiphi')
|
||||||
|
response = self.admin_client.post(self.url, {'title': 'motion io2iez3Iwoh3aengi5hu',
|
||||||
|
'text': 'motion text thoiveshoongoNg7ceek',
|
||||||
|
'category': 1,
|
||||||
|
'workflow': 1})
|
||||||
|
self.assertEqual(response.status_code, 302)
|
||||||
|
motion = Motion.objects.filter(category=category).get()
|
||||||
|
self.assertEqual(motion.identifier, 'prefix_raiLie6keik6Eikeiphi 1')
|
||||||
|
|
||||||
|
|
||||||
class TestMotionUpdateView(MotionViewTestCase):
|
class TestMotionUpdateView(MotionViewTestCase):
|
||||||
url = '/motion/1/edit/'
|
url = '/motion/1/edit/'
|
||||||
|
Loading…
Reference in New Issue
Block a user