From 4b691c402707775c3048a90531024f3bc5be6f91 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 20 Sep 2012 13:06:27 +0100 Subject: Change package name: djangorestframework -> rest_framework --- rest_framework/tests/models.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 rest_framework/tests/models.py (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py new file mode 100644 index 00000000..4cae68b6 --- /dev/null +++ b/rest_framework/tests/models.py @@ -0,0 +1,28 @@ +from django.db import models +from django.contrib.auth.models import Group + +class CustomUser(models.Model): + """ + A custom user model, which uses a 'through' table for the foreign key + """ + username = models.CharField(max_length=255, unique=True) + groups = models.ManyToManyField( + to=Group, blank=True, null=True, through='UserGroupMap' + ) + + @models.permalink + def get_absolute_url(self): + return ('custom_user', (), { + 'pk': self.id + }) + + +class UserGroupMap(models.Model): + user = models.ForeignKey(to=CustomUser) + group = models.ForeignKey(to=Group) + + @models.permalink + def get_absolute_url(self): + return ('user_group_map', (), { + 'pk': self.id + }) -- cgit v1.2.3 From e003cc91b627a64b6d4d364f9de936ed1bec03e1 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 28 Sep 2012 14:28:50 +0100 Subject: Get test-only models properly working --- rest_framework/tests/models.py | 62 ++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 27 deletions(-) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 4cae68b6..7429d863 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -1,28 +1,36 @@ from django.db import models -from django.contrib.auth.models import Group - -class CustomUser(models.Model): - """ - A custom user model, which uses a 'through' table for the foreign key - """ - username = models.CharField(max_length=255, unique=True) - groups = models.ManyToManyField( - to=Group, blank=True, null=True, through='UserGroupMap' - ) - - @models.permalink - def get_absolute_url(self): - return ('custom_user', (), { - 'pk': self.id - }) - - -class UserGroupMap(models.Model): - user = models.ForeignKey(to=CustomUser) - group = models.ForeignKey(to=Group) - - @models.permalink - def get_absolute_url(self): - return ('user_group_map', (), { - 'pk': self.id - }) +# from django.contrib.auth.models import Group + + +# class CustomUser(models.Model): +# """ +# A custom user model, which uses a 'through' table for the foreign key +# """ +# username = models.CharField(max_length=255, unique=True) +# groups = models.ManyToManyField( +# to=Group, blank=True, null=True, through='UserGroupMap' +# ) + +# @models.permalink +# def get_absolute_url(self): +# return ('custom_user', (), { +# 'pk': self.id +# }) + + +# class UserGroupMap(models.Model): +# user = models.ForeignKey(to=CustomUser) +# group = models.ForeignKey(to=Group) + +# @models.permalink +# def get_absolute_url(self): +# return ('user_group_map', (), { +# 'pk': self.id +# }) + + +class BasicModel(models.Model): + text = models.CharField(max_length=100) + + class Meta: + app_label = 'rest_framework' -- cgit v1.2.3 From 36b58d0c78a065c273a19eeb4f4d6d5a2b92d425 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 3 Oct 2012 10:51:38 +0100 Subject: Many2Many test --- rest_framework/tests/models.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 7429d863..c90668ca 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -28,9 +28,25 @@ from django.db import models # 'pk': self.id # }) +class Anchor(models.Model): + """ + A simple model to use as the target of relationships for other test models. + """ + text = models.CharField(max_length=100, default='anchor') + + class Meta: + app_label = 'rest_framework' + class BasicModel(models.Model): text = models.CharField(max_length=100) class Meta: app_label = 'rest_framework' + + +class ManyToManyModel(models.Model): + rel = models.ManyToManyField(Anchor) + + class Meta: + app_label = 'rest_framework' -- cgit v1.2.3 From bcd2caf5598a71cb468d86b6f286e180d1bf0a19 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 4 Oct 2012 09:18:46 +0100 Subject: Abstract out the app_label on test models --- rest_framework/tests/models.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index c90668ca..c5636f35 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -28,25 +28,22 @@ from django.db import models # 'pk': self.id # }) -class Anchor(models.Model): +class RestFrameworkModel(models.Model): """ - A simple model to use as the target of relationships for other test models. + Base for test models that sets app_label, so they play nicely. """ - text = models.CharField(max_length=100, default='anchor') - class Meta: app_label = 'rest_framework' + abstract = True -class BasicModel(models.Model): - text = models.CharField(max_length=100) +class Anchor(RestFrameworkModel): + text = models.CharField(max_length=100, default='anchor') - class Meta: - app_label = 'rest_framework' +class BasicModel(RestFrameworkModel): + text = models.CharField(max_length=100) -class ManyToManyModel(models.Model): - rel = models.ManyToManyField(Anchor) - class Meta: - app_label = 'rest_framework' +class ManyToManyModel(RestFrameworkModel): + rel = models.ManyToManyField(Anchor) -- cgit v1.2.3 From f8edfa26759bd9922b674625cee5921c163ed40e Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 4 Oct 2012 09:19:10 +0100 Subject: Abstract out the app_label on test models --- rest_framework/tests/models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index c5636f35..6cc2c311 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -28,7 +28,7 @@ from django.db import models # 'pk': self.id # }) -class RestFrameworkModel(models.Model): +class RESTFrameworkModel(models.Model): """ Base for test models that sets app_label, so they play nicely. """ @@ -37,13 +37,13 @@ class RestFrameworkModel(models.Model): abstract = True -class Anchor(RestFrameworkModel): +class Anchor(RESTFrameworkModel): text = models.CharField(max_length=100, default='anchor') -class BasicModel(RestFrameworkModel): +class BasicModel(RESTFrameworkModel): text = models.CharField(max_length=100) -class ManyToManyModel(RestFrameworkModel): +class ManyToManyModel(RESTFrameworkModel): rel = models.ManyToManyField(Anchor) -- cgit v1.2.3 From d79e18963e64c1714a29ece6ca59a8a4a1c02516 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 4 Oct 2012 09:29:12 +0100 Subject: Tests for default arguments on fields --- rest_framework/tests/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 6cc2c311..969c8297 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -28,6 +28,10 @@ from django.db import models # 'pk': self.id # }) +def foobar(): + return 'foobar' + + class RESTFrameworkModel(models.Model): """ Base for test models that sets app_label, so they play nicely. @@ -45,5 +49,13 @@ class BasicModel(RESTFrameworkModel): text = models.CharField(max_length=100) +class DefaultValueModel(RESTFrameworkModel): + text = models.CharField(default='foobar', max_length=100) + + +class CallableDefaultValueModel(RESTFrameworkModel): + text = models.CharField(default=foobar, max_length=100) + + class ManyToManyModel(RESTFrameworkModel): rel = models.ManyToManyField(Anchor) -- cgit v1.2.3 From 693892ed0104b8ce8cd801e7bec6107feeb88782 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 4 Oct 2012 22:07:24 +0100 Subject: Fix for field to make it easier to access field relationships --- rest_framework/tests/models.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 969c8297..7c7f485b 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -1,4 +1,7 @@ from django.db import models +from django.contrib.contenttypes.models import ContentType +from django.contrib.contenttypes.generic import GenericForeignKey, GenericRelation + # from django.contrib.auth.models import Group @@ -59,3 +62,24 @@ class CallableDefaultValueModel(RESTFrameworkModel): class ManyToManyModel(RESTFrameworkModel): rel = models.ManyToManyField(Anchor) + +# Models to test generic relations + + +class Tag(RESTFrameworkModel): + tag_name = models.SlugField() + + +class TaggedItem(RESTFrameworkModel): + tag = models.ForeignKey(Tag, related_name='items') + content_type = models.ForeignKey(ContentType) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey('content_type', 'object_id') + + def __unicode__(self): + return self.tag.tag_name + + +class Bookmark(RESTFrameworkModel): + url = models.URLField() + tags = GenericRelation(TaggedItem) -- cgit v1.2.3 From 52ba2e333375c6829fb89b6b43e4d19b2f2a86a4 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Mon, 8 Oct 2012 12:52:56 +0100 Subject: Fix #285 --- rest_framework/tests/models.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 7c7f485b..6a758f0c 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -83,3 +83,11 @@ class TaggedItem(RESTFrameworkModel): class Bookmark(RESTFrameworkModel): url = models.URLField() tags = GenericRelation(TaggedItem) + + +# Model for regression test for #285 + +class Comment(RESTFrameworkModel): + email = models.EmailField() + content = models.CharField(max_length=200) + created = models.DateTimeField(auto_now_add=True) -- cgit v1.2.3 From 38673c35d4aa5487e175ac7c917c66c45ddb6ba4 Mon Sep 17 00:00:00 2001 From: Rob Dobson Date: Wed, 17 Oct 2012 19:12:34 +0100 Subject: Make default field check safe for boolean values whereby 'False' may be an acceptable default value --- rest_framework/tests/models.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 6a758f0c..75dab2f7 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -91,3 +91,7 @@ class Comment(RESTFrameworkModel): email = models.EmailField() content = models.CharField(max_length=200) created = models.DateTimeField(auto_now_add=True) + +class ActionItem(RESTFrameworkModel): + title = models.CharField(max_length=200) + done = models.BooleanField(default=False) -- cgit v1.2.3 From 45d4622f090f8d81a04b4d3e888017419676bbc0 Mon Sep 17 00:00:00 2001 From: Jamie Matthews Date: Mon, 22 Oct 2012 15:12:25 +0100 Subject: Fix serialization of reverse relationships --- rest_framework/tests/models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 75dab2f7..8e721737 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -92,6 +92,17 @@ class Comment(RESTFrameworkModel): content = models.CharField(max_length=200) created = models.DateTimeField(auto_now_add=True) + class ActionItem(RESTFrameworkModel): title = models.CharField(max_length=200) done = models.BooleanField(default=False) + + +# Models for reverse relations +class BlogPost(RESTFrameworkModel): + title = models.CharField(max_length=100) + + +class BlogPostComment(RESTFrameworkModel): + text = models.TextField() + blog_post = models.ForeignKey(BlogPost) -- cgit v1.2.3 From c7a0d52fd7e22fbc4a01ff900bd3b2c1215e984d Mon Sep 17 00:00:00 2001 From: Ian Strachan Date: Mon, 22 Oct 2012 22:24:26 +0100 Subject: #314 Fix for manytomany field being required in the payload even though the field is specified as readonly in the serializer --- rest_framework/tests/models.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 8e721737..97cd0849 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -62,7 +62,12 @@ class CallableDefaultValueModel(RESTFrameworkModel): class ManyToManyModel(RESTFrameworkModel): rel = models.ManyToManyField(Anchor) + +class ReadOnlyManyToManyModel(RESTFrameworkModel): + text = models.CharField(max_length=100, default='anchor') + rel = models.ManyToManyField(Anchor) + # Models to test generic relations -- cgit v1.2.3 From 67f1265e493adc35239d90aeb3bfeb8492fbd741 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 26 Oct 2012 13:20:30 +0100 Subject: Fix failing 'default' on ModelSerializer --- rest_framework/tests/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 97cd0849..0ee18c69 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -62,12 +62,12 @@ class CallableDefaultValueModel(RESTFrameworkModel): class ManyToManyModel(RESTFrameworkModel): rel = models.ManyToManyField(Anchor) - + class ReadOnlyManyToManyModel(RESTFrameworkModel): text = models.CharField(max_length=100, default='anchor') rel = models.ManyToManyField(Anchor) - + # Models to test generic relations -- cgit v1.2.3 From b9e576f16ef7cc98f671e9c18ff8ae1a95bfe3ad Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Sat, 27 Oct 2012 18:44:23 +0100 Subject: Push tests into a seperate app namespace 'rest_framework.test' Prevents tests from running by default when rest_framework is installed as 3rd party app. Fixes #316, #185 --- rest_framework/tests/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 0ee18c69..d4ea729b 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -40,7 +40,7 @@ class RESTFrameworkModel(models.Model): Base for test models that sets app_label, so they play nicely. """ class Meta: - app_label = 'rest_framework' + app_label = 'tests' abstract = True -- cgit v1.2.3 From bc99142c7dc1ebf84ca0858ce32b400a537e1908 Mon Sep 17 00:00:00 2001 From: Marko Tibold Date: Sun, 28 Oct 2012 19:35:50 +0100 Subject: Added wo tests. One for PUTing on a non-existing id-based url. And another for PUTing on a non-existing slug-based url. Fix doctoring for 'test_put_cannot_set_id'. --- rest_framework/tests/models.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index d4ea729b..ac73a4bb 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -52,6 +52,11 @@ class BasicModel(RESTFrameworkModel): text = models.CharField(max_length=100) +class SlugBasedModel(RESTFrameworkModel): + text = models.CharField(max_length=100) + slug = models.SlugField(max_length=32) + + class DefaultValueModel(RESTFrameworkModel): text = models.CharField(default='foobar', max_length=100) -- cgit v1.2.3 From 6ccbdd10ad91bbc2116c6adf520096e9da95b8e0 Mon Sep 17 00:00:00 2001 From: Marko Tibold Date: Tue, 30 Oct 2012 00:03:24 +0100 Subject: Adding failing tests that show null=True model fields are won't validate if their value is omitted. --- rest_framework/tests/models.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index ac73a4bb..fb23e359 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -116,3 +116,8 @@ class BlogPost(RESTFrameworkModel): class BlogPostComment(RESTFrameworkModel): text = models.TextField() blog_post = models.ForeignKey(BlogPost) + + +class Person(RESTFrameworkModel): + name = models.CharField(max_length=10) + age = models.IntegerField(null=True, blank=True) -- cgit v1.2.3 From 0047a4602045ed0ef9efae9aa88143aa6a70d93d Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 30 Oct 2012 11:03:03 +0000 Subject: Merge fixes for 'blank=True' fields. Fixes #324, Fixes #325 Thanks to @Roarster. --- rest_framework/tests/models.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'rest_framework/tests/models.py') diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index fb23e359..415e4d06 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -121,3 +121,8 @@ class BlogPostComment(RESTFrameworkModel): class Person(RESTFrameworkModel): name = models.CharField(max_length=10) age = models.IntegerField(null=True, blank=True) + + +# Model for issue #324 +class BlankFieldModel(RESTFrameworkModel): + title = models.CharField(max_length=100, blank=True) -- cgit v1.2.3