A client to the LimeSurvey Remote Control API 2, written in modern Python.
Project description
Citric
A client to the LimeSurvey Remote Control API 2, written in modern Python.
Features
Low-level JSON-RPC API
For the full reference, see the RemoteControl 2 API docs.
from citric import Client
LS_URL = "http://localhost:8001/index.php/admin/remotecontrol"
with Client(LS_URL, 'iamadmin', 'secret') as client:
# Get all surveys from user 'iamadmin'
surveys = client.list_surveys('iamadmin')
for s in surveys:
print(s["surveyls_title"])
# Get all questions, regardless of group
questions = client.list_questions(s["sid"])
for q in questions:
print(q["title"], q["question"])
Development
Use pyenv to setup default Python versions for this repo:
pyenv local 3.10.0 3.9.7 3.8.11 3.7.11 3.6.14
Install project dependencies
poetry install
Docker
You can setup a local instance of LimeSurvey with Docker Compose:
docker-compose up -d
Now you can access LimeSurvey at port 8001.
Import an existing survey file and start testing with it:
from citric import Client
LS_URL = "http://localhost:8001/index.php/admin/remotecontrol"
SURVEY_FILE = "examples/limesurvey_survey_432535.lss"
with Client(LS_URL, "iamadmin", "secret") as client:
# Import survey from a file
survey_id = client.import_survey(SURVEY_FILE, "lss")
print("New survey:", survey_id)
Testing
This project uses nox
for running tests and linting on different Python versions:
pip install --user --upgrade nox
nox -r
Run only a linting session
nox -rs lint
pre-commit
pip install --user --upgrade pre-commit
pre-commit install
Releasing an upgrade
Bump the package version
poetry version <version>
poetry publish
Credits
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
citric-0.0.1.tar.gz
(10.8 kB
view hashes)
Built Distribution
citric-0.0.1-py3-none-any.whl
(10.2 kB
view hashes)