Skip to content

Latest commit

 

History

History
307 lines (184 loc) · 9.96 KB

CHANGELOG.md

File metadata and controls

307 lines (184 loc) · 9.96 KB

Changelog

1.0.0-rc.11 : 16.08.2024

  • Fixed: Proper manipulation with BaseStrategy instances during population

1.0.0-rc.10 : 02.08.2024 (unreleased)

  • Added: AliasStrategy for overriding property name on target object during setattr()
  • Changed:field_strategy now can be also an instance of BaseStrategy
  • Fixed: Fixed calling population methods when declared in form

1.0.0-rc.9 : 24.03.2023

  • Added: Introduced extra optional arguments when creating From instance

1.0.0-rc.8 : 14.03.2023

  • Added: GeoJSON field introduced
  • Changed: Default clean method Form.clean is only called when there are no errors.

1.0.0-rc.7 : 24.11.2022

CI/CD fixies and project settings. There was no application change.

1.0.0-rc.6 : 22.11.2022

Release by @paimvictor

1.0.0-rc.5 : 20.10.2022

  • Added: Introduced defining a form field for the dictionary key in DictionaryField
  • Changed: value_field in DictionaryField is forced keyword arguments
  • Changed: Replaced RuntimeError with ApiFormException

1.0.0-rc.4 : 09.09.2022

  • Fixed: Fixed missing validation errors
  • Changed: Form.add_error() now takes only Tuple as a field argument

1.0.0-rc.3 : 04.09.2022

  • Fixed: Removed validation of non-required fields if they are not present in the request

1.0.0-rc.2 : 31.05.2022

  • Fixed: Fixed "weird" behaviour with missing clean_data values if using ListField

1.0.0-rc.1 : 28.04.2022

This release has been inspired by Problem Details for HTTP APIs - RFC7807 and blog post Structuring validation errors in REST APIs written by @k3nn7.

The main idea has been to simplify validation process on the client side by flattening errors output. To achieve such a goal, the whole validation process has been rewritten (and luckily for us, much simplified).

0.21.1 : 14.02.2022

  • Changed: Raw base64 payload in FileField and ImageField fires DeprecationWarning. Use Data URI instead.

0.21.0 : 03.02.2022

  • Added: Introduced mapping
  • Added: Override strategies using field_type_strategy and field_strategy

0.20.1 : 13.1.2022

  • Fixed: DictionaryField was unable to raise validation errors for keys

0.20.0 : 14.10.2021

Anniversary release 🥳

  • Added: Population strategies introduced
  • Added: fill method is deprecated and replaced by populate
  • Added: Settings object introduced (form.settings)
  • Added: Pluggable content-type parsers using DJANGO_API_FORMS_PARSERS setting

0.19.1 : 17.09.2021

  • Changed: mime argument in FileField is supposed to be a tuple

0.19.0 : 12.07.2021

  • Added: FieldList and FormFieldList now supports optional min/max constrains using min_length/max_length

0.18.0 : 16.04.2021

  • Added: ModelForm class introduced (experimental, initial support - not recommended for production)

0.17.0 : 24.02.2021

  • Added: fill_method introduced

0.16.4 : 20.12.2020

  • Fixed: Pillow image object have to be reopened after Image.verify() call in ImageField::to_python

0.16.3 : 13.11.2020

  • Fixed: ApiFormException('No clean data provided! Try to call is_valid() first.') was incorrectly raised if request payload was empty during Form::fill method call
  • Changed: clean_data property is by default None instead of empty dictionary

0.16.2 : 06.11.2020

  • Fixed: Fixed issue with clean_ methods returning values resolved as False (False, None, '')

0.16.1 : 29.10.2020

  • Fixed: Ignore ModelMultipleChoiceField in Form::fill()

0.16.0 : 14.09.2020

