diff --git a/client/src/app/shared/models/assignments/assignment.ts b/client/src/app/shared/models/assignments/assignment.ts
index 620126972..f58e01a38 100644
--- a/client/src/app/shared/models/assignments/assignment.ts
+++ b/client/src/app/shared/models/assignments/assignment.ts
@@ -10,6 +10,7 @@ export interface AssignmentWithoutNestedModels extends BaseModelWithAgendaItemAn
default_poll_description: string;
tags_id: number[];
attachments_id: number[];
+ number_poll_candidates: boolean;
}
/**
diff --git a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html
index 563566f66..cd177e365 100644
--- a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html
+++ b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html
@@ -301,6 +301,13 @@
}}
+
+
+
+
+ Number poll candidates
+
+
diff --git a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.ts b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.ts
index bf795e250..a76a7eec1 100644
--- a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.ts
+++ b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.ts
@@ -193,7 +193,8 @@ export class AssignmentDetailComponent extends BaseViewComponent implements OnIn
open_posts: [1, [Validators.required, Validators.min(1)]],
agenda_create: [''],
agenda_parent_id: [],
- agenda_type: ['']
+ agenda_type: [''],
+ number_poll_candidates: [false]
});
this.candidatesForm = formBuilder.group({
userId: null
diff --git a/openslides/assignments/migrations/0008_voting_1.py b/openslides/assignments/migrations/0008_voting_1.py
index e220a4748..1e80fb5be 100644
--- a/openslides/assignments/migrations/0008_voting_1.py
+++ b/openslides/assignments/migrations/0008_voting_1.py
@@ -129,6 +129,11 @@ class Migration(migrations.Migration):
),
preserve_default=False,
),
+ migrations.AddField(
+ model_name="assignment",
+ name="number_poll_candidates",
+ field=models.BooleanField(default=False),
+ ),
migrations.AlterField(
model_name="assignment",
name="poll_description_default",
diff --git a/openslides/assignments/models.py b/openslides/assignments/models.py
index a268c69e0..b040052df 100644
--- a/openslides/assignments/models.py
+++ b/openslides/assignments/models.py
@@ -153,6 +153,11 @@ class Assignment(RESTModelMixin, AgendaItemWithListOfSpeakersMixin, models.Model
Mediafiles as attachments for this assignment.
"""
+ number_poll_candidates = models.BooleanField(default=False)
+ """
+ Controls whether the candidates in polls for this assignment should be numbered or listed with bullet points.
+ """
+
class Meta:
default_permissions = ()
permissions = (
diff --git a/openslides/assignments/serializers.py b/openslides/assignments/serializers.py
index 13ed729d8..ec9755cf5 100644
--- a/openslides/assignments/serializers.py
+++ b/openslides/assignments/serializers.py
@@ -169,6 +169,7 @@ class AssignmentSerializer(ModelSerializer):
"agenda_parent_id",
"tags",
"attachments",
+ "number_poll_candidates",
)
validators = (posts_validator,)
diff --git a/tests/integration/assignments/test_viewset.py b/tests/integration/assignments/test_viewset.py
index 2ebbba7ee..db874641e 100644
--- a/tests/integration/assignments/test_viewset.py
+++ b/tests/integration/assignments/test_viewset.py
@@ -42,10 +42,6 @@ class CreateAssignment(TestCase):
Tests basic creation of assignments.
"""
- def setUp(self):
- self.client = APIClient()
- self.client.login(username="admin", password="admin")
-
def test_simple(self):
response = self.client.post(
reverse("assignment-list"),
@@ -54,6 +50,7 @@ class CreateAssignment(TestCase):
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
assignment = Assignment.objects.get()
self.assertEqual(assignment.title, "test_title_ef3jpF)M329f30m)f82")
+ self.assertEqual(assignment.number_poll_candidates, False)
def test_with_tags_and_mediafiles(self):
Tag.objects.create(name="test_tag")
@@ -75,6 +72,19 @@ class CreateAssignment(TestCase):
self.assertTrue(assignment.tags.exists())
self.assertTrue(assignment.attachments.exists())
+ def test_number_poll_candidates(self):
+ response = self.client.post(
+ reverse("assignment-list"),
+ {
+ "title": "test_title_EFBhGQkQciwZtjSc7BVy",
+ "open_posts": 1,
+ "number_poll_candidates": True,
+ },
+ )
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+ assignment = Assignment.objects.get()
+ self.assertEqual(assignment.number_poll_candidates, True)
+
class CandidatureSelf(TestCase):
"""