Skip to main content

Interacting with SurveyCTO using Python

Project description

pysurveycto

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.
    • date (datetime.date or datetime.datetime object, optional): Return only the form submissions where CompletionDate is greater than 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 linebreaks 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 repeatgroup 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 linebreaks 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 linebreaks 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 encrupted attachment in binary/string.

    Returns: The url content

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 repeat groups

    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 linebreaks 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 linebreaks 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()
    

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.6.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysurveycto-0.0.6-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pysurveycto-0.0.6.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for pysurveycto-0.0.6.tar.gz
Algorithm Hash digest
SHA256 1a1bbed19c109ddf96c6e0ac761dc0b058fd77def81a821a4fe08a3512923646
MD5 b7a59466a2ee08998ca2cf55b7c8e5a4
BLAKE2b-256 f01d7cd97f605b0ffa33c76e6c69570f5bbd0d2fc31282a58ddc36b901867436

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pysurveycto-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for pysurveycto-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a1611c9e124904fbc2d29152c05931d3cc4a96e7a45bc6fffaeff91df08b30a2
MD5 5a59b930617489cf1cae21e5fff8ee50
BLAKE2b-256 4e5db6e8c835c268bb62be3926122cbc4d4c7c8e2145fdebadd3bd4a7a5a15cf

See more details on using hashes here.

Supported by

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