- New Field class. The
BaseField class is now deprecated. The switch is largely backwards compatible if you are not using private functions. If you are inheriting from the
BaseField directly you will need to update to use the new
ripozo.resources.fields.field.Field class. The change should be transparent.
- Validation helpers. A new module that includes helper functions for common validation scenarios.
BaseField is deprecated and will be removed in v2.0.0
- Bug fix for JSONAPI adapter that occurred when a resource with no primary keys was passed to the adapter causing it to break
- The HalAdapter now includes fully qualified resources in the _embedded property. There is no difference in how top-level vs embedded resources are constructed at this point.
- Fixed setup.py to only include ripozo packages.
- Added remove_properties attribute to Relationship instantiation. This allows a user to keep properties in both the parent and the child such as passing a parent’s id to the child while keeping it in its properties.
- Added FilterRelationship class which provides a shortcut to creating Relationships that point to a filtering against a list of resources.
- Added manager_translate decorator which will replace the translate decorator when using manager generated fields to translate and decorate an @apimethod. Using translate for manager_fields will be deprecated in v2.0
- Moved up some imports for ease of use
- Bug fix for BasicJSONAdapter.
- Base adapter got a format_request method that must be called by the dispatcher. This allows the adapter to appropriately reformat the request into a ripozo acceptable format.
- Warnings raised in base adapter’s format_request and format_exception since these must be implemented by the adapter in version 2.0.0
- All adapters explicitly override format_exception and format_request
- Fixed join_url_parts bug so that responses always return unicode objects (str type in python 3)
- Added an adapter that meets the JSON API specification
- Fixed bug in url for the resource instance returned by the RetrieveList mixin.
- manager_field_validators attribute in @translate decorator removed. It’s now expected that you explicitly call translate_fields in your method if you wish to translate fields in an inheritable class apimethod
- Warnings raised when a class registered with a dispatcher has a relationship/link with a relation that does not exist in the ResourceMetaClass registry.
- renamed BoringJSONAdapter to BasicJSONAdapter
- Templated relationships now available.
- Route extensions available on ResourceBase instances. This allows a user to append part of a url to a resource base so that the .url property renders properly. This is helpful when route is defined on an apimethod.
- Added valid_fields static method to BaseManager which is helper for getting valid fields.
- pylint shit.
- Moved dispatch_base up and removed dispatch package
- Moved manager_base and removed manager package.
- Added append_slash class attribute to ResourceBase. Setting this attribute to True automatically appends a slash to the end of the base_url and base_url_sans_pks. Defaults to False.
- Renamed viewsets package to resources
- Many underscore fields were removed with the exception of _relationships and _links
- Fields default to checking the Query string, request body and url parameters for argument if no arg_type is specified.
- Query args can be specified in relationships. Every argument available will be appended to the query string
- query args on a resource is now a list that simply pulls from the properties.
- Removed translate method from request container. Instead the request object is now injected into the translate_fields method from ripozo.viewsets.fields.base module
- Using Accept-Types instead of Content-Type.
- RetrieveList now compatible with Single resource rest mixins
- Added RetrieveRetrieveList restmixin.
- Relationships now take a no pks parameter which specifies that the resource in question should not use the pks (helpful for RetrieveRetrieveList and such)
- Fixed bug in DictField that removed key-value pairs not explicitly specified.
- Added update_fields class property to Base Manager.
- Added DictField to top level import in fields.
- Fixes for RetrieveRetrieveList bad translation.
- Added DictField which can translate and validate dictionary fields (and their subfields)
- Endpoints that are generated now use “<class name>__<function_name>” as the default endpoint name
- Removed check fore the base rest endpoint. This doesn’t take into account dispatchers having url_prefixes
- Added get method to RequestContainer which searches through the url_params, query_args, and then the body_args to find a value
- Added create_fields property to the BaseManager. This allows a user to specify which fields are valid for creation.
- related resources and linked resources named tuples
- Removed ripozo_tests dependency. It is now included in the package itself.
- Added base_url_sans_pks classproperty to ResourceBase
- Create is now an individual resource rather than a list resource
- Added CreateRetrieve, CreateRetrieveUpdate, andCreateRetrieveUpdateDelete mixins
- Removed CreateRetrieveList mixin
- Overhauled how links and relationships are generated
- Lots of bugs
- Added include_relationships keyword argument to ResourceBase __init__ for performance reasons
- Changed location of classproperty decorator from
- Fixed bug with wrapping _apiclassmethod decorated functions.
- Fixed error with formatting exceptions
- Added links
- Added _list_fields attribute to BaseManager for more efficient querying when necessary
- Moved getting the adapter class based on the format type in the dispatcher to its own method.
- Fields no longer have a default.
- Adapter.extra_headers returns a dictionary instead of a list
- Fields can specify an error message.
- ListField added
- Fixed deep inheritance issue with translate decorator.
- Added the name of the relationship as an item in the rel list in the SIREN adapter.
- Fixed bug with RetrieveRetrieveList mixin
picky_processor which specifically includes processors to include or exclude.
- pre and post processors now get the name of the function being called. before running
- Fixed the bug where inheritance of abstract methods resulted in mutable common endpoint_dictionaries
- endpoint_dictionary is now a method and not a property
- Fixed bug that resulted in multiple forward slashes in a row on a url
- Added method to RequestContainer object
- Imported Relationship and ListRelationship into relationships.__init__.py module for more intuitive access
- Imported HtmlAdapter to adapters.__init__.py for more intuitive imports.
- Including html adapter templates in package
- Added generic CRUD+L mixins. These are included merely for convience
- Required fields validation can be skipped. In other words, you can now specify that a field does not need to be present when validating
- Some updates to the release process.
- Started using zest.releaser for managing releases.
register_resources method to the DispatcherBase class