Source code for quizApp.forms.activities
"""Forms for the activities blueprint.
"""
from wtforms import SubmitField
from wtforms_alchemy import ModelForm, ModelFormField
from quizApp.forms.common import ListObjectForm, OrderFormMixin,\
ScorecardSettingsForm
from quizApp.models import Choice, Question, Activity, \
IntegerQuestion, Scorecard
[docs]class ActivityForm(OrderFormMixin, ModelForm):
"""Generalized class for creation/updating of Activities
"""
class Meta(object):
"""Specify model and field order.
"""
model = Activity
order = ('question', '*', 'needs_comment', 'include_in_scorecards',
'scorecard_settings', 'submit')
scorecard_settings = ModelFormField(ScorecardSettingsForm)
submit = SubmitField("Save")
[docs]def get_activity_form(activity, *args, **kwargs):
"""Return the update form for the actiivty of the given type.
"""
activity_form_mapping = {
"question_mc_singleselect": QuestionForm,
"question_mc_multiselect": QuestionForm,
"question_freeanswer": QuestionForm,
"question_mc_singleselect_scale": QuestionForm,
"question_integer": IntegerQuestionForm,
"scorecard": ScorecardForm,
}
return activity_form_mapping[activity.type](*args, **kwargs)
[docs]class ScorecardForm(ActivityForm):
"""Form that can be used for creating or updating scorecards.
"""
class Meta(object):
"""Specify model and field order.
"""
model = Scorecard
[docs]class QuestionForm(ActivityForm):
"""Form that can be used for creating or updating questions.
"""
class Meta(object):
"""Specify model and field order.
"""
model = Question
[docs]class IntegerQuestionForm(ActivityForm):
"""Create or update an IntegerQuestion.
"""
class Meta(object):
"""Specify model and field order.
"""
model = IntegerQuestion
[docs]class DatasetListForm(ListObjectForm):
"""List a bunch of datasets.
"""
[docs] def get_choice_tuple(self, dataset):
self.objects.choices.append((str(dataset.id), dataset.name))
[docs]class ChoiceForm(OrderFormMixin, ModelForm):
"""Form for creating or updating choices.
"""
class Meta(object):
"""Specify model and field order.
"""
model = Choice
order = ('*', 'submit')
submit = SubmitField("Save")