One more step to get rid of pytest in project (we don't need it)

  • Changed: Correctly resolve key postfix if ModelChoiceField is used in Form::fill()
  • Changed: DjangoApiFormsConfig is created

0.15.1 : 29.08.2020

  • Added: FileField.content_type introduced (contains mime)

0.15.0 : 23.08.2020

  • Added: FileField and ImageField introduced
  • Added: Defined extras in setup.py for optional Pillow and msgpack dependencies
  • Added: Working Form::fill() method for primitive data types. Introduced IgnoreFillMixin

0.14.0 : 07.08.2020

  • Added: BaseForm._request property introduced (now it's possible to use request in clean_ methods)

0.13.0 : 09.07.2020

  • Fixed: Fixed Content-Type handling if charset or boundary is present

0.12.0 : 11.06.2020

  • Fixed: Do not call resolvers methods, if property is not required and not present in request

0.11.0 : 10.06.2020

  • Changed: Non specified non-required fields will no longer be available in the cleaned_data form attribute.

0.10.0 : 01.06.2020

  • Changed: All package exceptions inherits from ApiFormException.
  • Fixed: Specifying encoding while opening files in setup.py (failing on Windows OS).

0.9.0 : 11.05.2020

  • Changed: Moved field error messages to default_error_messages for easier overriding and testing.
  • Fixed: Fix KeyError when invalid values are sent to FieldList.
  • Fixed: Removed unnecessary error checking in FieldList.

0.8.0 : 05.05.2020

  • Added: Tests for fields
  • Changed: Remove DeclarativeFieldsMetaclass and import from Django instead.
  • Changed: Msgpack dependency is no longer required.
  • Changed: Empty values passed into a FormField now return {} rather than None.
  • Fixed: Throw a more user friendly error when passing non-Enums or invalid values to EnumField.

0.7.1 : 13.04.2020

  • Changed Use poetry instead of pipenv
  • Changed: Library renamed from django_api_forms to django-api-forms (cosmetic change without effect)

0.7.0 : 03.03.2020

  • Changed: Library renamed from django_request_formatter to django_api_forms
  • Changed: Imports in main module django_api_forms

0.6.0 : 18.02.2020

  • Added: BooleanField introduced

0.5.8 : 07.01.2020

  • Fixed: Pass Invalid value as ValidationError not as a string

0.5.7 : 07.01.2020

  • Fixed: Introduced generic Invalid value error message, if there is AttributeError, TypeError, ValueError

0.5.6 : 01.01.2020

  • Fixed: Fixing issue from version 0.5.5 but this time for real
  • Changed: Renamed version file from __version__.py to version.py

0.5.5 : 01.01.2020

  • Fixed: Check instance only if there is a value in FieldList and FormFieldList

0.5.4 : 24.12.2019

  • Fixed: Added missing msgpack`` dependency to setup.py`

0.5.3 : 20.12.2019

  • Added: Introduced generic AnyField

0.5.2 : 19.12.2019

  • Fixed: Skip processing of the FormField if value is not required and empty

0.5.1 : 19.12.2019

  • Fixed: Process EnumField even if it's not marked as required

0.5.0 : 16.12.2019

  • Changed: Use native django.form.fields if possible
  • Changed: Removed kwargs propagation from release 0.3.0
  • Changed: Changed syntax back to django.forms compatible (e.g. form.validate_{key}() -> form.clean_{key}())
  • Changed: FieldList raises ValidationError instead of RuntimeException if there is a type in validation
  • Changed: Use private properties for internal data in field objects
  • Fixed: FieldList returns values instead of None
  • Fixed: Fixed validation in DictionaryField
  • Added: Basic unit tests

0.4.3 : 29.11.2019

  • Fixed: Fixed Form has no attribute self._data

0.4.2 : 29.11.2019

  • Fixed: If payload is empty, create empty dictionary to avoid NoneType error

0.4.1 : 14.11.2019

  • Added: Introduced UUIDField

0.4.0 : 13.11.2019

  • Added: Introduced DictionaryField

0.3.0 : 11.11.2019

  • Added: Propagate kwargs from Form.is_valid() to Form.validate() and Form.validate_{key}() methods

0.2.1 : 4.11.2019

  • Fixed: Fixed to_python() in FormFieldList

0.2.0 : 31.10.2019

  • Changed: Form.validate() replaced by Form.is_valid()
  • Added: Form.validate() is now used as a last step of form validation and it's aimed to be overwritten if needed
  • Added: Unit tests initialization

0.1.6 : 24.10.2019

  • Fixed: Non-required EnumField is now working
  • Added: WIP: Initial method for filling objects Form::fill()

0.1.5 : 23.10.2019

  • Fixed: Assign errors to form before raising ValidationError

0.1.4 : 23.10.2019

  • Fixed: Do not return empty error records in Form:errors

0.1.3 : 23.10.2019

  • Fixed: Use custom DeclarativeFieldsMetaclass because of custom Field class
  • Fixed: Do not return untouched fields in Form::payload
  • Fixed: Fix for None default_validators in Field

0.1.2 : 22:10.2019

  • Added: Support for validation_{field} methods in Form (initial support)

0.1.1 : 22.10.2019

  • Added: EnumField

0.1.0 : 22.10.2019

  • Added: First version of Form class
  • Added: CharField
  • Added: IntegerField
  • Added: FloatField
  • Added: DecimalField
  • Added: DateField
  • Added: TimeField
  • Added: DateTimeField
  • Added: DurationField
  • Added: RegexField
  • Added: EmailField
  • Added: BooleanField
  • Added: RegexField
  • Added: FieldList
  • Added: FormField
  • Added: FormFieldList