Changelogs » Guillotina

Guillotina

4.5.10

-------------------

- Nothing changed yet.

4.5.9

------------------

- Implement "del" operation for dynamic field values
[vangheem]

4.5.8

------------------

- Add `container_id` to jsonb data
[vangheem]

- Fix memory leak in security policy lookups
[vangheem]

- Introduce migrate command
[vangheem]

- Add vacuum command
[vangheem]

- Fix HEAD tus
[bloodbare]

- Define option to not purge DB on deletes
[bloodbare]

- Run `request.execute_futures` with managed_transaction context manager
[vangheem]

- Add code owners
[bloodbare]

4.5.7

------------------

- Introduce `UnionField` schema type to allow fields to be one of multiple
types of fields.
[vangheem]

- Fix dynamic field keyword values to work with single or array values. This helps
integration with elasticsearch.
[vangheem]

- Fix `GuillotinaDBRequester.make_request()` not decoding json responses
[masipcat]

- Missing 'db_schema' in 'tid_sequence' table
[masipcat]

- Add 'db_schema' to postgresql storage config
[masipcat]

4.5.6

------------------

- Fix CORS on tus
[bloodbare]

- Support tus upload for multifile field
[bloodbare]

- Ws token on application
[bloodbare]

4.5.5

------------------

- Fix losing startup command setting hints after application configuration
[vangheem]

- Be able to provide additional metadata for dynamic fields
[vangheem]

- Bugfix: Raise HTTPUnauthorized if trying to modify a write_protected
field [lferran]

- Adding = to valid chars.
[bloodbare]

- Allowing to get user information of application
[bloodbare]

- Fixing SQL creation function
[bloodbare]

4.5.4

------------------

- Fix serialization of json field to work with swagger
[vangheem]

4.5.3

------------------

- Add `get` method to `BucketListValue` class
[vangheem]

4.5.2

------------------

- Reusage of jwt decode
[bloodbare]

4.5.1

------------------

- Fix read connection lock regression
[vangheem]

4.5.0

------------------

- By default, do not serialize json data to postgresql anymore. If you were
depending on `store_json` default to be `true`, you need to update
[vangheem]

- Provide `guillotina.db.interfaces.IJSONDBSerializer` to be able to
override json stored in posgresql to be different than what is serialized
in catalog/elasticsearch/etc
[vangheem]

- Improved PostgresqlStorage._check_bad_connection()
[masipcat]

-fix typos in documentation

4.4.10

-------------------

- postgresql storage needs to share connection lock
[vangheem]

4.4.9

------------------

- Handle if no data to iterate on for downloads
[vangheem]

4.4.8

------------------

- Fix release
[vangheem]

4.4.7

------------------

- Defer preparing download response so http exceptions are
handle correctly
[vangheem]

4.4.6

------------------

- Fix getting binding file field for cloud files
[vangheem]

- provide `guillotina.utils.get_url` function that pays attention
to `X-VirtualHost-Monster` header
[vangheem]

- Take `X-Forwarded-Proto` into account for request url
[vangheem]

- Implement multi attachments
[masipcat]

4.4.5

------------------

- Allow to login on IApplication.
[bloodbare]

4.4.4

------------------

- Be able to prevent closing database connection pools
[vangheem]

4.4.3

------------------

- Implement `db.storage.spg.PGConnectionManager` class to allow
safely sharing pool and read connections between multiple
storages.
[vangheem]

4.4.2

------------------

- Option to add different type of containers.
[bloodbare]

4.4.1

------------------

- Postgresql storage accepts pool arguments
[vangheem]

4.4.0

------------------

New:

- Implement HEAD for `download` endpoint
[vangheem]

- Be able to customize the table names used with `objects_table_name` and
`blobs_table_name` database configuration options.
[vangheem]

- Adding the option to define the reader for annotations
[bloodbare]

Fixes:

- Fix Resource.__getattr__() for empty fields with default values
[masipcat]

4.3.5

------------------

- Added before render view event [lferran]

4.3.4

------------------

- Check valid generated id
[vangheem]

- Implement delete by value for `PatchField(value_type=schema.List())`
[vangheem]

4.3.3

------------------

- Be able to override configuration with environment variables
[vangheem]

4.3.2

------------------

- Fix MockTransaction test object to have `manager` property
[vangheem]

4.3.1

------------------

- Missing utilities settings should not cause error
[vangheem]

4.3.0

------------------

- Remove Container from available-types
[bloodbare]

- No automatic async util loaded.
[bloodbare]

**BREAKING CHANGE**: Async Utilities are not loaded by default so they
need to be defined on the package configuration on the merging settings at
`__init__.py`.
Utilities are not key mapped, each utility has an id to reflect it.
Now config.yaml files only need to define them if you want to overwrite.

- Improve Documentation

- Index page
- Security page

[hirokiky]

4.2.13

-------------------

- Update admin interface:

- Support for guillotina.cms
- Edit form
- Add medium-like richtext editor

[ebrehault]

4.2.12

-------------------

- Be able to specify `?include=*` to include all behaviors in response
[vangheem]

- Be able to specify `data_key` and `auto_serialize` for behavior configuration
[vangheem]

- Fixing 374 were required fields were not checked
[bloodbare]

- Fix shell command with Python 3.7
[vangheem]

- No longer use `utils.clear_conn_statement_cache` as asyncpg does not properly
clean up prepared statements when using the clear method.
See https://github.com/MagicStack/asyncpg/blob/v0.13.0/asyncpg/connection.pyL1499
The `_maybe_gc_stmt` is never called on the statement so they never get
cleaned from the database. Due to this implementation, with databases under
large enough load, it can cause postgresql to run out of memory.
`utils.clear_conn_statement_cache` is now considered a dangerous API method,
is marked deprecated, implementation is now emptied and will be removed
in the next major version of Guillotina.

As an alternative, use the connection option of `statement_cache_size: 0` or
a very low value for `max_cached_statement_lifetime`.

This case is only noteworthy when running against very large postgresql databases.
In certain cases, PG does a terrible job query planning and pegs CPU.
[vangheem]

4.2.11

-------------------

- Do not error on indexing with invalid payload
[vangheem]

- Be able to override factory for content types
[vangheem]

- Workaround to fix aiohttp bug: https://github.com/aio-libs/aiohttp/issues/3335
[vangheem]

4.2.10

-------------------

- Choice should be serialized as string
[bloodbare]

