mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	magic-removal: slight event cleanup
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1721 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -16,7 +16,7 @@ from django.db.models.fields.related import * | |||||||
|  |  | ||||||
| from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured | from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured | ||||||
| from django.db.models.exceptions import FieldDoesNotExist, BadKeywordArguments | from django.db.models.exceptions import FieldDoesNotExist, BadKeywordArguments | ||||||
| from django.db.models.signals import Signals | from django.db.models import signals | ||||||
|  |  | ||||||
|  |  | ||||||
| # Admin stages. | # Admin stages. | ||||||
|   | |||||||
| @@ -1,12 +1,13 @@ | |||||||
| from django.db.models.manipulators import ModelAddManipulator, ModelChangeManipulator | import django.db.models.manipulators | ||||||
|  | import django.db.models.manager | ||||||
|  |  | ||||||
| from django.db.models.fields import  AutoField | from django.db.models.fields import  AutoField | ||||||
| from django.db.models.fields.related import OneToOne, ManyToOne | from django.db.models.fields.related import OneToOne, ManyToOne | ||||||
| from django.db.models.related import RelatedObject | from django.db.models.related import RelatedObject | ||||||
| from django.db.models.manager import Manager |  | ||||||
| from django.db.models.query import orderlist2sql | from django.db.models.query import orderlist2sql | ||||||
| from django.db.models.options import Options | from django.db.models.options import Options | ||||||
| from django.db import connection, backend | from django.db import connection, backend | ||||||
| from django.db.models.signals import Signals | from django.db.models import signals | ||||||
|  |  | ||||||
| from django.dispatch import dispatcher | from django.dispatch import dispatcher | ||||||
| from django.core.exceptions import ObjectDoesNotExist | from django.core.exceptions import ObjectDoesNotExist | ||||||
| @@ -133,7 +134,7 @@ class Model(object): | |||||||
|         return not self.__eq__(other) |         return not self.__eq__(other) | ||||||
|  |  | ||||||
|     def __init__(self, *args, **kwargs): |     def __init__(self, *args, **kwargs): | ||||||
|         dispatcher.send( signal = Signals.pre_init, sender = self.__class__, args=args, kwargs=kwargs) |         dispatcher.send( signal = signals.pre_init, sender = self.__class__, args=args, kwargs=kwargs) | ||||||
|         if kwargs: |         if kwargs: | ||||||
|             for f in self._meta.fields: |             for f in self._meta.fields: | ||||||
|                 if isinstance(f.rel, ManyToOne): |                 if isinstance(f.rel, ManyToOne): | ||||||
| @@ -164,26 +165,15 @@ class Model(object): | |||||||
|                 raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] |                 raise TypeError, "'%s' is an invalid keyword argument for this function" % kwargs.keys()[0] | ||||||
|         for i, arg in enumerate(args): |         for i, arg in enumerate(args): | ||||||
|             setattr(self, self._meta.fields[i].attname, arg) |             setattr(self, self._meta.fields[i].attname, arg) | ||||||
|         dispatcher.send( signal = Signals.post_init, sender = self.__class__, instance=self) |         dispatcher.send( signal = signals.post_init, sender = self.__class__, instance=self) | ||||||
|  |  | ||||||
|     def _prepare(cls): |     def _prepare(cls): | ||||||
|         if not hasattr(cls, '_default_manager'): |  | ||||||
|             # Create the default manager, if needed. |  | ||||||
|             if hasattr(cls, 'objects'): |  | ||||||
|                 raise ValueError, "Model %s must specify a custom Manager, because it has a field named 'objects'" % name |  | ||||||
|             cls.add_to_class('objects',  Manager()) |  | ||||||
|          |  | ||||||
|         cls.add_to_class(  'AddManipulator', ModelAddManipulator) |  | ||||||
|         cls.add_to_class(  'ChangeManipulator', ModelChangeManipulator) |  | ||||||
|  |  | ||||||
|         # Creates some methods once self._meta has been populated. |         # Creates some methods once self._meta has been populated. | ||||||
|  |  | ||||||
|         if cls._meta.order_with_respect_to: |         if cls._meta.order_with_respect_to: | ||||||
|             cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True) |             cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True) | ||||||
|             cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False) |             cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False) | ||||||
|  |  | ||||||
|         dispatcher.send( signal = Signals.class_prepared, sender = cls) |         dispatcher.send( signal = signals.class_prepared, sender = cls) | ||||||
|  |  | ||||||
|         #RelatedField.do_pending_lookups(cls) |         #RelatedField.do_pending_lookups(cls) | ||||||
|  |  | ||||||
|     _prepare = classmethod(_prepare) |     _prepare = classmethod(_prepare) | ||||||
| @@ -192,7 +182,7 @@ class Model(object): | |||||||
|         # Run any pre-save hooks. |         # Run any pre-save hooks. | ||||||
|         if hasattr(self, '_pre_save'): |         if hasattr(self, '_pre_save'): | ||||||
|             self._pre_save() |             self._pre_save() | ||||||
|         dispatcher.send( signal=Signals.pre_save, sender = self.__class__, instance = self ) |         dispatcher.send( signal=signals.pre_save, sender = self.__class__, instance = self ) | ||||||
|  |  | ||||||
|         non_pks = [f for f in self._meta.fields if not f.primary_key] |         non_pks = [f for f in self._meta.fields if not f.primary_key] | ||||||
|         cursor = connection.cursor() |         cursor = connection.cursor() | ||||||
| @@ -237,7 +227,7 @@ class Model(object): | |||||||
|         connection.commit() |         connection.commit() | ||||||
|  |  | ||||||
|         # Run any post-save hooks. |         # Run any post-save hooks. | ||||||
|         dispatcher.send(signal=Signals.pre_save, sender = self.__class__, instance = self ) |         dispatcher.send(signal=signals.pre_save, sender = self.__class__, instance = self ) | ||||||
|  |  | ||||||
|         if hasattr(self, '_post_save'): |         if hasattr(self, '_post_save'): | ||||||
|             self._post_save() |             self._post_save() | ||||||
| @@ -292,7 +282,7 @@ class Model(object): | |||||||
|             if hasattr(instance, '_pre_delete'): |             if hasattr(instance, '_pre_delete'): | ||||||
|                 instance._pre_delete() |                 instance._pre_delete() | ||||||
|  |  | ||||||
|             dispatcher.send(signal=Signals.pre_delete, sender = cls, instance = instance ) |             dispatcher.send(signal=signals.pre_delete, sender = cls, instance = instance ) | ||||||
|  |  | ||||||
|             for related in cls._meta.get_all_related_many_to_many_objects(): |             for related in cls._meta.get_all_related_many_to_many_objects(): | ||||||
|                 cursor.execute("DELETE FROM %s WHERE %s=%%s" % \ |                 cursor.execute("DELETE FROM %s WHERE %s=%%s" % \ | ||||||
| @@ -322,7 +312,7 @@ class Model(object): | |||||||
|  |  | ||||||
|             setattr(self, cls._meta.pk.attname, None) |             setattr(self, cls._meta.pk.attname, None) | ||||||
|  |  | ||||||
|             dispatcher.send(signal=Signals.post_delete, sender = cls, instance = instance ) |             dispatcher.send(signal=signals.post_delete, sender = cls, instance = instance ) | ||||||
|  |  | ||||||
|             if hasattr(instance, '_post_delete'): |             if hasattr(instance, '_post_delete'): | ||||||
|                 instance._post_delete() |                 instance._post_delete() | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| from django.db.models.signals import Signals | from django.db.models import signals | ||||||
| from django.dispatch import dispatcher | from django.dispatch import dispatcher | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.core import formfields, validators | from django.core import formfields, validators | ||||||
| @@ -507,7 +507,7 @@ class FileField(Field): | |||||||
|         setattr(cls, 'save_%s_file' % self.name, curry(cls._save_FIELD_file, field=self)) |         setattr(cls, 'save_%s_file' % self.name, curry(cls._save_FIELD_file, field=self)) | ||||||
|         dispatcher.connect( |         dispatcher.connect( | ||||||
|             self.delete_file, |             self.delete_file, | ||||||
|             signal = Signals.post_delete, |             signal = signals.post_delete, | ||||||
|             sender = cls |             sender = cls | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ from django.db.models.related import RelatedObject | |||||||
| from django.utils.translation import gettext_lazy, string_concat | from django.utils.translation import gettext_lazy, string_concat | ||||||
| from django.utils.functional import curry | from django.utils.functional import curry | ||||||
| from django.core import formfields | from django.core import formfields | ||||||
| from django.db.models.signals import Signals | from django.db.models import signals | ||||||
|  |  | ||||||
| from django.dispatch import dispatcher | from django.dispatch import dispatcher | ||||||
|  |  | ||||||
| @@ -18,7 +18,7 @@ class RelatedField(object): | |||||||
|      |      | ||||||
|     dispatcher.connect( |     dispatcher.connect( | ||||||
|         lambda sender: RelatedField.do_pending_lookups(sender) , |         lambda sender: RelatedField.do_pending_lookups(sender) , | ||||||
|         signal = Signals.class_prepared, |         signal = signals.class_prepared, | ||||||
|         weak = False) |         weak = False) | ||||||
|      |      | ||||||
|      |      | ||||||
| @@ -320,7 +320,7 @@ class ManyToManyFieldNew(RelatedField): | |||||||
|         # We need to wait until the class we were in was fully defined |         # We need to wait until the class we were in was fully defined | ||||||
|         dispatcher.connect( |         dispatcher.connect( | ||||||
|             self.from_prepared, |             self.from_prepared, | ||||||
|             signal = Signals.class_prepared, |             signal = signals.class_prepared, | ||||||
|             sender = self.from_ |             sender = self.from_ | ||||||
|         ) |         ) | ||||||
|          |          | ||||||
| @@ -340,6 +340,7 @@ class ManyToManyFieldNew(RelatedField): | |||||||
|         M2M.__name__ = "M2M_%s_%s_%s" % (self.name,self.from_.__name__, self.to.__name__) |         M2M.__name__ = "M2M_%s_%s_%s" % (self.name,self.from_.__name__, self.to.__name__) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class ManyToOne: | class ManyToOne: | ||||||
|     def __init__(self, to, field_name, num_in_admin=3, min_num_in_admin=None, |     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, |         max_num_in_admin=None, num_extra_on_change=1, edit_inline=False, | ||||||
|   | |||||||
| @@ -3,11 +3,26 @@ from django.utils.functional import curry | |||||||
| from django.db import backend, connection | from django.db import backend, connection | ||||||
| from django.db.models.query import Q, parse_lookup, fill_table_cache, get_cached_row | from django.db.models.query import Q, parse_lookup, fill_table_cache, get_cached_row | ||||||
| from django.db.models.query import handle_legacy_orderlist, orderlist2sql, orderfield2column | from django.db.models.query import handle_legacy_orderlist, orderlist2sql, orderfield2column | ||||||
|  | from django.dispatch import dispatcher | ||||||
|  | from django.db.models import signals | ||||||
|  |  | ||||||
| # Size of each "chunk" for get_iterator calls. | # Size of each "chunk" for get_iterator calls. | ||||||
| # Larger values are slightly faster at the expense of more storage space. | # Larger values are slightly faster at the expense of more storage space. | ||||||
| GET_ITERATOR_CHUNK_SIZE = 100 | GET_ITERATOR_CHUNK_SIZE = 100 | ||||||
|  |  | ||||||
|  | def ensure_default_manager(sender): | ||||||
|  |     cls = sender | ||||||
|  |     if not hasattr(cls, '_default_manager'): | ||||||
|  |         # Create the default manager, if needed. | ||||||
|  |         if hasattr(cls, 'objects'): | ||||||
|  |             raise ValueError, "Model %s must specify a custom Manager, because it has a field named 'objects'" % name | ||||||
|  |         cls.add_to_class('objects',  Manager()) | ||||||
|  |  | ||||||
|  | dispatcher.connect( | ||||||
|  |     ensure_default_manager, | ||||||
|  |     signal=signals.class_prepared | ||||||
|  | ) | ||||||
|  |  | ||||||
| class Manager(object): | class Manager(object): | ||||||
|         # Tracks each time a Manager instance is created. Used to retain order. |         # Tracks each time a Manager instance is created. Used to retain order. | ||||||
|     creation_counter = 0 |     creation_counter = 0 | ||||||
|   | |||||||
| @@ -1,6 +1,18 @@ | |||||||
| from django.core.exceptions import ObjectDoesNotExist | from django.core.exceptions import ObjectDoesNotExist | ||||||
| from django.core.formfields import Manipulator | from django.core.formfields import Manipulator | ||||||
| from django.db.models.fields import FileField, AutoField | from django.db.models.fields import FileField, AutoField | ||||||
|  | from django.dispatch import dispatcher | ||||||
|  | from django.db.models import signals | ||||||
|  |  | ||||||
|  | def add_manipulators(sender): | ||||||
|  |     cls = sender | ||||||
|  |     cls.add_to_class(  'AddManipulator', ModelAddManipulator) | ||||||
|  |     cls.add_to_class(  'ChangeManipulator', ModelChangeManipulator) | ||||||
|  |  | ||||||
|  | dispatcher.connect( | ||||||
|  |     add_manipulators, | ||||||
|  |     signal=signals.class_prepared | ||||||
|  | ) | ||||||
|  |  | ||||||
| class ManipulatorDescriptor(object): | class ManipulatorDescriptor(object): | ||||||
|     class empty: |     class empty: | ||||||
|   | |||||||
| @@ -1,11 +1,10 @@ | |||||||
| class Signals(object): | class_prepared = object() | ||||||
|     class_prepared = object() |  | ||||||
|  |  | ||||||
|     pre_init= object() | pre_init= object() | ||||||
|     post_init = object() | post_init = object() | ||||||
|  |  | ||||||
|     pre_save = object() | pre_save = object() | ||||||
|     post_save = object() | post_save = object() | ||||||
|  |  | ||||||
|     pre_delete = object() | pre_delete = object() | ||||||
|     post_delete = object() | post_delete = object() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user