aboutsummaryrefslogtreecommitdiffstats
path: root/examples/modelresourceexample
diff options
context:
space:
mode:
authortom christie tom@tomchristie.com2011-02-01 22:37:51 +0000
committertom christie tom@tomchristie.com2011-02-01 22:37:51 +0000
commit6ce5b643fbeab322d85dbaed87d11ffb950c5bed (patch)
treee08ad4cc8f465390564a3003daf8cf04b708438b /examples/modelresourceexample
parent196c21f37632e213702995651fd739426b6ee13a (diff)
downloaddjango-rest-framework-6ce5b643fbeab322d85dbaed87d11ffb950c5bed.tar.bz2
Added resourceexample, moved simpleexample to modelresourceexample
Diffstat (limited to 'examples/modelresourceexample')
-rw-r--r--examples/modelresourceexample/__init__.py0
-rw-r--r--examples/modelresourceexample/models.py23
-rw-r--r--examples/modelresourceexample/urls.py6
-rw-r--r--examples/modelresourceexample/views.py18
4 files changed, 47 insertions, 0 deletions
diff --git a/examples/modelresourceexample/__init__.py b/examples/modelresourceexample/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/examples/modelresourceexample/__init__.py
diff --git a/examples/modelresourceexample/models.py b/examples/modelresourceexample/models.py
new file mode 100644
index 00000000..036501d0
--- /dev/null
+++ b/examples/modelresourceexample/models.py
@@ -0,0 +1,23 @@
+from django.db import models
+
+MAX_INSTANCES = 10
+
+class MyModel(models.Model):
+ foo = models.BooleanField()
+ bar = models.IntegerField(help_text='Must be an integer.')
+ baz = models.CharField(max_length=32, help_text='Free text. Max length 32 chars.')
+ created = models.DateTimeField(auto_now_add=True)
+
+ class Meta:
+ ordering = ('created',)
+
+ def save(self, *args, **kwargs):
+ """For the purposes of the sandbox, limit the maximum number of stored models."""
+ super(MyModel, self).save(*args, **kwargs)
+ while MyModel.objects.all().count() > MAX_INSTANCES:
+ MyModel.objects.all()[0].delete()
+
+ @models.permalink
+ def get_absolute_url(self):
+ return ('modelresourceexample.views.MyModelResource', (self.pk,))
+
diff --git a/examples/modelresourceexample/urls.py b/examples/modelresourceexample/urls.py
new file mode 100644
index 00000000..c43cf56a
--- /dev/null
+++ b/examples/modelresourceexample/urls.py
@@ -0,0 +1,6 @@
+from django.conf.urls.defaults import patterns, url
+
+urlpatterns = patterns('modelresourceexample.views',
+ url(r'^$', 'MyModelRootResource'),
+ url(r'^([0-9]+)/$', 'MyModelResource'),
+)
diff --git a/examples/modelresourceexample/views.py b/examples/modelresourceexample/views.py
new file mode 100644
index 00000000..e912c019
--- /dev/null
+++ b/examples/modelresourceexample/views.py
@@ -0,0 +1,18 @@
+from djangorestframework.modelresource import ModelResource, RootModelResource
+from modelresourceexample.models import MyModel
+
+FIELDS = ('foo', 'bar', 'baz', 'absolute_url')
+
+class MyModelRootResource(RootModelResource):
+ """A create/list resource for MyModel.
+ Available for both authenticated and anonymous access for the purposes of the sandbox."""
+ model = MyModel
+ allowed_methods = anon_allowed_methods = ('GET', 'POST')
+ fields = FIELDS
+
+class MyModelResource(ModelResource):
+ """A read/update/delete resource for MyModel.
+ Available for both authenticated and anonymous access for the purposes of the sandbox."""
+ model = MyModel
+ allowed_methods = anon_allowed_methods = ('GET', 'PUT', 'DELETE')
+ fields = FIELDS