Survey¶
Todo
Docstrings (module, models)
Models¶
- class indico.modules.events.surveys.models.surveys.Survey(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- anonymous¶
Whether submissions will not be linked to a user
- can_submit(user)¶
- close()¶
- end_dt¶
Datetime when the survey is closed
- event¶
The Event containing this survey
- event_id¶
The ID of the event
- has_ended¶
- has_started¶
- id¶
The ID of the survey
- introduction¶
- is_active¶
- is_deleted¶
Whether the survey has been marked as deleted
- is_visible¶
- items¶
The list of items
- property limit_reached¶
- locator()¶
Define a smart locator property.
This behaves pretty much like a normal read-only property and the decorated function should return a dict containing the necessary data to build a URL for the object.
This decorator should usually be applied to a method named
locator
as this name is required for get_locator to find it automatically when just passing the object.If you need more than one locator, you can define it like this:
@locator_property def locator(self): return {...} @locator.other def locator(self): return {...}
The
other
locator can then be accessed by passingobj.locator.other
to the code expecting an object with a locator.
- new_submission_emails¶
Email addresses to notify about new submissions
- notifications_enabled¶
Whether to send survey related notifications to users
- notify_participants¶
Whether include Participants / Registrants when sending start notifications
- open()¶
- partial_completion¶
Whether answers can be saved without submitting the survey
- private¶
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- questions¶
The list of questions
- require_user¶
Whether submissions must be done by logged users
- sections¶
The list of sections
- send_start_notification()¶
- send_submission_notification(submission)¶
- start_dt¶
Datetime when the survey is open
- start_notification_emails¶
Email addresses to notify about the start of a survey
- property start_notification_recipients¶
Return all recipients of the notifications.
This includes both explicit recipients and, if enabled, participants of the event.
- start_notification_sent¶
Whether start notification has been already sent
- property state¶
- submission_limit¶
Maximum number of submissions allowed
- submissions¶
The list of submissions
- title¶
The title of the survey
- uuid¶
- class indico.modules.events.surveys.models.surveys.SurveyState(value)¶
An enumeration.
- active_and_answered = 4¶
- active_and_clean = 3¶
- finished = 5¶
- limit_reached = 6¶
- not_ready = 1¶
- ready_to_open = 2¶
- class indico.modules.events.surveys.models.items.SurveyItem(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- default_render_mode = 2¶
- display_as_section¶
If a section should be rendered as a section
- field_data¶
Field-specific data (such as choices for multi-select fields)
- field_type¶
The type of the field used for the question
- id¶
The ID of the item
- is_required¶
If the question must be answered (wtforms DataRequired)
- parent_id¶
The ID of the parent section item (NULL for top-level items, i.e. sections)
- position¶
The position of the item in the survey form
- possible_render_modes = {RenderMode.markdown}¶
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- render_mode = 2¶
- survey_id¶
The ID of the survey
- title¶
The title of the item
- to_dict()¶
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
- type¶
The type of the survey item
- class indico.modules.events.surveys.models.items.SurveyItemType(value)¶
An enumeration.
- question = 1¶
- section = 2¶
- text = 3¶
- class indico.modules.events.surveys.models.items.SurveyQuestion(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- display_as_section¶
If a section should be rendered as a section
- property field¶
- field_data¶
Field-specific data (such as choices for multi-select fields)
- field_type¶
The type of the field used for the question
- get_summary(**kwargs)¶
Return the summary of answers submitted for this question.
- id¶
The ID of the item
- is_required¶
If the question must be answered (wtforms DataRequired)
- property locator¶
- property not_empty_answers¶
- parent_id¶
The ID of the parent section item (NULL for top-level items, i.e. sections)
- position¶
The position of the item in the survey form
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- render_mode = 2¶
- survey_id¶
The ID of the survey
- title¶
The title of the item
- to_dict()¶
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
- type¶
The type of the survey item
- class indico.modules.events.surveys.models.items.SurveySection(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- children¶
The child items of this section
- display_as_section¶
If a section should be rendered as a section
- field_data¶
Field-specific data (such as choices for multi-select fields)
- field_type¶
The type of the field used for the question
- id¶
The ID of the item
- is_required¶
If the question must be answered (wtforms DataRequired)
- property locator¶
- parent_id¶
The ID of the parent section item (NULL for top-level items, i.e. sections)
- position¶
The position of the item in the survey form
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- render_mode = 2¶
- survey_id¶
The ID of the survey
- title¶
The title of the item
- to_dict()¶
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
- type¶
The type of the survey item
- class indico.modules.events.surveys.models.items.SurveyText(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- display_as_section¶
If a section should be rendered as a section
- field_data¶
Field-specific data (such as choices for multi-select fields)
- field_type¶
The type of the field used for the question
- id¶
The ID of the item
- is_required¶
If the question must be answered (wtforms DataRequired)
- property locator¶
- parent_id¶
The ID of the parent section item (NULL for top-level items, i.e. sections)
- position¶
The position of the item in the survey form
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- render_mode = 2¶
- survey_id¶
The ID of the survey
- title¶
The title of the item
- to_dict()¶
Return a json-serializable representation of this object.
Subclasses must add their own data to the dict.
- type¶
The type of the survey item
- class indico.modules.events.surveys.models.submissions.SurveyAnswer(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- property answer_data¶
- data¶
The user’s answer (no, not 42!) to the question
- property is_empty¶
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- question¶
The list of answers
- question_id¶
The ID of the question
- submission_id¶
The ID of the submission
- class indico.modules.events.surveys.models.submissions.SurveySubmission(**kwargs)¶
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs
.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- answers¶
The list of answers
- friendly_id¶
The human-friendly ID of the submission
- id¶
The ID of the submission
- is_anonymous¶
Whether the survey submission is anonymous
- is_submitted¶
Whether the survey was submitted
- property locator¶
- pending_answers¶
List of non-submitted answers
- query: IndicoBaseQuery¶
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model)
. Can be customized per-model by overridingquery_class
.Warning
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())
instead.
- submitted_dt¶
The date/time when the survey was submitted
- survey_id¶
The ID of the survey
- user¶
The user who submitted the survey
- user_id¶
The ID of the user who submitted the survey
Operations¶
- indico.modules.events.surveys.operations.add_survey_question(section, field_cls, data)¶
Add a question to a survey.
- Parameters
section – The SurveySection to which the question will be added.
field_cls – The field class of this question.
data – The FieldConfigForm.data to populate the question with.
- Returns
The added SurveyQuestion.
- indico.modules.events.surveys.operations.add_survey_section(survey, data)¶
Add a section to a survey.
- Parameters
survey – The Survey to which the section will be added.
data – Attributes of the new SurveySection.
- Returns
The added SurveySection.
- indico.modules.events.surveys.operations.add_survey_text(section, data)¶
Add a text item to a survey.
- Parameters
section – The SurveySection to which the question will be added.
data – The TextForm.data to populate the question with.
- Returns
The added SurveyText.
Utilities¶
- indico.modules.events.surveys.util.generate_spreadsheet_from_survey(survey, submission_ids)¶
Generate spreadsheet data from a given survey.
- Parameters
survey – Survey for which the user wants to export submissions
submission_ids – The list of submissions to include in the file
- indico.modules.events.surveys.util.get_events_with_submitted_surveys(user, dt=None)¶
Get the IDs of events where the user submitted a survey.
- Parameters
user – A User
dt – Only include events taking place on/after that date
- Returns
A set of event ids
- indico.modules.events.surveys.util.is_submission_in_progress(survey)¶
Check whether the current user has a survey submission in progress.
- indico.modules.events.surveys.util.make_survey_form(survey)¶
Create a WTForm from survey questions.
Each question will use a field named
question_ID
.- Parameters
survey – The Survey for which to create the form.
- Returns
An IndicoForm subclass.
- indico.modules.events.surveys.util.query_active_surveys(event)¶
- indico.modules.events.surveys.util.save_submitted_survey_to_session(submission)¶
Save submission of a survey to session for further checks.
- indico.modules.events.surveys.util.was_survey_submitted(survey)¶
Check whether the current user has submitted a survey.