Ryan P Kilby
0e10d32fb1
Add NotImplementedError to coverage exclusion ( #6057 )
2018-06-24 17:56:31 -04:00
Ryan P Kilby
c5ab65923f
tests/test_permissions.py: do not add view perm for dj21 ( #6055 )
2018-06-23 07:31:06 -04:00
Ryan P Kilby
1a170438d2
Add "optionals not required" build ( #6047 )
2018-06-22 10:16:57 +02:00
Daniel Hahler
a44cb67988
tests: fix usage of transaction.non_atomic_requests ( #6043 )
2018-06-21 14:44:58 -04:00
Craig de Stigter
9629886915
Fixed AttributeError from items filter when value is None ( #5981 )
2018-05-11 08:50:08 +02:00
Daniel Hahler
275c157341
tests: remove some dead code, use assert 0
for never called methods ( #5973 )
...
* tests: remove some dead code, use `assert 0` for never called methods
* fixup! tests: remove some dead code, use `assert 0` for never called methods
2018-05-08 13:28:46 +01:00
Daniel Hahler
fca39f9dbb
tests: fix test_write_only_fields not being executed ( #5971 )
...
This adds the required `test_` prefix.
2018-05-08 09:27:35 +01:00
Daniel Hahler
e79610af3a
tests: fix skipping with TestPosgresFieldsMapping ( #5965 )
...
`pytest.mark.skipUnless` does not exist, it was confused with
`unittest.skipUnless` probably.
2018-05-03 13:31:46 +01:00
Ryan O’Hara
a11938ce96
Fixed instance being overwritten in pk-only optimization try/except block ( #5747 )
2018-04-24 16:15:38 +02:00
Noam
7268643b25
min_value/max_value support in DurationField ( #5643 )
...
* Added min_value/max_value field arguments to DurationField.
* Made field mapping use mix/max kwargs for DurationField validators.
2018-04-24 09:24:05 +02:00
Sascha P
7d64b7016d
Removed input value from deault_error_message ( #5881 )
2018-04-20 16:00:27 +02:00
Jimmy Merrild Krag
5ee0e5df83
Correct schema parsing for JSONField ( #5878 )
...
Fixes #5873 .
* Use Object type.
* Add test for field_to_schema
2018-04-20 15:47:20 +02:00
Craig Anderson
2ebd479759
Allow hashing of ErrorDetail to fix #5919 ( #5932 )
2018-04-20 15:32:37 +02:00
Christian Kreuzberger
f148e4e259
Ensure that html forms (multipart form data) respect optional fields ( #5927 )
2018-04-20 15:11:52 +02:00
Ryan P Kilby
7078afa42c
Change ISO 8601 date format to exclude year/month ( #5936 )
2018-04-14 05:23:31 +01:00
Carlton Gibson
42eb5a4342
Fix read_only + default unique_together validation. ( #5922 )
...
* Add test for read_only + default unique_together validation.
* Fix read_only + default validation
2018-04-06 15:20:54 +02:00
gsvr
32caca4dd3
Import coreapi from rest_framework.compat, not directly. ( #5921 )
2018-04-05 15:07:49 +02:00
Ryan P Kilby
cba426b34c
Use old url_name behavior in route decorators ( #5915 )
...
* Wrap action decorator for old url_name behavior
2018-04-04 20:50:42 +02:00
Carlton Gibson
fc588f539b
Version 3.8 Release ( #5769 )
2018-04-03 15:35:26 +02:00
Carlton Gibson
1befab795a
Added generic 500 and 400 JSON error handlers. ( #5904 )
...
* Added generic 500 and 400 JSON error handlers.
* Docs for generic error views.
2018-04-03 09:16:36 +02:00
Craig de Stigter
a5072778e9
Don't show hidden fields in metadata ( #5854 )
...
HiddenField is meant to be hidden, but we discovered it showing up in OPTIONS requests
2018-03-23 22:47:10 +00:00
George-Cristian Bîrzan
85c588b0c1
#5848 Allow traversing nullable related fields ( #5849 )
2018-03-20 22:02:22 +01:00
Carlton Gibson
6c0c69ed65
Correct allow_null behaviour when required=False ( #5888 )
...
* Revert "Non-required fields with 'allow_null=True' should not imply a default value (#5639 )"
This reverts commit 905a5579df
.
Closes #5708
* Add test for allow_null + required=False
Ref #5708 : allow_null should imply default=None, even for non-required fields.
* Re-order allow_null and default in field docs
default is prior to allow_null. allow_null implies an outgoing default=None.
* Adjust allow_null note.
2018-03-20 21:24:39 +01:00
Carlton Gibson
c2b24f83a3
Alter read_only+default behaviour ( #5886 )
...
* Always exclude read_only fields from _writable_fields
* Remove `read_only` from `CreateOnlyDefault` example.
In this context (without mentioning `save`) now slightly misleading.
2018-03-20 21:09:31 +01:00
Carlton Gibson
247cf096d4
Test using model objects for dotted source default ( #5880 )
...
… when path components may be null.
Ref #5375 , #5727
2018-03-16 14:51:37 +01:00
gthieleb
9e08a7cbec
Fixed schema for UUIDField in SimpleMetadata. ( #5872 )
...
* fix schema for UUIDField
* Add unit test for d4c8f2db
2018-03-13 15:49:15 +01:00
Chandrakant Gopalan
20f1203aac
Add admin to installed apps to avoid test failures.
...
The tests look for the "admin" app in the list of apps. If not present, running `runtests.py` gives the following error:
```
LookupError: No installed app with label 'admin'.
```
Adding admin to `INSTALLED_APPS` fixes it.
2018-03-09 13:04:15 -05:00
Carlton Gibson
e34fd995cd
Made TemplateHTMLRenderer render IntegerField inputs when value is 0
. ( #5834 )
...
* Fix 0 value IntegerField in TemplateHTMLRenderer
Signed-off-by: Nikhil Sheoran <nikhilsheoran96@gmail.com>
* Remove unnecessary `field.value != “”` check
* Adjust test case
Uses `vertical` templates only.
2018-02-16 16:48:20 +01:00
Carlton Gibson
da535d31dd
Fixed active timezone handling for non ISO8601 datetimes. ( #5833 )
...
* Add failing test for to_representation with explicit default timezone
See discussion here:
https://github.com/encode/django-rest-framework/pull/5435#issuecomment-364054509
* Always run enforce_timezone
2018-02-16 16:47:49 +01:00
Daniel Hahler
2854679f56
Upgrade isort ( #5817 )
...
* Fix isort
* runtests: add --diff to ISORT_ARGS
* requirements-codestyle: bump isort to 4.3.3
* isort: move config to setup.cfg
2018-02-14 20:12:14 +00:00
Ryan P Kilby
c456b3c510
Fix request formdata handling ( #5800 )
...
* Rename 'wsgi' request test to more accurate 'http'
* Test duplicate request stream parsing
* Fix setting post/files on the underlying request
2018-02-05 16:24:13 +01:00
Jeremy Lainé
a8d129b7da
Represent serializer DictField as an Object in schema
...
DictFields were incorrectly being output as String in the schema.
This pull request outputs an Object instead and adds a unit test.
Update s/detail_route/action/ after rebase
2018-02-01 16:23:24 +01:00
Jeremy Lainé
27f32faee4
Fix schema generation for PrimaryKeyRelatedField ( #5764 )
...
By default all subclasses of RelatedField are output as string fields in
the schema, which works well for StringRelatedField, SlugRelatedField or
HyperlinkedRelatedField.
Handle the common case of a PrimaryKeyRelatedField pointing to an
AutoField.
2018-02-01 16:14:35 +01:00
Daniel Hahler
769bc1336f
ErrorDetail: add __eq__/__ne__ and __repr__ ( #5787 )
...
This adds `__eq__` to handle `code` in comparisons.
When comparing an ErrorDetail to a string (missing `code` there) the
ErrorDetail's `code` is ignored, but otherwise it is taken into account.
2018-01-30 08:45:09 +01:00
Ryan P Kilby
73203e6b59
Rework dynamic list/detail actions ( #5705 )
...
* Merge list/detail route decorators into 'action'
* Merge dynamic routes, add 'detail' attribute
* Add 'ViewSet.get_extra_actions()'
* Refactor dynamic route checking & collection
* Refactor dynamic route generation
* Add 'ViewSet.detail' initkwarg
* Fixup schema test
* Add release notes for dynamic action changes
* Replace list/detail route decorators in tests
* Convert tabs to spaces in router docs
* Update docs
* Make 'detail' a required argument of 'action'
* Improve router docs
2018-01-25 09:40:49 +01:00
Ryan P Kilby
2709de1310
Add HStoreField, postgres fields tests ( #5654 )
...
* Test postgres field mapping
* Add HStoreField
* Ensure 'HStoreField' child is a 'CharField'
* Add HStoreField docs
2018-01-15 15:52:30 +01:00
Jon Dufresne
ffe3dbb1b1
Perfer iter(dict) over iter(dict.keys()) ( #5736 )
...
Calling dict.keys() is unnecessary. The two are functionally equivalent
on modern Pythons.
Inspired by Lennart Regebro's talk "Prehistoric Patterns in Python" from
PyCon 2017.
https://www.youtube.com/watch?v=V5-JH23Vk0I
2018-01-08 09:49:46 +00:00
Jon Dufresne
06e2ad0b7d
Remove unused compat._resolve_model() ( #5733 )
...
Last use removed in c674687782
.
2018-01-08 09:19:08 +00:00
Ryan P Kilby
68519c092f
Test staticfiles ( #5701 )
...
* Remove 'MIDDLEWARE_CLASSES' compat setting
* Remove 'django.setup()' compat import
* Move '--no-pkgroot' handling to conftest
* Add staticfiles handling to dist build
2018-01-02 11:35:56 +01:00
Ryan P Kilby
351503907c
Add exception translation test ( #5700 )
2018-01-02 11:28:45 +01:00
Ryan P Kilby
b65967711c
Formalize URLPatternsTestCase ( #5703 )
...
* Add formalized URLPatternsTestCase
* Update versioning tests w/ new URLPatternsTestCase
* Cleanup router tests urlpatterns
* Add docs for URLPatternsTestCase
2018-01-02 11:14:25 +01:00
Ryan P Kilby
6bd773e7f8
Improve composite field child errors ( #5655 )
...
* Fixup DictField test descriptions
* Nest ListField/DictField errors under the idx/key
* Add nested ListField/DictField tests
2018-01-02 10:45:59 +01:00
Cristi Vîjdea
6de12e574e
Fix format_suffix_patterns behavior with Django 2 path() routes ( #5691 )
...
* Add failing test for #5672
* Add get_original_route to complement get_regex_pattern
* [WIP] Fix path handling
* needs more tests
* maybe needs some refactoring
* Add django 2 variant for all tests and fix trailing slash bug
* Add more combinations to mixed path test
2017-12-20 13:17:54 +01:00
Tilmann Becker
d38b94fd74
Fix URL pattern parsing in schema generation ( #5689 )
...
* Fix url parsing in schema generation
- Call `str(pattern)` to get non-escaped route
- Strip converters from path to comply with uritemplate format.
Background: https://github.com/encode/django-rest-framework/issues/5675#issuecomment-352829363
Fixes #5675
2017-12-20 09:10:28 +01:00
Carlton Gibson
791539acec
Add DEFAULT_SCHEMA_CLASS setting ( #5658 )
...
* Add test for new setting
* Add DefaultSchema utility
* Add new setting to docs
2017-12-14 11:24:21 +01:00
Carlton Gibson
4a200d5e66
Fix override_settings
compat ( #5668 )
...
* Add test checking override_settings compat
* Refresh APISettings, rather than replace
Fix suggested by @daggaz https://github.com/encode/django-rest-framework/issues/2466#issuecomment-344297213
2017-12-14 10:33:48 +01:00
Ryan P Kilby
7855d3bd8b
Add '.basename' and '.reverse_action()' to ViewSet ( #5648 )
...
* Router sets 'basename' on ViewSet
* Add 'ViewSet.reverse_action()' method
* Test router setting initkwargs
2017-12-04 11:55:49 +01:00
Carlton Gibson
a0cdba6277
Extract method for manual_fields
processing ( #5633 )
...
* Extract method for `manual_fields` processing
Allows reuse of logic to replace Field instances in a field list by `Field.name`.
Adds a utility function for the logic plus a wrapper method on `AutoSchema`.
Closes #5632
* Manual fields suggestions (#2 )
* Use OrderedDict in inspectors
* Move empty check to 'update_fields()'
* Make 'update_fields()' an AutoSchema staticmethod
* Add 'AutoSchema.get_manual_fields()'
* Conform '.get_manual_fields()' to other methods
* Add test for update_fields
* Make sure `manual_fields` is a list.
(As documented to be)
* Add docs for new AutoSchema methods.
* `get_manual_fields`
* `update_fields`
* Add release notes for PR.
2017-12-04 09:07:43 +01:00
Ryan P Kilby
daba5e9ba5
Fix Serializer.data when provided invalid 'data' ( #5646 )
...
* Test serializer/API renderer for invalid datatype
* Fix Serializer.data with invalid input datatype
2017-12-04 08:39:55 +01:00
Rômulo Oliveira
905a5579df
Non-required fields with 'allow_null=True' should not imply a default value ( #5639 )
...
Ref #5518 .
2017-12-01 09:54:25 +01:00
Ryan P Kilby
5c19652080
Fix whitespace in imports
2017-11-25 21:10:30 -05:00
Ryan P Kilby
c63e35cb09
Fix AttributeError hiding on request authenticators ( #5600 )
...
* Update assertion style in user logout test
* Apply middlewares to django request object
* Fix test for request auth hiding AttributeErrors
* Re-raise/wrap auth attribute errors
* Fix test for py2k
* Add docs for WrappedAttributeError
2017-11-23 08:58:04 +01:00
Ryan P Kilby
a91361dd2f
Perform type check on passed request argument ( #5618 )
...
* Add test for wrapped request instance
* Add 'request' argument type check to Request init
* Fix metadata tests' request object
2017-11-23 08:57:31 +01:00
Sander Steffann
d71bd57b64
SchemaJSRenderer renders invalid Javascript ( #5607 )
...
* SchemaJSRenderer renders invalid Javascript
Under Py3 the base64.b64encode() method returns a binary object, which gets rendered as `b'...'` in schema.js. This results in the output becoming:
var coreJSON = window.atob('b'eyJf...'');
which is invalid Javascript. Because base64 only uses ASCII characters it is safe to decode('ascii') it. Under Py2 this will result in a unicode object, which is fine. Under Py3 it results in a string, which is also fine. This solves the problem and results in a working schema.js output.
* Add regression test for #5608
* Add regression test for #5608
* Apparently the linter on Travis wants the imports in a different order than on my box...
2017-11-22 15:47:03 +01:00
Ryan P Kilby
1a667f420d
Reimplement request attribute access w/ __getattr__ ( #5617 )
...
* Add tests for proxying WSGIRequest attributes in Request.
* Add request attribute exception test
* Reimplement request attribute access
2017-11-22 11:42:59 +01:00
Ryan P Kilby
ae88f5c55b
Minor cleanup for ModelSerializer tests ( #5598 )
...
* Replace assertRaises with assertRaisesMessage
* Remove outdated implicit Meta.fields test
* Simplify parent declared field test
2017-11-22 10:36:34 +01:00
Michał Bielawski
134a6f66f9
Fixed schema generation for filter backends ( #5613 )
2017-11-22 00:11:59 -05:00
Ryan P Kilby
a3df1c1199
Test Serializer exclude for declared fields ( #5599 )
...
* Test current behavior of exclude+declared field
* Assert declared fields are not present in exclude
2017-11-20 09:51:16 +01:00
Jon Dufresne
ff556a91fd
Remove references to unsupported Django versions in docs and code ( #5602 )
...
Per the trove classifiers, DRF only supports Django versions 1.10+. Can
drop documentation, code comments, and workarounds for older Django
versions.
2017-11-20 09:35:54 +01:00
Ryan P Kilby
2531998427
Rename test to reference correct issue ( #5610 )
2017-11-20 08:58:29 +01:00
Ryan P Kilby
9f66e8badd
Fix request body/POST access ( #5590 )
...
* Modernize middleware tests
* Added a failing test for #5582
* Set data ref on underlying django request
2017-11-15 20:58:37 +01:00
Ryan P Kilby
15024f3f07
Remove set_rollback() from compat ( #5591 )
...
* Remove Django 1.6 transaction compat
* Move set_rollback from compat => views
2017-11-14 09:55:59 +01:00
Ryan P Kilby
8d7ce3726d
Compat cleanup ( #5581 )
...
* Reenable flake8 on compat, cleanup style/imports
* Cleanup compat urls imports
* Refactor compat url pattern/resolver imports
* Add comment re dropping pytz compat
... when dropping Django 1.10
* Strip whitespace
Grrr. GitHub web editor 😡
2017-11-10 09:41:03 +01:00
Jon Dufresne
f9c67f04d4
Clean up all whitespace throughout project ( #5578 )
...
* Remove trailing whitespace from lines
* Remove trailing nad leading whitespace from files
Allows for cleaner diffs in future changes. For editors that
automatically clean up whitespace on save, will avoid unrelated line
changes in diffs.
2017-11-09 20:57:53 +01:00
Jon Dufresne
f8e8381c00
Drop compat wrapper for TimeDelta.total_seconds() ( #5577 )
...
TimeDelta.total_seconds() was introduced in Python 2.7 and 3.2. It is
available on all supported Python versions.
https://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
https://docs.python.org/3/library/datetime.html#datetime.timedelta.total_seconds
2017-11-09 09:03:48 +01:00
Ryan P Kilby
ca341ef705
Add compat import test
2017-11-06 09:56:57 -05:00
Yuri Nikulin
7a278b3540
fix processing unicode symbols in query_string by Python 2 ( #5552 )
...
* fix processing unicode symbols in query_string by Python 2
* Add comments for encoded test strings.
* Add file encoding for Python 2.
2017-11-06 11:46:37 +01:00
Sergei Azarkin
d49d796c85
Change ImageField validation pattern, use validators from DjangoImageField ( #5539 )
2017-11-06 11:14:37 +01:00
Jon Dufresne
0552810410
Use dict and set literals instead of calls to dict() and set() ( #5559 )
...
Set literals are available on all supported Python versions. They are
idiomatic and always faster:
$ python3 -m timeit '{}'
10000000 loops, best of 3: 0.0357 usec per loop
$ python3 -m timeit 'dict()'
10000000 loops, best of 3: 0.104 usec per loop
$ python3 -m timeit '{1, 2, 3}'
10000000 loops, best of 3: 0.0754 usec per loop
$ python3 -m timeit 'set([1, 2, 3])'
1000000 loops, best of 3: 0.228 usec per loop
2017-11-06 10:03:01 +01:00
Jon Dufresne
f77e794dc8
Fix all BytesWarning caught during tests ( #5561 )
...
Running the tests with bytes warning enabled shows some bytes/str
mixups. Fix them all.
Some examples of mixing usage:
str(b'foo') -- calling str() on bytes
b'foo' == 'foo' -- compare str with bytes
'foo' + b'bar' -- concatenating str and bytes
2017-11-06 10:02:48 +01:00
Carlton Gibson
331c31370f
Add rounding parameter to DecimalField ( #5562 )
...
* Adding rounding parameter to DecimalField.
* Using standard `assert` instead of `self.fail()`.
* add testcase and PEP8 multilines fix
* flake8 fixes
* Use decimal module constants in tests.
* Add docs note for `rounding` parameter.
2017-11-06 09:55:09 +01:00
Jon Dufresne
44823b0e1d
Fix invalid escape sequence deprecation warnings
...
When running tests with warnings enabled, appear as:
DeprecationWarning: invalid escape sequence \d
Starting with Python 3.6, invalid escape sequences are deprecated. In a
future Python versions they will be a syntax error. For more details, see:
https://docs.python.org/3/whatsnew/3.6.html#deprecated-python-behavior
> A backslash-character pair that is not a valid escape sequence now
> generates a DeprecationWarning. Although this will eventually become a
> SyntaxError, that will not be for several Python releases.
2017-11-05 10:09:38 -08:00
Vasyl Dizhak
5d71d8d4b8
Increase test coverage for drf_create_token command ( #5550 )
2017-11-02 10:26:42 +01:00
Stephen Chisholm
93e75ec138
Catch OverflowError for "out of range" datetimes ( #5546 )
...
* Add test for #5545
* Catch OverflowError for "out of range" datetimes
2017-10-31 10:17:08 +01:00
Ryan P Kilby
5009aeff18
Fields with 'allow_null=True' should imply a default serialization value ( #5518 )
...
* Add test for dotted source + allow_null
* Field 'allow_null' implies 'default=None'
* Field 'allow_null' provides serialization default
2017-10-30 10:17:53 +01:00
Carlton Gibson
1f693c331e
Fix dotted source ordering ( #5533 )
...
* replaced '.' for '__' in dotted ordering sources
* Add test for non-dotted source.
2017-10-25 11:46:21 +02:00
Carlton Gibson
7261ae653a
Schema: Exclude OPTIONS/HEAD for ViewSet actions ( #5532 )
...
Closes #5528 .
Viewset custom actions (@detail_route etc) OPTIONS (and HEAD) methods were not being excluded from Schema Generations.
This PR adds a test reproducing the reported error and adjusts `EndpointEnumerator.get_allowed_methods()` to filter ViewSet actions in the same way as other `APIView`s
2017-10-25 10:56:40 +02:00
Jamie Cockburn
91fa8b923a
Stop JSONBoundField mangling invalid JSON ( #5526 ) ( #5527 )
2017-10-25 10:54:38 +02:00
Matteo Nastasi
9ec81e32da
substitute '@@' code block delimiter with triple backtick, more con… ( #5513 )
...
* substitute '@@' code block delimiter with triple back-tick, more consistent with other markdown extensions
* remove development print and allow spaces between triple backtick and syntax name in codeblock
* update comparison content for markdown test
2017-10-20 11:39:29 +02:00
Ryan P Kilby
6221124e0d
Docs about default value for dotted source, additional tests ( #5489 )
...
* Add docs note on dotted source + default value
* Add additional dotted source tests
2017-10-16 11:33:46 +02:00
Marcin
5d7b6e5b2f
Fixed issues with schema name collisions ( #5486 )
...
* Fixed issues with schema name collisions
* Fixed mutating issues in python 3
* Optimized solution
* Fixed isort
* Removed not needed cast
* Fix for key collision
* Added preferred key to preserve if available
* Add accidently removed test
2017-10-16 11:32:48 +02:00
Carlton Gibson
c7fb60bcd4
Django 2.0a1 compat ( #5503 )
...
* Update remaing `include` calls
Missed as part of #5481 cleanup.
* Provide app_name in include_docs_urls
* Update remaining get_regex_pattern usages
* Allow functools.partial in is_simple_callable check
2017-10-16 11:31:13 +02:00
Maxim Kuznetsov
c91b081837
Support URLPattern and URLResolver from Django 2.0 ( #5500 )
...
* Support URLPattern and URLResolver from Django 2.0
* fix import order
2017-10-16 09:33:31 +02:00
Carlton Gibson
c674687782
Remove Django 1.8 & 1.9 compatibility code ( #5481 )
...
* Identify code that needs to be pulled out of/removed from compat.py
* Extract modern code from get_names_and_managers in compat.py and remove compat code
* Extract modern code from is_authenticated() in compat.py and remove.
* Extract modern code from is_anonymous() in compat.py and remove
* Extract modern code from get_related_model() from compat.py and remove
* Extract modern code from value_from_object() in compat.py and remove
* Update postgres compat
JSONField now always available.
* Remove DecimalValidator compat
* Remove get_remote_field compat
* Remove template_render compat
Plus isort.
* Remove set_many compat
* Remove include compat
2017-10-05 20:41:38 +02:00
Carlton Gibson
2edeb74e0e
Have is_list_view
recognise RetrieveModel… views ( #5480 )
...
Fixes #5165
2017-10-05 20:41:14 +02:00
Carlton Gibson
d138f30a86
Fix naming collisions in Schema Generation ( #5464 )
...
* Add failing tests for #4704
* Add generic view based test case.
* Adjust insert_into to raise ValueError
2017-10-05 11:06:09 +02:00
Carlton Gibson
dc4a98fbe8
Fix documentation data
rendering ( #5472 )
...
* Add failing test for #5395
* Add data filter for use in templates
Closes #5395
* Fix isort
2017-10-02 13:26:44 +02:00
Matteo Nastasi
063534ae50
Docstrings highlighting with pygments ( #5462 )
...
* add 'docstrings-with-pygments' feature without packages checks and tests
* move syntax_highlight doc filter in compatibility module and define it conditionally
* typo fixed
* add test for optional code highlight ('pygments' and 'markdown' packages must be installed)
2017-10-02 11:44:29 +02:00
Carlton Gibson
b1c6ea1240
Adjust schema get_filter_fields rules to match framework ( #5454 )
...
Closes #5237
Generics/ModelViewset performs filtering on: list, retrieve, put, patch and destroy (plus method equivalents).
i.e. on list plus anything that calls `get_object`.
This PR makes schema generation follow that.
It adds `AutoSchema._allows_filters()` which can be overridden in subclasses.
I’ve made this initially “private” so we can make quick changes if needs be in a 3.7.1 etc.
2017-09-27 09:13:10 +02:00
Kris Dorosz
60b9e58a12
Add support for page_size parameter in CursorPaginator class
2017-09-25 11:25:51 +02:00
Carlton Gibson
e29ad1e7b3
JSONEncoder: Don’t strip microseconds from time
...
Closes #4749 .
This is the matching commit to the fix for `datetime` in #4256
2017-09-25 10:10:44 +02:00
Ryan P Kilby
8ab75a2f01
Add 'STRICT_JSON' API setting.
...
STRICT_JSON controls the renderer & parser behavior on whether or not
to accept non-standard float values (NaN, Infinity).
2017-09-25 09:08:20 +02:00
Ryan P Kilby
d740bae95a
Update json imports
2017-09-25 09:08:20 +02:00
Ryan P Kilby
b64f8066c0
Add json util wrapper, failing JSONField test
2017-09-25 09:08:20 +02:00
Ryan P Kilby
f6c19e5eac
Remove DjangoFilterBackend and associated tests
2017-09-20 16:47:54 +02:00
Carlton Gibson
7d6d043531
Fix DateTimeField TZ handling ( #5435 )
...
* Add failing TZ tests for DateTimeField
- tests "current" timezone activation
- tests output for non-UTC timezones
* Update DateTimeField TZ aware/naive test output
* Fix DateTimeField TZ handling
* Add Release Note for BC change
2017-09-20 12:15:15 +02:00
Jeremy Nauta
c0a48622e1
Allow ChoiceField.choices
to be set dynamically ( #5426 )
...
## Description
The `choices` field for the `ChoiceField` class should be able to be edited after `ChoiceField.__init__` is called.
```
field = ChoiceField(choices=[1,2])
field.choices = [1] # Should no longer allow `2` as a choice
```
Currently, you must update `choices`, `grouped_choices`, and `choice_strings_to_values` to achieve this. This P/R keeps `grouped_choices` and `choice_strings_to_values` in sync whenever the `choices` are edited.
2017-09-20 11:33:50 +02:00
Carlton Gibson
7b1582e00e
Allow schema = None
. Deprecate exclude_from_schema
( #5422 )
...
* Add tests for schema exclusions
* Move exclusion check to should_include_endpoint
* Update docs
* Switch to using `schema = None`
* Test PendingDeprecationWarnings
* Add note to release notes.
* s/deprecated/pending deprecation/
* Add PR link to release notes
* Correct typo in test class name
* Test 'exclude_from_schema' deprecation warning message (#1 )
* Correct deprecation warning message
2017-09-20 11:29:47 +02:00
Carlton Gibson
efff9ff338
5378 fix schema generation markdown ( #5421 )
...
* Test case for #5240
* Remove unnecessary strip() from get_description
Closes #5240
* Adjust test case
2017-09-14 12:20:41 +01:00
Carlton Gibson
d54df8c438
Refactor schema generation to allow per-view customisation ( #5354 )
...
* Initial Refactor Step
* Add descriptor class
* call from generator
* proxy back to generator for implementation.
* Move `get_link` to descriptor
* Move `get_description` to descriptor
* Remove need for generator in get_description
* Move get_path_fields to descriptor
* Move `get_serializer_fields` to descriptor
* Move `get_pagination_fields` to descriptor
* Move `get_filter_fields` to descriptor
* Move `get_encoding` to descriptor.
* Pass just `url` from SchemaGenerator to descriptor
* Make `view` a property
Encapsulates check for a view instance.
* Adjust API Reference docs
* Add `ManualSchema` class
* Refactor to `ViewInspector` plus `AutoSchema`
The interface then is **just** `get_link()`
* Add `manual_fields` kwarg to AutoSchema
* Add schema decorator for FBVs
* Adjust comments
* Docs: Provide full params in example
Ref feedback b52e372f8f (r137254795)
* Add docstring for ViewInstpector.__get__ descriptor method.
Ref https://github.com/encode/django-rest-framework/pull/5354#discussion_r137265022
* Make `schemas` a package.
* Split generators, inspectors, views.
* Adjust imports
* Rename to EndpointEnumerator
* Adjust ManualSchema to take `fields`
… and `description`.
Allows `url` and `action` to remain dynamic
* Add package/module docstrings
2017-09-14 09:46:34 +01:00
Sergei Azarkin
9aaea2586b
Fix authtoken managment command ( #5415 )
...
* Fix authtoken managment command username param
2017-09-12 14:03:29 +01:00
Ryan P Kilby
ae95ed1ec2
Add repr(value) to the assert msg in FieldValues
2017-09-11 05:18:39 -04:00
Carlton Gibson
71ad99e0b2
Merge pull request #5388 from founders4schools/fix/named-source
...
Fix ModelSerializer custom named fields with source on model
2017-09-04 17:24:36 +02:00
jhg14
66b2c6149e
Fix code style
2017-09-04 16:17:43 +01:00
jhg14
4345894445
Add simplest possible failing test
2017-09-04 15:44:10 +01:00
jhg14
3c1bf6bfd5
Add failing test for named attribute
...
Fix test crudely
Remove comment
2017-09-04 15:44:04 +01:00
Igor Tokarev
79be20a7c6
Updated supported values for the NullBooleanField ( #5387 )
...
* Updated supported values for the NullBooleanField.
* Added check for unhashable types in NullBooleanField.
2017-09-04 10:11:53 +01:00
Carlton Gibson
7cd59147ea
Merge pull request #5376 from rpkilby/django-perms-queryset
...
DjangoModelPermissions should perform auth check before accessing the view's queryset
2017-09-04 08:24:40 +02:00
Ryan P Kilby
23b2d8099b
Unify QS handling for model/object permissions
2017-09-01 13:56:39 -04:00
Ryan P Kilby
bc49746dd3
Fix test name
2017-08-31 08:26:14 -04:00
Carlton Gibson
27c382c98d
Merge pull request #5351 from rpkilby/requestfactory-contenttype
...
Unexpected result when passing empty body to RequestFactory
2017-08-31 12:13:49 +02:00
Ryan P Kilby
0ec915e623
Force content_type inclusion in APIRequestFactory
2017-08-31 05:45:12 -04:00
Ryan P Kilby
2ea368e80f
Add failing test for #5367
2017-08-30 16:53:08 -04:00
Ryan P Kilby
79c1f2154a
Fix authorization few perms tests
2017-08-30 16:52:38 -04:00
Ryan P Kilby
94e5d05caa
Add failing test for #5371
2017-08-30 14:06:43 -04:00
Ryan P Kilby
eb88687e28
Test RequestFactory with empty body
2017-08-22 15:02:18 -04:00
Carlton Gibson
d2286ba658
Merge pull request #5326 from limdauto/limdauto-patch-1
...
Fix introspection of list field in schema
2017-08-21 10:09:57 +02:00
Lim H
56021f9e77
Add tests for list field to schema
2017-08-20 17:12:56 +01:00
Woile
a1546cc266
[NEW] Tests for templatetags.schema_links
2017-08-17 21:14:26 +02:00
Alexander Dutton
e80b78d1cb
RemoteUserAuthentication, docs, and tests ( #5306 )
...
RemoteUserAuthentication, docs, and tests
2017-08-11 10:35:00 +01:00
Ryan P Kilby
26ebb88306
Revert 3288 ( #5313 )
...
* Add regression test for #2505 . Thanks @pySilver!
* Add regression test for #5087
* Revert "Cached the field's root and context property."
This reverts commit 792005806b
.
2017-08-07 16:52:09 +01:00
Ryan P Kilby
d1cfec8d87
Fix SearchFilter to-many behavior by ANDing cond's
2017-07-10 14:50:47 -04:00
Ryan P Kilby
f02b7f1329
Add failing test for #4655
2017-07-10 14:20:23 -04:00
Tom Christie
6d4d4dfd04
Ensure closables in request.FILES get closed. ( #5262 )
...
Ensure closables on `.FILES` get closed.
2017-07-10 13:42:02 +01:00
Tom Christie
39f6f1137c
Merge pull request #5261 from encode/validation-error-on-invalid-timezone-parsing
...
Raise validation error on invalid timezone parsing.
2017-07-10 11:27:28 +01:00
Tom Christie
41901185d2
Ignore timezone test case for Django 1.8, due to differing behavior.
2017-07-10 11:18:26 +01:00
Tom Christie
fbb3490989
Merge pull request #5188 from andreagrandi/auth-token-cmd
...
Add Django manage command to create a DRF user Token
2017-07-10 10:35:05 +01:00
Tom Christie
7d240a2e50
Minor cleanup in test.
2017-07-10 10:30:39 +01:00
Tom Christie
c7e2bad524
Merge pull request #5189 from myrubapa/master
...
Fix API documentation templates do not check for user authentication #5162
2017-07-10 10:28:33 +01:00
Tom Christie
bf7fcc495b
Raise validation error on invalid timezone parsing.
2017-07-10 10:14:31 +01:00
Tom Christie
3dab905656
Merge pull request #5231 from dmmatson/feature/slugfield-allow-unicode
...
Fixed tests on Windows. Added unicode support to SlugField
2017-07-07 12:41:52 +01:00
dmmatson
302a9d089e
Fixed tests on Windows. Added unicode support to SlugField
2017-06-23 23:11:17 -06:00
Venelin Stoykov
0e5d26fa6a
Fixed #5228 Set ViewSet args/kwargs/request before dispatch
2017-06-22 16:22:17 +03:00
Tom Christie
598e5877cd
Merge pull request #5192 from matteius/DRF-5135-one-to-one-pk
...
Special case for when OneToOneField is also primary key.
2017-06-16 12:06:12 +01:00
Andrea Grandi
d2459710ca
Implement option to reset User token
2017-06-03 11:58:01 +01:00
Andrea Grandi
be590d61c0
Handle invalid User situation
2017-05-31 23:01:35 +01:00
Matt Davis
88f9dbceec
Silly linting change
...
import ordering matters
2017-05-30 14:13:29 -04:00
Matt Davis
6115815108
Special case for when OneToOneField is also primary key.
...
https://github.com/encode/django-rest-framework/issues/5135
2017-05-30 13:57:45 -04:00
Bekhzod Tillakhanov
31d6ef1ba2
Remove new line
2017-05-30 20:36:46 +05:00
Bekhzod Tillakhanov
84e22cc2f3
Scheme fix when unauth and Flask8 lint fix
2017-05-30 00:15:07 +05:00
Andrea Grandi
d198b1abe6
Add Django manage command to create a DRF user Token
2017-05-29 17:07:50 +01:00
Tom Christie
9c9525b130
Merge pull request #5187 from mathpresso-mom/list_route_regex
...
Fix list_route, detail_route with kwargs contains curly bracket in url_path
2017-05-29 13:47:19 +01:00
Tom Christie
e2157fbf7c
Merge pull request #5174 from tadhg-ohiggins/html_cutoff_none
...
Fix exception when HTML_CUTOFF is set to None
2017-05-29 11:54:03 +01:00
Dryice Liu
836328594b
add test
2017-05-29 08:27:07 +08:00
이동환
973860d9fe
Added: test for list_route and detail_route with regex url_path
2017-05-28 18:38:09 +09:00
Mariusz Felisiak
a002bb5c67
Fixed test_hyperlinked_related_lookup_url_encoded_exists.
...
Space character ' ' is prohibited in IRIs, therefore we shouldn't
rely on encoding '%20' to ' ' in the HyperlinkedRelatedField tests.
2017-05-26 09:56:26 +02:00
Tadhg O'Higgins
99782c2160
Add tests for HTML_CUTOFF setting and fix issue where setting it to None would raise an exception.
2017-05-24 16:46:18 -07:00
Thomas Achtemichuk
c9c383dfad
Don't trim whitespace from authtoken passwords
...
* Fixes #5148
2017-05-17 14:52:39 -04:00
Daniel Hahler
17bf312408
fixup! Add failing test
...
[ci skip]
2017-05-16 12:10:45 +02:00
Daniel Hahler
2b199f7588
Add failing test
2017-05-16 12:02:23 +02:00
Vimarsh Chaturvedi
7b4afdc737
Merge branch 'master' into issue4989
2017-05-13 19:10:47 +05:30
vimarshc
b2d6149301
importing regex constant to remove invalid parameters.
2017-05-13 05:14:32 +05:30
vimarshc
ed70f5636a
Added failing test case for multiple hyphens in orderingfilter paramter
2017-05-11 12:56:41 +05:30
Nabil Jamaleddine
cdb8a3c3c8
Add ValidationError to except in get_object_or_404 for django 1.11
2017-05-05 21:17:12 -04:00
Ryan P Kilby
53b100d03d
Add failing test for filter backend mro
2017-05-03 12:50:40 -04:00
Tom Christie
97312699f5
Merge pull request #5085 from hurturk/schema-method-limited
...
Generate schema with respect to http_method_names provided by CBV
2017-05-03 09:16:01 +01:00
Tom Christie
dea601dc86
Merge pull request #4222 from NewVadim/master
...
Fix partial update for the ListSerializer.
2017-05-02 10:17:12 +01:00
Tom Christie
5ba2368ff9
Merge pull request #4987 from halfstrik/master
...
Added test for DateTimeField validation when server has timezone with…
2017-04-27 17:22:27 +01:00
hurturk
2196cd2bbb
Generate schema with respect to http_method_names provided by CBV
2017-04-18 23:44:18 -04:00
Maciej Urbanski
5e185aa26b
add URL path unquote to HyperlinkedRelatedField.to_internal_value
2017-04-14 01:56:44 +02:00
Tom Christie
33290170e8
Merge pull request #5060 from jpadilla/encode
...
Update links after moving to encode org
2017-04-07 17:20:51 +01:00
José Padilla
c1f31492ae
Update links after moving to encode org
2017-04-07 10:28:35 -04:00
Ian Cordasco
c2ee1b3033
Use overridden settings exception handler
...
Instead of using the api_settings exception handler, we use the
overridden settings attribute to find the correct handler.
Closes #5054
2017-04-06 14:05:29 -05:00
Ekluv
d66304abe6
update test case
2017-03-28 12:02:03 +05:30
Ekluv
ef8092ba2f
update test case
2017-03-28 11:50:55 +05:30
Ekluv
56fe0e4b3f
fix unique=True validation for ChoiceField
2017-03-28 00:38:21 +05:30
Sergey Petrunin
b0a0c30bfe
Added pytz exception in compat module.
...
Mock pytz.timezone localize in tests.
Ref: #4986
2017-03-22 00:03:32 -04:00
Sergey Petrunin
e4a1bd140b
Update error message.
...
Ref: #4986
2017-03-20 18:47:25 -04:00
Sergey Petrunin
d4726dab81
Fix bug for not existent or ambiguous datetime during native to aware conversion in timezone with DST.
...
Ref: #4986
2017-03-18 23:13:26 -04:00
Sergey Petrunin
1ee54fb85c
Added test for DateTimeField validation when server has timezone with DST and input is a native time in a DST shift interval.
...
Added pytz to requirements-testing.txt to reproduce the case.
2017-03-15 23:45:41 -04:00
Tom Christie
43b38964ea
Support HEAD in viewsets
2017-03-13 12:51:03 +00:00
Asif Saifuddin Auvi
baea07c511
converted testing test asserts to pytest ( #4949 )
...
* converted testing test asserts to pytest
* moved 3rd arg from test_empty_post_uses_default_boolean_value test assert
2017-03-10 09:00:00 +00:00
Tom Christie
52db57a6e7
Version 3.6 ( #4943 )
2017-03-09 14:49:51 +00:00
Tibo Beijen
cf5d401a0e
Allow required false and default ( #4692 )
...
* Default value will now be used when serializing if key or attribute is missing.
2017-03-07 13:19:19 +00:00
Tom Christie
68d2020112
Live API documentation ( #4755 )
2017-03-03 15:24:37 +00:00
Tim Watts
8df340908b
Add failing tests and fix for dict that have a key items
#4931 ( #4932 )
2017-03-03 09:23:09 +00:00
tdruez
d616c1591f
Added a test to cover the DjangoModelPermissions #4927 issue
...
`DjangoObjectPermissions` and `DjangoModelPermissions` are now properly cover for the `METHOD_NOT_ALLOWED` issue
2017-03-01 09:50:21 +01:00
tdruez
c30ccac38e
Added a failing test for #4927
2017-02-27 20:39:47 +01:00
Ran Benita
7a408f6cd2
Guard against the possible misspelling readonly_fields
in model serializers
...
Fixes #4897 .
2017-02-22 13:27:23 +02:00
Isaac Stone
289e1e440e
Check for collection.Mapping instead of dict
...
issue #4901
2017-02-19 13:10:03 -08:00
Mariusz Felisiak
cd469f616a
Increased utils/encoders.py test coverage.
2017-02-15 07:17:33 +01:00
李扬
cbad236f6d
Add max_length and min_length arguments for ListField ( #4877 )
2017-02-06 09:36:03 +00:00
Mariusz Felisiak
b99272c425
Fixed dedent
for tab indent.
2017-01-31 20:57:52 +01:00
Artem Muterko
d610d150f1
Add test for pagination when limit not set
2017-01-31 16:51:09 +02:00
Mariusz Felisiak
3001b56e06
Fixed Django 2.0 compatibility due to django.conf.urls.include
parameters change. ( #4866 )
2017-01-30 16:11:19 +00:00
Artem Muterko
31e9f7dfbb
Add remaining tests for generics ( #4865 )
2017-01-30 11:08:03 +00:00
Artem Muterko
220be31791
Git add remaining tests for BaseSerializer ( #4857 )
2017-01-27 15:44:00 +00:00
Artem Muterko
d0eb2e6cae
Add remaining tests for metadata ( #4855 )
2017-01-27 09:25:51 +00:00
Artem Muterko
21166a3ab6
Add couple of tests for filters ( #4849 )
2017-01-25 14:35:12 +00:00
Artem Muterko
48b5aa71f2
Refactor according to comments in PR ( #4848 )
2017-01-25 10:38:27 +00:00
Artem Muterko
9c8adb4812
Add couple of tests for compat module ( #4845 )
2017-01-24 12:50:35 +00:00
Mariusz Felisiak
6b399f1193
Fixed test_one_to_one_with_inheritance. Added required on_delete attribute to OneToOneField field. ( #4838 )
2017-01-24 09:56:46 +00:00
Mariusz Felisiak
5c0f9f147c
Removed unnecessary utc wrapper. ( #4839 )
2017-01-23 16:22:32 +00:00
Artem Muterko
247954d497
Add tests for BasicAuthentication and TokenAuthentication ( #4837 )
...
* Add tests for BasicAuthentication
* Add tests for Token authentication
* Adjust test to pass on Django 1.8
2017-01-23 15:08:59 +00:00
José Padilla
d686b2cb15
Merge pull request #4834 from auvipy/slug
...
converted test asserts of relations slug to pytest
2017-01-20 15:42:20 -05:00
Asif Saifuddin Auvi
d2ae41529c
fix wrong assert
2017-01-21 02:25:36 +06:00
Asif Saifuddin Auvi
63d8dc0b9b
converted test asserts of relations slug to pytest
2017-01-21 02:14:33 +06:00
Artem Muterko
8043ff3fef
Add test for urlquote_wrapper ( #4832 )
2017-01-20 20:09:47 +00:00
Asif Saifuddin Auvi
1ef334875f
converted test asserts of hyperlin relations to pytest
2017-01-21 01:41:45 +06:00
Artem Muterko
0186b073bf
Refactor router tests to pytest style
2017-01-19 18:00:07 +02:00
Artem Muterko
c2ce2fb3f0
Add tests for BaseContentNegotiation
2017-01-19 12:50:17 +02:00
Artem Muterko
076ca6e765
Add test for filter_renderers
2017-01-19 12:43:18 +02:00
Artem Muterko
46210205a4
Add tests for some template tags ( #4815 )
2017-01-18 20:41:32 +00:00
Artem Muterko
a8534baa41
Add remaining tests for validators ( #4827 )
2017-01-18 20:39:20 +00:00
Xavier Ordoquy
5e9249f429
Merge pull request #4824 from auvipy/newv
...
new matrix for python 3.6 and django 1.11
2017-01-18 17:24:44 +01:00
Asif Saifuddin Auvi
026a8d8707
make lint happy with isort --recursive
2017-01-18 22:15:44 +06:00
Asif Saifuddin Auvi
006ae46092
remove trailing comma
2017-01-18 21:40:07 +06:00
Asif Saifuddin Auvi
326e09dde9
added utc compat to tests of fields
2017-01-18 20:01:18 +06:00
Artem Muterko
0a496a423d
Add tests for qs_exists ( #4822 )
2017-01-18 11:46:12 +00:00
Artem Muterko
06a5bcc88e
Add mediatype tests ( #4813 )
2017-01-16 18:17:51 +00:00
Artem Muterko
e965270f51
Template html renderer tests ( #4817 )
2017-01-16 18:16:43 +00:00
Artem Muterko
41ac3565de
Add test for delete field ( #4819 )
...
* Add test for delete field
* Remove unused import
2017-01-16 13:46:32 +00:00
Artem Muterko
514b5a6dd1
Add couple of test for AuthToken ( #4816 )
...
* Add couple of test for AuthToken
* PEP8 cleanup
2017-01-15 08:41:47 +00:00
José Padilla
5efbe17a86
Merge pull request #4808 from micgeronimo/pytest-cleanup
...
Refactor some tests to pytest style
2017-01-14 08:08:02 -05:00
Artem Muterko
ebd840c19f
Revert several tests
2017-01-12 22:53:01 +02:00
Artem Muterko
c686749eef
Throttle tests fix ( #4810 )
2017-01-12 17:53:48 +00:00
Artem Muterko
b4a9a1b9a3
Throttle tests ( #4807 )
2017-01-12 17:03:32 +00:00
Artem Muterko
9a6352789e
Refactor request tests style
2017-01-12 18:41:27 +02:00
Artem Muterko
bd86104861
Refactor reverse tests style
2017-01-12 18:41:16 +02:00
Artem Muterko
401ab54275
Refactor schemas tests style
2017-01-12 18:33:24 +02:00
Asif Saifuddin Auvi
8fcb8d6350
converted metadata test asserts to pytest ( #4806 )
2017-01-12 08:21:15 +00:00
Artem Muterko
dd11bd42a2
Add remaining tests for SimpleRateThrottle ( #4803 )
2017-01-11 20:39:48 +00:00
Asif Saifuddin Auvi
14baf7eb7a
converted serializer bulk update test asserts to pytest ( #4805 )
2017-01-11 20:38:32 +00:00
Artem Muterko
06afe6b1bf
Convert tests to pytest style
2017-01-11 21:13:30 +02:00
Artem Muterko
66ffaaf5d3
Add more tests for Base and SimpleRate throttles ( #4802 )
2017-01-11 09:42:25 +00:00
Artem Muterko
e9d371f29a
Add couple of basic tests for SimpleRateThrottle ( #4800 )
2017-01-09 20:43:54 +00:00
Artem Muterko
b6b2c4bb5b
Renderer tests ( #4791 )
2017-01-08 16:33:43 +00:00
Artem Muterko
99d57df990
Convert encoders tests to pytest style ( #4796 )
2017-01-08 16:10:47 +00:00
Artem Muterko
a5fcf10c0e
Raise RuntimeError when trying to encode coreapi objects ( #4790 )
2017-01-06 22:32:13 +00:00
José Padilla
559a0a89fc
Merge pull request #4779 from auvipy/pyts0
...
converted throttling tests asserts to pytest
2017-01-04 10:31:44 -05:00
Asif Saifuddin Auvi
88a910ebc8
converted negotiation tests asserts to pytest
2017-01-04 18:58:01 +06:00
Asif Saifuddin Auvi
6ca7f76c67
Merge branch 'master' into pyts0
2017-01-04 18:43:55 +06:00
Asif Saifuddin Auvi
43677b8baf
flake8 fix
2017-01-04 17:54:14 +06:00
Asif Saifuddin Auvi
8fa5846e51
conerted multi-table-inheritence test asserts to pytest
2017-01-04 17:46:55 +06:00
Asif Saifuddin Auvi
a7d33f4519
conerted throttling tests asserts to pytest
2017-01-04 15:59:21 +06:00
Asif Saifuddin Auvi
7874bcabe9
convert some more test asserts to pytest ( #4778 )
...
* converted urlpatterns test asserts to pytest
* converted test utils asserts to pytest
* removed extra newlines
2017-01-04 09:13:32 +00:00
Ryan P Kilby
11fd3bf108
Add disabling of declared fields on serializer subclasses ( #4764 )
...
* Add test for disabling declared fields on child
* Check that declared base field is not in attrs
* Update meta inheritance docs to include serializer
* Test that meta fields cannot be declared as None
* Add docs example for declarative field disabling
2017-01-03 21:14:19 +00:00
Matthew Medal
93fe531dea
Breadcrumb view name suffix fix ( #4750 )
...
* add failing testcase for breadcrumb suffixes missing when using ModelViewSets
* fix get_breadcrumbs to honor overridden get_view_name and keep viewset suffixes
* ensure suffixes are appended in breadcrumb util
2016-12-20 22:19:00 +00:00
Asif Saifuddin Auvi
841a91e950
fix authentication_test pytest failure
2016-12-06 00:47:58 +06:00
Asif Saifuddin Auvi
85807e1958
converted authentication_test asserts to pytest
2016-12-06 00:33:13 +06:00
Asif Saifuddin Auvi
932d04a4be
Browsable API tests asserts to pytest ( #4725 )
2016-12-01 16:17:36 +00:00
Asif Saifuddin Auvi
4f6c326a99
converted remaining unittes asserts of fields test to pytest ( #4724 )
2016-11-30 12:52:32 +00:00
Asif Saifuddin Auvi
1a741bb2a2
converted asserts of exceptions test to pytest ( #4723 )
2016-11-30 11:12:01 +00:00
Asif Saifuddin Auvi
7e8b01dbd2
converted asserts of encoders test to pytest
2016-11-30 16:45:48 +06:00
Asif Saifuddin Auvi
9a3f8d9a9c
converted asserts of descriptions test to pytest
2016-11-30 16:42:43 +06:00
Asif Saifuddin Auvi
a9b6c97485
converted asserts of decorators test to pytest
2016-11-30 16:24:48 +06:00
Asif Saifuddin Auvi
504f4b44c6
converted asserts of atomic requests test to pytest
2016-11-30 16:17:30 +06:00
Asif Saifuddin Auvi
e03d88ced7
more pytest style assert ( #4719 )
2016-11-30 09:48:33 +00:00
Asif Saifuddin Auvi
10b5f36fec
added fixes
2016-11-30 12:35:34 +06:00
Asif Saifuddin Auvi
f5a900a404
some reverts to fix test
2016-11-30 10:01:37 +06:00
Asif Saifuddin Auvi
a5bb9825f3
attempt to fix test again
2016-11-30 09:56:22 +06:00
Asif Saifuddin Auvi
4a0829d6ec
attempt to fix test
2016-11-30 02:08:37 +06:00
Asif Saifuddin Auvi
27641e07b5
converted test asserts of generics-test to pytest
2016-11-30 01:13:21 +06:00
Ryan P Kilby
6498766749
Fix django deprecation warnings ( #4712 )
2016-11-29 09:49:18 +00:00
Asif Saifuddin Auvi
9f4c9691f4
converted filters tests asserts to pytest style ( #4711 )
2016-11-28 14:31:27 +00:00
Asif Saifuddin Auvi
42d6098c74
converted primary key relations test asserts to pytest ( #4709 )
2016-11-28 09:43:48 +00:00
Asif Saifuddin Auvi
cd3fd36d0e
converted generic relations assert to pytest style
2016-11-27 23:55:09 +06:00
Asif Saifuddin Auvi
5ec223bca0
converted validators and write_only_fields test to pytest style ( #4697 )
2016-11-23 14:05:34 +00:00
Asif Saifuddin Auvi
4b59ec27fa
convert tests asserts to pytest style ( #4696 )
2016-11-23 13:17:00 +00:00
Tom Christie
24791cb353
Invalidate any existing prefetch cache on PUT requests. ( #4668 )
2016-11-11 09:44:35 +00:00
Andrzej Pragacz
45e058d7ba
Fix unhandled Http404, PermissionDenied in schema generation ( #4645 ) ( #4646 )
2016-11-02 09:04:01 +00:00
Kennedy Mwenja
7038571157
Enable cursor pagination of value querysets. ( #4569 )
...
To do `GROUP_BY` queries in django requires one to use `.values()`
eg this groups posts by user getting a count of posts per user.
```
Posts.objects.order_by('user').values('user').annotate(post_count=Count('post'))
```
This would produce a value queryset which serializes its result
objects as dictionaries while `CursorPagination` requires a queryset
with result objects that are model instances.
This commit enables cursor pagination for value querysets.
- had to mangle the tests a bit to test it out. They might need
some refactoring.
- tried the same for `.values_list()` but it turned out to be
trickier than I expected since you have to use tuple indexes.
2016-11-01 10:42:01 +00:00
Nicolas Delaby
97d848413e
Fix support of get_full_details() for Throttled exceptions ( #4627 )
...
Since `str` objects are immutable, appending to existing `str` creates
in fact a new `str` instance.
Thus `ErrorDetail.detail.code` attribute is lost after `str` concatenation operation.
2016-11-01 10:38:56 +00:00
Kieran Spear
98df932194
Fix FilterSet proxy ( #4620 )
2016-11-01 10:30:17 +00:00
Ryan P Kilby
d92b24a0b7
Make serializer fields import explicit ( #4628 )
2016-11-01 10:27:11 +00:00
Alex Kahan
895c67c9a2
Fixes #4532 ( #4636 )
2016-10-31 20:41:54 +00:00
Ryan P Kilby
eafc9a2393
Fix is_simple_callable with variable args, kwargs ( #4622 )
2016-10-25 20:47:24 +01:00
Tom Christie
0fe0e1e703
Fix schema base paths ( #4611 )
2016-10-21 16:59:34 +01:00
Tom Christie
f1bdce17b5
Fix for case of ListSerializer with single item ( #4609 )
2016-10-21 15:21:23 +01:00
Tom Christie
2395fb5386
Deprecate DjangoFilter backend ( #4593 )
...
Deprecate the built-in `rest_framework.filters.DjangoFilterBackend` in favour of the third-party `django_filters.rest_framework.DjangoFilterBackend`.
2016-10-20 10:47:09 +01:00
Tom Christie
de08f28a91
Test one to one with inheritance ( #4575 )
2016-10-13 14:21:23 +01:00
Tom Christie
8d0a91b002
Fix 3674 ( #4571 )
...
Handle ModelSerializer case for relationships to models with custom pk.
2016-10-13 12:43:43 +01:00
Alexey Evseev
2519ce9128
Fix schema generation with custom page_size pagination param ( #4567 )
2016-10-12 16:09:45 +01:00
Tom Christie
5677d063d8
Do not treat empty non-form input as HTML. ( #4566 )
2016-10-12 15:46:24 +01:00
Tom Christie
26e51ecd6c
When HTML form input is used with JSONField, treat the input as a JSON encoded string, not a JSON primative. ( #4565 )
2016-10-12 14:04:10 +01:00
Tom Christie
b419970431
Handle empty data with serializer ( #4564 )
2016-10-12 10:47:17 +01:00
Tom Christie
7f29cfc931
Lazy hyperlink names ( #4554 )
2016-10-11 12:18:00 +01:00
Tom Christie
d0b3b6470a
Fix prefetch_related updates. ( #4553 )
2016-10-11 11:07:40 +01:00
Tom Christie
a3802504a0
Error codes ( #4550 )
...
Add error codes to `APIException`
2016-10-11 10:25:21 +01:00
Tom Christie
0dec36eb41
Version 3.5 ( #4525 )
...
* Start test case
* Added 'requests' test client
* Address typos
* Graceful fallback if requests is not installed.
* Add cookie support
* Tests for auth and CSRF
* Py3 compat
* py3 compat
* py3 compat
* Add get_requests_client
* Added SchemaGenerator.should_include_link
* add settings for html cutoff on related fields
* Router doesn't work if prefix is blank, though project urls.py handles prefix
* Fix Django 1.10 to-many deprecation
* Add django.core.urlresolvers compatibility
* Update django-filter & django-guardian
* Check for empty router prefix; adjust URL accordingly
It's easiest to fix this issue after we have made the regex. To try
to fix it before would require doing something different for List vs
Detail, which means we'd have to know which type of url we're
constructing before acting accordingly.
* Fix misc django deprecations
* Use TOC extension instead of header
* Fix deprecations for py3k
* Add py3k compatibility to is_simple_callable
* Add is_simple_callable tests
* Drop python 3.2 support (EOL, Dropped by Django)
* schema_renderers= should *set* the renderers, not append to them.
* API client (#4424 )
* Fix release notes
* Add note about 'User account is disabled.' vs 'Unable to log in'
* Clean up schema generation (#4527 )
* Handle multiple methods on custom action (#4529 )
* RequestsClient, CoreAPIClient
* exclude_from_schema
* Added 'get_schema_view()' shortcut
* Added schema descriptions
* Better descriptions for schemas
* Add type annotation to schema generation
* Coerce schema 'pk' in path to actual field name
* Deprecations move into assertion errors
* Use get_schema_view in tests
* Updte CoreJSON media type
* Handle schema structure correctly when path prefixs exist. Closes #4401
* Add PendingDeprecation to Router schema generation.
* Added SCHEMA_COERCE_PATH_PK and SCHEMA_COERCE_METHOD_NAMES
* Renamed and documented 'get_schema_fields' interface.
2016-10-10 13:03:46 +01:00
Alex Kahan
4ff9e96b4c
Adding tests to encoder.py ( #4536 )
2016-10-05 09:54:59 +01:00
Alex Kahan
915ac22aeb
Adding tests for rest_framework.py ( #4523 )
2016-10-04 21:22:56 +01:00
Rowan Seymour
883efbc19f
Case insensitive uniqueness validation ( #4534 )
2016-10-04 13:44:50 +01:00
Tom Christie
be74d11165
Fallback behavior for request parsing when request.POST already accessed. ( #4500 )
2016-09-21 11:49:09 +01:00
Tom Christie
4655501d51
Fix regression of RegexField
. ( #4490 )
...
* Don't deepcopy 'regex' arguments, instead treat as immutable.
2016-09-15 12:44:45 +01:00
Mathieu Pillard
07efbdb45e
Fix APIClient.get() when path contains unicode arguments ( #4458 )
2016-09-02 17:00:03 +01:00
José Padilla
d0ed482d70
Skip HiddenField from Schema fields ( #4429 )
2016-08-22 16:53:53 +01:00
Tom Christie
e3f8d06baf
Include .action attribute on viewsets when generating schemas ( #4408 )
2016-08-15 17:10:55 +01:00
Tom Christie
101fd29039
Do not include uploads in request.POST ( #4407 )
2016-08-15 16:53:17 +01:00
Neil Parsons
7466b61e62
Don't strip empty query params when paginating ( #4260 )
2016-08-12 10:50:16 +01:00
Tom Christie
116917dbed
Add form field descriptions to schemas ( #4387 )
2016-08-11 16:18:33 +01:00
Tom Christie
01b498ec51
Fix schema categories for custom list actions ( #4386 )
2016-08-11 14:07:40 +01:00
Tom Christie
b50d8950ee
Pass request to schema generation ( #4383 )
...
Pass request to schema generation
2016-08-11 11:27:28 +01:00
Tom Christie
f16e880167
Stricter type validation for CharField. ( #4380 )
...
Stricter type validation for CharField
2016-08-10 17:22:19 +01:00
Tom Christie
f1a2eeb818
.choices property of RelatedField should preserve non-string values. ( #4379 )
...
Update RelatedField.choices to support non-string values
2016-08-10 16:38:59 +01:00
Tom Christie
9857cd9889
Add failing test for issue #3868 ( #4378 )
2016-08-10 16:04:32 +01:00
Daniel Hahler
378b04eeaa
Fix handling of ALLOWED_VERSIONS and no DEFAULT_VERSION ( #4370 )
...
When only `ALLOWED_VERSIONS` but no `DEFAULT_VERSION` is specified, a
version should be enforced.
2016-08-10 15:19:56 +01:00
Tom Christie
48f3db36d6
Allow optional max_digits on DecimalField ( #4377 )
2016-08-10 14:39:26 +01:00
Tom Christie
8105a4ac5a
Resolve form display with ChoiceField, MultipleChoiceField and non-string choices. ( #4374 )
...
* Add tests for html-form-rendering choice fields
* Resolve issues with ChoiceField, MultipleChoiceField and non-string options
* Ensure None template comparisons don't match string None
2016-08-10 12:02:33 +01:00
Dmitry Dygalo
e1768bdc16
Fixed various typos ( #4366 )
2016-08-08 09:32:22 +01:00
Tom Christie
d5178c9246
Include kwargs passed to 'as_view' when generating schemas ( #4359 )
2016-08-05 11:19:39 +01:00
Tom Christie
a9a097496e
extra_kwargs takes precedence over uniqueness kwargs ( #4349 )
2016-08-02 14:33:15 +01:00
Tom Christie
5500b265bc
Test cases for DictField with allow_null options ( #4348 )
2016-08-02 14:14:36 +01:00
Tom Christie
bda16a518a
Dedent tabs. ( #4347 )
2016-08-02 13:33:14 +01:00
Tom Christie
e37619f741
Serializer defaults should not be included in partial updates. ( #4346 )
...
Serializer default values should not be included in partial updates
2016-08-02 13:05:12 +01:00
Tom Christie
3ef3fee926
Descriptive error from FileUploadParser when filename not included. ( #4340 )
...
* Descriptive error from FileUploadParser when filename not included.
* Consistent handling of upload filenames
2016-08-01 18:44:58 +01:00
Tom Christie
46a44e52aa
Quantize incoming digitals ( #4339 )
2016-08-01 17:15:41 +01:00
Tom Christie
aa349fe767
Handle non-string input for IP fields ( #4338 )
2016-08-01 16:14:26 +01:00
Alexander Gaevsky
46a870c002
Fix schema generation for APIView, since it does not have get_serializer_class method. ( #4285 )
2016-07-27 15:36:36 +01:00
Tom Christie
351e0a4a99
Fix json indent parameter. Closes #4281 ( #4313 )
2016-07-27 11:49:01 +01:00
Tom Christie
5d3b56f957
Test case for #4272 ( #4310 )
...
* Test case for #4272
2016-07-26 16:28:10 +01:00
Sassan Haradji
f0f61aa077
use verbose_name instead of object_name in field_mapping ( #4299 )
...
* use verbose_name instead of object_name in error messages
2016-07-26 15:12:51 +01:00
Andi Albrecht
3ca0b15b17
Restore meta information for each search field. ( #4298 )
...
The meta information stored in opts needs to be restored for
each search field. Otherwise it references the wrong model
when an attribute of a related model comes before an attribute
of the original model in search fields. This doesn't apply to
m2m relations since must_call_distinct returns True in that
case.
2016-07-26 11:07:03 +01:00
Tom Christie
8385ae42c0
3.4.0 Release ( #4258 )
...
* 3.4.0 Release
* Version 3.4 release
* Full release notes
* Update translation files
* Update release documentation
* Update release notes
* Docs on supporting alternate schema formats
* Add schema_renderers to DefaultRouter
2016-07-13 16:30:41 +01:00
Mads Jensen
6defb8da47
lookup_type is deprecated in favor of lookup_expr ( #4259 )
...
* lookup_type is deprecated in favor of lookup_expr
* assertEquals is deprecated in favor of assertEqual
* app_name is a required keyword as of Django 1.10
2016-07-13 14:40:42 +01:00
kiyoqoko
6338ce80ab
Add localize keyword argument to DecimalField
( #4233 )
...
Add `localize` keyword argument for DecimalField
2016-07-06 16:07:16 +01:00
Tom Christie
6ff9840bde
Schemas & client libraries. ( #4179 )
...
* Added schema generation support.
* New tutorial section.
* API guide on schema generation.
* Topic guide on API clients.
2016-07-04 16:38:17 +01:00
Vadim
c752e9618f
Fix test for py32-django18.
2016-06-29 10:21:28 +03:00
Vadim
c0f4dfd8f3
Add tests for the ListSerializer for the TestSerializerPartialUsage.
...
Additional fix partial update for the ListSerializer.
2016-06-29 09:48:31 +03:00
Laurent De Marez
fdde44d9d1
Fix parsing multipart data using a nested serializer with list ( #3820 )
...
It is possible that a key in a MultiValueDict has multiple values, lists
are represented this way. When accessing a key in a MultiValueDict
it only returns the last element of that key. This becomes a problem
when parsing an html dict with a list inside of it.
To fix this problem we have to get and set the value using .getlist()
and .setlist().
2016-06-23 16:03:24 +01:00
Tom Christie
bc3485ab7d
Namespace versioning with nested namespaces ( #4219 )
...
Support nested namespaces with namespaced versioning.
2016-06-23 16:00:11 +01:00
Tom Christie
ea92d50582
Resolve tests against Django master ( #4218 )
2016-06-23 15:41:25 +01:00
Tom Christie
f81d516ae4
Robust uniqueness checks. ( #4217 )
...
* Robust uniqueness checks
* Add master to test matrix (allow_failures)
2016-06-23 15:09:23 +01:00
Simon Charette
90bb0c58ce
Prevented unnecessary distinct() call in SearchFilter. ( #3938 )
...
* Prevented unnecessary distinct() call in SearchFilter.
* Refactored SearchFilter lookup prefixes.
2016-06-23 13:49:23 +01:00
Tom Christie
9406e45b2c
Pass through strings as-in with DateTimeField ( #4196 )
2016-06-14 12:23:39 +01:00
Tom Christie
1633a0a2b1
Add test confirming that required=False is valid on a relational field ( #4195 )
2016-06-13 16:52:45 +01:00
Tom Christie
2e7fae7698
limit=0 should revert to default limit ( #4194 )
2016-06-13 16:32:43 +01:00
Tom Christie
c3b7fba918
Exclude read_only=True fields from unique_together validation & add docs. ( #4192 )
...
* Exclude read_only=True fields from unique_together validation
* Test to ensure that unique_together validators can be removed
* Do not add uniquness_extra_kwargs when validators are explicitly declared.
* Add docs on validation in complex cases
2016-06-13 13:31:12 +01:00
Tom Christie
bb22ab8ee7
More robust form rendering in the browsable API ( #4181 )
2016-06-08 17:13:20 +01:00
Tom Christie
a5f822d067
Empty cases of .validated_data and .errors as lists not dicts for ListSerializer ( #4180 )
2016-06-08 15:55:09 +01:00
Tom Christie
75751cc64e
Allow relative style hyperlinked URLs
2016-06-02 15:03:17 +01:00
Tom Christie
9c996d7d2a
Clean up existing deprecation warnings. ( #4166 )
...
* Add Meta.fields = '__all__' to serializer classes where required.
* Add explicit on_delete=models.CASCADE to ForeignKey fields.
* Use '.remote_field' and '.model' in preference to '.rel' and '.to' when inspecting model fields.
* Use new value_from_object in preference to internal _get_val_from_obj
2016-06-02 14:39:10 +01:00
Simon Charette
014e24b024
Do not list related field choices in OPTIONS requests.
...
Do not list related field choices in OPTIONS requests.
2016-06-01 16:33:03 +01:00
Tom Christie
994e1ba927
Django 1.10 support. ( #4158 )
...
* Added TEMPLATES setting to tests
* Remove deprecated view-string in URL conf
* Replace 'urls = ...' in test classes with override_settings('ROOT_URLCONF=...')
* Refactor UsingURLPatterns to use override_settings(ROOT_URLCONF=...) style
* Get model managers and names in a version-compatible manner.
* Apply override_settings to a TestCase, not a mixin class
* Use '.callback' property instead of private attributes when inspecting urlpatterns
* Pass 'user' to template explicitly
* Correct sorting of import statements.
* Remove unused TEMPLATE_LOADERS setting, in favor of TEMPLATES.
* Remove code style issue
* BaseFilter test requires a concrete model
* Resolve tox.ini issues
* Resolve isort differences between local and tox environments
2016-06-01 15:31:00 +01:00
Asif Saifuddin Auvi
dc09eef24a
Style fix of tests ( #4154 )
...
Clean up code style.
2016-06-01 10:40:54 +01:00
Asif Saifuddin Auvi
eef94856d8
deleted description.py as unneeded
2016-06-01 10:24:29 +06:00
Asif Saifuddin Auvi
4fabdee4a3
fix lint error
2016-06-01 02:04:38 +06:00
Asif Saifuddin Auvi
91bb17770e
removed description tests unicode related functions
2016-06-01 00:43:37 +06:00
Asif Saifuddin Auvi
3db45cb94d
removed description codes as it seems to be python 2.6 issue
2016-06-01 00:39:01 +06:00
Kennedy Mwenja
592eea9b9e
* Use get_serializer_class in ordering filter* Test improper configuration of ordering* Raise ImproperlyConfigured when missing get_serializer_class
...
* Use get_serializer_class in ordering filter
* Test improper configuration of ordering
* Raise ImproperlyConfigured when missing get_serializer_class
2016-05-26 09:59:13 +01:00
Xiao Hanyu
19bdfda49a
Fix #3844 , refine validator for fields with <source=> kwargs
...
When serializers has fields with something like `source=user.email`, the
uniqueness validator should check `email` field instead of `user`, cause
`user` is a model object.
2016-05-26 10:58:37 +08:00
Tom Christie
ebb4070467
Resolve TimeField representation for midnight value. ( #4107 )
2016-05-10 11:56:36 +01:00
José Padilla
0795f7394c
Prevent raising exception when limit is 0 ( #4098 )
2016-05-10 10:58:24 +01:00
Miro Hrončok
ffdac0d936
TokenAuthentication: Allow custom keyword in the header ( #4097 )
...
This allows subclassing TokenAuthentication and setting custom keyword,
thus allowing the Authorization header to be for example:
Bearer 956e252a-513c-48c5-92dd-bfddc364e812
It doesn't change the behavior of TokenAuthentication itself,
it simply allows to reuse the logic of TokenAuthentication without
the need of copy pasting the class and changing one hardcoded string.
Related: #4080
2016-05-04 10:53:34 +01:00
Germán Larraín
e19b21ecc5
Handle incorrectly padded HTTP basic auth header ( #4090 )
2016-05-03 09:24:55 +01:00
Daniele Varrazzo
88c80fe2e9
Fixed DecimalField arbitrary precision support ( #4075 )
2016-04-27 17:04:01 +01:00
Xavier Ordoquy
1823662e1e
Merge pull request #4044 from linovia/merge/3.3.x_to_master
...
Merge the changes in 3.3.x back to master.
2016-04-21 11:31:15 +02:00
Phivos Stylianides
08dad04b19
Fix warnings when running tests ( #4047 )
2016-04-11 14:13:11 +01:00
Simon Charette
d87f2bc7b6
OrderingFilter adjustements ( #3983 )
...
* Made sure the OrderingFilter relies on Field.verbose_name.
* Marked OrderingFilter's order labels for translation.
2016-04-08 15:37:23 +01:00
Xavier Ordoquy
bff3bebdbe
Merge remote-tracking branch 'reference/stable/3.3.x' into merge_test
...
# Conflicts:
# docs/topics/release-notes.md
2016-04-08 15:46:17 +02:00