From b3546f1ebcac3480eccf5d19371ca534e7ce79bb Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 14 Jul 2016 17:43:37 +0530 Subject: [PATCH] [fix] show 'click here' in expiry message if upgrade_url is available --- frappe/commands/site.py | 4 +-- frappe/core/page/usage_info/usage_info.js | 4 +-- frappe/limits.py | 36 +++++++++++-------- frappe/patches.txt | 3 +- .../v7_0/replace_upgrade_link_limit.py | 10 ++++++ frappe/public/js/frappe/toolbar.js | 10 +++++- 6 files changed, 47 insertions(+), 20 deletions(-) create mode 100644 frappe/patches/v7_0/replace_upgrade_link_limit.py diff --git a/frappe/commands/site.py b/frappe/commands/site.py index 4ed5d1ef23..73703b98e9 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -377,7 +377,7 @@ def _set_limits(context, site, limits): new_limits = {} for limit, value in limits: if limit not in ('emails', 'space', 'users', 'expiry', - 'support_email', 'support_chat', 'upgrade_link'): + 'support_email', 'support_chat', 'upgrade_url'): frappe.throw('Invalid limit {0}'.format(limit)) if limit=='expiry': @@ -399,7 +399,7 @@ def _set_limits(context, site, limits): @click.command('clear-limits') @click.option('--site', help='site name') @click.argument('limits', nargs=-1, type=click.Choice(['emails', 'space', 'users', 'expiry', - 'support_email', 'support_chat', 'upgrade_link'])) + 'support_email', 'support_chat', 'upgrade_url'])) @pass_context def clear_limits(context, site, limits): """Clears given limit from the site config, and removes limit from site config if its empty""" diff --git a/frappe/core/page/usage_info/usage_info.js b/frappe/core/page/usage_info/usage_info.js index 810785e300..1f2409980e 100644 --- a/frappe/core/page/usage_info/usage_info.js +++ b/frappe/core/page/usage_info/usage_info.js @@ -19,9 +19,9 @@ frappe.pages['usage-info'].on_page_load = function(wrapper) { var btn_text = usage_info.limits.users == 1 ? __("Upgrade") : __("Renew / Upgrade"); - if(usage_info.upgrade_link) { + if(usage_info.upgrade_url) { page.set_primary_action(btn_text, function() { - window.open(usage_info.upgrade_link); + window.open(usage_info.upgrade_url); }); } } diff --git a/frappe/limits.py b/frappe/limits.py index 650433b311..f48177ffcf 100755 --- a/frappe/limits.py +++ b/frappe/limits.py @@ -21,13 +21,11 @@ def check_if_expired(): expires_on = formatdate(limits.get("expiry")) support_email = limits.get("support_email") - if limits.upgrade_link: - upgrade_link = get_upgrade_link(limits.upgrade_link) - upgrade_link = '{click_here}'.format(upgrade_link=upgrade_link, click_here=_('click here')) - message = _("""Your subscription expired on {0}. To extend your subscription, {1}.""").format(expires_on, upgrade_link) + if limits.upgrade_url: + message = _("""Your subscription expired on {0}. To renew, {1}.""").format(expires_on, get_upgrade_link(limits.upgrade_url)) elif support_email: - message = _("""Your subscription expired on {0}. To extend your subscription, please send an email to {1}.""").format(expires_on, support_email) + message = _("""Your subscription expired on {0}. To renew, please send an email to {1}.""").format(expires_on, support_email) else: message = _("""Your subscription expired on {0}""").format(expires_on) @@ -51,7 +49,8 @@ def get_expiry_message(): if "System Manager" not in frappe.get_roles(): return "" - if not get_limits().get("expiry"): + limits = get_limits() + if not limits.expiry: return "" expires_on = getdate(get_limits().get("expiry")) @@ -59,18 +58,22 @@ def get_expiry_message(): message = "" if today > expires_on: - message = _("Your subscription has expired") + message = _("Your subscription has expired.") else: days_to_expiry = (expires_on - today).days if days_to_expiry == 0: - message = _("Your subscription will expire today") + message = _("Your subscription will expire today.") elif days_to_expiry == 1: - message = _("Your subscription will expire tomorrow") + message = _("Your subscription will expire tomorrow.") elif days_to_expiry <= EXPIRY_WARNING_DAYS: - message = _("Your subscription will expire on") + " " + formatdate(expires_on) + message = _("Your subscription will expire on {0}.").format(formatdate(expires_on)) + + if message and limits.upgrade_url: + upgrade_link = get_upgrade_link(limits.upgrade_url) + message += ' ' + _('To renew, {0}.').format(upgrade_link) return message @@ -106,13 +109,13 @@ def get_usage_info(): usage_info['expires_on'] = formatdate(limits.expiry) usage_info['days_to_expiry'] = (getdate(limits.expiry) - getdate()).days - if limits.upgrade_link: - usage_info['upgrade_link'] = get_upgrade_link(limits.upgrade_link) + if limits.upgrade_url: + usage_info['upgrade_url'] = get_upgrade_url(limits.upgrade_url) return usage_info -def get_upgrade_link(upgrade_link): - parts = urlparse.urlsplit(upgrade_link) +def get_upgrade_url(upgrade_url): + parts = urlparse.urlsplit(upgrade_url) params = dict(urlparse.parse_qsl(parts.query)) params.update({ 'site': frappe.local.site, @@ -124,6 +127,11 @@ def get_upgrade_link(upgrade_link): url = urlparse.urlunsplit((parts.scheme, parts.netloc, parts.path, query, parts.fragment)) return url +def get_upgrade_link(upgrade_url, label=None): + upgrade_url = get_upgrade_url(upgrade_url) + upgrade_link = '{click_here}'.format(upgrade_url=upgrade_url, click_here=label or _('click here')) + return upgrade_link + def get_limits(): ''' "limits": { diff --git a/frappe/patches.txt b/frappe/patches.txt index 060c9fa72e..3af018acd8 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -132,4 +132,5 @@ frappe.patches.v7_0.setup_list_settings execute:frappe.db.sql('''delete from `tabSingles` where doctype="Email Settings"''') # 2016-06-13 execute:frappe.db.sql("delete from `tabWeb Page` where ifnull(template_path, '')!=''") frappe.patches.v7_0.re_route #2016-06-27 -frappe.patches.v7_0.rename_newsletter_list_to_email_group \ No newline at end of file +frappe.patches.v7_0.rename_newsletter_list_to_email_group +frappe.patches.v7_0.replace_upgrade_link_limit diff --git a/frappe/patches/v7_0/replace_upgrade_link_limit.py b/frappe/patches/v7_0/replace_upgrade_link_limit.py new file mode 100644 index 0000000000..c178a87466 --- /dev/null +++ b/frappe/patches/v7_0/replace_upgrade_link_limit.py @@ -0,0 +1,10 @@ +from __future__ import unicode_literals +import frappe +from frappe.limits import get_limits, clear_limit, update_limits + +def execute(): + limits = get_limits() + if limits and limits.upgrade_link: + upgrade_url = limits.upgrade_link + clear_limit('upgrade_link') + update_limits({'upgrade_url': upgrade_url}) diff --git a/frappe/public/js/frappe/toolbar.js b/frappe/public/js/frappe/toolbar.js index 10546eda32..3e712c40c9 100755 --- a/frappe/public/js/frappe/toolbar.js +++ b/frappe/public/js/frappe/toolbar.js @@ -8,7 +8,15 @@ $(document).on("toolbar_setup", function() { var limits = frappe.boot.limits; if(frappe.boot.expiry_message) { - frappe.msgprint(frappe.boot.expiry_message) + var expiry_message_shown = localStorage.expiry_message_shown; + + // if message is more than a day old, show message again + if (!(expiry_message_shown + && (new Date() - new Date(expiry_message_shown) < 86400000))) { + + localStorage.expiry_message_shown = new Date(); + frappe.msgprint(frappe.boot.expiry_message); + } } if(limits.support_email || limits.support_chat) {