- Add `IPasswordChecker` and `IPasswordHasher` utilities
[vangheem]

- make `guillotina.auth.validators.hash_password` more generic
[vangheem]

- add `guillotina.auth.validators.check_password`
[vangheem]

- make sure to load dependency application commands
[vangheem]

4.2.9

------------------

- Also accept filename in `download` url like `download/file/foobar.jpg`
[vangheem]

- Fix `Access-Control-Allow-Credentials` header value to be `true` instead of `True`
[vangheem]

4.2.8

------------------

- Be able to specify dependency addons with `dependencies` configuration param
[vangheem]

4.2.7

------------------

- Be able to set `uid` on object creation
[vangheem]

- Provide simple content api
[vangheem]

- Fix inheritance going in reverse and affecting parent tasks
[vangheem]

- Jupyter notebook compatibility
[vangheem]

4.2.6

------------------

- Adding support for default value on ContextProperties
[bloodbare]

4.2.5

------------------

- Automatically load dependent applications if defined in base application
app_settings object.
[vangheem]

4.2.4

------------------

- Correctly handle issues when releasing connections back to the pool
[vangheem]

4.2.3

------------------

- Added cookie support on auth.
[bloodbare]

4.2.2

------------------

- Allow value serializers to be coroutines
[vangheem]

4.2.1

------------------

- Adding logging and renew token endpoint
[bloodbare]

4.2.0

------------------

- Add new events:
- IApplicationCleanupEvent
- IApplicationConfiguredEvent
- IApplicationInitializedEvent
- IDatabaseInitializedEvent
- ITraversalMissEvent
- ITraversalResourceMissEvent
- ITraversalRouteMissEvent
- ITraversalViewMissEvent

- upgrade shipped asyncpg version
[vangheem]

- Add events for application configuration, request traversal misses
and database itialization.
[vangheem]

- Add `resolveuid` endpoint
[vangheem]

- Change `ids` endpoint permission to `guillotina.Manage`
[vangheem]

- Change `items` endpoint permission to `guillotina.Manage`
[vangheem]

- Add `guillotina.Manage` permission which only `guillotina.Managers` roles
have by default.
[vangheem]

4.1.12

-------------------

- Fix file handling to properly provide 404 responses when no value is set
[vangheem]

- Move static guillotina assets into python package so they can be
referenced from python dotted paths with `guillotina:static/assets`
[vangheem]

- Be able to configure behavior directly against a schema instead
of needing to define concret behavior
[vangheem]

4.1.11

-------------------

- Fixing serialization bug
[bloodbare]

4.1.10

-------------------

- Fixing Bug on Serialize Schema
[bloodbare]

- Adding static behaviors on REST serialize
[bloodbare]

- Fix cookiecutter application template
[vangheem]

4.1.9

------------------

- Adding annotation support on registry object
[bloodbare]

- Fix IJSONToValue adapter for IPatchField
[masipcat]

4.1.8

------------------

- Be able to override configuration values with `--override` parameter
[vangheem]

4.1.7

------------------

- Provide more flexibility for traversal sub-routes
[vangheem]

- Make sure ApplicationRoot knows about the loop it is used with
[vangheem]

4.1.6

------------------

- On PUT, completely delete existing existing behavior objects
[vangheem]

4.1.5

------------------

- Allow PUT in CORS policy
[ebrehault]

- Update admin interface:

- Use PUT to edit
- Preserve path when logging in

[ebrehault]

4.1.4

------------------

- Implement default PUT method to be able to replace content
[vangheem]

- Fix error on invalid CORS ch
[vangheem]

- Option to disable inheritance on role permission relation
[bloodbare]

- Add get_behavior utility
[vangheem]

- IBeforeFieldModified event to hook before setting a field
[bloodbare]

- Added PatchField for ints to be used as counters [lferran]

4.1.3

------------------

- Split sharing function to be reusable
[bloodbare]

4.1.2

------------------

- Binding fields to objecst on deserialize to make sure vocabulary is enabled
[bloodbare]

- Enabling uploading files with a JSON payload
[bloodbare]

4.1.1

------------------

- Adding decorator for vocabulary definition
[bloodbare]

- Adding tests on cookiecutter
[bloodbare]

- Add 'Navigator' utility, that provides a path-based index to the already
loaded objects.
[cdevienne]

4.1.0

------------------

- Various doc improvements including security section rewrite
[WnP]

- Allow DELETE with params on url.
[jordic]

- Add admin interface as static JS app on http://localhost:8080/+admin/
[mathilde-pellerin, ebrehault]

4.0.7

------------------

- Improve and fix docs
[vangheem]

- Fix interface for layers
[bloodbare]

- Updating requirements for py3.7
[bloodbare]

4.0.6

------------------

- Provide IIDGenerator interface to customize generating new ids
[bloodbare]

- Fix applying cors when errors on traversal
[bloodbare]

4.0.5

------------------

- Fix run_app args when access_log_format is None
[vangheem]

4.0.4

------------------

- Use guillotina response exceptions everywhere so we
use built-in CORS

- Serialize if a content is folderish
[bloodbare]

- Serialize the schema with the full behavior name
[bloodbare]

- Upgrade to aiohttp > 3 < 4.
Notable aiohttp changes:
- Response.write is now a coroutine
- Response.write should explicitly use write_eof
- Websockets send_str is now a coroutine
[vangheem]

- Dublin core should not be required
[bloodbare]

4.0.3

------------------

- Allow patching registry with new shcema fields

4.0.2

------------------

- Support for extra values on Field properties
[bloodbare]

- Don't fail on read-only pg

- Fix nested schema null value deserialization error
[vangheem]

- Fix use of AllowSingle with children overriding the same permission
[bloodbare]

4.0.1

------------------

- Implement minimal passing mypy compatibility
[vangheem]

- Rename `BaseObject.__annotations__` to `BaseObject.__gannotations__` to prevent
namespace clashes with mypy and other things
[vangheem]

4.0.0

------------------

