generate quests, but they can't be solved yet

This commit is contained in:
Laura Klünder 2024-12-24 18:50:53 +01:00
parent 38671a7947
commit 2805061c47
5 changed files with 135 additions and 2 deletions

View file

@ -10,7 +10,7 @@ from typing import Sequence
from django.contrib.auth.models import User
from django.db.models import Prefetch
from django.forms import ChoiceField, Form, IntegerField, ModelForm, Select
from django.forms import ChoiceField, Form, IntegerField, ModelForm, Select, MultipleChoiceField
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.utils.translation import ngettext_lazy
@ -21,6 +21,7 @@ from c3nav.mapdata.forms import I18nModelFormMixin
from c3nav.mapdata.models import MapUpdate, Space
from c3nav.mapdata.models.access import (AccessPermission, AccessPermissionToken, AccessPermissionTokenItem,
AccessRestriction, AccessRestrictionGroup)
from c3nav.mapdata.quests import quest_types
from c3nav.site.models import Announcement
@ -28,10 +29,19 @@ class UserPermissionsForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['review_group_reports'].label_from_instance = lambda obj: obj.title
self.fields['allowed_quests'] = MultipleChoiceField(
label=_('Available quests'),
choices=[(key, quest.quest_type_label) for key, quest in quest_types.items()],
initial=self.instance.quests,
)
def save(self, *args, **kwargs):
self.instance.quests = self.cleaned_data['allowed_quests']
super().save()
class Meta:
model = UserPermissions
exclude = ('user', 'max_changeset_changes', 'api_secret')
exclude = ('user', 'max_changeset_changes', 'api_secret', 'quests')
class AccessPermissionForm(Form):

View file

@ -7,6 +7,7 @@ from django.core.cache import cache
from django.db import models, transaction
from django.utils.functional import cached_property, lazy
from django.utils.translation import gettext_lazy as _
from django_pydantic_field.fields import SchemaField
from c3nav.mapdata.models import Space
from c3nav.mapdata.models.access import AccessPermission
@ -41,6 +42,7 @@ class UserPermissions(models.Model):
mesh_control = models.BooleanField(default=False, verbose_name=_('can access mesh control'))
nonpublic_themes = models.BooleanField(default=False, verbose_name=_('show non-public themes in theme selector'))
quests: list[str] = SchemaField(schema=list[str], default=list)
class Meta:
verbose_name = _('User Permissions')