Skip to main content

Interacting with SurveyCTO using Python

Project description

Python library to download data collected on SurveyCTO data collection app using SurveyCTO REST API.

Table of Contents

Installation

Prerequisites

  • Python version >= 3

Install Package

pip install pysurveycto

Usage

Initialize SCTO Object

SurveyCTOObject(server_name,
                username,
                password)

Parameters:

  • server_name (str): SurveyCTO server name

  • username (str): SurveyCTO login username

  • password (str): SurveyCTO login password

Methods:

  • get_form_data(form_id,
                  format='csv',
                  shape='wide',
                  oldest_completion_date=None,
                  review_status=None,
                  repeat_groups=None,
                  line_breaks=None,
                  key=False)

    Fetch SurveyCTO form data in json or csv formats.

    Parameters:

    • form_id (str): The form_id of the SurveyCTO form.

    • format (str, optional): The format of the returned data. Allowed values are: json, csv(default).

    • shape (str, optional): The shape of the returned data. Allowed values are: wide(default), long. shape=’long’ can only be specified when returning data in csv format.

    • oldest_completion_date (datetime.date or datetime.datetime object, optional): Return only the form submissions where CompletionDate is greater than or equal to the given date (in UTC). Can only be specified when returning data in json format.

    • review_status (list, optional): Return only the form submissions with given review status. Allowed values in the list are: approved(default), rejected, pending. This option is only applicable for forms using the “Review and Corrections” workflow on the SurveyCTO web console.

    • repeat_groups (bool, optional): Return a dictionary object containing the main form data along with the repeat groups. Can only be specified when returning long data, in which case it will default to true.

    • line_breaks (str, optional): Replace line breaks in the csv data with some other character.

    • key (str, optional): The private key to decrypt form data in binary/string. This can be used only for json extracts without a review_status parameter.

    Returns: Form data in json or csv (wide or long) format depending on the parameters

  • get_repeatgroup(form_id,
                    repeat_group_name,
                    review_status=None,
                    line_breaks=None)

    Fetch SurveyCTO form’s repeat group data.

    Parameters:

    • form_id (str): The form_id of the SurveyCTO form.

    • repeat_group_name (str): Form’s repeat group name.

    • review_status (list, optional): Return only the form submissions with given review status. Allowed values in the list are: approved(default), rejected, pending. This option is only applicable for forms using the “Review and Corrections” workflow on the SurveyCTO web console.

    • line_breaks (str, optional): Replace line breaks in the csv data with some other character.

    Returns: Repeat group data in csv format

  • get_server_dataset(dataset_id,
                       line_breaks=None)

    Fetch SurveyCTO server dataset data.

    Parameters:

    • dataset_id (str): The server dataset id of the SurveyCTO dataset.

    • line_breaks (str, optional): Replace line breaks in the csv data with some other character.

    Returns: Server dataset data in csv format

  • get_attachment(url,
                   key=False)

    Fetch form’s file attachments like media/audio/images from SurveyCTO.

    Parameters:

    • url (str): The URL to the attached file.

    • key (str, optional): The private key to decrypt an encrypted attachment in binary/string.

    Returns: The url content

  • get_form_definition(form_id)

    Fetch form’s definition from SurveyCTO

    Parameters:

    • form_id (str): The form_id of the SurveyCTO form.

    Returns: The form definition in JSON format

  • get_deployed_form_version(form_id)

    Fetch version of deployed form from SurveyCTO

    Parameters:

    • form_id (str): The form_id of the SurveyCTO form.

    Returns: The form version as a string

Use Cases

  • import pysurveycto
    scto = pysurveycto.SurveyCTOObject(server_name, username, password)
  • Get a wide csv:
    scto.get_form_data(form_id)
  • Get a long csv with all repeat groups (Returns a dictionary with repeat group names as keys and csv data for the repeat groups as values)
    scto.get_form_data(form_id, shape='long')
  • Get a long csv without repeat groups
    scto.get_form_data(form_id, shape='long', repeat_groups=false)
  • Get a wide csv with line breaks replaced with space with only pending-review submissions
    scto.get_form_data(form_id, line_breaks=' ', review_status=['pending'])
  • Get a wide json
    scto.get_form_data(form_id, format='json')
  • Get a wide json with forms completed after a given date (exclusive)
    date_input = datetime.datetime(2020, 1, 12, 13, 42, 42)
    scto.get_form_data(form_id, format='json', oldest_completion_date=date_input)
  • Get a wide json for encrypted form starting after a given CompletionDate
    key_data = open('<path to keyfile>', 'rb')
    scto.get_form_data(form_id, format='json', oldest_completion_date=my_datetime, key=key_data)
  • Get a server dataset with line breaks replaced with space
    scto.get_form_data(dataset_id, line_breaks=' ')
  • Get a media file attachment and save to file
    data = scto.get_attachment(url)
    f = open(file_name, 'wb')
    f.write(data)
    f.close()
  • Get form definition and save to excel file
    data = scto.get_form_definition(form_id)
    questions_df = pd.DataFrame(
        data["fieldsRowsAndColumns"][1:],
        columns=data["fieldsRowsAndColumns"][0],
    )
    choices_df = pd.DataFrame(
        data["choicesRowsAndColumns"][1:],
        columns=data["choicesRowsAndColumns"][0],
    )
    settings_df = pd.DataFrame(
        data["settingsRowsAndColumns"][1:],
        columns=data["settingsRowsAndColumns"][0],
    )
    writer = pd.ExcelWriter(file_name, engine="openpyxl")
    questions_df.to_excel(writer, sheet_name="survey", index=False)
    choices_df.to_excel(writer, sheet_name="choices", index=False)
    settings_df.to_excel(writer, sheet_name="settings", index=False)
    writer.save()
  • Get form version
    version = scto.get_deployed_form_version(form_id)

License

The MIT License (MIT)

SCTO API Options

SCTO API Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysurveycto-0.0.14.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

pysurveycto-0.0.14-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file pysurveycto-0.0.14.tar.gz.

File metadata

  • Download URL: pysurveycto-0.0.14.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pysurveycto-0.0.14.tar.gz
Algorithm Hash digest
SHA256 905e844bf7b5f8707a69c938f7794c9258a05759867f0fb8121d5a422393586b
MD5 b64078c892e5eeadd294de6cf0c8de33
BLAKE2b-256 e00cfce9b6c00a3d16fea9243b126f7013295d59b0a7bd798213f7ee1b00cb51

See more details on using hashes here.

File details

Details for the file pysurveycto-0.0.14-py3-none-any.whl.

File metadata

File hashes

Hashes for pysurveycto-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 090994c041e63ef1aaa0c7232befe860aa5d28d46a1987941441d4a7cef45749
MD5 ffc857341ba7838c47f30831e7780b88
BLAKE2b-256 b1b4b56b8ea045127a9ff37ca6f023f679f9e86a9f0b421a845027d8bcbebd61

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page