mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Refs #23919 -- Stopped inheriting from object to define new style classes.
Tests and docs complement to cecc079168.
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							fba0eaa5d6
						
					
				
				
					commit
					081e787160
				
			| @@ -36,7 +36,7 @@ You only need to know that 52 cards are dealt out equally to four players, who | ||||
| are traditionally called *north*, *east*, *south* and *west*.  Our class looks | ||||
| something like this:: | ||||
|  | ||||
|     class Hand(object): | ||||
|     class Hand: | ||||
|         """A hand of cards (bridge style)""" | ||||
|  | ||||
|         def __init__(self, north, east, south, west): | ||||
|   | ||||
| @@ -71,7 +71,7 @@ the assembly and transmission of a large CSV file:: | ||||
|  | ||||
|     from django.http import StreamingHttpResponse | ||||
|  | ||||
|     class Echo(object): | ||||
|     class Echo: | ||||
|         """An object that implements just the write method of the file-like | ||||
|         interface. | ||||
|         """ | ||||
|   | ||||
| @@ -42,7 +42,7 @@ method of database routers as ``**hints``: | ||||
| .. snippet:: | ||||
|     :filename: myapp/dbrouters.py | ||||
|  | ||||
|     class MyRouter(object): | ||||
|     class MyRouter: | ||||
|  | ||||
|         def allow_migrate(self, db, app_label, model_name=None, **hints): | ||||
|             if 'target_db' in hints: | ||||
|   | ||||
| @@ -151,7 +151,7 @@ Imports | ||||
|       CONSTANT = 'foo' | ||||
|  | ||||
|  | ||||
|       class Example(object): | ||||
|       class Example: | ||||
|           # ... | ||||
|  | ||||
| * Use convenience imports whenever available. For example, do this:: | ||||
|   | ||||
| @@ -427,7 +427,7 @@ Navigate to the ``django/django/forms/`` folder and open the ``forms.py`` file. | ||||
| Find the ``BaseForm`` class on line 72 and add the ``prefix`` class attribute | ||||
| right after the ``field_order`` attribute:: | ||||
|  | ||||
|     class BaseForm(object): | ||||
|     class BaseForm: | ||||
|         # This is the main implementation of all the Form logic. Note that this | ||||
|         # class is different than Form. See the comments by the Form class for | ||||
|         # more information. Any improvements to the form API should be made to | ||||
| @@ -529,7 +529,7 @@ Use the arrow keys to move up and down. | ||||
|     index 509709f..d1370de 100644 | ||||
|     --- a/django/forms/forms.py | ||||
|     +++ b/django/forms/forms.py | ||||
|     @@ -75,6 +75,7 @@ class BaseForm(object): | ||||
|     @@ -75,6 +75,7 @@ class BaseForm: | ||||
|          # information. Any improvements to the form API should be made to *this* | ||||
|          # class, not to the Form class. | ||||
|          field_order = None | ||||
| @@ -537,7 +537,7 @@ Use the arrow keys to move up and down. | ||||
|  | ||||
|          def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, | ||||
|                       initial=None, error_class=ErrorList, label_suffix=None, | ||||
|     @@ -83,7 +84,8 @@ class BaseForm(object): | ||||
|     @@ -83,7 +84,8 @@ class BaseForm: | ||||
|              self.data = data or {} | ||||
|              self.files = files or {} | ||||
|              self.auto_id = auto_id | ||||
|   | ||||
| @@ -100,14 +100,14 @@ and returns a user object. | ||||
| The ``authenticate`` method takes a ``request`` argument and credentials as | ||||
| keyword arguments. Most of the time, it'll just look like this:: | ||||
|  | ||||
|     class MyBackend(object): | ||||
|     class MyBackend: | ||||
|         def authenticate(self, request, username=None, password=None): | ||||
|             # Check the username/password and return a user. | ||||
|             ... | ||||
|  | ||||
| But it could also authenticate a token, like so:: | ||||
|  | ||||
|     class MyBackend(object): | ||||
|     class MyBackend: | ||||
|         def authenticate(self, request, token=None): | ||||
|             # Check the token and return a user. | ||||
|             ... | ||||
| @@ -135,7 +135,7 @@ object the first time a user authenticates:: | ||||
|     from django.contrib.auth.hashers import check_password | ||||
|     from django.contrib.auth.models import User | ||||
|  | ||||
|     class SettingsBackend(object): | ||||
|     class SettingsBackend: | ||||
|         """ | ||||
|         Authenticate against the settings ADMIN_LOGIN and ADMIN_PASSWORD. | ||||
|  | ||||
| @@ -198,7 +198,7 @@ will immediately fail and Django won't check the backends that follow. | ||||
| The simple backend above could implement permissions for the magic admin | ||||
| fairly simply:: | ||||
|  | ||||
|     class SettingsBackend(object): | ||||
|     class SettingsBackend: | ||||
|         ... | ||||
|         def has_perm(self, user_obj, perm, obj=None): | ||||
|             return user_obj.username == settings.ADMIN_LOGIN | ||||
|   | ||||
| @@ -648,7 +648,7 @@ Here's a basic example of a validator, with one optional setting:: | ||||
|     from django.core.exceptions import ValidationError | ||||
|     from django.utils.translation import gettext as _ | ||||
|  | ||||
|     class MinimumLengthValidator(object): | ||||
|     class MinimumLengthValidator: | ||||
|         def __init__(self, min_length=8): | ||||
|             self.min_length = min_length | ||||
|  | ||||
|   | ||||
| @@ -238,7 +238,7 @@ operations to ``cache_replica``, and all write operations to | ||||
| ``cache_primary``. The cache table will only be synchronized onto | ||||
| ``cache_primary``:: | ||||
|  | ||||
|     class CacheRouter(object): | ||||
|     class CacheRouter: | ||||
|         """A router to control all database cache operations""" | ||||
|  | ||||
|         def db_for_read(self, model, **hints): | ||||
|   | ||||
| @@ -233,7 +233,7 @@ works for AJAX requests as well as 'normal' form POSTs:: | ||||
|     from django.views.generic.edit import CreateView | ||||
|     from myapp.models import Author | ||||
|  | ||||
|     class AjaxableResponseMixin(object): | ||||
|     class AjaxableResponseMixin: | ||||
|         """ | ||||
|         Mixin to add AJAX support to a form. | ||||
|         Must be used with an object-based FormView (e.g. CreateView) | ||||
|   | ||||
| @@ -603,7 +603,7 @@ For example, a simple JSON mixin might look something like this:: | ||||
|  | ||||
|     from django.http import JsonResponse | ||||
|  | ||||
|     class JSONResponseMixin(object): | ||||
|     class JSONResponseMixin: | ||||
|         """ | ||||
|         A mixin that can be used to render a JSON response. | ||||
|         """ | ||||
|   | ||||
| @@ -295,7 +295,7 @@ databases:: | ||||
| Now we'll need to handle routing. First we want a router that knows to | ||||
| send queries for the ``auth`` app to ``auth_db``:: | ||||
|  | ||||
|     class AuthRouter(object): | ||||
|     class AuthRouter: | ||||
|         """ | ||||
|         A router to control all database operations on models in the | ||||
|         auth application. | ||||
| @@ -340,7 +340,7 @@ from:: | ||||
|  | ||||
|     import random | ||||
|  | ||||
|     class PrimaryReplicaRouter(object): | ||||
|     class PrimaryReplicaRouter: | ||||
|         def db_for_read(self, model, **hints): | ||||
|             """ | ||||
|             Reads go to a randomly-chosen replica. | ||||
|   | ||||
| @@ -43,7 +43,7 @@ A middleware can be written as a function that looks like this:: | ||||
|  | ||||
| Or it can be written as a class whose instances are callable, like this:: | ||||
|  | ||||
|     class SimpleMiddleware(object): | ||||
|     class SimpleMiddleware: | ||||
|         def __init__(self, get_response): | ||||
|             self.get_response = get_response | ||||
|             # One-time configuration and initialization. | ||||
|   | ||||
| @@ -717,7 +717,7 @@ serializable, you can use the ``@deconstructible`` class decorator from | ||||
|     from django.utils.deconstruct import deconstructible | ||||
|  | ||||
|     @deconstructible | ||||
|     class MyCustomClass(object): | ||||
|     class MyCustomClass: | ||||
|  | ||||
|         def __init__(self, foo=1): | ||||
|             self.foo = foo | ||||
|   | ||||
| @@ -243,7 +243,7 @@ arguments as you like. | ||||
|  | ||||
| For example, here's how sending our ``pizza_done`` signal might look:: | ||||
|  | ||||
|     class PizzaStore(object): | ||||
|     class PizzaStore: | ||||
|         ... | ||||
|  | ||||
|         def send_pizza(self, toppings, size): | ||||
|   | ||||
| @@ -531,7 +531,7 @@ fictional ``foobar`` template library:: | ||||
|                 raise TemplateSyntaxError(exc.args) | ||||
|  | ||||
|  | ||||
|     class Template(object): | ||||
|     class Template: | ||||
|  | ||||
|         def __init__(self, template): | ||||
|             self.template = template | ||||
|   | ||||
| @@ -122,7 +122,7 @@ class ForeignKeyNameTests(IndexNameTests): | ||||
|         ) | ||||
|  | ||||
|  | ||||
| class MockReference(object): | ||||
| class MockReference: | ||||
|     def __init__(self, representation, referenced_tables, referenced_columns): | ||||
|         self.representation = representation | ||||
|         self.referenced_tables = referenced_tables | ||||
|   | ||||
| @@ -40,7 +40,7 @@ class Money(decimal.Decimal): | ||||
|         ) | ||||
|  | ||||
|  | ||||
| class TestModel1(object): | ||||
| class TestModel1: | ||||
|     def upload_to(self): | ||||
|         return '/somewhere/dynamic/' | ||||
|     thing = models.FileField(upload_to=upload_to) | ||||
|   | ||||
| @@ -9,7 +9,7 @@ class Relation(models.Model): | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class InstanceOnlyDescriptor(object): | ||||
| class InstanceOnlyDescriptor: | ||||
|     def __get__(self, instance, cls=None): | ||||
|         if instance is None: | ||||
|             raise AttributeError('Instance only') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user