backend.routers.surveys

Survey router.

Handles CRUD operations for member feedback surveys: creating, releasing and closing surveys, managing individual survey fields and collecting per-user responses.

Requires authentication. Create/update/delete operations additionally require the editor or admin role.

Prefix: /surveys | Tag: surveys

backend.routers.surveys.get_surveys_from_db(db, skip=0, limit=20)[source]

Query the database for surveys ordered by creation date.

Parameters:
  • db (Session) – Active SQLAlchemy database session.

  • skip (int) – Number of rows to skip (for pagination).

  • limit (int) – Maximum number of rows to return.

Returns:

List of survey objects.

Return type:

list[models.Surveys]

backend.routers.surveys.read_surveys(db=Depends(dependency=<function get_db>, use_cache=True, scope=None), skip=0, limit=Query(20), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Returns a list of surveys.

Parameters:
  • db (sqlalchemy.orm.Session) – Database session (injected automatically)

  • skip (int) – Number of entries to skip (pagination)

  • limit (int) – Maximum number of surveys to return (max. 100)

  • current (User) – Currently authenticated user (injected automatically)

Returns:

List of surveys, sorted by release date (descending)

Return type:

List[schemas.SurveyList]

backend.routers.surveys.create_survey(survey, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Create a new survey. :param survey: Survey data :param db: Database session (injected automatically) :param current: Currently authenticated user (injected automatically) :return: The created survey

backend.routers.surveys.read_survey(survey_id, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Returns a single survey by its ID.

Parameters:
  • survey_id (int) – The ID of the survey

  • db (sqlalchemy.orm.Session) – Database session (injected automatically)

  • current (User) – Currently authenticated user (injected automatically)

Returns:

The survey with its associated questions

Return type:

schemas.SurveyQuestionOut

Raises:

HTTPException 404 – If no survey with the given ID is found

backend.routers.surveys.update_survey_feedback(survey_id, feedbacks, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Update or create feedback entries for survey fields.

Parameters:
  • survey_id (int) – The ID of the survey

  • feedbacks (List[SurveyFeedbackOut]) – List of feedback entries to update or create

  • db (Session) – Database session (injected automatically)

  • current – Currently authenticated user (injected automatically)

Returns:

The updated survey with all fields and feedback

Raises:

HTTPException 404 – If survey or survey field not found

backend.routers.surveys.append_survey_fields(survey_id, payload, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Append new answer options to an existing open survey.

backend.routers.surveys.delete_survey(survey_id, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Delete a survey by its ID.

Parameters:
  • survey_id (int) – The ID of the survey to delete

  • db (Session) – Database session (injected automatically)

  • current – Currently authenticated user (injected automatically)

Returns:

List of remaining surveys after deletion

Raises:

HTTPException 404 – If no survey with the given ID is found

backend.routers.surveys.close_survey(survey_id, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Close a survey by its ID.

Parameters:
  • survey_id (int) – The ID of the survey to close

  • db (Session) – Database session (injected automatically)

  • current – Currently authenticated user (injected automatically)

Returns:

The closed survey

Raises:

HTTPException 404 – If no survey with the given ID is found

backend.routers.surveys.send_reminder(survey_id, db=Depends(dependency=<function get_db>, use_cache=True, scope=None), current=Depends(dependency=<function get_current_user>, use_cache=True, scope=None))[source]

Send a reminder for a survey.

Parameters:
  • survey_id (int) – The ID of

  • db (Session) – Database session (injected automatically)

  • current – Currently authenticated user (injected automatically)

Returns:

Success message

Raises:

HTTPException 404 – If no survey with the given ID is found