Commit Graph

771 Commits

Author SHA1 Message Date
Yuri Prezument
1b4c078db2 Failing test case for #669 2013-02-21 12:22:09 +02:00
Tom Christie
03afaee423 Merge branch 'browsable_api_patch' of https://github.com/wronglink/django-rest-framework into generic-form-input 2013-02-20 12:18:57 +00:00
Michael Elovskikh
2fb6fa2dd3 Minimal forms appearance improvements 2013-02-20 17:15:12 +06:00
Tom Christie
160d10d348 Fix docstring 2013-02-20 08:46:00 +00:00
Michael Elovskikh
533e472352 Added tabs between object form and generic content form on POST form 2013-02-15 18:25:36 +06:00
Michael Elovskikh
3195f72784 POST form using new form.html template 2013-02-15 16:39:24 +06:00
Michael Elovskikh
d3f6536365 Added tests for PATCH form in the Browsable API 2013-02-15 15:44:11 +06:00
Tom Christie
367909e2c2 Merge pull request #657 from dgaus/master
Make is_simple_callable consider default arguments
2013-02-15 01:13:14 -08:00
Tom Christie
6dd867c8fe Merge pull request #660 from pelme/timefield
Added a serializer TimeField
2013-02-15 01:12:03 -08:00
Tom Christie
c1a40c5899 Drop unused import. 2013-02-15 09:06:05 +00:00
Michael Elovskikh
8fdf925015 Added tabs between object form and generic content form on PUT/PATCH form
Some extra behaviour to `BrowsableAPIRenderer` to handle PATCH form.
Added PATCH button on generic content PUT form.
Tabs between object form and generic content form on PUT/PATCH form wich are
both allways visible now.