- `guillotina.browser.Response` moved to `guillotina.response.Response`
- move `guillotina.browser.ErrorResponse` to `guillotina.response.ErrorResponse`
- `guillotina.browser.UnauthorizedResponse` removed
- `guillotina.response.Response` no longer supports wrapping aiohttp responses
- `guillotina.response.Response` can now be raised as an exception
- returned or raised aiohttp responses now bypass guillotina renderer framework
- raising any Response as an exception aborts current transaction
- remove `IFrameFormatsJson`
- remove `IRenderFormats`, `IRendered` is now a named adapter lookup
- remove `app_settings.renderers` setting. Use the lookups
- remove `IDownloadView`
- remove `TraversableDownloadService`
- remove `IForbiddenAttribute`
- remove `ISerializableException`
- remove `IForbidden`
- by default, provide an async queue utility
- move `guillotina.files.CloudFileField` to `guillotina.fields.CloudFileField`
- fix deserialization with BucketListField
- fix required field of PatchField

3.3.12

-------------------

- Reindex security of group object even if we aren't going to reindex it's children
[vangheem]

- Refactor indexing so we can index security, provide `guillotina.catalog.index.index_object` function
[vangheem]

3.3.11

-------------------

- Move TRASHED annotation objects check to application logic instead
of the query. This helps performance and query planer issue for cockroach
[vangheem]

3.3.10

-------------------

- Handle missing root object for database
[vangheem]

3.3.9

------------------

- Fix cache key format
[vangheem]

3.3.8

------------------

- Add more utilities: `execute`, `safe_unidecode`, `run_async`, `get_object_by_oid`
[vangheem]

- Prevent db cache poisening between containers of dynamic databases
[vangheem]

- Do not reuse transaction objects with get_containers
[vangheem]

3.3.7

------------------

- async pool should commit when using transaction
[vangheem]

3.3.6

------------------

- async pool should execute futures of request
[vangheem]

3.3.5

------------------

- specify `acl` field name for access_users and access_roles indexer
so we can easily reindex security
[vangheem]


- prevent running the same indexer multiple times
[vangheem]

- be able to manually index object by using
`guillotina.catalog.index.add_object(ob, modified=True, payload={})`
[vangheem]

- Fix bug in CORS with tus when guillotina was on different domain than
web application calling it
[vangheem]

3.3.4

------------------

- Make sure we write to a non-shared txn when creating db object
[vangheem]

3.3.3

------------------

- Use exists instead of get_names for dynamic dbs
[vangheem]

3.3.2

------------------

- Cockroachdb supports cascade and jsonb now
[vangheem]

3.3.1

------------------

- only return task on request.execute_futures if there are futures
to run
[vangheem]

3.3.0

------------------

- Change reindexing security to futures, not queue for more
consistent performance
[vangheem]

- Remove IBeforeObjectAssignedEvent as it wasn't used
[vangheem]

- Rename `directives.index` to `directives.index_field`
[vangheem]

- Be able to specify priority on `configure.subscriber`. Lower
is higher priority.
[vangheem]

- Indexer now sends full object for ICatalogUtility.remove
instead of tuple of data
[vangheem]

3.2.7

------------------

- Indexing gathers all data on update instead of
overwriting indexed data
[vangheem]

3.2.6

------------------

- Provide IDatabaseManager.exists for dummy db impelementation
[vangheem]

3.2.5

------------------

- add IDatabaseManager.exists method to be able to check if db exists
[vangheem]

3.2.4

------------------

- Fix dynamic storage urls for cockroach
[vangheem]

- deserialize value before validation on patch fields
[vangheem]

3.2.3

------------------

- Authenticated users have access to view root just like
unauthenticated users
[vangheem]

3.2.2

------------------

- Be able to provide comma separated `permissions` param to `canido`
[vangheem]

3.2.1

------------------

- Be able to modify file attributes filename, content_type, md5, extension
[vangheem]

3.2.0

------------------

- Provide new IDynamicFields and IDynamicFieldValues behaviors
[vangheem]

- Be able to use PatchField with nested schemas
[vangheem]

- Change Object field to work with dicts and JSON schema
[vangheem]

3.1.8

------------------

- Add `type_name` index
[vangheem]

3.1.7

------------------

- Provide check_security argument on
`guillotina.content.create_content_in_container`
[vangheem]

3.1.6

------------------

- Provide asyncio.Lock on transaction manager
[vangheem]

3.1.5

------------------

- `guillotina.utils.get_containers` does not change
transaction strategy anymore.
[vangheem]

3.1.4

------------------

- Fix getting tid for `dbresolve_readcommitted` txn strategy
[vangheem]

3.1.3

------------------

- Use database constraints if supported
[vangheem]

- Be able to customize oid generator
[vangheem]

3.1.2

------------------

- Revert DB unique constraint implementation
[vangheem]

3.1.1

------------------

- Provide testing annotations
[vangheem]

- Handle invalid type on content creation with 412
[vangheem]

- Fix DUMMY_FILE loading error
[vangheem]

3.1.0

------------------

- Use unique constraint instead of doing lookups on existing content for inserts
[vangheem]

3.0.8

------------------

- Fix security on views were not checked correctly as the configured functions
are all the same local class
[ramon]

- OPTION method not working due to not beeing registered normally as
its a special case for CORS
[ramon]

3.0.7

------------------

- Fix `change_transaction_strategy` method AttributeError
[vangheem]

3.0.6

------------------

- Fix registration issue when multiple routes are registered against the
same service class
[vangheem]

- Do not store request object on transaction manager object to prevent
situations where the wrong transaction will get retrieved
[vangheem]

3.0.5

------------------

- Make sure to clean up manually registered utilities
[vangheem]

3.0.4

------------------

- Use IPostgresStorage for PG storage
[vangheem]

3.0.3

------------------

- Fix tests to be more isolated between runs
[vangheem]

3.0.2

------------------

- psycopg2 is an optional test dependency
[vangheem]

3.0.1

------------------

- Add full support for `DUMMY` and `DUMMY_FILE` databases
[vangheem]

3.0.0a1

--------------------

- Fix issue with multiple databases mounted

- Add support for dynamic database mappings

- Add route support

- Remove traversable views, add support for `prepare` method on class views

2.5.12

-------------------

- Do not swallow any exceptions on commit.
[vangheem]

2.5.11

-------------------

- Fix error loading settings
[vangheem]

2.5.10

-------------------

- Make sure to clear commit hook on tcp begin
[vangheem]

- Add save method to upload data manager so saving data can be defered to
after commit hook
[vangheem]

2.5.9

------------------

- return 404 when attempting to download file that is missing
[vangheem]

2.5.8

------------------

- Fix getting filename for file downloads
[vangheem]

2.5.7

------------------

- Only do commit and voting if we have objects to do it with
[vangheem]

2.5.6

------------------

