From db48e869a6047ba41a442f85fda97a22e168b796 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 5 Feb 2020 13:52:19 -0800 Subject: [PATCH] upgrades: Show notification when FreedomBox is updated - Don't not show notification on first install/run. - Shows notification when upgrading or downgrading. - This also serves as an example of how to show more specific notifications when upgraded to a newer version. Closes: 1637. Reviewed-by: James Valleroy --- plinth/modules/upgrades/__init__.py | 33 ++++++++++++++++ .../templates/upgrades-new-release.html | 39 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 plinth/modules/upgrades/templates/upgrades-new-release.html diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 9fcfb5d22..4bf593a10 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -19,7 +19,9 @@ FreedomBox app for upgrades. """ from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_noop +import plinth from plinth import actions from plinth import app as app_module from plinth import menu @@ -55,6 +57,37 @@ class UpgradesApp(app_module.App): 'upgrades:index', parent_url_name='system') self.add(menu_item) + self._show_new_release_notification() + + def _show_new_release_notification(self): + """When upgraded to new release, show a notification.""" + from plinth.notification import Notification + try: + note = Notification.get('upgrades-new-release') + if note.data['version'] == plinth.__version__: + # User already has notification for update to this version. It + # may be dismissed or not yet dismissed + return + + # User currently has a notification for an older version, update. + dismiss = False + except KeyError: + # Don't show notification for the first version user runs, create + # but don't show it. + dismiss = True + + data = { + 'version': plinth.__version__, + 'app_name': 'Update', + 'app_icon': 'fa-refresh' + } + title = ugettext_noop('FreedomBox Updated') + note = Notification.update_or_create( + id='upgrades-new-release', app_id='upgrades', severity='info', + title=title, body_template='upgrades-new-release.html', data=data, + group='admin') + note.dismiss(should_dismiss=dismiss) + def init(): """Initialize the module.""" diff --git a/plinth/modules/upgrades/templates/upgrades-new-release.html b/plinth/modules/upgrades/templates/upgrades-new-release.html new file mode 100644 index 000000000..bec74ed88 --- /dev/null +++ b/plinth/modules/upgrades/templates/upgrades-new-release.html @@ -0,0 +1,39 @@ +{% comment %} +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +{% endcomment %} + +{% load i18n %} +{% load static %} + +
+ {% blocktrans %}{{box_name}} Updated{% endblocktrans %} +
+ +

+ {% blocktrans trimmed with url="https://discuss.freedombox.org/c/announcements/7" %} + {{ box_name }} has been updated to version {{ version }}. See the + release announcement. + {% endblocktrans %} +

+ +

+ + {% trans "Dismiss" %} + +