Skip to main content

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 Docker Cloud Build Status

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

git clone git@github.com:plone/guillotina.git
cd guillotina
python3.7 -m venv .
./bin/pip install -r requirements.txt
./bin/pip install -r contrib-requirements.txt
./bin/pip install -e '.[test]'
./bin/pre-commit install

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 \
    plone/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

6.0.8 (2020-09-24)

  • mailer: import ‘aiosmtplib’ and ‘html2text’ lazily [masipcat]

  • Cleanup travis logic from test fixtures [lferran]

  • settings: always convert ‘pool_size’ to int [masipcat]

6.0.7 (2020-09-09)

  • Add IFileNameGenerator adapter [qiwn]

6.0.6 (2020-08-25)

  • Pass ‘server_settings’ in ‘connection_options’ to asyncpg pool [masipcat]

6.0.5 (2020-08-11)

  • Fix register schema [bloodbare]

  • Fix async test without pytest mark [masipcat]

6.0.4 (2020-07-29)

  • fix release

6.0.3 (2020-07-29)

  • Cookiecutter: fix test_install.py [masipcat]

  • test deps: unpin pytest-asyncio [masipcat]

  • doc: fix md headers (h1 -> h2) and other small fixes [masipcat]

  • doc: fix example app [masipcat]

  • Fix sphinx-build [masipcat]

  • Make sure it does not fail on empty field [bloodbare]

6.0.2 (2020-07-10)

  • Set load_catalog=true in test settings [masipcat]

6.0.1 (2020-07-09)

  • Also allow JWT sub claim for loginid [allusa]

6.0.0 (2020-06-17)

  • Nothing changed yet.

6.0.0b6 (2020-06-17)

  • Undo datetime object renderization on guillotina_json_default. [lferran]

  • Be able to define optional requestBody [lferran]

  • Fix registry update, when type provided mismatch with the one specified by the schema return an error HTTP status code instead of throwing an exception. [pfreixes]

6.0.0b5 (2020-06-08)

  • Few fixes & improvements: [lferran] - Fix JSONField validation error - Add unit tests for middleware generate error response - Add path_qs to Request object - Add content_length to Request object - Fix datetime objects renderization

  • Optimize json schema ref resolution to not make so copies of all json schema definition for every validator instance [vangheem]

  • Fix json schema ref resolution for nested objects [vangheem]

  • Catalog subscribers conditional loading [bloodbre]

  • Allow arbitrary path parameter within the path parameters [dmanchon]

6.0.0b4 (2020-05-23)

  • Allow to delete elements with the same id at cockroach [bloodbare]

  • Split blob and objects initialization statements [bloodbare]

  • Allow to ovewrite object table name and blob table name [bloodbare]

  • Bug fix: handle raw strings in json payload [lferran]

  • swagger tags fixes [ableeb]

  • Move from travis to github actions [lferran]

6.0.0b3 (2020-04-24)

  • Provide patch operations for json field [vangheem]

  • Optimize extend operation for bucket list field [vangheem]

  • . and .. should be blocked as valid ids. The browser will auto translate them to what current dir and parent dir respectively which gives unexpected results. [vangheem]

  • Change in ISecurityPolicy that might improve performance during traversal for views with permission guillotina.Public [masipcat]

  • Fix Response object responding with ‘default_content’ when ‘content’ evaluates to False [masipcat]

  • Change log level for conflict errors to warning and fix locating tid of conflict error [vangheem]

  • Fix security policy not taking into account IInheritPermissionMap for principals [masipcat,bloodbare]

  • Fix use of int32 sql interpolation when it should have been bigint for tid [vangheem]

  • Restore task vars after usage of Content API

  • Zope.interface 5.0.1 upgrade [bloodbare]

6.0.0b2 (2020-03-25)

  • Fix move(obj) fires IBeforeObjectMovedEvent after modifying the object [masipcat]

  • Error handling: ValueDeserializationError editing registry value [vangheem]

  • Handle db transaction closed while acquiring transaction lock [vangheem]

  • Handle db transaction closed while acquiring lock [vangheem]

  • Handle connection errors on file head requests [vangheem]

  • Update README [psanlorenzo]

6.0.0b1 (2020-03-18)

  • Use orjson instead of json/ujson [masipcat]

  • AsgiStreamReader.read() can return bytes or bytearray [masipcat]

6.0.0a16 (2020-03-12)

  • Changes in ICatalogUtility, DefaultSearchUtility and @search endpoints [masipcat]

  • Update react-gmi v 0.4.0 [jordic]

  • Fix more antipatterns [lferran]

  • Fix integer query param validation [lferran]

6.0.0a15 (2020-03-02)

  • Handle http.disconnect (and other types of messages) while reading the request body [masipcat]

  • Be able to have async schema invariants [vangheem]

  • Provide better validation for json schema field [vangheem]

6.0.0a14 (2020-02-26)

  • Change AttributeError to HTTPPreconditionFailed in FileManager [masipcat]

  • Reverted “Replaced Response.content_{type,length} with Response.set_content_{type,length}”. Using setter to avoid breaking Response.content_{type,length} = … [masipcat]

  • Handle error when “None” value provided for behavior data [vangheem]

  • Handle connection reset errors on file download [vangheem]

6.0.0a13 (2020-02-20)

  • Changed error handling logic: Guillotina (asgi app) catches all errors and returns a response for the ones that implements the handler IErrorResponseException. Otherwise raises the exception and is handled by ErrorsMiddleware [masipcat]

  • Add “endpoint” in scope to let sentry know the view associated to the request [masipcat]

  • Request.read() can return bytes or bytesarray [masipcat]

  • Replaced Response.content_{type,length} with Response.set_content_{type,length} [masipcat]

  • Breaking API change: Search GET Search get responds a json with items and items_total like plone rest api [bloodbare]

  • Breaking Internal API change: Search Catalog utility search is the public search operation that is parsed and query the internal implementation [bloodbare]

  • Fixing WS bugs and redis unsubscription [bloodbare]

  • Add max_ops property to PatchField, BucketListField and BucketDictField [vangheem]

  • Add clear action to list, dict and annotation patch fields [vangheem]

You are seeing a truncated changelog.

You can read the changelog file for a complete list.

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

guillotina-6.0.8.tar.gz (6.7 MB view details)

Uploaded Source

Built Distribution

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

guillotina-6.0.8-cp37-cp37m-macosx_10_15_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.7mmacOS 10.15+ x86-64

File details

Details for the file guillotina-6.0.8.tar.gz.

File metadata

  • Download URL: guillotina-6.0.8.tar.gz
  • Upload date:
  • Size: 6.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for guillotina-6.0.8.tar.gz
Algorithm Hash digest
SHA256 bcabf2dad7d85c74894ebff1b86d7227986c481021cdceece87f1b9f58096b97
MD5 3905c6c5e22dedfc838aa262af6a5aa6
BLAKE2b-256 2bab369694b5498a18860d0762297a446f129345ae822a7f6cb3f8d85abfde0a

See more details on using hashes here.

File details

Details for the file guillotina-6.0.8-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: guillotina-6.0.8-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

File hashes

Hashes for guillotina-6.0.8-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f1ccc26851fd276d056fec6c30cf2df5a7ec63e9fbff7c0470808d5d452ba706
MD5 12a67c4ebc9d7f257e83163305ec0e3d
BLAKE2b-256 023ad4eadd22c23b660dbc25d3172a9adda3cd612bc638dfb092a1b67d6724dd

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