- Make sure to set size when deserializing files from base64
[vangheem]

2.5.5

------------------

- Fix TUS upload with zero length files
[vangheem]

2.5.4

------------------

- `save_file` can provide size value
[vangheem]

2.5.3

------------------

- IFile.content_type should be string, not bytes
[vangheem]

- `UploadDataManager.finish()` should return the file object created
[vangheem]

2.5.2

------------------

- Fix `duplicate` endpoint when no destination is provided
[vangheem]

2.5.1

------------------

- Be able to not automatically serialize behaviors
[vangheem]

2.5.0

------------------

- normalize file manager api so we can have more simple integrations with s3/gcloud
[vangheem]

2.4.7

------------------

- Be able to safely PATCH with same payload from GET
[vangheem]

2.4.6

------------------

- Updated docs
[vangheem]

2.4.5

------------------

- `BucketListValue.iter_buckets` returns annotation object
[vangheem]

2.4.4

------------------

- fix `BucketListValue.iter_buckets` to correctly load uncached annotations
from database
[vangheem]

2.4.3

------------------

- New `PatchField`
[vangheem]

- New `BucketListField`
[vangheem]

2.4.2

------------------

- Be able to provide `index_name` for index directive to rename index name
to use for catalog data
[vangheem]

2.4.1

------------------

- Provide utils.clear_conn_statement_cache
[vangheem]

2.4.0

------------------

- Rename `guillotina.async` to `guillotina.async_util` to fix Python 3.7 compatibility
[vangheem]

2.3.35

-------------------

- More error handling
[vangheem]

2.3.34

-------------------

- Be able to provide custom responses for unhandled exceptions
[vangheem]

2.3.33

-------------------

- Bump

2.3.32

-------------------

- Disable statement cache on guillotina
[vangheem]

2.3.31

-------------------

- Normalize status codes to not use generate 400 all the time
[vangheem]

2.3.30

-------------------

- Store record of previous file data on upload
[vangheem]

2.3.29

-------------------

- bump

2.3.28

-------------------

- Send file upload finished event
[vangheem]

- Use lazy_apply when calling commit hooks
[vangheem]

2.3.27

-------------------

- Upgrade asyncpg, do not clear statement cache after every connection open
[vangheem]

2.3.26

-------------------

- IFileCleanup accepts kwargs
[vangheem]

2.3.25

-------------------

- Allow indexer accessors to be async
[vangheem]

2.3.24

-------------------

- Add IFileCleanup adapter to be able to customize if old cloud files are cleaned
[vangheem]

- Add a serializer for IDecimal fields
[cdevienne]

2.3.23

-------------------

- Make sure id when creating content is string
[vangheem]

2.3.22

-------------------

- Change log level of conflict errors
[vangheem]

2.3.21

-------------------

- Add Server header
[vangheem]

2.3.20

-------------------

- ValueError does not have a `message` attribute
[vangheem]

2.3.19

-------------------

- Make sure to check field permissions correctly
[vangheem]

- Make sure to get connection object correctly with `items` endpoint
[vangheem]

2.3.18

-------------------

- lazy create connection
[vangheem]

- Use __slots__ for BaseObject
[vangheem]

2.3.17

-------------------

- Be able to customize loop policy with `loop_policy` app setting
[vangheem]

2.3.16

-------------------

- Use correct connection object when getting children from database
[vangheem]

2.3.15

-------------------

- Clear pg statement cache before each query to fix bug
[vangheem]

2.3.14

-------------------

- Add debugging for queries
[vangheem]

2.3.13

-------------------

- Record before authentication timing for request object
[vangheem]

2.3.12

-------------------

- Keep a counter of hits, misses and stored on the db object
[vangheem]

2.3.11

-------------------

- Add `Item.async_multi_get` method to get batches of objects in a scalable way
[vangheem]

2.3.10

-------------------

- Be able to proactively fill cache
[vangheem]

- Be able to send `X-Debug` header to get stats on the request timings
[vangheem]

- Be able to customize the pg connection class with pg_connection_class
config option.
[vangheem]

2.3.9

------------------

- Do not manually return the response object in traversal, let aiohttp handle it.
This should fix cases where response were being held open that shouldn't be.
[vangheem]

- Add `guillotina.commands.utils.change_transaction_strategy` to be able to
override transactions strategies in commands
[vangheem]

2.3.8

------------------

- Make sure `utils.get_containers` works with transaction being manipulated
by the consumer of the async generator
[vangheem]

2.3.7

------------------

- Add `__run_command__` in app_settings to record what the current guillotina
was started with.
[vangheem]

2.3.6

------------------

- Log access denied with info instead of warning
[vangheem]

2.3.5

------------------

- Do not allow overriding transaction strategy in `utils.get_containers`
[vangheem]

2.3.4

------------------

- Do not allow `` in ids
[vangheem]

- Provide new `items` endpoint
[vangheem]

2.3.3

------------------

- Make sure `_p_jar` on database object defaults to _last_txn
[vangheem]

2.3.2

------------------

- Fix potential connection leak with `utils.get_containers`
[vangheem]

- Make sure `_p_jar` on database object finds the right connection
[vangheem]

- Make sure the `text/html` renderer wraps content in html tags
[vangheem]

2.3.1

------------------

- Fix scheduling async tasks with after commit hooks
[vangheem]

2.3.0

------------------

- Rename `novote` strategy to `dbresolve`

- Fix cockroach db transactional support
[vangheem]

- Implement `dbresolve_readcommitted` and `resolve_readcommitted` transaction
strategies

2.2.6

------------------

- Log unhandled exception responses
[vangheem]

2.2.5

------------------

- Fix behaviors for duplicated objects
[vangheem]

2.2.4

------------------

- `get_containers` now clears the `request.container_settings` value
[vangheem]

2.2.3

------------------


- Make sure to use `_p_register` on context behaviors and registering new behaviors
[vangheem]

2.2.2

------------------

- Fix `__delete__` on base object properties
[vangheem]

2.2.1

------------------

- Fix ws token to work with basic auth
[vangheem]

- Cleanup unused undocumented code: `traversal.do_traverse`,
`traversal.subrequest`, `testing.GuillotinaRequester`, `testing.AsyncMockView`,
`utils.get_caller_package`, `utils.apply_cors`
[vangheem]

- Add `addable-types` endpoint
[vangheem]

- Do not allow to add containers inside containers
[vangheem]

