Skip to content
Snippets Groups Projects
Verified Commit 8feafa43 authored by magicfelix's avatar magicfelix
Browse files

Allow specifying vote groups for rankings

parent f0f3ddca
No related branches found
No related tags found
No related merge requests found
Pipeline #195634 failed
...@@ -43,7 +43,12 @@ class AbiGroupForm(forms.ModelForm): ...@@ -43,7 +43,12 @@ class AbiGroupForm(forms.ModelForm):
class RankingCategoryForm(forms.ModelForm): class RankingCategoryForm(forms.ModelForm):
layout = Layout( layout = Layout(
"name", "instruction_text", "group", "number_of_persons", "number_of_persons_per_weight" "name",
"instruction_text",
"voter_groups",
"group",
"number_of_persons",
"number_of_persons_per_weight",
) )
class Meta: class Meta:
...@@ -51,6 +56,7 @@ class RankingCategoryForm(forms.ModelForm): ...@@ -51,6 +56,7 @@ class RankingCategoryForm(forms.ModelForm):
fields = [ fields = [
"name", "name",
"instruction_text", "instruction_text",
"voter_groups",
"group", "group",
"number_of_persons", "number_of_persons",
"number_of_persons_per_weight", "number_of_persons_per_weight",
...@@ -184,6 +190,12 @@ def ranking_form_factory(request: HttpRequest) -> forms.Form: ...@@ -184,6 +190,12 @@ def ranking_form_factory(request: HttpRequest) -> forms.Form:
rankings_by_user = Ranking.objects.filter(ranked_by=request.user.person.abi_person) rankings_by_user = Ranking.objects.filter(ranked_by=request.user.person.abi_person)
for category in RankingCategory.objects.all(): for category in RankingCategory.objects.all():
if (
category.voter_groups.count() > 0
and not category.voter_groups.filter(members=request.user.person.abi_person).exists()
):
continue
field_layout.setdefault(category, []) field_layout.setdefault(category, [])
instruction_field = forms.CharField(widget=PlainTextWidget(), required=False) instruction_field = forms.CharField(widget=PlainTextWidget(), required=False)
......
# Generated by Django 3.2.16 on 2023-01-14 14:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('abi', '0016_rename_field_profilefieldvalue_profile_field'),
]
operations = [
migrations.AddField(
model_name='rankingcategory',
name='voter_groups',
field=models.ManyToManyField(blank=True, help_text='Only persons in these groups will be able to vote. Leave empty to allow all groups.', null=True, related_name='ranking_categories_voters', to='abi.AbiGroup', verbose_name='Voter Groups'),
),
]
...@@ -213,6 +213,16 @@ class RankingCategory(ExtensibleModel): ...@@ -213,6 +213,16 @@ class RankingCategory(ExtensibleModel):
blank=True, blank=True,
help_text=_("This will be shown under the ranking's name on the ranking page."), help_text=_("This will be shown under the ranking's name on the ranking page."),
) )
voter_groups = models.ManyToManyField(
to=AbiGroup,
verbose_name=_("Voter Groups"),
help_text=_(
"Only persons in these groups will be able to vote. Leave empty to allow all groups."
),
related_name="ranking_categories_voters",
blank=True,
null=True,
)
group = models.ForeignKey( group = models.ForeignKey(
to=AbiGroup, to=AbiGroup,
on_delete=models.CASCADE, on_delete=models.CASCADE,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment