Date: Wednesday, May 24, 2017 @ 06:25:48 Author: arojas Revision: 229923
archrelease: copy trunk to community-any Added: sage-notebook/repos/community-any/PKGBUILD (from rev 229922, sage-notebook/trunk/PKGBUILD) sage-notebook/repos/community-any/sage.service (from rev 229922, sage-notebook/trunk/sage.service) Deleted: sage-notebook/repos/community-any/PKGBUILD sage-notebook/repos/community-any/jmol.patch sage-notebook/repos/community-any/sage.service sage-notebook/repos/community-any/sagenb-flask-0.11.patch -------------------------+ PKGBUILD | 127 ++++++++--------- jmol.patch | 21 -- sage.service | 16 +- sagenb-flask-0.11.patch | 342 ---------------------------------------------- 4 files changed, 68 insertions(+), 438 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2017-05-24 06:25:30 UTC (rev 229922) +++ PKGBUILD 2017-05-24 06:25:48 UTC (rev 229923) @@ -1,67 +0,0 @@ -# $Id$ -# Maintainer: Antonio Rojas <aro...@archlinux.org> -# Maintainer: Evgeniy Alekseev <arcanis.arch at gmail dot com> - -pkgname=sage-notebook -pkgver=0.13 -pkgrel=4 -pkgdesc='Browser-based notebook interface for SageMath' -arch=(any) -url='http://www.sagemath.org' -license=(GPL3) -depends=(sagemath python2-twisted python2-flask-oldsessions python2-flask-openid python2-flask-autoindex python2-flask-babel mathjax) -optdepends=('python2-pyopenssl: to use the notebook in secure mode') -makedepends=(gendesk) -source=($pkgname-$pkgver::"https://github.com/sagemath/sagenb/archive/$pkgver.tar.gz" sage.service jmol.patch sagenb-flask-0.11.patch) -sha256sums=('8e88c66a244c027256c0c6c944414ef63d6c28c4f03c118c9964d610357896a6' - '8f16928bbb5989ffd99a81ed76c6d391dfe32ea74f626a24bc27dff348412de7' - '3e7d7437d5dd4e139add01dc21b367de391b8c4472a3af3827b2466489779e3c' - '931be5497fdb722fba1211c4dcb359519fd618a2e36bd1a80cc0cdb5302bb51d') - -prepare() { -# create *.desktop file - gendesk -f -n \ - --pkgname="sage-notebook" \ - --pkgdesc="SageMath notebook" \ - --name="SageMath" \ - --exec="/usr/bin/sage -notebook=sagenb" \ - --terminal=true \ - --categories="Education;Science;Math" - - cd sagenb-$pkgver - -# Use python2 - find -name '*.py' | xargs sed -e 's|#! /usr/bin/python|#! /usr/bin/python2|' -e 's|#!/usr/bin/python|#!/usr/bin/python2|' \ - -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' -i - sed -e 's|python %s|python2 %s|' -i sagenb/notebook/run_notebook.py - sed -e "s|python = 'python'|python = 'python2'|" -i sagenb/interfaces/expect.py - -# fix displaying 3D plots - patch -p0 -i "$srcdir"/jmol.patch -# port away from deprecated Flask API - patch -p0 -i "$srcdir"/sagenb-flask-0.11.patch -} - -build() { - cd sagenb-$pkgver - python2 setup.py build -} - -package() { - cd sagenb-$pkgver - - python2 setup.py install --root "$pkgdir" --optimize=1 - - install -D -m644 COPYING "$pkgdir"/usr/share/licenses/${pkgname}/COPYING - - ln -s /usr/share/mathjax "$pkgdir"/usr/lib/python2.7/site-packages/sagenb/data/mathjax - -# install a systemd user unit - install -Dm644 "${srcdir}/sage.service" "$pkgdir/usr/lib/systemd/user/sage.service" -# install *.desktop and icon files - install -Dm644 "${srcdir}/sage-notebook.desktop" "$pkgdir/usr/share/applications/sage-notebook.desktop" - install -Dm644 "$pkgdir/usr/lib/python2.7/site-packages/sagenb/data/sage/images/icon48x48.png" \ - "$pkgdir/usr/share/pixmaps/sage-notebook.png" -# remove sage3d - rm -r "$pkgdir"/usr/bin -} Copied: sage-notebook/repos/community-any/PKGBUILD (from rev 229922, sage-notebook/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2017-05-24 06:25:48 UTC (rev 229923) @@ -0,0 +1,60 @@ +# $Id$ +# Maintainer: Antonio Rojas <aro...@archlinux.org> +# Maintainer: Evgeniy Alekseev <arcanis.arch at gmail dot com> + +pkgname=sage-notebook +pkgver=1.0 +pkgrel=1 +pkgdesc='Browser-based notebook interface for SageMath' +arch=(any) +url='http://www.sagemath.org' +license=(GPL3) +depends=(sagemath python2-twisted python2-flask-oldsessions python2-flask-openid python2-flask-autoindex python2-flask-babel mathjax) +optdepends=('python2-pyopenssl: to use the notebook in secure mode') +makedepends=(gendesk) +source=($pkgname-$pkgver::"https://github.com/sagemath/sagenb/archive/$pkgver.tar.gz" sage.service) +sha256sums=('90faad86182100dc96c1a85bd16d4c6f5c4e9e158d33edf8fa86c9870beb3e03' + '2cf8668fa77a96fe562dafd50cab41aad03f53ee8b91587b1b45ecd193c1517a') + +prepare() { +# create *.desktop file + gendesk -f -n \ + --pkgname="sage-notebook" \ + --pkgdesc="SageMath notebook" \ + --name="SageMath" \ + --exec="/usr/bin/sage -notebook=sagenb" \ + --terminal=true \ + --categories="Education;Science;Math" + + cd sagenb-$pkgver + +# Use python2 + find -name '*.py' | xargs sed -e 's|#! /usr/bin/python|#! /usr/bin/python2|' -e 's|#!/usr/bin/python|#!/usr/bin/python2|' \ + -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' -i + sed -e 's|python %s|python2 %s|' -i sagenb/notebook/run_notebook.py + sed -e "s|python = 'python'|python = 'python2'|" -i sagenb/interfaces/expect.py +} + +build() { + cd sagenb-$pkgver + python2 setup.py build +} + +package() { + cd sagenb-$pkgver + + python2 setup.py install --root "$pkgdir" --optimize=1 + + install -D -m644 COPYING "$pkgdir"/usr/share/licenses/${pkgname}/COPYING + + ln -s /usr/share/mathjax "$pkgdir"/usr/lib/python2.7/site-packages/sagenb/data/mathjax + +# install a systemd user unit + install -Dm644 "${srcdir}/sage.service" "$pkgdir/usr/lib/systemd/user/sage.service" +# install *.desktop and icon files + install -Dm644 "${srcdir}/sage-notebook.desktop" "$pkgdir/usr/share/applications/sage-notebook.desktop" + install -Dm644 "$pkgdir/usr/lib/python2.7/site-packages/sagenb/data/sage/images/icon48x48.png" \ + "$pkgdir/usr/share/pixmaps/sage-notebook.png" +# remove sage3d + rm -r "$pkgdir"/usr/bin +} Deleted: jmol.patch =================================================================== --- jmol.patch 2017-05-24 06:25:30 UTC (rev 229922) +++ jmol.patch 2017-05-24 06:25:48 UTC (rev 229923) @@ -1,21 +0,0 @@ ---- sagenb/flask_version/base.py.orig 2015-01-06 19:30:34.326174783 +0100 -+++ sagenb/flask_version/base.py 2015-01-06 19:31:08.439723240 +0100 -@@ -36,12 +36,12 @@ - self.add_static_path('/javascript', DATA) - self.add_static_path('/static', DATA) - self.add_static_path('/java', DATA) -- self.add_static_path('/java/jmol', os.path.join(os.environ["SAGE_ROOT"],"local","share","jmol")) -- self.add_static_path('/jsmol', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol")) -- self.add_static_path('/jsmol/js', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","js")) -- self.add_static_path('/j2s', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s")) -- self.add_static_path('/jsmol/j2s', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s")) -- self.add_static_path('/j2s/core', os.path.join(os.environ["SAGE_ROOT"],"local","share","jsmol","j2s","core")) -+ self.add_static_path('/java/jmol', os.path.join(os.environ["SAGE_SHARE"],"jmol")) -+ self.add_static_path('/jsmol', os.path.join(os.environ["SAGE_SHARE"],"jsmol")) -+ self.add_static_path('/jsmol/js', os.path.join(os.environ["SAGE_SHARE"],"jsmol","js")) -+ self.add_static_path('/j2s', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s")) -+ self.add_static_path('/jsmol/j2s', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s")) -+ self.add_static_path('/j2s/core', os.path.join(os.environ["SAGE_SHARE"],"jsmol","j2s","core")) - import mimetypes - mimetypes.add_type('text/plain','.jmol') - Deleted: sage.service =================================================================== --- sage.service 2017-05-24 06:25:30 UTC (rev 229922) +++ sage.service 2017-05-24 06:25:48 UTC (rev 229923) @@ -1,8 +0,0 @@ -[Unit] -Description=A free open-source mathematics software system - -[Service] -ExecStart=/usr/bin/sage -n - -[Install] -WantedBy=default.target Copied: sage-notebook/repos/community-any/sage.service (from rev 229922, sage-notebook/trunk/sage.service) =================================================================== --- sage.service (rev 0) +++ sage.service 2017-05-24 06:25:48 UTC (rev 229923) @@ -0,0 +1,8 @@ +[Unit] +Description=A free open-source mathematics software system + +[Service] +ExecStart=/usr/bin/sage -notebook=sagenb + +[Install] +WantedBy=default.target Deleted: sagenb-flask-0.11.patch =================================================================== --- sagenb-flask-0.11.patch 2017-05-24 06:25:30 UTC (rev 229922) +++ sagenb-flask-0.11.patch 2017-05-24 06:25:48 UTC (rev 229923) @@ -1,342 +0,0 @@ -diff -ur sagenb.orig/flask_version/admin.py sagenb/flask_version/admin.py ---- sagenb.orig/flask_version/admin.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/admin.py 2016-08-05 12:36:19.142795085 +0200 -@@ -1,10 +1,10 @@ - import os --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, admin_required, with_lock --from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext -+from flask_babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - --admin = Module('sagenb.flask_version.admin') -+admin = Blueprint('sagenb.flask_version.admin', __name__) - - @admin.route('/users') - @admin.route('/users/reset/<reset>') -diff -ur sagenb.orig/flask_version/authentication.py sagenb/flask_version/authentication.py ---- sagenb.orig/flask_version/authentication.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/authentication.py 2016-08-05 12:36:19.146128435 +0200 -@@ -1,11 +1,11 @@ - import os - import random --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import with_lock --from flask.ext.babel import gettext, ngettext, lazy_gettext -+from flask_babel import gettext, ngettext, lazy_gettext - _ = gettext - --authentication = Module('sagenb.flask_version.authentication') -+authentication = Blueprint('sagenb.flask_version.authentication', __name__) - - ################## - # Authentication # -@@ -65,7 +65,7 @@ - #Valid user, everything is okay - session['username'] = username - session.modified = True -- return redirect(request.values.get('next', url_for('base.index'))) -+ return redirect(request.values.get('next', url_for('sagenb.flask_version.base.index'))) - else: - template_dict['password_error'] = True - -diff -ur sagenb.orig/flask_version/base.py sagenb/flask_version/base.py ---- sagenb.orig/flask_version/base.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/base.py 2016-08-05 12:36:19.146128435 +0200 -@@ -1,17 +1,17 @@ - #!/usr/bin/env python2 - import os, time, re - from functools import partial --from flask import Flask, Module, url_for, request, session, redirect, g, make_response, current_app, render_template -+from flask import Flask, Blueprint, url_for, request, session, redirect, g, make_response, current_app, render_template - from decorators import login_required, guest_or_login_required, with_lock - from decorators import global_lock - # Make flask use the old session foo from <=flask-0.9 - from flask_oldsessions import OldSecureCookieSessionInterface - --from flask.ext.autoindex import AutoIndex -+from flask_autoindex import AutoIndex - from sage.env import SAGE_SRC, SAGE_DOC - SRC = os.path.join(SAGE_SRC, 'sage') --from flask.ext.openid import OpenID --from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext, get_locale -+from flask_openid import OpenID -+from flask_babel import Babel, gettext, ngettext, lazy_gettext, get_locale - from sagenb.misc.misc import SAGENB_ROOT, DATA, translations_path, N_, nN_, unicode_str - from json import dumps - from sagenb.notebook.cell import number_of_rows -@@ -83,7 +83,7 @@ - return render_template(os.path.join('html', 'error_message.html'), - **template_dict) - --base = Module('sagenb.flask_version.base') -+base = Blueprint('sagenb.flask_version.base', __name__) - - ############# - # Main Page # -@@ -95,7 +95,7 @@ - if 'next' in request.args: - response = redirect(request.values.get('next', '')) - return response -- response = redirect(url_for('worksheet_listing.home', username=session['username'])) -+ response = redirect(url_for('sagenb.flask_version.worksheet_listing.home', username=session['username'])) - if 'remember' in request.args: - response.set_cookie('nb_session_%s'%g.notebook.port, - expires=(time.time() + 60 * 60 * 24 * 14)) -diff -ur sagenb.orig/flask_version/decorators.py sagenb/flask_version/decorators.py ---- sagenb.orig/flask_version/decorators.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/decorators.py 2016-08-05 12:36:19.142795085 +0200 -@@ -1,6 +1,6 @@ - from functools import wraps - from flask import Flask, url_for, render_template, request, session, redirect, g, current_app --from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext -+from flask_babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - - from threading import Lock -@@ -16,7 +16,7 @@ - g.username = 'guest' - return f(*args, **kwds) - else: -- return redirect(url_for('base.index', next=request.url)) -+ return redirect(url_for('sagenb.flask_version.base.index', next=request.url)) - else: - g.username = session['username'] - return f(*args, **kwds) -diff -ur sagenb.orig/flask_version/doc.py sagenb/flask_version/doc.py ---- sagenb.orig/flask_version/doc.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/doc.py 2016-08-05 12:36:19.142795085 +0200 -@@ -14,13 +14,13 @@ - - """ - import os --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, guest_or_login_required - --from flask.ext.babel import gettext, ngettext, lazy_gettext -+from flask_babel import gettext, ngettext, lazy_gettext - _ = gettext - --doc = Module('sagenb.flask_version.doc') -+doc = Blueprint('sagenb.flask_version.doc', __name__) - - from sage.env import SAGE_DOC - DOC = os.path.join(SAGE_DOC, 'html', 'en') -diff -ur sagenb.orig/flask_version/settings.py sagenb/flask_version/settings.py ---- sagenb.orig/flask_version/settings.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/settings.py 2016-08-05 12:36:19.146128435 +0200 -@@ -1,12 +1,12 @@ - import os - import random --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, with_lock --from flask.ext.babel import gettext, ngettext, lazy_gettext -+from flask_babel import gettext, ngettext, lazy_gettext - _ = gettext - - --settings = Module('sagenb.flask_version.settings') -+settings = Blueprint('sagenb.flask_version.settings', __name__) - - @settings.route('/settings', methods = ['GET','POST']) - @login_required -diff -ur sagenb.orig/flask_version/worksheet_listing.py sagenb/flask_version/worksheet_listing.py ---- sagenb.orig/flask_version/worksheet_listing.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/worksheet_listing.py 2016-08-05 12:36:19.146128435 +0200 -@@ -2,12 +2,12 @@ - """ - import os - import urllib, urlparse --from flask import Module, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, guest_or_login_required, with_lock --from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext -+from flask_babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - --worksheet_listing = Module('sagenb.flask_version.worksheet_listing') -+worksheet_listing = Blueprint('sagenb.flask_version.worksheet_listing', __name__) - - def render_worksheet_list(args, pub, username): - """ -@@ -69,7 +69,7 @@ - @worksheet_listing.route('/home/') - @login_required - def bare_home(): -- return redirect(url_for('home', username=g.username)) -+ return redirect(url_for('sagenb.flask_version.home', username=g.username)) - - ########### - # Folders # -diff -ur sagenb.orig/flask_version/worksheet.py sagenb/flask_version/worksheet.py ---- sagenb.orig/flask_version/worksheet.py 2016-08-05 12:37:25.543124604 +0200 -+++ sagenb/flask_version/worksheet.py 2016-08-05 12:36:19.146128435 +0200 -@@ -1,17 +1,17 @@ - import re - import os, threading, collections - from functools import wraps --from flask import Module, make_response, url_for, render_template, request, session, redirect, g, current_app -+from flask import Blueprint, make_response, url_for, render_template, request, session, redirect, g, current_app - from decorators import login_required, with_lock - from collections import defaultdict - from werkzeug.utils import secure_filename --from flask.ext.babel import Babel, gettext, ngettext, lazy_gettext -+from flask_babel import Babel, gettext, ngettext, lazy_gettext - _ = gettext - - from sagenb.notebook.interact import INTERACT_UPDATE_PREFIX - from sagenb.notebook.misc import encode_response - --ws = Module('sagenb.flask_version.worksheet') -+ws = Blueprint('sagenb.flask_version.worksheet', __name__) - worksheet_locks = defaultdict(threading.Lock) - - def worksheet_view(f): -@@ -53,7 +53,7 @@ - """ - Returns the url for a given worksheet. - """ -- return url_for('worksheet.worksheet', username=worksheet.owner(), -+ return url_for('sagenb.flask_version.worksheet.worksheet', username=worksheet.owner(), - id=worksheet.filename_without_owner()) - - -@@ -76,7 +76,7 @@ - @login_required - def new_worksheet(): - if g.notebook.readonly_user(g.username): -- return current_app.message(_("Account is in read-only mode"), cont=url_for('worksheet_listing.home', username=g.username)) -+ return current_app.message(_("Account is in read-only mode"), cont=url_for('sagenb.flask_version.worksheet_listing.home', username=g.username)) - - W = g.notebook.create_new_worksheet(gettext("Untitled"), g.username) - return redirect(url_for_worksheet(W)) -@@ -126,7 +126,7 @@ - raise NotImplementedError("User _sage_ can not access URL %s"%target) - if g.notebook.readonly_user(g.username): - if target.split('/')[0] not in readonly_commands_allowed: -- return current_app.message(_("Account is in read-only mode"), cont=url_for('worksheet_listing.home', username=g.username)) -+ return current_app.message(_("Account is in read-only mode"), cont=url_for('sagenb.flask_version.worksheet_listing.home', username=g.username)) - - #Make worksheet a non-keyword argument appearing before the - #other non-keyword arguments. -diff -ur sagenb.orig/notebook/challenge.py sagenb/notebook/challenge.py ---- sagenb.orig/notebook/challenge.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/challenge.py 2016-08-05 12:36:19.169461885 +0200 -@@ -27,7 +27,7 @@ - import os, random, re, urllib2, urllib - - from sagenb.notebook.template import template --from flask.ext.babel import gettext, lazy_gettext -+from flask_babel import gettext, lazy_gettext - _ = lazy_gettext - - class ChallengeResponse(object): -diff -ur sagenb.orig/notebook/conf.py sagenb/notebook/conf.py ---- sagenb.orig/notebook/conf.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/conf.py 2016-08-05 12:36:19.169461885 +0200 -@@ -9,7 +9,7 @@ - # The full text of the GPL is available at: - # http://www.gnu.org/licenses/ - ############################################################################# --from flask.ext.babel import gettext, lazy_gettext -+from flask_babel import gettext, lazy_gettext - - POS = 'pos' - DESC = 'desc' -diff -ur sagenb.orig/notebook/notebook.py sagenb/notebook/notebook.py ---- sagenb.orig/notebook/notebook.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/notebook.py 2016-08-05 12:36:19.169461885 +0200 -@@ -45,7 +45,7 @@ - from . import user_conf # user configuration - from . import user # users - from template import template, prettify_time_ago --from flask.ext.babel import gettext, lazy_gettext -+from flask_babel import gettext, lazy_gettext - - try: - # sage is installed -diff -ur sagenb.orig/notebook/register.py sagenb/notebook/register.py ---- sagenb.orig/notebook/register.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/register.py 2016-08-05 12:36:19.169461885 +0200 -@@ -12,7 +12,7 @@ - """ - Helper functions dealing with the verification of user - """ --from flask.ext.babel import gettext as _ -+from flask_babel import gettext as _ - - def build_msg(key, username, addr, port, secure): - url_prefix = "https" if secure else "http" -diff -ur sagenb.orig/notebook/server_conf.py sagenb/notebook/server_conf.py ---- sagenb.orig/notebook/server_conf.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/server_conf.py 2016-08-05 12:36:19.169461885 +0200 -@@ -8,7 +8,7 @@ - from conf import (POS, DESC, GROUP, TYPE, CHOICES, T_BOOL, T_INTEGER, - T_CHOICE, T_REAL, T_COLOR, T_STRING, T_LIST, T_INFO) - from sagenb.misc.misc import get_languages, N_ --from flask.ext.babel import gettext, lazy_gettext -+from flask_babel import gettext, lazy_gettext - _ = lazy_gettext - - defaults = {'word_wrap_cols':72, -diff -ur sagenb.orig/notebook/template.py sagenb/notebook/template.py ---- sagenb.orig/notebook/template.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/template.py 2016-08-05 12:36:19.169461885 +0200 -@@ -20,7 +20,7 @@ - import os, re, sys - - from sagenb.misc.misc import SAGE_VERSION, DATA --from flask.ext.babel import gettext, ngettext, lazy_gettext -+from flask_babel import gettext, ngettext, lazy_gettext - from flask import current_app as app - - if os.environ.has_key('SAGENB_TEMPLATE_PATH'): -diff -ur sagenb.orig/notebook/tutorial.py sagenb/notebook/tutorial.py ---- sagenb.orig/notebook/tutorial.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/tutorial.py 2016-08-05 12:36:19.169461885 +0200 -@@ -348,7 +348,7 @@ - - ##################################### - --from flask.ext.babel import lazy_gettext as _ -+from flask_babel import lazy_gettext as _ - - notebook_help = [ - (_('Find Help and Documentation'), -diff -ur sagenb.orig/notebook/user_conf.py sagenb/notebook/user_conf.py ---- sagenb.orig/notebook/user_conf.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/user_conf.py 2016-08-05 12:36:19.216128785 +0200 -@@ -7,7 +7,7 @@ - from conf import (Configuration, POS, DESC, GROUP, TYPE, CHOICES, T_BOOL, - T_INTEGER, T_CHOICE, T_REAL, T_COLOR, T_STRING, T_LIST) - from sagenb.misc.misc import SAGENB_ROOT, get_languages --from flask.ext.babel import lazy_gettext -+from flask_babel import lazy_gettext - - defaults = {'max_history_length':1000, - 'default_system':'sage', -diff -ur sagenb.orig/notebook/worksheet.py sagenb/notebook/worksheet.py ---- sagenb.orig/notebook/worksheet.py 2016-08-05 12:37:25.546457953 +0200 -+++ sagenb/notebook/worksheet.py 2016-08-05 12:36:19.172795235 +0200 -@@ -56,7 +56,7 @@ - # Imports specifically relevant to the sage notebook - from cell import Cell, TextCell - from template import template, clean_name, prettify_time_ago --from flask.ext.babel import gettext, lazy_gettext -+from flask_babel import gettext, lazy_gettext - _ = gettext - - # Set some constants that will be used for regular expressions below. -@@ -4405,7 +4405,7 @@ - Converts ``t`` (in Unix time) to a locale-specific string - describing the time and date. - """ -- from flask.ext.babel import format_datetime -+ from flask_babel import format_datetime - import datetime, time - try: - return format_datetime(datetime.datetime.fromtimestamp(float(t)))