Skip to main content
2025 Python Packaging Survey is now live!  Take the survey now

asyncio REST API Resource database

Project description

Introduction

https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat https://travis-ci.org/plone/guillotina.svg?branch=master Test Coverage Python Versions https://img.shields.io/pypi/v/guillotina.svg License Chat

Please read the detailed docs

This is the working project of the next generation Guillotina server based on asyncio.

Dependencies

  • python >= 3.6

  • postgresql >= 9.6

Quickstart

We use pip:

pip install guillotina

Run postgresql

If you don’t have a postgresql server to play with, you can run one easily with docker.

Download and start the docker container by running:

make run-postgres

Run the server

To run the server:

g

Then…

curl http://localhost:8080

Or, better yet, use postman to start playing with API.

You can also navigate in your Guillotina server with its built-in web admin interface by visiting http://localhost:8080/+admin/.

Deploy on Heroku

Read more Guillotina-Heroku.

https://www.herokucdn.com/deploy/button.svg

Getting started with development

Using pip(requires python > 3.6):

git clone git@github.com:plone/guillotina.git
cd guillotina
python -m venv .
./bin/pip install -r requirements.txt
./bin/pip install -e .[test]

Run tests

We’re using pytest:

./bin/pytest guillotina

and for test coverage:

./bin/pytest --cov=guillotina guillotina/

With file watcher…

./bin/ptw guillotina –runner=./bin/py.test

To run tests with cockroach db:

USE_COCKROACH=true ./bin/pytest guillotina

Default

Default root access can be done with AUTHORIZATION header : Basic root:root

Docker

You can also run Guillotina with Docker!

First, run postgresql:

docker run --rm \
    -e POSTGRES_DB=guillotina \
    -e POSTGRES_USER=guillotina \
    -p 127.0.0.1:5432:5432 \
    --name postgres \
    postgres:9.6

Then, run guillotina:

docker run --rm -it \
    --link=postgres -p 127.0.0.1:8080:8080 \
    guillotina/guillotina:latest \
    g -c '{"databases": [{"db": {"storage": "postgresql", "dsn": "postgres://guillotina:@postgres/guillotina"}}], "root_user": {"password": "root"}}'

This assumes you have a config.yaml in your current working directory

Chat

Join us to talk about Guillotina at https://gitter.im/plone/guillotina

CHANGELOG

4.9.1 (2019-08-01)

  • Fix bug when working with multiple databases/transaction managers with same request [vangheem]

4.9.0 (2019-08-01)

  • Fix release number

4.8.20 (2019-08-01)

  • New guillotina.fields.BucketDictField [vangheem]

  • New @fieldvalue/{field name or dotted behavior + field name} endpoint [vangheem]

4.8.19 (2019-07-28)

  • Only register object for writing if base object changed. Otherwise, changes to behavior data was also causing writes to the object it was associated with [vangheem]

4.8.18 (2019-07-26)

  • Add x-virtualhost-path header support for url generation [vangheem]

4.8.17 (2019-07-25)

  • Make Tuple type work with patch field [vangheem]

  • Make IDublinCore.tags a patch field [vangheem]

  • Add appendunique and extendunique to patch field operations [vangheem]

4.8.16 (2019-07-24)

  • Fix exhausted retries conflict error response [vangheem]

4.8.15 (2019-07-23)

  • Make sure field name of patch field is set before using [vangheem]

4.8.14 (2019-07-23)

  • Fix: just skip indexing attributes from schemas that object does not adapt to [lferran]

  • Improve request memory usage [vangheem]

4.8.13 (2019-07-15)

  • Allow modifying app settings from pytest marks [lferran]

  • Merge CORS headers [qiwn]

  • Fix managed_transaction() crashes when request and tm are not provided [masipcat]

4.8.12 (2019-07-08)

  • Handle CancelledError on application cleanup. This seems to happen with uvloop [vangheem]

4.8.11 (2019-06-28)

  • Cache JSONField schema validator object [vangheem]

  • JSONField works with dict instead of requiring str(which is then converted to dict anyways) [vangheem]

  • A few more antipattern fixes [lferran]

4.8.10 (2019-06-26)

  • Fix indexing data potentially missing updated content when fields for accessor is not specified [vangheem]

  • Fix events antipattern [lferran]

4.8.9 (2019-06-17)

  • bump

4.8.8 (2019-06-17)

  • Emit events for registry configuration changes [vangheem]

4.8.7 (2019-06-14)

  • Add field mappings for test field [lferran]

4.8.6 (2019-06-10)

  • Fix @move enable to allow being able to use it for renaming [vangheem]

4.8.5 (2019-06-07)

  • Be compatible with aiohttp > 3 < 4 [vangheem]

  • Make sure utility you are providing also provides the interface you are creating it for in load_utilities. Before, it would not automatically apply the interface for you. [vangheem]

4.8.4 (2019-06-06)

  • Fix aiohttp startup bug [vangheem]

  • propagate unique violation errors on deletion as they should not happen anymore unless db hasn’t been migrated [vangheem]

You are seeing a truncated changelog.

You can read the changelog file for a complete list.

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