2.2.0

------------------

- Improve performance of pickle/unpickle from db
[vangheem]

- Pre-calculate registered behavior implementations to improve object creation
performance. Previously registered behaviors were dynamically provided with
`alsoProvides`.
[vangheem]

- Remove `guillotina.interfaces.IFormFieldProvider` as it was not implemented
[vangheem]

- Remove `guillotina.framing` module since it wasn't used and any implemenation
like it should be in another module
[vangheem]

- Use UTC timezones everywhere. Local timezones are performance impacting.
[vangheem]

- Be able to profile all commands instead of just the `serve` command
[vangheem]

2.1.19

-------------------

- Properly use super() for security map classes so things can be overridden
with custom permission adapters.
[vangheem]

2.1.18

-------------------

- get_owners will lookup to parent object for owner.
[vangheem]

- if IGetOwner returns none, no owner will be set on object
[vangheem]

2.1.17

-------------------

- Fix getting sharing information for database objects
[vangheem]

2.1.16

-------------------

- Fix compatibility with aiohttp 2.3.6
[vangheem]

2.1.15

-------------------

- Provide security cache implementation
[vangheem]

- In case there is no method raise an error
[ramon]

2.1.14

-------------------

- Improve performance of json schema serialization
[vangheem]

2.1.13

-------------------

- Fix ContextBehavior implementation to get data correctly from object
[vangheem]

2.1.12

-------------------

- Handle restart transaction error from cockroach on retrieving data from db
[vangheem]

2.1.11

-------------------

- Set task request for async utility
[vangheem]

2.1.10

-------------------

- Raising aiohttp http exception is handled correctly in publisher
[vangheem]

2.1.9

------------------

- Fix dockers test infrastructure to not conflict with multiple tests running
at the same time.
[vangheem]

2.1.8

------------------

- Adding X-Forwarded-Proto in order to allow https rewrite of absolute url
[ramon]

- Adding PROPFIND HTTP Verb
[ramon]

- Be able to provide a custom router using the `router` setting
[vangheem]

2.1.7

------------------

- Add `id` index
[vangheem]

2.1.6

------------------

- Make sure to abort all error responses
[vangheem]

2.1.5

------------------

- Track timing of various parts of request. Helps with providing metrics
[vangheem]

2.1.4

------------------

- Be able to provide request.uid value from request header `X-FORWARDED-REQUEST-UID`.
[vangheem]

2.1.3

------------------

- Implement copy_cloud_file on DBFile
[vangheem]

2.1.2

------------------

- Handle CancelledError on server close
[vangheem]

2.1.1

------------------

- Clean up async tasks better
[vangheem]

2.1.0

------------------

- Remove use of buildout for development/travis
[vangheem]

- Upgrade to aiohttp > 2.3.0
[vangheem]

- Fix iter_data method for DBFile(no uri attribute)
[vangheem]

- Verify service method signatures when configuration is loaded
[vangheem]

2.0.6

------------------

- Use adapter lookup correctly for value serializer
[vangheem]

2.0.5

------------------

- Do not do async suscribers in a gather since we can lose get_current_request context
[vangheem]

2.0.4

------------------

- Fix MockTransaction implementation
[vangheem]

2.0.3

------------------

- Provide correct signature for default value converter
[vangheem]

2.0.2

------------------

- Handle missing component lookups more correctly for factories that return None
for the value.
[vangheem]

2.0.1

------------------

- DeserializationError and ValueDeserializationError should implement message
attribute
[vangheem]

2.0.0

------------------

- Make components more pythonic:
- guillotina.component.getMultiAdapter -> get_multi_adapter
- guillotina.component.getAdapter -> get_adapter
- guillotina.component.getUtility -> get_utility
- guillotina.component.queryUtility -> query_utility
- guillotina.component.getUtilitiesFor -> get_utilities_for
- guillotina.component.getAllUtilitiesRegisteredFor -> get_all_utilities_registered_for
- guillotina.component.getGlobalSiteManager -> get_global_components
- guillotina.component.provideUtility -> provide_utility
[vangheem]

- Allow passing arguments to component lookup factories with `args=[]` and `kwargs={}` params
[vangheem]

- Optimize serialization framework to use less and faster adapter lookups
[vangheem]

- Added `guillotina.profile.profilable` decorator to be able to tell line_profiler
what functions to profile.

- Integrate line_profiler with `--line-profiler`, `--line-profiler-matcher="*foobar*"`
and `--line-profiler-output`.
[vangheem]

- Pre-render resolve_dotted_name on authentication plugins
[vangheem]

- Implement aiotask_context for request object lookup
[vangheem]

- Add `configure.value_deserializer` and `configure.value_serializer`
configurators
[vangheem]

- Remove transform framework
[vangheem]

- Remove RichText since it was not used and didn't make much sense
[vangheem]

1.6.1

------------------

- Fix logging for large objects
[vangheem]

- Make sure to use ujson everywhere it makes sense
[vangheem]

1.6.0

------------------

- Require aiohttp < 2.3.0
[vangheem]

- Adding Dublin Core behavior as a context field so there is not two titles.
[ramon]

1.5.7

------------------

- pdb!
[vangheem]

1.5.6

------------------

- More docs fixes
[vangheem]

1.5.5

------------------

- Update docs and finish training.
[vangheem]

- Fix websocket token authentication.
[vangheem]

1.5.4

------------------

- More documentation updates and fixes
[vangheem]

1.5.3

------------------

- Update does and default values to match docs
[vangheem]

1.5.2

------------------

- Be able to override aiohttp access_log_format
[vangheem]

1.5.1

------------------

- Add back missing imports from guillotina.files
[vangheem]

1.5.0

------------------

- Provide default cloud file implementation
[vangheem]

1.4.7

------------------

- Add `run` command to allow running scripts from the command line against
a guillotina configuration.
[vangheem]

1.4.6

------------------

- Fix logging conflict ID message
[vangheem]

1.4.5

------------------

- provide `guillotina.testing.configure_with` and `guillotina.testing.get_settings`
functions to help configure test environment settings.
[vangheem]

- Do not require `title` for creating containers
[vangheem]

1.4.4

------------------

- `index.with_accessor` decorator did not return the original function so you
could not reuse the function.
[vangheem]

1.4.3

------------------

- Fix cache data being undefined for reading cloud data
[vangheem]

1.4.2

------------------

- More logging for conflict errors
[vangheem]

