From 562c5ffb07c0595da64920024da57760f1ca050d Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 17 Dec 2009 16:12:51 +0000 Subject: [PATCH] [soc2009/multidb] Added partial handling for comments to be multi-db compliant. Patch from Russell Keith-Magee. git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/multidb@11892 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/comments/forms.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/django/contrib/comments/forms.py b/django/contrib/comments/forms.py index 4ba12efa92..0c4b28528b 100644 --- a/django/contrib/comments/forms.py +++ b/django/contrib/comments/forms.py @@ -28,7 +28,7 @@ class CommentSecurityForm(forms.Form): initial = {} initial.update(self.generate_security_data()) super(CommentSecurityForm, self).__init__(data=data, initial=initial) - + def security_errors(self): """Return just those errors associated with security""" errors = ErrorDict() @@ -107,13 +107,13 @@ class CommentDetailsForm(CommentSecurityForm): """ if not self.is_valid(): raise ValueError("get_comment_object may only be called on valid forms") - + CommentModel = self.get_comment_model() new = CommentModel(**self.get_comment_create_data()) new = self.check_for_duplicate_comment(new) - + return new - + def get_comment_model(self): """ Get the comment model to create with this form. Subclasses in custom @@ -121,7 +121,7 @@ class CommentDetailsForm(CommentSecurityForm): check_for_duplicate_comment to provide custom comment models. """ return Comment - + def get_comment_create_data(self): """ Returns the dict of data to be used to create a comment. Subclasses in @@ -140,13 +140,15 @@ class CommentDetailsForm(CommentSecurityForm): is_public = True, is_removed = False, ) - + def check_for_duplicate_comment(self, new): """ Check that a submitted comment isn't a duplicate. This might be caused by someone posting a comment twice. If it is a dup, silently return the *previous* comment. """ - possible_duplicates = self.get_comment_model()._default_manager.filter( + possible_duplicates = self.get_comment_model()._default_manager.using( + self.target_object._state.db + ).filter( content_type = new.content_type, object_pk = new.object_pk, user_name = new.user_name, @@ -156,7 +158,7 @@ class CommentDetailsForm(CommentSecurityForm): for old in possible_duplicates: if old.submit_date.date() == new.submit_date.date() and old.comment == new.comment: return old - + return new def clean_comment(self):