web/lib/django/contrib/comments/__init__.py
changeset 0 0d40e90630ef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/comments/__init__.py	Wed Jan 20 00:34:04 2010 +0100
@@ -0,0 +1,91 @@
+from django.conf import settings
+from django.core import urlresolvers
+from django.core.exceptions import ImproperlyConfigured
+from django.contrib.comments.models import Comment
+from django.contrib.comments.forms import CommentForm
+from django.utils.importlib import import_module
+
+DEFAULT_COMMENTS_APP = 'django.contrib.comments'
+
+def get_comment_app():
+    """
+    Get the comment app (i.e. "django.contrib.comments") as defined in the settings
+    """
+    # Make sure the app's in INSTALLED_APPS
+    comments_app = get_comment_app_name()
+    if comments_app not in settings.INSTALLED_APPS:
+        raise ImproperlyConfigured("The COMMENTS_APP (%r) "\
+                                   "must be in INSTALLED_APPS" % settings.COMMENTS_APP)
+
+    # Try to import the package
+    try:
+        package = import_module(comments_app)
+    except ImportError:
+        raise ImproperlyConfigured("The COMMENTS_APP setting refers to "\
+                                   "a non-existing package.")
+
+    return package
+
+def get_comment_app_name():
+    """
+    Returns the name of the comment app (either the setting value, if it
+    exists, or the default).
+    """
+    return getattr(settings, 'COMMENTS_APP', DEFAULT_COMMENTS_APP)
+
+def get_model():
+    """
+    Returns the comment model class.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_model"):
+        return get_comment_app().get_model()
+    else:
+        return Comment
+
+def get_form():
+    """
+    Returns the comment ModelForm class.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_form"):
+        return get_comment_app().get_form()
+    else:
+        return CommentForm
+
+def get_form_target():
+    """
+    Returns the target URL for the comment form submission view.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_form_target"):
+        return get_comment_app().get_form_target()
+    else:
+        return urlresolvers.reverse("django.contrib.comments.views.comments.post_comment")
+
+def get_flag_url(comment):
+    """
+    Get the URL for the "flag this comment" view.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_flag_url"):
+        return get_comment_app().get_flag_url(comment)
+    else:
+        return urlresolvers.reverse("django.contrib.comments.views.moderation.flag",
+                                    args=(comment.id,))
+
+def get_delete_url(comment):
+    """
+    Get the URL for the "delete this comment" view.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_delete_url"):
+        return get_comment_app().get_delete_url(comment)
+    else:
+        return urlresolvers.reverse("django.contrib.comments.views.moderation.delete",
+                                    args=(comment.id,))
+
+def get_approve_url(comment):
+    """
+    Get the URL for the "approve this comment from moderation" view.
+    """
+    if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_approve_url"):
+        return get_comment_app().get_approve_url(comment)
+    else:
+        return urlresolvers.reverse("django.contrib.comments.views.moderation.approve",
+                                    args=(comment.id,))