Commit Graph

2939 Commits

Author SHA1 Message Date
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
Camille Harang
e99b30d28b Fix rest_framework.filters.OrderingFilter doesn't pass context to ser… (#4543)
* Fix rest_framework.filters.OrderingFilter doesn't pass context to serializers #4541

* #4541 Additional fix for remove_invalid_fields()
2016-10-10 11:59:02 +01:00
Rowan Seymour
883efbc19f Case insensitive uniqueness validation (#4534) 2016-10-04 13:44:50 +01:00
Dmitry Dygalo
b82ec540ad Remove code for old Django versions (#4513) 2016-09-23 23:03:02 +01:00
Tom Christie
7ab4a587d9 Version 3.4.7 (#4501) 2016-09-21 12:24:26 +01:00
Tom Christie
be74d11165 Fallback behavior for request parsing when request.POST already accessed. (#4500) 2016-09-21 11:49:09 +01:00
Ollie Ford
fe96ceced0 fixes response rendering with empty context (#4495)
This commit allows `response.render` to be called when
`response.rendered_context == {}`. This should be allowed, since
if [the JSONRenderer, for example](https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/renderers.py#L85-L92) receives a `None` context, it
sets it to an empty dictionary itself.
2016-09-17 03:13:34 +01:00
Tanner Hobson
fe4c4fa751 Fix indentation regression in API listing (#4493)
In commit 5392be4ddb, there was a change
made when cleaning up the template for the API listing that caused 2
spaces to appear before every header item (except the first) and before
the first line of the body of the response. This meant that it often
looked like:

HTTP 200 OK
  Allow: GET, OPTIONS
  Content-Type: application/json
  Vary: Accept

  {
    "key": "value",
    "key2": "value2"
}

This change removes those leading spaces, so that it will now look like:

HTTP 200 OK
Allow: GET, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "key": "value",
    "key2": "value2"
}
2016-09-17 03:09:49 +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
José Padilla
6b6f319509 Add missing comma (#4473) 2016-09-08 14:01:26 +01:00
TakesxiSximada
5df54a711f Set a view function's __module__ value to the WrappedAPIView object's __module__ (#4465) 2016-09-05 11:16:41 +01:00
Mathieu Pillard
07efbdb45e Fix APIClient.get() when path contains unicode arguments (#4458) 2016-09-02 17:00:03 +01:00
Tom Christie
f064ec6ac6 Version 3.4.6 (#4436) 2016-08-23 16:59:47 +01:00
Tom Christie
97806f9724 Add missing comma 2016-08-23 09:46:03 +01:00
José Padilla
d0ed482d70 Skip HiddenField from Schema fields (#4429) 2016-08-22 16:53:53 +01:00
orf
d540f0262b Improve Create to show the original exception traceback (#3508) 2016-08-19 14:42:13 +01:00
Tom Christie
a335309b33 Add __str__ method to PKOnlyObject (#4423) 2016-08-19 14:37:27 +01:00
Tom Christie
63342e81db Version 3.4.5 (#4421) 2016-08-19 12:45:20 +01:00
Tom Christie
382ea770b5 Improve debug error handling (#4416) 2016-08-18 14:42:15 +01:00
Tom Christie
b76984d222 Allow custom CSRF_HEADER_NAME setting. (#4415) 2016-08-18 11:24:03 +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
Tom Christie
785b206b81 Tweak doctsring. Closes #4404 [ci skip] 2016-08-15 16:21:51 +01:00
James Beith
075a0bde5a Fix template syntax error for as_list_of_strings (#4403) 2016-08-15 09:28:46 +01:00
Tom Christie
a7525d838a Version 3.4.4 (#4395) 2016-08-12 12:08:25 +01:00
Tom Christie
ae720d9bde Fix issue with generating categories for schema endpoints (#4394) 2016-08-12 10:58:47 +01:00
Neil Parsons
7466b61e62 Don't strip empty query params when paginating (#4260) 2016-08-12 10:50:16 +01:00
Leonid Shvechikov
1d26b398ad Fix comment for SerializerMethodField.bind method (#4389)
It seems that the example was copy&pasted and not updated properly.
2016-08-11 22:15:21 +01:00
Tom Christie
ebf43346a1 Do not re-run query for empty results with LimitOffsetPagination (#4388) 2016-08-11 16:54:55 +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
Akhil Lawrence
fa4ce50be7 Modified exception handler to throw django error page in case of 500 error (#4172)
Show Traceback HTML in browsable API
2016-08-10 15:24: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
2d43b17f9a Limit queryset when rendering relational choices. (#4375)
Limit querysets to html_cutoff when rendering relational choices
2016-08-10 13:01:10 +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
Tom Christie
0781182646 Fix call to .resolve_context (#4371) 2016-08-09 17:48:29 +01:00
Dmitry Dygalo
e1768bdc16 Fixed various typos (#4366) 2016-08-08 09:32:22 +01:00
Tom Christie
bb613c5ad1 Version 3.4.3 (#4361)
* Version 3.4.3
2016-08-05 13:33:25 +01:00
Tom Christie
f9cf22edc8 Version 3.4.2 (#4360) 2016-08-05 12:38:19 +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
11a2468379 Access request.user.is_authenticated as property not method, under Django 1.10+ (#4358)
* For Django >=1.10 use user.is_authenticated, not user.is_authenticated()
2016-08-05 11:04:01 +01:00
Tom Christie
aff146ae83 Filter HEAD out from schemas (#4357) 2016-08-05 10:23:40 +01:00
Tom Christie
a9a097496e extra_kwargs takes precedence over uniqueness kwargs (#4349) 2016-08-02 14:33:15 +01:00
Tom Christie
bda16a518a Dedent tabs. (#4347) 2016-08-02 13:33:14 +01:00
René Fleschenberg
9f5e841daf Change template context generation in TemplateHTMLRenderer (#4236)
- Change the name of ``resolve_context()`` to ``get_template_context()``.
- Pass the renderer context to this method, to give subclasses more flexibility
  when overriding.
2016-08-02 13:11:41 +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
jsurloppe
e997713313 urljoin with leading slash remove part of path (#4332) 2016-08-01 14:14:55 +01:00
Tom Christie
449ec1d724 Version 3.4.1 [ci skip] (#4326) 2016-07-28 13:34:35 +01:00
Tom Christie
e407dc7f01 Added root_renderers argument (#4323) 2016-07-28 12:50:51 +01:00
Tom Christie
061e0ed084 Added url and schema_url arguments (#4321) 2016-07-28 12:08:34 +01:00
Tom Christie
6a7d34ec34 Unique together checks should apply to fields that are read only, but have a default. (#4316) 2016-07-27 15:40:04 +01:00
Tom Christie
1acbc29d58 Minor style tweak. [ci skip] 2016-07-27 15:39:46 +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
3586c8a61a Set view.format_kwarg in schema generator (#4315) 2016-07-27 14:43:45 +01:00
Tom Christie
8ebf81b150 Schema support should function when 'pagination_class = None' (#4314) 2016-07-27 13:02:48 +01:00
Tom Christie
351e0a4a99 Fix json indent parameter. Closes #4281 (#4313) 2016-07-27 11:49:01 +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
Asif Saifuddin Auvi
b63099084f twitter bootstrap minor update (#4307)
* updated bootstrap min css to 3.3.7
* updated bootstrap min javascript to 3.3.7
2016-07-26 14:09:04 +01:00
Gustavo Pantuza
da2ff1bc4a Adding support for RFC 4918 status codes (#4291)
* Added HTTP status codes from RFC 4918

* Updated documentation about status codes

* Added reference to RFC 4918
2016-07-26 11:09:12 +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
Aymeric Augustin
a436515196 Add missing return statement.
Fix #4272.
2016-07-16 22:44:49 +02: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
Tom Christie
549210b50f Don't strip microseconds in JSON output. (#4256) 2016-07-11 14:34:23 +01:00
Tom Christie
321c060dbe Resolve incorrect media type (#4254) 2016-07-11 12:04:11 +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
Vikalp Jain
1d2fba906e Fix issues with routers for custom list-route and detail-routes (#4229) 2016-06-29 17:27:17 +01: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
f81d516ae4 Robust uniqueness checks. (#4217)
* Robust uniqueness checks
* Add master to test matrix (allow_failures)
2016-06-23 15:09:23 +01:00
Tom Christie
e1f7cc4082 Minor refactoring of must_call_distinct (#4215) 2016-06-23 14:02:25 +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
Rowan Seymour
36ca4b8e06 Make offset_cutoff a class attribute in CursorPagination so that it can be easily overridden in subclasses (#4212) 2016-06-23 10:37:15 +01:00
Tom Christie
798a971f20 Simplfy TimeField passing through strings (#4197)
* Simplfy TimeField passing through strings
2016-06-14 16:05:00 +01:00
Tom Christie
9406e45b2c Pass through strings as-in with DateTimeField (#4196) 2016-06-14 12:23:39 +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
9bffd35432 Handle bytestrings in JSON. Closes #4185. (#4191) 2016-06-13 10:41:50 +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
Asif Saifuddin Auvi
04e5b5b20a removed AUTH_USER_MODEL compat property (#4176)
Removed unnecessary `AUTH_USER_MODEL` compat variable.

(No longer required)
2016-06-07 12:13:35 +01:00
Sergei Sinitsyn
94863ee6d0 Change serializer field help_text rendering in browsable api (#3812) 2016-06-02 15:21:57 +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
Tom Christie
05b0c2adff Don't list M2M choices in OPTIONS requests. Refs #3751. (#4160) 2016-06-01 17:28:32 +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
Asif Saifuddin Auvi
b92901e591 updated jquery version to 1.12.4 (#4157)
Updated jquery version to 1.12.4
2016-06-01 15:33:36 +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
Tom Christie
fe2aede18d More robust default behavior on OrderingFilter (#4156) 2016-06-01 11:08:04 +01:00
KhasanovBI
92bf8b9197 Wrap guardian.VERSION in tuple, in django-guardian 1.4.2 version has list type and comparison fails. (#4149) 2016-05-26 20:22:38 +01: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
Ben Brostoff
400078311b Fix typos in ReturnDict and ReturnList docstrings 2016-05-16 20:39:13 -04:00