quizApp.forms package¶
Submodules¶
quizApp.forms.activities module¶
Forms for the activities blueprint.
-
class
quizApp.forms.activities.ActivityForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormGeneralized class for creation/updating of Activities
-
class
Meta¶ Bases:
quizApp.forms.activities.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
ActivityForm.category= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Category', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
ActivityForm.include_in_scorecards= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': True, 'label': u'Include this activity in any aggregate scorecards', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ActivityForm.needs_comment= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Allow comments', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ActivityForm.scorecard_settings= <UnboundField(ModelFormField, (<class 'quizApp.forms.common.ScorecardSettingsForm'>,), {})>¶
-
ActivityForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
class
-
class
quizApp.forms.activities.ChoiceForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormForm for creating or updating choices.
-
class
Meta¶ Bases:
quizApp.forms.activities.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
ChoiceForm.choice= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Choice', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
ChoiceForm.correct= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Correct', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ChoiceForm.label= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Label', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
ChoiceForm.points= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': 0, 'label': u'Point value of this choice', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ChoiceForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
class
-
class
quizApp.forms.activities.DatasetListForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.common.ListObjectFormList a bunch of datasets.
-
class
quizApp.forms.activities.IntegerQuestionForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.activities.ActivityFormCreate or update an IntegerQuestion.
-
class
Meta¶ Bases:
quizApp.forms.activities.Meta,wtforms_alchemy.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
IntegerQuestionForm.answer= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Correct answer', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
IntegerQuestionForm.explanation= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Explanation', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
IntegerQuestionForm.lower_bound= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Lower bound', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
IntegerQuestionForm.num_media_items= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Number of media items to show', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>]})>¶
-
IntegerQuestionForm.question= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Question', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.DataRequired object>]})>¶
-
IntegerQuestionForm.upper_bound= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Upper bound', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
class
-
class
quizApp.forms.activities.QuestionForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.activities.ActivityFormForm that can be used for creating or updating questions.
-
class
Meta¶ Bases:
quizApp.forms.activities.Meta,wtforms_alchemy.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
QuestionForm.explanation= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Explanation', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
QuestionForm.num_media_items= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Number of media items to show', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>]})>¶
-
QuestionForm.question= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Question', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.DataRequired object>]})>¶
-
class
-
class
quizApp.forms.activities.ScorecardForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.activities.ActivityFormForm that can be used for creating or updating scorecards.
-
class
Meta¶ Bases:
quizApp.forms.activities.Meta,wtforms_alchemy.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
ScorecardForm.prompt= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': u'', 'label': u'Comment prompt', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
ScorecardForm.title= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': u'', 'label': u'Title', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
class
quizApp.forms.common module¶
Common forms or form elements live here.
-
class
quizApp.forms.common.DeleteObjectForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
flask_wtf.form.FormDisplay a button to delete some object.
-
submit= <UnboundField(SubmitField, ('Delete',), {})>¶
-
-
class
quizApp.forms.common.ListObjectForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
flask_wtf.form.FormA form that has a MultiCheckboxField of some objet.
-
objects= <UnboundField(MultiCheckboxField, (), {'validators': [<wtforms.validators.DataRequired object>]})>¶
-
objects_mapping= {}¶
-
populate_objects(object_pool)[source]¶ Given a list of objects, populate the object field with choices.
-
submit= <UnboundField(SubmitField, ('Submit',), {})>¶
-
-
class
quizApp.forms.common.MultiCheckboxField(label=None, validators=None, coerce=<type 'unicode'>, choices=None, **kwargs)[source]¶ Bases:
wtforms.fields.core.SelectMultipleFieldLike a SelectMultipleField, but use checkboxes instead,
-
option_widget= <wtforms.widgets.core.CheckboxInput object>¶
-
widget= <wtforms.widgets.core.ListWidget object>¶
-
-
class
quizApp.forms.common.ObjectTypeForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
flask_wtf.form.FormSelect an object type from a drop down menu.
-
object_type= <UnboundField(SelectField, ('Type',), {})>¶
-
populate_object_type(mapping)[source]¶ Given a mapping of object types to human readable names, populate the object_type field.
-
submit= <UnboundField(SubmitField, ('Create',), {})>¶
-
-
class
quizApp.forms.common.OrderFormMixin(*args, **kwargs)[source]¶ Bases:
objectThis mixin allows us to set the order of fields in a ModelForm.
To use, specify a
Metaclass in your form class and defineorderas an attribute in theMetaclass.Based on https://gist.github.com/rombr/89d4d9db0229237f40bbd46482764918/
-
class
quizApp.forms.common.ScorecardSettingsForm(*args, **kwargs)[source]¶ Bases:
wtforms_alchemy.ModelFormForm for rendering scorecard options.
-
class
Meta¶ Bases:
quizApp.forms.common.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
ScorecardSettingsForm.display_correctness= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Display correctness on scorecard', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ScorecardSettingsForm.display_feedback= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Display feedback on scorecard', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ScorecardSettingsForm.display_score= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Display points on scorecard', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ScorecardSettingsForm.display_scorecard= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Display scorecards', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
ScorecardSettingsForm.display_time= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Display time on scorecard', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
class
quizApp.forms.datasets module¶
Forms for dataset views.
-
class
quizApp.forms.datasets.DatasetForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormForm for creation or update of a dataset.
-
class
Meta¶ Bases:
quizApp.forms.datasets.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
DatasetForm.info= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Info', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
DatasetForm.name= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Name', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.DataRequired object>, <wtforms.validators.Length object>]})>¶
-
DatasetForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
class
-
class
quizApp.forms.datasets.GraphForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormForm for updating Graph objects.
-
class
Meta¶ Bases:
quizApp.forms.datasets.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
GraphForm.name= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': u'New media item', 'label': u'Name', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
GraphForm.path= <UnboundField(UploadedFileField, ('Replace graph',), {'render_kw': {'accept': 'image/*'}})>¶
-
GraphForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
class
-
class
quizApp.forms.datasets.TextForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormForm for updating Text objects.
-
class
Meta¶ Bases:
quizApp.forms.datasets.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
TextForm.name= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': u'New media item', 'label': u'Name', 'filters': [], 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.Length object>]})>¶
-
TextForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
TextForm.text= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Text', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
class
-
class
quizApp.forms.datasets.UploadedFileField(label=None, validators=None, filters=(), description=u'', id=None, default=None, widget=None, render_kw=None, _form=None, _name=None, _prefix=u'', _translations=None, _meta=None)[source]¶ Bases:
wtforms.fields.simple.FileFieldThis behaves just like FileField, however when
populate_objis called it will overwrite the file pointed to byobj.namewith the uploaded file.obj.directorymust return the directory where the file is to be saved, ifgetattr(obj, name)does not exist.
quizApp.forms.experiments module¶
Forms for the Experiments blueprint.
-
class
quizApp.forms.experiments.ActivityAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
flask_wtf.form.FormForm for rendering a general Activity. Mostly just for keeping track of render and submit time.
-
comment= <UnboundField(TextAreaField, (), {})>¶
-
populate_from_activity(activity)[source]¶ Given an activity, populate defaults/validators/other things of that nature.
This should not stomp on form data. This is called before validation to ensure that user input meets validation requirements.
-
populate_from_assignment(assignment)[source]¶ Given an assignment, perform any processing necessary to display the activity - e.g. populate a list of choices, set field validators, etc.
This will call
populate_from_resultas well aspopulate_from_activity, so it will stomp on any form data in this form. This function is useful to call before rendering rather than before validation.
-
populate_from_result(result)[source]¶ Given a result object, populate this form as necessary.
This will only be called if there is a result object associated with an assignment.
-
render_time= <UnboundField(HiddenField, (), {})>¶
-
result¶ Create a Result object based on this form’s data.
The Result should be appropriate to the type of activity this form is dealing with.
-
submit= <UnboundField(SubmitField, ('Submit',), {})>¶
-
submit_time= <UnboundField(HiddenField, (), {})>¶
-
-
class
quizApp.forms.experiments.ChoiceAnswerFormMixin[source]¶ Bases:
objectMultiselect and singleselect questions both populate their choices in the same way, so this class serves as a base class to handle this.
-
class
quizApp.forms.experiments.CreateExperimentForm(*args, **kwargs)[source]¶ Bases:
quizApp.forms.common.OrderFormMixin,wtforms_alchemy.ModelFormForm for creating or updating an experiment’s properties.
-
class
Meta¶ Bases:
quizApp.forms.experiments.Meta,wtforms_alchemy.Meta,wtforms.meta.DefaultMeta,object
-
CreateExperimentForm.blurb= <UnboundField(TextAreaField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Blurb', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.disable_previous= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u"Don't let participants go back after submitting an activity", 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.flash= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Flash MediaItems when displaying', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.flash_duration= <UnboundField(IntegerField, (), {'widget': None, 'description': '', 'default': 0, 'label': u'Flash duration (ms)', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.name= <UnboundField(StringField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Name', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.DataRequired object>, <wtforms.validators.Length object>]})>¶
-
CreateExperimentForm.scorecard_settings= <UnboundField(ModelFormField, (<class 'quizApp.forms.common.ScorecardSettingsForm'>,), {})>¶
-
CreateExperimentForm.show_scores= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Show score tally during the experiment', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.show_timers= <UnboundField(BooleanField, (), {'widget': None, 'description': '', 'default': None, 'label': u'Show timers on activities', 'filters': [], 'validators': [<wtforms.validators.Optional object>]})>¶
-
CreateExperimentForm.start= <UnboundField(DateTimeField, (), {'widget': None, 'description': '', 'format': '%Y-%m-%d %H:%M:%S', 'default': None, 'label': u'Start', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>]})>¶
-
CreateExperimentForm.stop= <UnboundField(DateTimeField, (), {'widget': None, 'description': '', 'format': '%Y-%m-%d %H:%M:%S', 'default': None, 'label': u'Stop', 'filters': [], 'validators': [<wtforms.validators.InputRequired object>]})>¶
-
CreateExperimentForm.submit= <UnboundField(SubmitField, ('Save',), {})>¶
-
class
-
class
quizApp.forms.experiments.FreeAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.ActivityAnswerFormForm for rendering a free answer Question.
-
result¶
-
text= <UnboundField(TextAreaField, (), {})>¶
-
-
class
quizApp.forms.experiments.IntegerAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.ActivityAnswerFormAllow users to enter an integer as an answer.
-
integer= <UnboundField(IntegerField, (), {})>¶
-
result¶
-
-
class
quizApp.forms.experiments.LikertField(label=None, validators=None, coerce=<type 'unicode'>, choices=None, **kwargs)[source]¶ Bases:
wtforms.fields.core.RadioFieldField for displaying a Likert scale. The only difference from a RadioField is how its rendered, so this class is for rendering purposes.
-
class
quizApp.forms.experiments.MultiSelectAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.ChoiceAnswerFormMixin,quizApp.forms.experiments.ActivityAnswerFormForm for rendering a multiple choice question with check boxes.
-
choices= <UnboundField(MultiCheckboxField, (), {'validators': [<wtforms.validators.DataRequired object>], 'choices': []})>¶
-
result¶
-
-
class
quizApp.forms.experiments.MultipleChoiceAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.ChoiceAnswerFormMixin,quizApp.forms.experiments.ActivityAnswerFormForm for rendering a multiple choice question with radio buttons.
-
choices= <UnboundField(RadioField, (), {'validators': [<wtforms.validators.DataRequired object>], 'choices': []})>¶
-
result¶
-
-
class
quizApp.forms.experiments.ScaleAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.MultipleChoiceAnswerFormForm for rendering a likert scale question.
-
choices= <UnboundField(LikertField, (), {'validators': [<wtforms.validators.DataRequired object>]})>¶
-
-
class
quizApp.forms.experiments.ScorecardAnswerForm(formdata=<class flask_wtf.form._Auto>, obj=None, prefix='', csrf_context=None, secret_key=None, csrf_enabled=None, *args, **kwargs)[source]¶ Bases:
quizApp.forms.experiments.ActivityAnswerFormForm to render when rendering a scorecard.
-
result¶
-