1.4.1

------------------

- Handle value is None for cloud deserializer
[vangheem]

1.4.0

------------------

- Remove unused etcd/locking support
[vangheem]


- Provide base classes and utilities for cloud storage implementations
[vangheem]

1.3.26

-------------------

- Add `move`, `duplicate` and `ids` endpoints
[vangheem]

1.3.25

-------------------

- Change how much sub-items we should by default from 200 to 20
[vangheem]

1.3.24

-------------------

- Fix error when rendering plain text from response
[vangheem]

1.3.23

-------------------

- Track errors rendering view and make sure to not index data when there has
been a error on the view(like conflict error).
[vangheem]

1.3.22

-------------------

- Allow overriding indexers
[vangheem]

- Add default head endpoint
[vangheem]

1.3.21

-------------------

- Add `Request.uid` property and issue a unique id to each request object to
be using with logging.
[vangheem]

1.3.20

-------------------

- Conflict errors now log with traceback and additional info
[vangheem]

1.3.19

-------------------

- Fix adding metadata to index data
[vangheem]

1.3.18

-------------------

- Provide extra logging data for more loggers
[vangheem]

1.3.17

-------------------

- Do not call ObjectLoadedEvent on object traversal
[vangheem]

- Be able to provide omit/include on GET requests to limit number of fields
that are returned in the payload
[vangheem]

- Limit max object cache size to 5mb
[vangheem]

- Optimize indexing for patch operations to only index changed data instead
of the full object
[vangheem]

1.3.16

-------------------

- Provide `check_writable_request` configuration to allow customizing what
requests are writable requests
[vangheem]

1.3.15

-------------------

- executing request futures should be a Task since finishing execution of
the request object causes it to be deleted
[vangheem]

1.3.14

-------------------

- Fix executing futures in web service
[vangheem]

1.3.13

-------------------

- Add add_future, get_future and execute_futures methods to Request class
[vangheem]

- Move indexing to be done in a future instead of after commit hook
[vangheem]

1.3.12

-------------------

- Change uncaught exception status code to 500
[vangheem]

1.3.11

-------------------

- Add another connection closed handler
[vangheem]

- Fix logging of large objects
[vangheem]

1.3.10

-------------------

- When loading schema cache, also set factory cache
[vangheem]

1.3.9

------------------

- add `save_file` method to the file manager interface
[vangheem]

1.3.8

------------------

- provide `component-subscribers` endpoint to inspect configured subscribers
[vangheem]

- Add request._tm and request._txn when using `use_db()` with shell command
[vangheem]

1.3.7

------------------

- Add text/plain content negotation response type
[vangheem]

- Fix content negotiation bug where we could not parse more complex Accept headers
[vangheem]

1.3.6

------------------

- directly provide base request interfaces instead of dynamically applying them
[vangheem]

- Provide iter_data method on cloud file manager
[vangheem]

1.3.5

------------------

- Do not provide default values for all request object values
[vangheem]

1.3.4

------------------

- Implement Guillotina Request object and store view info on it
[vangheem]

1.3.3

------------------

- Recover when postgresql gets restarted
[vangheem]

- Only show traceback if in debug mode
[vangheem]

1.3.2

------------------

- Change IQueueUtility to being a regular Queue instead of a PriorityQueue. A
PriorityQueue request comparison functions to be implemented on the added
objects.
[vangheem]

1.3.1

------------------

- Throw a 412 response code if type not allowed
[vangheem]

- Be able to generate custom api doc files
[vangheem]

1.3.0

------------------

- Fix instance where we were doing a permission lookup with title instead of id
[bloodbare]

1.2.0a6

--------------------

- Fix issue where dynamic behaviors were not getting indexed
[vangheem]

1.2.0a5

--------------------

- managed_transaction context manager did not properly restore read only write
flag on current request
[vangheem]

1.2.0a4

--------------------

- Make sure `allow_access` setting works on class based views as well
[vangheem]

1.2.0a3

--------------------

- Fix issue where stacked service configuration would not work with function
services since they would get changed into views that were not from the
original package.
[vangheem]

1.2.0a2

--------------------

- Fix upstream fetch issue on cockroach
[bloodbare]

- Provide `jsapps` option to render single page javascript applications
[vangheem]

1.2.0a1

--------------------

- Support ssl for cockroachdb
[bloodbare]

- Switch to defaulting to yaml for configuration but still supporting json
[vangheem]

1.1.0a116

----------------------

- Fix starting with request without txn would cause an error with managed_transaction
[vangheem]

1.1.0a115

----------------------

- Be able to provide utility for getting the owner of a new resource
[vangheem]

1.1.0a114

----------------------

- Add `get_owner` utility
[vangheem]

1.1.0a113

----------------------

- Be able to customize cors handling
[vangheem]

- Add new `guillotina.Public` permission and assign it to anoymous role
[vangheem]

- Provide default permission as guillotina.AccessContent for services
[vangheem]

1.1.0a112

----------------------

- do not register for writing object when assigning __parent__ pointer
[vangheem]

- add `get_containers` command
[vangheem]

1.1.0a111

----------------------

- Change guillotina.Member title
[vangheem]

1.1.0a110

----------------------

- Provide more logging information for errors
[vangheem]

1.1.0a19

---------------------

- get_principals_with_access_content and get_roles_with_access_content was not
checking against all roles
[vangheem]

1.1.0a18

---------------------

- Add PUT method for sharing endpoint
[vangheem]

1.1.0a17

---------------------

- Add get_all_possible_schemas_for_type utility function
[vangheem]

1.1.0a16

---------------------

- Move deleting objects to a task queue since deleting large leafs could cause
postgresql to slow down.
[vangheem]

1.1.0a15

---------------------

- Document tusupload, download and upload endpoints
[vangheem]

- Do not throw error for invalid jwt token
[vangheem]

1.1.0a14

---------------------

- Proxy params values from cloud file manager to field manager
[vangheem]

1.1.0a13

---------------------

- Manually rollback transaction if pg thinks we're in one that isn't managed by us
[vangheem]

1.1.0a12

---------------------

- Make sure we do not have an existing transaction set when starting a new
transaction
[vangheem]

1.1.0a11

---------------------

- Move fixtures in conftest.py to fixtures.py. This might break your tests
that depend on guillotina folks!
[vangheem]

1.1.0a10

---------------------

- Handle deadlocks at conflict errors
[vangheem]

1.1.0a9

