From d17e2d852fc6ebc738e324b8797d390dc0287d37 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Mon, 29 Apr 2013 12:46:57 +0100 Subject: [PATCH] Remove AutoRouter. (Adding shortcut to generic views/viewsets means it's unneccessary) --- docs/api-guide/routers.md | 16 ---------------- rest_framework/routers.py | 26 -------------------------- 2 files changed, 42 deletions(-) diff --git a/docs/api-guide/routers.md b/docs/api-guide/routers.md index 7b211bfd6..7495b91c1 100644 --- a/docs/api-guide/routers.md +++ b/docs/api-guide/routers.md @@ -80,22 +80,6 @@ This router is similar to `SimpleRouter` as above, but additionally includes a d POST@action decorated method -## AutoRouter - -The AutoRouter class is similar to the `DefaultRouter` class, except that it doesn't require you to register any viewsets, but instead automatically creates routes for all installed models. - -It can be useful for prototyping, although for anything more advanced you'll want to drop down to using one of the other router classes, and registering viewsets explicitly. - -The following code shows how you can automatically include a complete API for your application with just a few lines of code, using the `AutoRouter` class: - - from django.conf.urls import patterns, url, include - from rest_framework.routers import AutoRouter - - urlpatterns = patterns('', - url(r'^api/', include(AutoRouter().urls)), - url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) - ) - # Custom Routers Implementing a custom router isn't something you'd need to do very often, but it can be useful if you have specfic requirements about how the your URLs for your API are strutured. Doing so allows you to encapsulate the URL structure in a reusable way that ensures you don't have to write your URL patterns explicitly for each new view. diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 2bbf519c5..923405e83 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -17,11 +17,9 @@ from __future__ import unicode_literals from collections import namedtuple from django.conf.urls import url, patterns -from django.db import models from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.reverse import reverse -from rest_framework.viewsets import ModelViewSet from rest_framework.urlpatterns import format_suffix_patterns @@ -218,27 +216,3 @@ class DefaultRouter(SimpleRouter): urls = format_suffix_patterns(urls) return urls - - -class AutoRouter(DefaultRouter): - """ - A router class that doesn't require you to register any viewsets, - but instead automatically creates routes for all installed models. - - Useful for quick and dirty prototyping. - """ - def __init__(self): - super(AutoRouter, self).__init__() - for model in models.get_models(): - prefix = model._meta.verbose_name_plural.replace(' ', '_') - basename = model._meta.object_name.lower() - classname = model.__name__ - - DynamicViewSet = type( - classname, - (ModelViewSet,), - {} - ) - DynamicViewSet.model = model - - self.register(prefix, DynamicViewSet, basename)