summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2006-06-08 05:00:13 +0000
committerAdrian Holovaty <adrian@holovaty.com>2006-06-08 05:00:13 +0000
commit2abfd5dd586c4f6fb619de561b2194687021e256 (patch)
tree51f32f85db5f5fae270924bdf93d2ff3072fc9c2
parent5edd1335b2ae3530bab124b8e9cfb6928a975088 (diff)
Fixed #2109 -- Convert old-style classes to new-style classes throughout Django. Thanks, Nicola Larosa
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3113 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/__init__.py6
-rw-r--r--django/contrib/auth/middleware.py2
-rw-r--r--django/contrib/flatpages/middleware.py2
-rw-r--r--django/contrib/redirects/middleware.py2
-rw-r--r--django/contrib/sessions/middleware.py2
-rw-r--r--django/contrib/syndication/feeds.py2
-rw-r--r--django/core/cache/backends/base.py2
-rw-r--r--django/core/context_processors.py6
-rw-r--r--django/core/handlers/base.py2
-rw-r--r--django/core/paginator.py2
-rw-r--r--django/core/servers/basehttp.py8
-rw-r--r--django/core/urlresolvers.py2
-rw-r--r--django/core/validators.py30
-rw-r--r--django/db/backends/util.py2
-rw-r--r--django/db/models/__init__.py2
-rw-r--r--django/db/models/fields/__init__.py2
-rw-r--r--django/db/models/fields/related.py4
-rw-r--r--django/db/models/options.py4
-rw-r--r--django/db/models/query.py2
-rw-r--r--django/forms/__init__.py8
-rw-r--r--django/middleware/cache.py2
-rw-r--r--django/middleware/common.py2
-rw-r--r--django/middleware/doc.py2
-rw-r--r--django/middleware/gzip.py2
-rw-r--r--django/middleware/http.py2
-rw-r--r--django/middleware/locale.py2
-rw-r--r--django/middleware/transaction.py2
-rw-r--r--django/template/__init__.py8
-rw-r--r--django/template/context.py2
-rw-r--r--django/utils/datastructures.py2
-rw-r--r--django/utils/dateformat.py2
-rw-r--r--django/utils/feedgenerator.py4
-rw-r--r--tests/othertests/templates.py3
33 files changed, 63 insertions, 64 deletions
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index a4aaf46a76..d5477201d7 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -12,7 +12,7 @@ from django.conf import global_settings
ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
-class LazySettings:
+class LazySettings(object):
"""
A lazy proxy for either global Django settings or a custom settings object.
The user can manually configure settings prior to using them. Otherwise,
@@ -67,7 +67,7 @@ class LazySettings:
setattr(holder, name, value)
self._target = holder
-class Settings:
+class Settings(object):
def __init__(self, settings_module):
# update this dict from global settings (but only for ALL_CAPS settings)
for setting in dir(global_settings):
@@ -112,7 +112,7 @@ class Settings:
def get_all_members(self):
return dir(self)
-class UserSettingsHolder:
+class UserSettingsHolder(object):
"""
Holder for user configured settings.
"""
diff --git a/django/contrib/auth/middleware.py b/django/contrib/auth/middleware.py
index 4b3ed54960..a1a0b2e834 100644
--- a/django/contrib/auth/middleware.py
+++ b/django/contrib/auth/middleware.py
@@ -12,7 +12,7 @@ class LazyUser(object):
self._user = AnonymousUser()
return self._user
-class AuthenticationMiddleware:
+class AuthenticationMiddleware(object):
def process_request(self, request):
assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
request.__class__.user = LazyUser()
diff --git a/django/contrib/flatpages/middleware.py b/django/contrib/flatpages/middleware.py
index 074e4ea735..231b5fdd5c 100644
--- a/django/contrib/flatpages/middleware.py
+++ b/django/contrib/flatpages/middleware.py
@@ -2,7 +2,7 @@ from django.contrib.flatpages.views import flatpage
from django.http import Http404
from django.conf import settings
-class FlatpageFallbackMiddleware:
+class FlatpageFallbackMiddleware(object):
def process_response(self, request, response):
if response.status_code != 404:
return response # No need to check for a flatpage for non-404 responses.
diff --git a/django/contrib/redirects/middleware.py b/django/contrib/redirects/middleware.py
index 1960bffa12..32f2760c45 100644
--- a/django/contrib/redirects/middleware.py
+++ b/django/contrib/redirects/middleware.py
@@ -2,7 +2,7 @@ from django.contrib.redirects.models import Redirect
from django import http
from django.conf import settings
-class RedirectFallbackMiddleware:
+class RedirectFallbackMiddleware(object):
def process_response(self, request, response):
if response.status_code != 404:
return response # No need to check for a redirect for non-404 responses.
diff --git a/django/contrib/sessions/middleware.py b/django/contrib/sessions/middleware.py
index da1130f560..dde4f1a6c0 100644
--- a/django/contrib/sessions/middleware.py
+++ b/django/contrib/sessions/middleware.py
@@ -64,7 +64,7 @@ class SessionWrapper(object):
_session = property(_get_session)
-class SessionMiddleware:
+class SessionMiddleware(object):
def process_request(self, request):
request.session = SessionWrapper(request.COOKIES.get(settings.SESSION_COOKIE_NAME, None))
diff --git a/django/contrib/syndication/feeds.py b/django/contrib/syndication/feeds.py
index 367af4f9ff..6108edbf42 100644
--- a/django/contrib/syndication/feeds.py
+++ b/django/contrib/syndication/feeds.py
@@ -12,7 +12,7 @@ def add_domain(domain, url):
class FeedDoesNotExist(ObjectDoesNotExist):
pass
-class Feed:
+class Feed(object):
item_pubdate = None
item_enclosure_url = None
feed_type = feedgenerator.DefaultFeed
diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py
index ad8941204e..ef5f6a6b3e 100644
--- a/django/core/cache/backends/base.py
+++ b/django/core/cache/backends/base.py
@@ -5,7 +5,7 @@ from django.core.exceptions import ImproperlyConfigured
class InvalidCacheBackendError(ImproperlyConfigured):
pass
-class BaseCache:
+class BaseCache(object):
def __init__(self, params):
timeout = params.get('timeout', 300)
try:
diff --git a/django/core/context_processors.py b/django/core/context_processors.py
index cb08b12e5b..2ae9a6d972 100644
--- a/django/core/context_processors.py
+++ b/django/core/context_processors.py
@@ -36,7 +36,7 @@ def i18n(request):
context_extras['LANGUAGE_CODE'] = request.LANGUAGE_CODE
else:
context_extras['LANGUAGE_CODE'] = settings.LANGUAGE_CODE
-
+
from django.utils import translation
context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()
@@ -48,7 +48,7 @@ def request(request):
# PermWrapper and PermLookupDict proxy the permissions system into objects that
# the template system can understand.
-class PermLookupDict:
+class PermLookupDict(object):
def __init__(self, user, module_name):
self.user, self.module_name = user, module_name
def __repr__(self):
@@ -58,7 +58,7 @@ class PermLookupDict:
def __nonzero__(self):
return self.user.has_module_perms(self.module_name)
-class PermWrapper:
+class PermWrapper(object):
def __init__(self, user):
self.user = user
def __getitem__(self, module_name):
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index 20f0d04669..c25ff2b14e 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -3,7 +3,7 @@ from django.dispatch import dispatcher
from django import http
import sys
-class BaseHandler:
+class BaseHandler(object):
def __init__(self):
self._request_middleware = self._view_middleware = self._response_middleware = self._exception_middleware = None
diff --git a/django/core/paginator.py b/django/core/paginator.py
index f4941cb678..195ad1009e 100644
--- a/django/core/paginator.py
+++ b/django/core/paginator.py
@@ -4,7 +4,7 @@ from math import ceil
class InvalidPage(Exception):
pass
-class ObjectPaginator:
+class ObjectPaginator(object):
"""
This class makes pagination easy. Feed it a QuerySet, plus the number of
objects you want on each page. Then read the hits and pages properties to
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 5772912031..259a931594 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -21,7 +21,7 @@ software_version = server_version + ' ' + sys_version
class WSGIServerException(Exception):
pass
-class FileWrapper:
+class FileWrapper(object):
"""Wrapper to convert file-like objects to iterables"""
def __init__(self, filelike, blksize=8192):
@@ -63,7 +63,7 @@ def _formatparam(param, value=None, quote=1):
else:
return param
-class Headers:
+class Headers(object):
"""Manage a collection of HTTP response headers"""
def __init__(self,headers):
if type(headers) is not ListType:
@@ -218,7 +218,7 @@ def is_hop_by_hop(header_name):
"""Return true if 'header_name' is an HTTP/1.1 "Hop-by-Hop" header"""
return _hoppish(header_name.lower())
-class ServerHandler:
+class ServerHandler(object):
"""Manage the invocation of a WSGI application"""
# Configuration parameters; can override per-subclass or per-instance
@@ -591,7 +591,7 @@ class WSGIRequestHandler(BaseHTTPRequestHandler):
return
sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))
-class AdminMediaHandler:
+class AdminMediaHandler(object):
"""
WSGI middleware that intercepts calls to the admin media directory, as
defined by the ADMIN_MEDIA_PREFIX setting, and serves those images.
diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 91e999f802..a1661a2ecd 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -83,7 +83,7 @@ class MatchChecker(object):
raise NoReverseMatch("Value %r didn't match regular expression %r" % (value, test_regex))
return str(value) # TODO: Unicode?
-class RegexURLPattern:
+class RegexURLPattern(object):
def __init__(self, regex, callback, default_args=None):
# regex is a string representing a regular expression.
# callback is something like 'foo.views.news.stories.story_detail',
diff --git a/django/core/validators.py b/django/core/validators.py
index a2e9bfaf89..f09751e58d 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -237,7 +237,7 @@ def hasNoProfanities(field_data, all_data):
"Watch your mouth! The words %s are not allowed here.", plural) % \
get_text_list(['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1]) for i in words_seen], 'and')
-class AlwaysMatchesOtherField:
+class AlwaysMatchesOtherField(object):
def __init__(self, other_field_name, error_message=None):
self.other = other_field_name
self.error_message = error_message or lazy_inter(gettext_lazy("This field must match the '%s' field."), self.other)
@@ -247,7 +247,7 @@ class AlwaysMatchesOtherField:
if field_data != all_data[self.other]:
raise ValidationError, self.error_message
-class ValidateIfOtherFieldEquals:
+class ValidateIfOtherFieldEquals(object):
def __init__(self, other_field, other_value, validator_list):
self.other_field, self.other_value = other_field, other_value
self.validator_list = validator_list
@@ -258,7 +258,7 @@ class ValidateIfOtherFieldEquals:
for v in self.validator_list:
v(field_data, all_data)
-class RequiredIfOtherFieldNotGiven:
+class RequiredIfOtherFieldNotGiven(object):
def __init__(self, other_field_name, error_message=gettext_lazy("Please enter something for at least one field.")):
self.other, self.error_message = other_field_name, error_message
self.always_test = True
@@ -267,7 +267,7 @@ class RequiredIfOtherFieldNotGiven:
if not all_data.get(self.other, False) and not field_data:
raise ValidationError, self.error_message
-class RequiredIfOtherFieldsGiven:
+class RequiredIfOtherFieldsGiven(object):
def __init__(self, other_field_names, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
self.other, self.error_message = other_field_names, error_message
self.always_test = True
@@ -282,7 +282,7 @@ class RequiredIfOtherFieldGiven(RequiredIfOtherFieldsGiven):
def __init__(self, other_field_name, error_message=gettext_lazy("Please enter both fields or leave them both empty.")):
RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message)
-class RequiredIfOtherFieldEquals:
+class RequiredIfOtherFieldEquals(object):
def __init__(self, other_field, other_value, error_message=None):
self.other_field = other_field
self.other_value = other_value
@@ -294,7 +294,7 @@ class RequiredIfOtherFieldEquals:
if all_data.has_key(self.other_field) and all_data[self.other_field] == self.other_value and not field_data:
raise ValidationError(self.error_message)
-class RequiredIfOtherFieldDoesNotEqual:
+class RequiredIfOtherFieldDoesNotEqual(object):
def __init__(self, other_field, other_value, error_message=None):
self.other_field = other_field
self.other_value = other_value
@@ -306,7 +306,7 @@ class RequiredIfOtherFieldDoesNotEqual:
if all_data.has_key(self.other_field) and all_data[self.other_field] != self.other_value and not field_data:
raise ValidationError(self.error_message)
-class IsLessThanOtherField:
+class IsLessThanOtherField(object):
def __init__(self, other_field_name, error_message):
self.other, self.error_message = other_field_name, error_message
@@ -314,7 +314,7 @@ class IsLessThanOtherField:
if field_data > all_data[self.other]:
raise ValidationError, self.error_message
-class UniqueAmongstFieldsWithPrefix:
+class UniqueAmongstFieldsWithPrefix(object):
def __init__(self, field_name, prefix, error_message):
self.field_name, self.prefix = field_name, prefix
self.error_message = error_message or gettext_lazy("Duplicate values are not allowed.")
@@ -324,7 +324,7 @@ class UniqueAmongstFieldsWithPrefix:
if field_name != self.field_name and value == field_data:
raise ValidationError, self.error_message
-class IsAPowerOf:
+class IsAPowerOf(object):
"""
>>> v = IsAPowerOf(2)
>>> v(4, None)
@@ -342,7 +342,7 @@ class IsAPowerOf:
if val != int(val):
raise ValidationError, gettext("This value must be a power of %s.") % self.power_of
-class IsValidFloat:
+class IsValidFloat(object):
def __init__(self, max_digits, decimal_places):
self.max_digits, self.decimal_places = max_digits, decimal_places
@@ -359,7 +359,7 @@ class IsValidFloat:
raise ValidationError, ngettext("Please enter a valid decimal number with at most %s decimal place.",
"Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places
-class HasAllowableSize:
+class HasAllowableSize(object):
"""
Checks that the file-upload field data is a certain size. min_size and
max_size are measurements in bytes.
@@ -379,7 +379,7 @@ class HasAllowableSize:
if self.max_size is not None and len(content) > self.max_size:
raise ValidationError, self.max_error_message
-class MatchesRegularExpression:
+class MatchesRegularExpression(object):
"""
Checks that the field matches the given regular-expression. The regex
should be in string format, not already compiled.
@@ -392,7 +392,7 @@ class MatchesRegularExpression:
if not self.regexp.search(field_data):
raise ValidationError(self.error_message)
-class AnyValidator:
+class AnyValidator(object):
"""
This validator tries all given validators. If any one of them succeeds,
validation passes. If none of them succeeds, the given message is thrown
@@ -416,7 +416,7 @@ class AnyValidator:
pass
raise ValidationError(self.error_message)
-class URLMimeTypeCheck:
+class URLMimeTypeCheck(object):
"Checks that the provided URL points to a document with a listed mime type"
class CouldNotRetrieve(ValidationError):
pass
@@ -441,7 +441,7 @@ class URLMimeTypeCheck:
raise URLMimeTypeCheck.InvalidContentType, gettext("The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'.") % {
'url': field_data, 'contenttype': content_type}
-class RelaxNGCompact:
+class RelaxNGCompact(object):
"Validate against a Relax NG compact schema"
def __init__(self, schema_path, additional_root_element=None):
self.schema_path = schema_path
diff --git a/django/db/backends/util.py b/django/db/backends/util.py
index 3098a53556..74d33f42ca 100644
--- a/django/db/backends/util.py
+++ b/django/db/backends/util.py
@@ -1,7 +1,7 @@
import datetime
from time import time
-class CursorDebugWrapper:
+class CursorDebugWrapper(object):
def __init__(self, cursor, db):
self.cursor = cursor
self.db = db
diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py
index d708fa60bc..6d6197c162 100644
--- a/django/db/models/__init__.py
+++ b/django/db/models/__init__.py
@@ -15,7 +15,7 @@ from django.utils.text import capfirst
# Admin stages.
ADD, CHANGE, BOTH = 1, 2, 3
-class LazyDate:
+class LazyDate(object):
"""
Use in limit_choices_to to compare the field to dates calculated at run time
instead of when the model is loaded. For example::
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 2f8a8651a1..720737efcf 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -535,7 +535,7 @@ class FileField(Field):
if not self.blank:
if rel:
# This validator makes sure FileFields work in a related context.
- class RequiredFileField:
+ class RequiredFileField(object):
def __init__(self, other_field_names, other_file_field_name):
self.other_field_names = other_field_names
self.other_file_field_name = other_file_field_name
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 6e0fb6d2a8..f9750217a2 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -667,7 +667,7 @@ class ManyToManyField(RelatedField, Field):
def set_attributes_from_rel(self):
pass
-class ManyToOneRel:
+class ManyToOneRel(object):
def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None,
max_num_in_admin=None, num_extra_on_change=1, edit_inline=False,
related_name=None, limit_choices_to=None, lookup_overrides=None, raw_id_admin=False):
@@ -704,7 +704,7 @@ class OneToOneRel(ManyToOneRel):
self.raw_id_admin = raw_id_admin
self.multiple = False
-class ManyToManyRel:
+class ManyToManyRel(object):
def __init__(self, to, num_in_admin=0, related_name=None,
filter_interface=None, limit_choices_to=None, raw_id_admin=False, symmetrical=True):
self.to = to
diff --git a/django/db/models/options.py b/django/db/models/options.py
index 1023689a86..f8149bdf5c 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -15,7 +15,7 @@ DEFAULT_NAMES = ('verbose_name', 'db_table', 'ordering',
'unique_together', 'permissions', 'get_latest_by',
'order_with_respect_to', 'app_label')
-class Options:
+class Options(object):
def __init__(self, meta):
self.fields, self.many_to_many = [], []
self.module_name, self.verbose_name = None, None
@@ -195,7 +195,7 @@ class Options:
self._field_types[field_type] = False
return self._field_types[field_type]
-class AdminOptions:
+class AdminOptions(object):
def __init__(self, fields=None, js=None, list_display=None, list_filter=None,
date_hierarchy=None, save_as=False, ordering=None, search_fields=None,
save_on_top=False, list_select_related=False, manager=None, list_per_page=100):
diff --git a/django/db/models/query.py b/django/db/models/query.py
index bd5c010658..e826efa779 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -546,7 +546,7 @@ class DateQuerySet(QuerySet):
c._order = self._order
return c
-class QOperator:
+class QOperator(object):
"Base class for QAnd and QOr"
def __init__(self, *args):
self.args = args
diff --git a/django/forms/__init__.py b/django/forms/__init__.py
index 4bffed0f66..a730291b45 100644
--- a/django/forms/__init__.py
+++ b/django/forms/__init__.py
@@ -101,7 +101,7 @@ class Manipulator(object):
for field in self.fields:
field.convert_post_data(new_data)
-class FormWrapper:
+class FormWrapper(object):
"""
A wrapper linking a Manipulator to the template system.
This allows dictionary-style lookups of formfields. It also handles feeding
@@ -150,7 +150,7 @@ class FormWrapper:
fields = property(_get_fields)
-class FormFieldWrapper:
+class FormFieldWrapper(object):
"A bridge between the template system and an individual form field. Used by FormWrapper."
def __init__(self, formfield, data, error_list):
self.formfield, self.data, self.error_list = formfield, data, error_list
@@ -211,7 +211,7 @@ class FormFieldCollection(FormFieldWrapper):
def html_combined_error_list(self):
return ''.join([field.html_error_list() for field in self.formfield_dict.values() if hasattr(field, 'errors')])
-class InlineObjectCollection:
+class InlineObjectCollection(object):
"An object that acts like a sparse list of form field collections."
def __init__(self, parent_manipulator, rel_obj, data, errors):
self.parent_manipulator = parent_manipulator
@@ -269,7 +269,7 @@ class InlineObjectCollection:
self._collections = collections
-class FormField:
+class FormField(object):
"""Abstract class representing a form field.
Classes that extend FormField should define the following attributes:
diff --git a/django/middleware/cache.py b/django/middleware/cache.py
index b5e142a383..5510eba714 100644
--- a/django/middleware/cache.py
+++ b/django/middleware/cache.py
@@ -3,7 +3,7 @@ from django.core.cache import cache
from django.utils.cache import get_cache_key, learn_cache_key, patch_response_headers
from django.http import HttpResponseNotModified
-class CacheMiddleware:
+class CacheMiddleware(object):
"""
Cache middleware. If this is enabled, each Django-powered page will be
cached for CACHE_MIDDLEWARE_SECONDS seconds. Cache is based on URLs.
diff --git a/django/middleware/common.py b/django/middleware/common.py
index 026b3cbc92..acd3233e1d 100644
--- a/django/middleware/common.py
+++ b/django/middleware/common.py
@@ -3,7 +3,7 @@ from django import http
from django.core.mail import mail_managers
import md5, os
-class CommonMiddleware:
+class CommonMiddleware(object):
"""
"Common" middleware for taking care of some basic operations:
diff --git a/django/middleware/doc.py b/django/middleware/doc.py
index 6376fe4d5c..01c09e9c15 100644
--- a/django/middleware/doc.py
+++ b/django/middleware/doc.py
@@ -1,7 +1,7 @@
from django.conf import settings
from django import http
-class XViewMiddleware:
+class XViewMiddleware(object):
"""
Adds an X-View header to internal HEAD requests -- used by the documentation system.
"""
diff --git a/django/middleware/gzip.py b/django/middleware/gzip.py
index 201bec2000..cc8a68406c 100644
--- a/django/middleware/gzip.py
+++ b/django/middleware/gzip.py
@@ -4,7 +4,7 @@ from django.utils.cache import patch_vary_headers
re_accepts_gzip = re.compile(r'\bgzip\b')
-class GZipMiddleware:
+class GZipMiddleware(object):
"""
This middleware compresses content if the browser allows gzip compression.
It sets the Vary header accordingly, so that caches will base their storage
diff --git a/django/middleware/http.py b/django/middleware/http.py
index 2bccd60903..0a8cd67dfa 100644
--- a/django/middleware/http.py
+++ b/django/middleware/http.py
@@ -1,6 +1,6 @@
import datetime
-class ConditionalGetMiddleware:
+class ConditionalGetMiddleware(object):
"""
Handles conditional GET operations. If the response has a ETag or
Last-Modified header, and the request has If-None-Match or
diff --git a/django/middleware/locale.py b/django/middleware/locale.py
index e3c95766c9..dd154e1280 100644
--- a/django/middleware/locale.py
+++ b/django/middleware/locale.py
@@ -3,7 +3,7 @@
from django.utils.cache import patch_vary_headers
from django.utils import translation
-class LocaleMiddleware:
+class LocaleMiddleware(object):
"""
This is a very simple middleware that parses a request
and decides what translation object to install in the current
diff --git a/django/middleware/transaction.py b/django/middleware/transaction.py
index da218ac31a..4128e012f2 100644
--- a/django/middleware/transaction.py
+++ b/django/middleware/transaction.py
@@ -1,7 +1,7 @@
from django.conf import settings
from django.db import transaction
-class TransactionMiddleware:
+class TransactionMiddleware(object):
"""
Transaction middleware. If this is enabled, each view function will be run
with commit_on_response activated - that way a save() doesn't do a direct
diff --git a/django/template/__init__.py b/django/template/__init__.py
index 656cffd4b6..028d23f251 100644
--- a/django/template/__init__.py
+++ b/django/template/__init__.py
@@ -134,7 +134,7 @@ class StringOrigin(Origin):
def reload(self):
return self.source
-class Template:
+class Template(object):
def __init__(self, template_string, origin=None):
"Compilation stage"
if settings.TEMPLATE_DEBUG and origin == None:
@@ -158,7 +158,7 @@ def compile_string(template_string, origin):
parser = parser_factory(lexer.tokenize())
return parser.parse()
-class Token:
+class Token(object):
def __init__(self, token_type, contents):
"The token_type must be TOKEN_TEXT, TOKEN_VAR or TOKEN_BLOCK"
self.token_type, self.contents = token_type, contents
@@ -376,7 +376,7 @@ def parser_factory(*args, **kwargs):
else:
return Parser(*args, **kwargs)
-class TokenParser:
+class TokenParser(object):
"""
Subclass this and implement the top() method to parse a template line. When
instantiating the parser, pass in the line from the Django template parser.
@@ -654,7 +654,7 @@ def resolve_variable(path, context):
del bits[0]
return current
-class Node:
+class Node(object):
def render(self, context):
"Return the node rendered as a string"
pass
diff --git a/django/template/context.py b/django/template/context.py
index f50fb07598..44a97f95a8 100644
--- a/django/template/context.py
+++ b/django/template/context.py
@@ -7,7 +7,7 @@ class ContextPopException(Exception):
"pop() has been called more times than push()"
pass
-class Context:
+class Context(object):
"A stack container for variable context"
def __init__(self, dict_=None):
dict_ = dict_ or {}
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py
index 3d7c4275bb..632e804f26 100644
--- a/django/utils/datastructures.py
+++ b/django/utils/datastructures.py
@@ -1,4 +1,4 @@
-class MergeDict:
+class MergeDict(object):
"""
A simple class for creating new "virtual" dictionaries that actualy look
up values in more than one dictionary, passed in the constructor.
diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py
index 4e5f2bc8c0..0890a81a81 100644
--- a/django/utils/dateformat.py
+++ b/django/utils/dateformat.py
@@ -19,7 +19,7 @@ import re, time
re_formatchars = re.compile(r'(?<!\\)([aABdDfFgGhHiIjlLmMnNOPrsStTUwWyYzZ])')
re_escaped = re.compile(r'\\(.)')
-class Formatter:
+class Formatter(object):
def format(self, formatstr):
pieces = []
for i, piece in enumerate(re_formatchars.split(formatstr)):
diff --git a/django/utils/feedgenerator.py b/django/utils/feedgenerator.py
index 4c5d515f41..0ac70f483f 100644
--- a/django/utils/feedgenerator.py
+++ b/django/utils/feedgenerator.py
@@ -36,7 +36,7 @@ def get_tag_uri(url, date):
tag = re.sub('#', '/', tag)
return 'tag:' + tag
-class SyndicationFeed:
+class SyndicationFeed(object):
"Base class for all syndication feeds. Subclasses should provide write()"
def __init__(self, title, link, description, language=None, author_email=None,
author_name=None, author_link=None, subtitle=None, categories=None,
@@ -108,7 +108,7 @@ class SyndicationFeed:
else:
return datetime.datetime.now()
-class Enclosure:
+class Enclosure(object):
"Represents an RSS enclosure"
def __init__(self, url, length, mime_type):
"All args are expected to be Python Unicode objects"
diff --git a/tests/othertests/templates.py b/tests/othertests/templates.py
index f624b251ba..47504d6ffd 100644
--- a/tests/othertests/templates.py
+++ b/tests/othertests/templates.py
@@ -169,8 +169,7 @@ TEMPLATE_TESTS = {
'comment-tag05': ("foo{% comment %} {% somerandomtag %} {% endcomment %}", {}, "foo"),
### CYCLE TAG #############################################################
- #'cycleXX': ('', {}, ''),
- 'cycle01': ('{% cycle a, %}', {}, 'a'),
+ 'cycle01': ('{% cycle a %}', {}, template.TemplateSyntaxError),
'cycle02': ('{% cycle a,b,c as abc %}{% cycle abc %}', {}, 'ab'),
'cycle03': ('{% cycle a,b,c as abc %}{% cycle abc %}{% cycle abc %}', {}, 'abc'),
'cycle04': ('{% cycle a,b,c as abc %}{% cycle abc %}{% cycle abc %}{% cycle abc %}', {}, 'abca'),