--------------------

- Fix issue where new annotations would not get registered as new objects on
transaction and added objects on the transaction would get registered twice
and cause conflicts
[vangheem]

1.1.0a8

--------------------

- Fix AttributeError on commit
[vangheem]

1.1.0a7

--------------------

- Make sure etcd docker containers do not conflict
[vangheem]

1.1.0a6

--------------------

- Do not name etcd docker image in tests
[vangheem]

1.1.0a5

--------------------

- Group objects should not get reindexing triggered on them
[vangheem]

1.1.0a4

--------------------

- Add more special characters for valid id
[vangheem]

1.1.0a3

--------------------

- Put restrictions on what valid ids for content are
[vangheem]

1.1.0a2

--------------------

- Significant performance fixes to lock implementation with etcd
[vangheem]

- Provide more helper utilities for shell, so it's less error-prone
[vangheem]

- Fix `tidonly` transaction strategy
[vangheem]

1.1.0a1

--------------------

- Provide payload on container creation
[vangheem]

- Fix type check on creating container
[vangheem]

- Provide async task for cockroach to cleanup children since there is no cascade support
[vangheem]

- Fix cockroachdb transaction support as it behaves differently than postgresql
[vangheem]

- Include cockroachdb in our CI testing
[vangheem]

- Simplify docker testing infrastructure
[vangheem]

- Fix cockroachdb integration
[vangheem]

1.0.0a28

---------------------

- managed_transaction context manager can now adopt modified objects from
outer transaction
[vangheem]

1.0.0a27

---------------------

- add new `guillotina.transactions.managed_transaction` context manager
[vangheem]

1.0.0a26

---------------------

- Only initialize database if needed instead of running initialize statements
on every app startup
[vangheem]

- rename get_class_dotted_name to get_dotted_name
[vangheem]

1.0.0a25

---------------------

- Handle connection is closed error when starting transaction
[vangheem]

1.0.0a24

---------------------

- Fix transaction conflict retry handle
[vangheem]

- fix scenario where prepared statements would get cached with wrong db connection
[vangheem]

- Enforce transaction ids match when updating objects and throw a ConflictError
when there is a mismatch. This can happen in cases where there is stale cache
being pulled.
[vangheem]

- Remove use of `merge` transaction strategy. Better to just abort and retry
instead of costly merge resolution issues
[vangheem]

1.0.0a23

---------------------

- Fix get_container test utility
[vangheem]

1.0.0a22

---------------------

- Fix QueueUtility to properly get transaction object before working on view
[vangheem]

- Update storage caching interfaces to make them easier to use
[vangheem]

1.0.0a21

---------------------

- Reuse transaction object if same request object is provided. This helps when
working with the same persistent objects across one request object.
[vangheem]

1.0.0a20

---------------------

- Tie every request to one transaction instead of trying to juggle pool of
transactions in transaction manager.
[vangheem]

- Only issue transaction id for write operations
[vangheem]

- Use sequence for transaction id for postgresql and serial for cockroachdb
[vangheem]

1.0.0a19

---------------------

- Fix conflict error retries and make tests for it
[vangheem]

1.0.0a18

---------------------

- Make sure to be able to handle int, float responses as well
[vangheem]

1.0.0a17

---------------------

- Implement locks on pg connections for everything except cursors
[vangheem]

1.0.0a16

---------------------

- Be careful with locks on transaction to prevent deadlocks
[vangheem]

1.0.0a15

---------------------

- Make sure to lock access to queries on the pg database per connection. This
fixes asyncpg errors when you attempted to do actions async actions on
one transaction. Where it was easiest to have problem was asyncio.gather
[vangheem]

- add creators/contributors as context properties for the IDublinCore behavior
instead of trying to get the data from the annotation
[vangheem]

- utils.get_content_path should be based from root of container, not root of database
[vangheem]

- Fix another memory leak in get_current_request and add test for it
[vangheem]

- Provide more robust conflict resolution on fields of content and annotations
[vangheem]

1.0a14

-------------------

- Rename "address" option to "port" and add "host" option to bind something different
than the default 0.0.0.0
[vangheem]

1.0.0a14

---------------------

- Fix issue where annotations would get duplicated
[vangheem]

- rename __annotations_data_key to __annotations_data_key__ in Annotation behavior
[vangheem]

- Prevent aiohttp sessions from not closing by using context managers everywhere
[vangheem]

1.0a13

-------------------

Fixes:

- Fix static file configuration
[vangheem]

1.0.0a13

---------------------

- root ThreadPoolExecutor was removed in previous release. Some packages use this
feature
[vangheem]

- Rename PServerJSONEncoder to GuillotinaJSONEncoder
[vangheem]

1.0a12

-------------------

Fixes:

- HTML renderer can now handle html responses correctly
[vangheem]

- Renamed settingsForObject to settings_for_object
[vangheem]

1.0.0a12

---------------------

- Provide conflict resolution across transactions
[vangheem]

- Be able to query storage for total number of objects
[vangheem]

- Provide basic async blob support interface
[vangheem]

- Fix annotation behaviors that use __local__properties__ not storing data
properly on content object
[vangheem]

- Do not re-load behavior data if it's already been loaded from db
[vangheem]

- Provide new IObjectLoadedEvent to do things with object when it's loaded
from the database
[vangheem]

1.0a11

-------------------

Fixes:

- Handle NotADirectoryError error when attempting to load b/w compat zcml
[vangheem]

Breaking changes:

- ACL is now in the object itself so the permission will not be maintained
[ramonnb]

New features:

- Executing pending tasks after requests has returned
[ramonnb]

- Adding the payload on the events that modifies the objects
[ramonnb]

- Defining local and global roles so they can be used to define sharing
On indexing security information we only get the AccessContent permission.
[ramonnb]

- Install addons can have the context
[ramonnb]

- Merging zope.securitypolicy
[ramonnb]

- Adding C optimization for get_current_request
[ramonnb]

1.0.0a11

---------------------

- Fix memory leak in get_current_request C implementation
[vangheem]

- use asyncio.shield in commit and abort handlers to make sure they finish
even if task is cancelled
[vangheem]

- Fix case where abort would cause asyncio CancelledError to occur
[vangheem]

1.0a10

-------------------

Fixes:

- Fix issue where correct aiohttp response would not be generated always
[vangheem]

New features:

- be able provide your own database factories by providing named utilities for
the IDatabaseConfigurationFactory interface
[vangheem]