Fix #570
Refs #591
2013-02-15 14:41:12 +06:00
Andreas Pelme
5a5df18d18 Added a serializer TimeField 2013-02-14 21:19:51 +01:00
Tom Christie
af686ec11a request.DATA should use empty QueryDict for no data, not None. 2013-02-14 13:02:28 +00:00
Tom Christie
9d3153ed04 Fix broken clone_request 2013-02-14 12:50:55 +00:00
Tom Christie
24ed0fa4b9 Drop accidental (uneeded) validation logic. 2013-02-14 12:26:02 +00:00
Diego Gaustein
40b13a869b Make is_simple_callable consider fields which have default arguments 2013-02-13 20:34:23 -03:00
Tom Christie
f17bae8aac Version 2.2.0 2013-02-13 14:05:57 +00:00
Tom Christie
72412b69f0 Set PASSWORD_HASHERS to massively speed up tests (almost x10) 2013-02-13 12:36:05 +00:00
Tom Christie
b58e763287 Fix pk relations tests which were not running. 2013-02-13 12:33:04 +00:00
Tom Christie
d7417022f3 Kick travis again. 2013-02-13 11:51:03 +00:00
Tom Christie
31f45907e5 Kick travis. Meh. 2013-02-13 11:42:57 +00:00
Tom Christie
018298deb8 Relational fields use same field_to_native logic as regular fields.
Fixes #637. Closes #638.
2013-02-12 23:03:04 +00:00
Tom Christie
f341ead499 Test for None in 'dotted.source' component.
Closes #643.
2013-02-12 23:01:20 +00:00
Tom Christie
15fa42b647 Unicode literal fix 2013-02-12 23:00:43 +00:00
Tom Christie
f505b2e440 Clean up field_to_native logic 2013-02-12 22:59:01 +00:00
Tom Christie
724906c516 Test for #637. 2013-02-12 22:58:38 +00:00
Tom Christie
7f797abc19 Remove deprecated APIs from tests 2013-02-12 20:07:35 +00:00
Tom Christie
41ac1e8f32 Raise warnings if 'request' not in context for hyperlinked fields. 2013-02-12 13:54:50 +00:00
Tom Christie
388e617366 Raise warnings on implicit many serialization 2013-02-12 13:53:45 +00:00
Tom Christie
23fbbb1e16 Drop six module from coverage. 2013-02-12 08:58:29 +00:00
Tom Christie
f5a0275547 Tidy up internal view permission checking logic.
Also document correctly - these methods are now public and will fall
under the deprecation policy from now on.
2013-02-12 08:58:28 +00:00
Tom Christie
09b01887f2 New style object-level permission checks 2013-02-12 08:58:28 +00:00
Tom Christie
aa03425c09 Merge pull request #651 from fernandogrd/master
DictWithMetadata.__getstate__ was never called (Fix for 645)
2013-02-11 23:27:35 -08:00
Fernando Rocha
ea004b5e7a Make use o issubclass instead of isinstance (fix issue #645)
Because __mro__ is a list of classes and not instances.
DictWithMetadata.__getstate__ was never called

Signed-off-by: Fernando Rocha <fernandogrd@gmail.com>
2013-02-11 19:18:22 -03:00
Tom Christie
baacdd821f Add object permissions tests. 2013-02-10 20:08:46 +00:00
Tom Christie
870f10486c Fix incorrect 401 vs 403 response, if lazy authentication has not taken place. 2013-02-10 20:08:36 +00:00
Tom Christie
29136ef2c6 Enforce PUT-as-create permissions 2013-02-10 16:50:46 +00:00
Tom Christie
69dcf13da9 Bugfix for DjangoModelPermissions. Fixes #437
Turns out that Django's default permissions backend always returns
False when checking object-level permissions, even if the user does
have valid global permissions.
2013-02-10 16:43:52 +00:00
Tom Christie
4c8bd40465 Tests for DjangoModelPermissions. 2013-02-10 16:42:24 +00:00
Tom Christie
670ac25b25 Allow serializers to handle dicts as well as objects. Fixes #447. 2013-02-07 12:57:40 +00:00
Tom Christie
8113d66126 Use new style of required=<bool> not blank or null 2013-02-07 09:24:34 +00:00
Tom Christie
5813a09512 Use new many=True relations style. 2013-02-07 09:14:58 +00:00
Tom Christie
c18fb0d695 Added a post_save hook. Closes #558. 2013-02-06 21:28:03 +00:00
Tom Christie
123c6cbc7c Merge pull request #640 from mjtamlyn/remove-naked-excepts
Purge naked excepts.
2013-02-06 05:21:01 -08:00
Marc Tamlyn
11610e7c3c Try the correct NoReverseMatch location. 2013-02-06 13:10:54 +00:00
Marc Tamlyn
bd7977eed7 Purge naked excepts.
Most of these had obvious exceptions which would be thrown. Some I'm not
sure about but they should at least catch only Exception so as not to
ignore SystemExit and other inappropriate Error classes.
2013-02-06 13:05:17 +00:00
Tom Christie
55fd646631 Set many explicitly from mixins. Refs #564. 2013-02-06 13:04:11 +00:00
Tom Christie
4788c87b76 Fix mismatch between template blocks and docs.
Fixes #639.
2013-02-06 12:35:05 +00:00
Tom Christie
efb798cebc Don't deprecate 'exclude'
Need to track outcome of Django's #19733, and decide on approach
accordingly.
2013-02-06 08:48:41 +00:00
Tom Christie
7dc4bce4e2 Fix 2.6 compat 2013-02-04 21:35:47 +00:00
Tom Christie
937ef00808 Merge branch 'master' into 2.2 2013-02-04 21:19:11 +00:00
Tom Christie
221e77d357 Fix incorrect test name. Fixes #635 2013-02-04 21:18:54 +00:00
Tom Christie
0a38bc9db8 Deal with parser encodings properly 2013-02-04 21:16:34 +00:00
Tom Christie
b052c92ac3 Cleanup imports
Mostly adding `from __future__ import unicode_literals` everywhere.
2013-02-04 20:55:35 +00:00
Tom Christie
b82227e517 remove broken import 2013-02-04 20:38:18 +00:00
Tom Christie
8e846bdf52 Merge branch 'py3k' into 2.2
Conflicts:
	rest_framework/relations.py
	rest_framework/serializers.py
	rest_framework/tests/relations_hyperlink.py
	rest_framework/tests/relations_slug.py
2013-02-04 20:37:09 +00:00
Tom Christie
97f2b99495 Don't use deprecated xml style 2013-02-04 19:51:50 +00:00
Tom Christie
2c634c0e5c Use request.QUERY_PARAMS internally
(instead of request.GET)
2013-02-04 19:51:31 +00:00
Tom Christie
00752dcd2a Py3k cleanup 2013-02-01 15:07:51 +00:00
Tom Christie
f4f237e3ee 3.2, 3.3 compat 2013-02-01 14:03:28 +00:00
Tom Christie
d9c7b1c585 Merge branch 'p3k' of https://github.com/linovia/django-rest-framework into working
Conflicts:
	rest_framework/authentication.py
	rest_framework/relations.py
	rest_framework/serializers.py
	rest_framework/settings.py
	rest_framework/tests/authentication.py
	rest_framework/tests/genericrelations.py
	rest_framework/tests/generics.py
	rest_framework/tests/relations_hyperlink.py
	rest_framework/tests/relations_nested.py
	rest_framework/tests/relations_pk.py
	rest_framework/tests/serializer.py
2013-02-01 11:58:55 +00:00
Tom Christie
d9b73e15c8 Serializers take many=<bool> argument. 2013-01-31 17:06:23 +00:00
Tom Christie
f1e665673f Tidying 2013-01-30 20:38:11 +00:00
Tom Christie
e4ac566625 Add dprecation warnings 2013-01-30 20:33:50 +00:00
Tom Christie
e24d29ec05 Tweak empty list implementation 2013-01-30 14:21:18 +00:00
Tom Christie
be6df3ae3c Merge branch 'master' into many-fields
Conflicts:
	rest_framework/relations.py
2013-01-30 13:41:56 +00:00
Tom Christie
9a4d01d687 Formatting fixes 2013-01-30 12:41:26 +00:00
Tom Christie
4601487248 Use many=True style for pk relations. 2013-01-30 12:41:18 +00:00
Fernando Rocha
41364b3be0 Added regretion test for issue #632
Signed-off-by: Fernando Rocha <fernandogrd@gmail.com>
2013-01-30 09:22:36 -03:00
Fernando Rocha
fceacd830f Fix processing of ManyToManyField when it is empty
Signed-off-by: Fernando Rocha <fernandogrd@gmail.com>
2013-01-29 18:46:05 -03:00
Andrea de Marco
85e6360792 Update rest_framework/serializers.py 2013-01-28 22:08:40 +01:00
Tom Christie
a3a06d11cc Ensure model field validation is performed for ModelSerializers with a custom restore_object method. Fixes #623. 2013-01-28 12:56:42 +00:00
Michael Elovskikh
cb5cc70cba Login page styles fix. Closes #618. Made with 🍪 2013-01-28 18:01:44 +06:00
Tom Christie
b5d8f50f9d Merge branch 'master' into many-fields 2013-01-26 21:37:43 +00:00
Tom Christie
a75db4cfb8 Version 2.1.17 2013-01-26 20:59:15 +00:00
Tom Christie
4d43e9f7de Test for custom pagination serializers. Also refs #604. 2013-01-26 20:55:09 +00:00
Tom Christie
a51bca32fd Fix issues with custom pagination serializers 2013-01-26 20:54:41 +00:00
Tom Christie
b41f258ee5 Serializers should accept source='*' argument. Fixes #604.
(Test also incoming)
2013-01-26 20:54:03 +00:00
Tom Christie
b783887c33 Test for GFK, using RelatedField. Refs #607. 2013-01-25 14:36:27 +00:00
Tom Christie
b73d7e9bb4 Cleaning up GFK test module. Refs #607. 2013-01-25 13:58:19 +00:00
Tom Christie
d6628d4e78 Test for #552. 2013-01-24 08:58:19 +00:00
Tom Christie
4a4fe60e33 Merge pull request #603 from minddust/validation_error
Add failed testcase for fieldvalidation + fix
2013-01-23 01:21:26 -08:00
Tom Christie
b7abf14d3a Pass PaginationSerializer context through to child ModelSerializer on init. Fixes #595. Fixes #552. 2013-01-23 07:38:13 +00:00
Stephan Groß
69e62457ef Improve validate_<fieldname> fix 2013-01-23 07:53:54 +01:00
Stephan Groß
f0071dbccd Add separate test for failed custom validation 2013-01-23 07:52:56 +01:00
Tom Christie
b7ab2aee46 Merge branch 'master' into unauthenticated_response
Conflicts:
	docs/api-guide/authentication.md
2013-01-22 09:11:38 +00:00
Tom Christie
65b62d64ec WWW-Authenticate responses 2013-01-21 21:29:49 +00:00
Tom Christie
778b0dddef Merge pull request #602 from kevinastone/master
TestCase for `format_suffix_patterns`
2013-01-21 09:51:33 -08:00
Tom Christie
98bffa68e6 Don't do an inverted if test. 2013-01-21 17:42:39 +00:00
Kevin Stone
e7916ae0b1 Tweaked some method names to be more clear and added a docstring to the test case class.
Signed-off-by: Kevin Stone <kevinastone@gmail.com>
2013-01-21 09:37:50 -08:00
Stephan Groß
2250ab6418 Add possible solution for field validation error 2013-01-21 12:50:39 +01:00
Stephan Groß
dc1c57d595 Add failed testcase for fieldvalidation 2013-01-21 12:45:30 +01:00
Kevin Stone
71bd2faa79 Added test case for format_suffix_patterns to validate changes introduced with issue #593.
Signed-off-by: Kevin Stone <kevinastone@gmail.com>
2013-01-20 13:03:38 -08:00
Tom Christie
771821af7d Include kwargs in included URLs 2013-01-19 18:39:39 +00:00
Tom Christie
69083c3668 Drop print statement 2013-01-19 18:36:25 +00:00
Tom Christie
2c05faa52a format_suffix_patterns now support include-style nested URL patterns. Fixes #593 2013-01-19 16:56:48 +00:00
Tom Christie
37d49429ca Raise assertion errors if @api_view decorator is applied incorrectly. Fixes #596. 2013-01-19 15:51:14 +00:00
Tom Christie
a98049c5de Drop unneeded test 2013-01-19 15:25:32 +00:00
Tom Christie
4eb5861f36 Starting migration from ManyField to Field(many=True) 2013-01-18 23:36:35 +00:00
Tom Christie
211bb89eec Raise Validation Errors when relationships receive incorrect types. Fixes #590. 2013-01-18 21:29:21 +00:00
Tom Christie
6385ac519d Revert accidental merge. 2013-01-18 19:47:57 +00:00
Mark Aaron Shirley
221f7326c7 Use None to delete nested object as opposed to _delete flag 2013-01-16 16:04:20 -08:00
Mark Aaron Shirley
34e14b01e4 Move nested serializer logic into .field_from_native() 2013-01-16 16:04:20 -08:00
Mark Aaron Shirley
2d62bcd5aa Add one-to-one nested update and delete functionality 2013-01-16 16:04:20 -08:00
Mark Aaron Shirley
8e5003a1f6 Update errant test comment 2013-01-16 16:04:20 -08:00
Mark Aaron Shirley
46eea97380 Update one-to-one test names 2013-01-16 16:04:19 -08:00
Mark Aaron Shirley
e66eeb4af8 Remove commented out debug code 2013-01-16 16:04:19 -08:00
Mark Aaron Shirley
72c04d570d Add nested create for 1to1 reverse relationships 2013-01-16 16:04:19 -08:00
Tom Christie
eb3d4d0e93 Drop bits of relations_slug tests which don't mirror existing tests. 2013-01-16 14:32:51 +00:00
Tom Christie
875841c76a Merge branch 'master' of https://github.com/steve-gregory/django-rest-framework into slug-field-fixes 2013-01-16 13:24:09 +00:00
Steven Gregory
87029122c2 Added a new file 'relations_slug.py' that tests Nullable Foreign Keys and the SlugRelatedField 2013-01-15 13:49:48 -07:00
Tom Christie
685706ff2b Merge pull request #584 from radiosilence/master
Adding timedelta support to JSONEncoder, and an example of how to add decode support to a serializer.
2013-01-15 05:25:24 -08:00
James Cleveland
4fc3b1ba56 Add timedelta encoder to the JSONEncoder class.
Whilst this commit adds *encoding* of timedeltas to a string of a floating
point value of the seconds, you must add your own serializer field for
whatever timedelta model field you are using. This is because Django doesn't
support any kind of timedelta field out-of-the-box, so you have to either
implement your own or use django-timedelta.

If this is the case and you want to serialise timedelta input, you will have
to implement your own special field to use for the timedelta, which is not
included in core as it is based on a 3rd party library. Here is an example:

    import datetime
    import timedelta
    from django import forms
    from django.core import validators
    from django.core.exceptions import ValidationError
    from django.utils.translation import ugettext_lazy as _
    from rest_framework.fields import WritableField

    class TimedeltaField(WritableField):
        type_name = 'TimedeltaField'
        form_field_class = forms.FloatField

        default_error_messages = {
            'invalid': _("'%s' value must be in seconds."),
        }

        def from_native(self, value):
            if value in validators.EMPTY_VALUES:
                return None

            try:
                return datetime.timedelta(seconds=float(value))
            except (TypeError, ValueError):
                msg = self.error_messages['invalid'] % value
                raise ValidationError(msg)

Which is based on the FloatField. This field can then be used in
your serializer like this:

    from yourapp.fields import TimedeltaField

    class YourSerializer(serializers.ModelSerializer):
        duration = TimedeltaField()
2013-01-15 13:08:52 +00:00
Johannes Spielmann
e67b23f1ac correcting template: closing tag was missing 2013-01-15 13:46:41 +01:00
Tom Christie
da6b9576c5 Update docstrings 2013-01-15 10:51:10 +00:00
Tom Christie
191135d7b0 Version 2.1.16 2013-01-14 09:20:44 +00:00
Tom Christie
d9acec3e6d PK fields should only be read-only if they are an AutoField. Fixes #563 2013-01-12 09:43:14 +00:00
Tom Christie
73c4e5c460 auto_now and auto_now_add fields should be read only by default 2013-01-12 09:43:14 +00:00
Juan Riaza
268f60999c unused imports 2013-01-10 15:48:22 +01:00
Mark Aaron Shirley
81691ff900 Merge remote-tracking branch 'upstream/master' into null-one-to-one 2013-01-08 08:33:01 -08:00
Tom Christie
431ced66e4 Merge pull request #566 from mjtamlyn/patch-1
ObtainAuthToken pluggable Serializer.
2013-01-08 07:38:18 -08:00
Tom Christie
37a8458687 Merge branch 'master' of https://github.com/tomchristie/django-rest-framework 2013-01-08 15:05:34 +00:00
Tom Christie
c1f194b0a5 Fix inconsistent view_name logic. Fixes #567. 2013-01-08 15:03:14 +00:00
Marc Tamlyn
49cd5e59a8 ObtainAuthToken pluggable Serializer.
It should have serializer_class in the same way as any other API view.
2013-01-08 12:20:01 +00:00
Mark Aaron Shirley
a897eb5480 Create separate *NullableOneToOneTests TestCase 2013-01-07 16:27:31 -08:00
Xavier Ordoquy
510d6a3c55 Introduced HTTP_HEADER_ENCODING. 2013-01-07 23:26:14 +01:00
Tom Christie
4e8f55887d Clean up test slightly. Refs #552 2013-01-07 21:37:44 +00:00
Tom Christie
4bb504732d Respect blank=True on relational fields. Fixes #537 2013-01-07 21:08:55 +00:00
Tom Christie
36fa722ebb Merged to latest master 2013-01-07 21:04:52 +00:00
Marc Tamlyn
5bded1ecf0 Use ResolveMatch.view_name so namespaces work. 2013-01-07 14:34:45 +00:00
Marc Tamlyn
c736b80290 Be more informative when reporting import errors. 2013-01-07 12:52:20 +00:00
Michael Mior
9b67a33b92 Use the correct static template tag in Django 1.5 2013-01-06 15:49:12 -05:00
Juan Riaza
a061e3d9e2 deprecate simplejson 2013-01-05 13:40:02 +01:00
Mark Aaron Shirley
213981cef3 Handle ObjectDoesNotExist exceptions when serializing null reverse one-to-one 2013-01-04 21:11:03 +01:00
Tom Christie
26f9acb45a Validation errors instead of exceptions when serializers receive incorrect types. Fixes #402. 2013-01-04 14:11:05 +00:00
Tom Christie
eb14278a3b Add proper validation for updating relational fields with incorrect types. Fixes #446. 2013-01-04 13:50:40 +00:00
Tom Christie
4c86fd46d7 Rename module for basic relational field tests 2013-01-04 13:05:31 +00:00
Tom Christie
6e9865cb71 Fix for #446. Note: Also needs applying to other relational types. 2013-01-03 23:17:31 +00:00
Tom Christie
ad671022e1 Version 2.1.15 2013-01-03 22:14:11 +00:00
Tom Christie
7ed81c3c66 Tweak comment. 2013-01-03 22:06:55 +00:00
Tom Christie
6da21fa796 Merge pull request #541 from yprez/default_and_partial_serializers2
Fix "default" values and partial serializers.  Fixes #532.
2013-01-03 14:05:36 -08:00
Tom Christie
bfea7f64ee Tweak behavior of hyperlinked fields that include an explicit format suffix. 2013-01-03 21:49:29 +00:00
Tom Christie
92ae08207a Drop unused private save_m2m flag 2013-01-03 21:49:01 +00:00
Xavier Ordoquy
06ae47752f Also use the compat module in that file. 2013-01-03 12:49:57 +01:00
Xavier Ordoquy
60250f22c8 Move the various compat things to the compat module. 2013-01-03 11:41:07 +01:00
Xavier Ordoquy
cf51dcc9bb Straight import is enough. 2013-01-03 10:48:43 +01:00
Mark Aaron Shirley
8fd1f09dad Move relation tests models into models.py 2013-01-03 10:23:13 +01:00
Yuri Prezument
3f5e938247 Some cleanup 2013-01-03 08:28:17 +02:00
Yuri Prezument
f2625fc38c FileField validation - handle case when files=None, fixes #542 2013-01-02 22:12:26 +02:00
Yuri Prezument
1c8fccfdcd Regression test for #542 2013-01-02 22:07:23 +02:00