72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Form(s) for the quest page.
|
|
"""
|
|
from django import forms
|
|
|
|
from .models import Quest, Post
|
|
|
|
class DiceCallForm(forms.Form):
|
|
"""
|
|
The form for the QM making dice calls.
|
|
"""
|
|
diceNum = forms.IntegerField(min_value=1, max_value=256)
|
|
diceSides = forms.IntegerField(min_value=1, max_value=65536)
|
|
diceMod = forms.IntegerField(
|
|
min_value=-65536, max_value=65536, required=False)
|
|
diceChal = forms.IntegerField(
|
|
min_value=1, max_value=65536, required=False)
|
|
diceRollsTaken = forms.IntegerField(
|
|
min_value=1, max_value=256, required=False)
|
|
diceStrict = forms.BooleanField(required=False)
|
|
|
|
|
|
class PollForm(forms.Form):
|
|
"""
|
|
The form for the QM making new polls.
|
|
"""
|
|
multi_choice = forms.BooleanField(required=False)
|
|
allow_writein = forms.BooleanField(required=False)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(PollForm, self).__init__(*args, **kwargs)
|
|
data = args[0] # it's not nice to assume
|
|
options = {k: v for k, v in data.items() if k.startswith('pollOption')}
|
|
if len(options) > 20:
|
|
return
|
|
for key, value in options.items():
|
|
if not value:
|
|
continue
|
|
self.fields[key] = forms.CharField(max_length=200)
|
|
|
|
class EditQuestForm(forms.Form):
|
|
"""
|
|
Form for the /edit_quest page.
|
|
"""
|
|
quest_title = forms.CharField(max_length=100)
|
|
anon_name = forms.CharField(max_length=20)
|
|
live = forms.BooleanField(required=False)
|
|
live_date = forms.DateField(required=False)
|
|
live_time = forms.TimeField(required=False)
|
|
timezone = forms.IntegerField()
|
|
description = forms.CharField(max_length=256, required=False)
|
|
banner_url = forms.URLField(required=False)
|
|
|
|
|
|
class QuestForm(forms.ModelForm):
|
|
"""
|
|
The main new quest form.
|
|
"""
|
|
class Meta:
|
|
model = Quest
|
|
fields = ('title', 'description', 'tags', 'banner_url')
|
|
|
|
|
|
class PostForm(forms.ModelForm):
|
|
"""
|
|
The form for beginning the first post of the quest.
|
|
"""
|
|
class Meta:
|
|
model = Post
|
|
fields = ('post_text',)
|