- install, uninstall methods for addon class can now be async
[vangheem]

- Support for newt.db
[ramonnb]

- Be able to define adapters, subscribers, permissions, roles, grant
with decorators, not zcml
[vangheem]

- No more zcml in core
[vangheem]

1.0.0a10

---------------------

- Provide ability to configure logging with json config
[vangheem]

1.0a9

------------------

Fixes:

- Use guillotina.schema getter and setter to set attributes
[ramonnb]

New features:

- Be able to define addons using decorators, not zcml
[vangheem]

- Be able to define behaviors using decorators, not zcml
[vangheem]

- Be able to define content types using decorators, not zcml
[vangheem]

- Catalog reindex as async operation
[ramonnb]

- RelStorage Support (postgres)
[ramonnb]

- Adding HTTP Precondition exception
[ramonnb]

- New way to create services with decorators instead of zcml/json configuration
[vangheem]

- Add functionality like virtualhost monster to define the urls
[ramonnb]

- Add new pcreate command
[vangheem]

- Add new pmigrate command and migration framework
[vangheem]

- Provide base guillotina.commands.Command class to provide your own commands.
Commands have been moved in code so you'll need to re-run buildout to get
pserver to work after this update.
[vangheem]

- Automatically give authenticated users new `guillotina.Authenticated` role
[vangheem]

- Handle error when deserializing content when not authenticated and checking
permissions
[vangheem]

- add `pshell` command
[vangheem]

- Role member for Manager group
[ramonnb]


Breaking changes:

- plone:api zcml directive deprecated in favor of decorator variant
[vangheem]

1.0.0a9

--------------------

- Be able to provide `aiohttp_settings` in config.json to configure parts of
aiohttp application
[vangheem]

- async_keys on database type did not await
[vangheem]

1.0a8

------------------

- On deserialization errors, provide error info on what fields could not be
deserialized in the api response.
[vangheem]

- Be able to provide data from serializable exception data to be used with
ErrorResponse objects with Exceptions that implement ISerializableException.
[vangheem]

- Add Events to enable audit of activity
[ramonnb]

- Add the JSON Field
[ramonnb]

- Fix various function naming standard issues to not use camel case.
[vangheem]

- Fix imports with isort.
[gforcada]

- remove local component registry
[vangheem]

- GET search(plone.SearchContent) passed to search method and
POST search(plone.RawSearchContent) passed to query method
on ICatalogUtility. GET is now meant to be query the search utility will
do something clever with and POST is meant to be a raw query passed to utility
[vangheem]

- provide new `plone.SearchContent`, `plone.RawSearchContent` and
`plone.ManageCatalog` permissions
[vangheem]

- provide IConstrainTypes adapter interface to override allowed types in a folder
[vangheem]

- provide dynamic behavior for objects
[ramonnb]

- provide basic command line utility to interact with APIs
[vangheem]

- fix fallback cors check
[vangheem]

- Added zope.event async version on guillotina.events (notify and async handlers)
[ramonnb]

- Improve code analysis, add configurations for it and remove all tabs.
[gforcada]

1.0.0a8

--------------------

- Fix annotation data not getting indexed properly. Getting index data needs
to be async.
[vangheem]

1.0a7

------------------

- add jwt token validator
[vangheem]

- Add to finalize an AsyncUtil when its finishing the software
[ramonnb]

- Remove `AUTH_USER_PLUGINS` and `AUTH_EXTRACTION_PLUGINS`. Authentication now
consists of auth extractors, user identifiers and token validators.
[vangheem]

- Correctly check parent object for allowed addable types
[vangheem]

- Get default values from schema when attribute on object is not set
[ramonnb]

1.0.0a7

--------------------

- be able to configure __allow_access__ with service function by using
the `allow_access` configuration option

- rename modified to modification_date and created to creation_date
[vangheem]

1.0a6

------------------

- Move authorization to after traversal
[vangheem]

- Fix issue where you could not save data with the API
[vangheem]

1.0.0a6

--------------------

- Fix container objects not having current transaction when new objects are
registered for them
[vangheem]

1.0a5

------------------

- Adding zope.event compatible async handlers for ElasticSearch and other events handlers [bloodbare]
- Adding PostCommit and PreCommit Hooks that can be async operations [bloodbare]

1.0.0a5

--------------------

- Be able to override base configuration in addon applications
[vangheem]

- Fix use of default layer in app_settings
[vangheem]

1.0a4

------------------

1.0.0a4

--------------------

- json schema support in service definitions
[vangheem]

- rename `subjects` to `tags` for IDublinCore behavior
[vangheem]

- rename permissions:
`guillotina.AddPortal` -> `guillotina.AddContainer`
`guillotina.DeletePortals` -> `guillotina.DeleteContainers`
`guillotina.GetPortals` -> `guillotina.GetContainers`
[vangheem]

- You can now reference modules in your static file configuration: `mymodule:static`
[vangheem]

- Static directories will now serve default index.html files
[vangheem]

- Fix static directory support
[vangheem]

- Add auto reload support with the aiohttp_autoreload library
[vangheem]

- Upgrade to aiohttp 2
[vangheem]

- Remove the dependencies six and requests
[vangheem]

- Rename `portal_type` to `type_name` as "portal" does not make sense anymore
[vangheem]

1.0.0a3

--------------------

- Fix automatically creating id when none provided for content creation
[vangheem]

1.0.0a2

--------------------

- Change guillotina commands to be sub-commands of main `bin/guillotina`
command runner so developer do not need to register separate scripts
for each command. Fixes 27
[vangheem]

- Change Site portal type to Container
[vangheem]

- Fix get_current_request to correctly look for python None object when finding
the request object
[vangheem]

- Fix `gshell` command to work with aysncio loop so you can run `await` statements
with the shell. Compatibility done with aioconsole.
[vangheem]

- Provide support for utilizing `middlewares` option for aiohttp server
[vangheem]

1.0.0a1

--------------------

- move zope.schema, zope.component, zope.configuration into guillotina
[vangheem]

- move get_current_request to guillotina.utils
[vangheem]

- create_content and create_content_in_container are not async functions
[vangheem]

- remove zope.security, zope.location, zope.dublincore, plone.behavior,
zope.dottedname, zope.lifecycleevent
[vangheem]

- rename to guillotina
[vangheem]

- Remove plone:api zcml directive
[vangheem]

Links

Releases