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.7

  • 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
python3.7 -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

5.0.0a3 (2019-06-21)

  • Add guillotina.contrib.swagger

5.0.0a2 (2019-06-19)

  • Missing mypy requirement

  • Fix catalog interface

  • Fix catalog not working with db schemas

  • Update intro docs

5.0.0a1 (2019-06-19)

  • Fix events antipattern [lferran]

  • Rename utils.get_object_by_oid to utils.get_object_by_uid

  • Emit events for registry configuration changes

  • Default catalog interface removes the following methods: get_by_uuid, get_by_type, get_by_path, get_folder_contents. Keep interfaces simple, use search/query.

  • Allow modifying app settings from pytest marks [lferran]

  • No longer setup fake request with login for base command

  • Moved ISecurityPolicy.cached_principals to module level function guillotina.security.policy.cached_principals

  • Moved ISecurityPolicy.cached_roles to module level function guillotina.security.policy.cached_roles

  • utils.get_authenticated_user_id no longer accepts request param

  • utils.get_authenticated_user no longer accepts request param

  • Removed guillotina.exceptions.NoInteraction

  • Removed guillotina.interfaces.IInteraction

  • auth_user_identifiers no longer accept IRequest in the constructor. Use utils.get_current_request

  • auth_user_identifiers no longer accept IRequest in constructor. Use utils.get_current_request

  • Remove IInteraction. Use guillotina.utils.get_security_policy()

  • Remove Request._db_write_enabled, Transaction now has read_only property

  • Remove Request._db_id, Use guillotina.task_vars.db.get().id

  • Remove Request.container_settings, Use guillotina.utils.get_registry

  • Remove Request._container_id, use guillotina.task_vars.container.get().id

  • Remove Request.container, Use guillotina.task_vars.container.get()

  • Remove Request.add_future. Use guillotina.utils.execute.add_future

  • Add guillotina.utils.get_current_container

  • Rename request_indexer setting to indexer

  • Rename guillotina.catalog.index.RequestIndexer to guillotina.catalog.index.Indexer

  • Rename IWriter.parent_id to IWriter.parent_uid

  • Rename guillotina.db.oid to guillotina.db.uid

  • Rename oid_generate setting to uid_generator

  • Rename BaseObject._p_register -> BaseObject.register

  • Rename BaseObject._p_serial -> BaseObject.__serial__

  • Rename BaseObject._p_oid -> BaseObject.__uuid__

  • Rename BaseObject._p_jar -> BaseObject.__txn__

  • separate transaction from request object

  • rename guillotina.transactions.managed_transaction to guillotina.transactions.transaction

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 Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page