From 5e80f76c0dea0fbb2edc12f947516a86004e7711 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 5 Dec 2014 11:35:40 +0100 Subject: [PATCH] Include site name into requests. see #551 --- doc/extending/events.rst | 3 +-- modoboa/core/__init__.py | 6 +++--- modoboa/core/context_processors.py | 2 +- modoboa/core/utils.py | 8 ++++++-- modoboa/core/views/admin.py | 2 +- modoboa/extensions/amavis/general_callbacks.py | 6 +++--- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/doc/extending/events.rst b/doc/extending/events.rst index 4dcfc0d38..6f4a533e8 100644 --- a/doc/extending/events.rst +++ b/doc/extending/events.rst @@ -757,8 +757,7 @@ inside the top bar). def callback(user, include_all): pass -* ``user`` is a ``User`` instance corresponding to the currently - logged in user +* ``request`` is a ``Request`` instance * ``include_all`` is a boolean indicating if empty notifications must be included into the result or not diff --git a/modoboa/core/__init__.py b/modoboa/core/__init__.py index 91475ef95..ca94c9604 100644 --- a/modoboa/core/__init__.py +++ b/modoboa/core/__init__.py @@ -70,15 +70,15 @@ def unset_default_topredirection(extension): @events.observe("TopNotifications") -def check_for_new_version(user, include_all): +def check_for_new_version(request, include_all): """ Check if a new version of Modoboa is available. """ from modoboa.core.utils import new_version_available - if not user.is_superuser: + if not request.user.is_superuser: return [] - if new_version_available() is None: + if new_version_available(request) is None: return [{"id": "newversionavailable"}] if include_all else [] return [{ "id": "newversionavailable", diff --git a/modoboa/core/context_processors.py b/modoboa/core/context_processors.py index 218d6bf6e..94f24385a 100644 --- a/modoboa/core/context_processors.py +++ b/modoboa/core/context_processors.py @@ -14,5 +14,5 @@ def top_notifications(request): "notifications_check_interval": int(parameters.get_admin("TOP_NOTIFICATIONS_CHECK_INTERVAL")) * 1000, "top_notifications": events.raiseQueryEvent( - "TopNotifications", request.user, False) + "TopNotifications", request, False) } diff --git a/modoboa/core/utils.py b/modoboa/core/utils.py index 2b2ea13b5..979654b14 100644 --- a/modoboa/core/utils.py +++ b/modoboa/core/utils.py @@ -9,21 +9,25 @@ from requests.exceptions import RequestException from django.conf import settings +from django.contrib.sites.models import get_current_site + from versionfield.constants import DEFAULT_NUMBER_BITS from versionfield.version import Version from modoboa.lib import parameters -def new_version_available(): +def new_version_available(request): """Check if a new version of Modoboa is available.""" if parameters.get_admin("CHECK_NEW_VERSIONS") == "no": return None local_version = pkg_resources.get_distribution("modoboa").version url = os.path.join(settings.MODOBOA_API_URL, "current_version/") + site = get_current_site(request) try: resp = requests.get(url, params={ - "client_version": pkg_resources.get_distribution("modoboa").version + "client_version": pkg_resources.get_distribution("modoboa").version, + "client_site": site }) except RequestException: return None diff --git a/modoboa/core/views/admin.py b/modoboa/core/views/admin.py index 6da5a04d2..c289abef6 100644 --- a/modoboa/core/views/admin.py +++ b/modoboa/core/views/admin.py @@ -162,5 +162,5 @@ def check_top_notifications(request): AJAX service to check for new top notifications to display. """ return render_to_json_response( - events.raiseQueryEvent("TopNotifications", request.user, True) + events.raiseQueryEvent("TopNotifications", request, True) ) diff --git a/modoboa/extensions/amavis/general_callbacks.py b/modoboa/extensions/amavis/general_callbacks.py index 8ac017a1a..a7e50cd49 100644 --- a/modoboa/extensions/amavis/general_callbacks.py +++ b/modoboa/extensions/amavis/general_callbacks.py @@ -128,17 +128,17 @@ $(document).bind('domform_init', function() { @events.observe("TopNotifications") -def check_for_pending_requests(user, include_all): +def check_for_pending_requests(request, include_all): """ Check if release requests are pending. """ from .sql_connector import get_connector if parameters.get_admin("USER_CAN_RELEASE") == "yes" \ - or user.group == "SimpleUsers": + or request.user.group == "SimpleUsers": return [] - nbrequests = get_connector(user=user).get_pending_requests() + nbrequests = get_connector(user=request.user).get_pending_requests() if not nbrequests: return [{"id": "nbrequests", "counter": 0}] if include_all \ else []