├── web2py ├── applications │ ├── vis │ ├── __init__.py │ ├── init │ │ ├── __init__.py │ │ ├── models │ │ ├── static │ │ ├── views │ │ ├── modules │ │ └── controllers │ └── admin │ │ ├── __init__.py │ │ ├── private │ │ └── hosts.deny │ │ ├── modules │ │ └── __init__.py │ │ ├── cron │ │ ├── crontab │ │ └── expire_sessions.py │ │ ├── static │ │ ├── images │ │ │ ├── chat.png │ │ │ ├── help.png │ │ │ ├── menu.png │ │ │ ├── start.png │ │ │ ├── folder.png │ │ │ ├── search.png │ │ │ ├── spinner.gif │ │ │ ├── dim_bullet.gif │ │ │ ├── embossed.png │ │ │ ├── folder_sm.png │ │ │ ├── header_bg.png │ │ │ ├── questions.png │ │ │ ├── red_bullet.gif │ │ │ ├── save_icon.png │ │ │ ├── test_icon.png │ │ │ ├── delete_icon.png │ │ │ ├── files_toggle.png │ │ │ ├── small_button.png │ │ │ ├── folder_locked.png │ │ │ ├── header_shadow.png │ │ │ ├── menu_responsive.png │ │ │ ├── section_bullet.png │ │ │ ├── sidebar_bullet.gif │ │ │ ├── ticket_section.png │ │ │ ├── glyphicons-halflings.png │ │ │ ├── sidebar_background.jpg │ │ │ ├── small_special_button.png │ │ │ └── glyphicons-halflings-white.png │ │ ├── codemirror │ │ │ ├── theme │ │ │ │ ├── ambiance-mobile.css │ │ │ │ ├── neat.css │ │ │ │ ├── elegant.css │ │ │ │ ├── eclipse.css │ │ │ │ └── cobalt.css │ │ │ ├── addon │ │ │ │ ├── display │ │ │ │ │ ├── fullscreen.css │ │ │ │ │ └── fullscreen.js │ │ │ │ ├── fold │ │ │ │ │ ├── foldgutter.css │ │ │ │ │ └── indent-fold.js │ │ │ │ ├── edit │ │ │ │ │ ├── trailingspace.js │ │ │ │ │ └── continuelist.js │ │ │ │ ├── lint │ │ │ │ │ ├── json-lint.js │ │ │ │ │ └── coffeescript-lint.js │ │ │ │ ├── dialog │ │ │ │ │ └── dialog.css │ │ │ │ ├── mode │ │ │ │ │ └── multiplex_test.js │ │ │ │ ├── hint │ │ │ │ │ └── show-hint.css │ │ │ │ └── runmode │ │ │ │ │ └── colorize.js │ │ │ ├── bin │ │ │ │ └── lint │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ └── LICENSE │ │ ├── plugin_multiselect │ │ │ ├── switch.png │ │ │ └── start.js │ │ ├── plugin_jqmobile │ │ │ └── images │ │ │ │ ├── iphone.jpg │ │ │ │ ├── ajax-loader.png │ │ │ │ ├── icons-18-black.png │ │ │ │ ├── icons-18-white.png │ │ │ │ ├── icons-36-black.png │ │ │ │ └── icons-36-white.png │ │ └── css │ │ │ ├── jqueryMultiSelect.css │ │ │ └── web2py-codemirror.css │ │ ├── views │ │ ├── default │ │ │ ├── plugins.html │ │ │ ├── uninstall.html │ │ │ ├── git_push.html │ │ │ ├── edit_plurals.html │ │ │ ├── git_pull.html │ │ │ ├── delete.html │ │ │ ├── install_plugin.html │ │ │ ├── delete_plugin.html │ │ │ ├── peek.html │ │ │ ├── bulk_register.html │ │ │ ├── upgrade_web2py.html │ │ │ ├── change_password.html │ │ │ ├── resolve.html │ │ │ ├── edit_language.html │ │ │ ├── index.html │ │ │ ├── twitter.load │ │ │ ├── about.html │ │ │ ├── pack_custom.html │ │ │ └── test.html │ │ ├── default.mobile │ │ │ ├── change_password.html │ │ │ ├── delete_plugin.html │ │ │ ├── uninstall.html │ │ │ ├── about.html │ │ │ ├── edit_language.html │ │ │ ├── peek.html │ │ │ ├── delete.html │ │ │ ├── git_push.html │ │ │ ├── git_pull.html │ │ │ ├── upgrade_web2py.html │ │ │ ├── downgrade_web2py.html │ │ │ ├── user.html │ │ │ ├── resolve.html │ │ │ ├── index.html │ │ │ └── test.html │ │ ├── mercurial │ │ │ ├── revision.html │ │ │ └── commit.html │ │ ├── generic.html │ │ ├── wizard │ │ │ └── generated.html │ │ ├── toolbar │ │ │ └── index.html │ │ ├── web2py_ajax.html │ │ └── plugin_jqmobile │ │ │ └── index.html │ │ ├── languages │ │ ├── plural-en.py │ │ ├── plural-ru.py │ │ └── plural-uk.py │ │ ├── settings.cfg │ │ ├── controllers │ │ ├── plugin_jqmobile.py │ │ └── toolbar.py │ │ ├── ABOUT │ │ └── models │ │ ├── plugin_multiselect.py │ │ ├── plugin_statebutton.py │ │ └── 0_imports.py ├── gluon │ ├── contrib │ │ ├── __init__.py │ │ ├── minify │ │ │ ├── __init__.py │ │ │ ├── cssmin.pyc │ │ │ ├── htmlmin.pyc │ │ │ ├── jsmin.pyc │ │ │ ├── minify.pyc │ │ │ ├── __init__.pyc │ │ │ └── htmlmin.py │ │ ├── gateways │ │ │ ├── __init__.py │ │ │ ├── fcgi.pyc │ │ │ └── __init__.pyc │ │ ├── login_methods │ │ │ ├── __init__.py │ │ │ ├── loginza.pyc │ │ │ ├── __init__.pyc │ │ │ ├── basic_auth.pyc │ │ │ ├── cas_auth.pyc │ │ │ ├── email_auth.pyc │ │ │ ├── ldap_auth.pyc │ │ │ ├── motp_auth.pyc │ │ │ ├── pam_auth.pyc │ │ │ ├── x509_auth.pyc │ │ │ ├── openid_auth.pyc │ │ │ ├── rpx_account.pyc │ │ │ ├── dropbox_account.pyc │ │ │ ├── oauth20_account.pyc │ │ │ ├── oneall_account.pyc │ │ │ ├── browserid_account.pyc │ │ │ ├── linkedin_account.pyc │ │ │ ├── oauth10a_account.pyc │ │ │ ├── extended_login_form.pyc │ │ │ ├── gae_google_account.pyc │ │ │ ├── loginradius_account.pyc │ │ │ ├── pam_auth.py │ │ │ ├── basic_auth.py │ │ │ └── gae_google_account.py │ │ ├── markmin │ │ │ ├── __init__.py │ │ │ ├── __init__.pyc │ │ │ ├── markmin.pdf │ │ │ ├── markmin2pdf.pyc │ │ │ ├── markmin2html.pyc │ │ │ └── markmin2latex.pyc │ │ ├── plural_rules │ │ │ ├── __init__.py │ │ │ ├── af.pyc │ │ │ ├── bg.pyc │ │ │ ├── cs.pyc │ │ │ ├── de.pyc │ │ │ ├── en.pyc │ │ │ ├── es.pyc │ │ │ ├── fr.pyc │ │ │ ├── he.pyc │ │ │ ├── hi.pyc │ │ │ ├── hu.pyc │ │ │ ├── id.pyc │ │ │ ├── it.pyc │ │ │ ├── ja.pyc │ │ │ ├── lt.pyc │ │ │ ├── my.pyc │ │ │ ├── nl.pyc │ │ │ ├── pl.pyc │ │ │ ├── pt.pyc │ │ │ ├── ro.pyc │ │ │ ├── ru.pyc │ │ │ ├── sk.pyc │ │ │ ├── sl.pyc │ │ │ ├── tr.pyc │ │ │ ├── uk.pyc │ │ │ ├── zh.pyc │ │ │ ├── __init__.pyc │ │ │ ├── ja.py │ │ │ ├── tr.py │ │ │ ├── zh.py │ │ │ ├── hi.py │ │ │ ├── ro.py │ │ │ ├── de.py │ │ │ ├── fr.py │ │ │ ├── he.py │ │ │ ├── my.py │ │ │ ├── pt.py │ │ │ ├── bg.py │ │ │ ├── hu.py │ │ │ ├── it.py │ │ │ ├── nl.py │ │ │ ├── id.py │ │ │ ├── af.py │ │ │ ├── pl.py │ │ │ ├── cs.py │ │ │ ├── lt.py │ │ │ ├── en.py │ │ │ ├── sl.py │ │ │ ├── es.py │ │ │ ├── ru.py │ │ │ ├── sk.py │ │ │ └── uk.py │ │ ├── pymysql │ │ │ ├── constants │ │ │ │ ├── __init__.py │ │ │ │ ├── ER.pyc │ │ │ │ ├── CLIENT.pyc │ │ │ │ ├── FLAG.pyc │ │ │ │ ├── COMMAND.pyc │ │ │ │ ├── __init__.pyc │ │ │ │ ├── FIELD_TYPE.pyc │ │ │ │ ├── SERVER_STATUS.pyc │ │ │ │ ├── FLAG.py │ │ │ │ ├── SERVER_STATUS.py │ │ │ │ ├── FIELD_TYPE.py │ │ │ │ ├── CLIENT.py │ │ │ │ └── COMMAND.py │ │ │ ├── err.pyc │ │ │ ├── times.pyc │ │ │ ├── util.pyc │ │ │ ├── __init__.pyc │ │ │ ├── charset.pyc │ │ │ ├── cursors.pyc │ │ │ ├── connections.pyc │ │ │ ├── converters.pyc │ │ │ ├── tests │ │ │ │ ├── __init__.pyc │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ └── test_example.py │ │ │ ├── util.py │ │ │ ├── times.py │ │ │ ├── LICENSE │ │ │ └── README.rst │ │ ├── markdown │ │ │ ├── LICENSE │ │ │ ├── __init__.pyc │ │ │ ├── markdown2.pyc │ │ │ └── __init__.py │ │ ├── aes.pyc │ │ ├── pam.pyc │ │ ├── qdb.pyc │ │ ├── rss2.pyc │ │ ├── heroku.pyc │ │ ├── ipaddr.pyc │ │ ├── memdb.pyc │ │ ├── pbkdf2.pyc │ │ ├── pyfpdf.pyc │ │ ├── shell.pyc │ │ ├── stripe.pyc │ │ ├── __init__.pyc │ │ ├── autolinks.pyc │ │ ├── fpdf │ │ │ ├── fpdf.pyc │ │ │ ├── html.pyc │ │ │ ├── php.pyc │ │ │ ├── fonts.pyc │ │ │ ├── __init__.pyc │ │ │ ├── template.pyc │ │ │ ├── ttfonts.pyc │ │ │ └── __init__.py │ │ ├── gae_retry.pyc │ │ ├── generics.pyc │ │ ├── populate.pyc │ │ ├── pypyodbc.pyc │ │ ├── sms_utils.pyc │ │ ├── webclient.pyc │ │ ├── DowCommerce.pyc │ │ ├── feedparser.pyc │ │ ├── imageutils.pyc │ │ ├── ordereddict.pyc │ │ ├── paymentech.pyc │ │ ├── pdfinvoice.pyc │ │ ├── pg8000 │ │ │ ├── util.pyc │ │ │ ├── dbapi.pyc │ │ │ ├── errors.pyc │ │ │ ├── types.pyc │ │ │ ├── __init__.pyc │ │ │ ├── interface.pyc │ │ │ ├── protocol.pyc │ │ │ └── util.py │ │ ├── pyuca │ │ │ ├── pyuca.pyc │ │ │ ├── __init__.pyc │ │ │ ├── __init__.py │ │ │ └── LICENSE │ │ ├── redis_cache.pyc │ │ ├── spreadsheet.pyc │ │ ├── timecollect.pyc │ │ ├── AuthorizeNet.pyc │ │ ├── gae_memcache.pyc │ │ ├── google_wallet.pyc │ │ ├── pbkdf2_ctypes.pyc │ │ ├── pyrtf │ │ │ ├── Elements.pyc │ │ │ ├── Renderer.pyc │ │ │ ├── Styles.pyc │ │ │ ├── __init__.pyc │ │ │ ├── Constants.pyc │ │ │ ├── PropertySets.pyc │ │ │ ├── __init__.py │ │ │ └── README │ │ ├── redis_session.pyc │ │ ├── simplejsonrpc.pyc │ │ ├── taskbar_widget.pyc │ │ ├── simplejson │ │ │ ├── tool.pyc │ │ │ ├── __init__.pyc │ │ │ ├── decoder.pyc │ │ │ ├── encoder.pyc │ │ │ ├── scanner.pyc │ │ │ ├── ordered_dict.pyc │ │ │ ├── LICENSE.txt │ │ │ └── tool.py │ │ ├── memcache │ │ │ ├── __init__.pyc │ │ │ ├── memcache.pyc │ │ │ ├── PKG-INFO │ │ │ └── README │ │ ├── pysimplesoap │ │ │ ├── client.pyc │ │ │ ├── server.pyc │ │ │ ├── __init__.pyc │ │ │ ├── simplexml.pyc │ │ │ ├── transport.pyc │ │ │ └── __init__.py │ │ ├── user_agent_parser.pyc │ │ ├── websocket_messaging.pyc │ │ ├── pyfpdf.py │ │ ├── heroku.py │ │ └── google_wallet.py │ ├── tests │ │ ├── tests_markmin.py │ │ └── __init__.py │ ├── sql.py │ ├── xmlrpc.py │ ├── myregex.py │ ├── messageboxhandler.py │ └── settings.py ├── site-packages │ └── __init__.py ├── MANIFEST.in ├── VERSION ├── welcome.w2p ├── extras │ ├── icons │ │ ├── web2py.gif │ │ ├── web2py.icns │ │ ├── web2py.ico │ │ └── splashlogo.gif │ └── build_web2py │ │ ├── README │ │ └── setup_exe.conf ├── scripts │ ├── bench.py │ ├── setup-shared-hosting-2.4.sh │ ├── web2py-lock.sh │ ├── cleanjs.py │ ├── setup-web2py-heroku.sh │ ├── fixws.py │ ├── rmorphans.py │ ├── cpplugin.py │ ├── update_web2py.py │ ├── cleancss.py │ ├── web2py.archlinux.sh │ └── tickets2email.py └── web2py.py ├── landing_src ├── models │ ├── __init__.py │ └── 000_track_changes.py ├── modules │ └── __init__.py ├── static ├── controllers │ ├── default.py │ └── TermTopicMatrix.py └── views │ └── TermTopicMatrix │ └── index.html ├── client_min ├── images ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── less │ ├── fixed-width.less │ ├── core.less │ ├── bordered-pulled.less │ ├── rotated-flipped.less │ ├── larger.less │ ├── list.less │ ├── font-awesome.less │ ├── stacked.less │ ├── path.less │ ├── mixins.less │ └── spinning.less └── scss │ ├── _fixed-width.scss │ ├── _core.scss │ ├── _bordered-pulled.scss │ ├── _larger.scss │ ├── _rotated-flipped.scss │ ├── _list.scss │ ├── font-awesome.scss │ ├── _stacked.scss │ ├── _path.scss │ ├── _mixins.scss │ └── _spinning.scss ├── start_client.sh ├── client_src ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── images │ ├── TermTopicMatrix.png │ └── TermTopicMatrix copy.png ├── less │ ├── fixed-width.less │ ├── core.less │ ├── bordered-pulled.less │ ├── rotated-flipped.less │ ├── larger.less │ ├── list.less │ ├── font-awesome.less │ ├── stacked.less │ ├── path.less │ ├── mixins.less │ └── spinning.less ├── scss │ ├── _fixed-width.scss │ ├── _core.scss │ ├── _bordered-pulled.scss │ ├── _larger.scss │ ├── _rotated-flipped.scss │ ├── _list.scss │ ├── font-awesome.scss │ ├── _stacked.scss │ ├── _path.scss │ ├── _mixins.scss │ └── _spinning.scss └── css │ └── TermTopicMatrix.css └── .gitignore /web2py/applications/vis: -------------------------------------------------------------------------------- 1 | init/ -------------------------------------------------------------------------------- /landing_src/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /landing_src/modules/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /landing_src/static: -------------------------------------------------------------------------------- 1 | ../client_src/ -------------------------------------------------------------------------------- /client_min/images: -------------------------------------------------------------------------------- 1 | ../client_src/images/ -------------------------------------------------------------------------------- /web2py/applications/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/applications/init/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/site-packages/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/applications/admin/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web2py/gluon/tests/tests_markmin.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include VERSION LICENSE 2 | -------------------------------------------------------------------------------- /web2py/applications/admin/private/hosts.deny: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web2py/applications/admin/modules/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/gateways/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web2py/applications/init/models: -------------------------------------------------------------------------------- 1 | ../../../landing_src/models -------------------------------------------------------------------------------- /web2py/applications/init/static: -------------------------------------------------------------------------------- 1 | ../../../landing_src/static -------------------------------------------------------------------------------- /web2py/applications/init/views: -------------------------------------------------------------------------------- 1 | ../../../landing_src/views -------------------------------------------------------------------------------- /web2py/applications/init/modules: -------------------------------------------------------------------------------- 1 | ../../../landing_src/modules -------------------------------------------------------------------------------- /web2py/applications/init/controllers: -------------------------------------------------------------------------------- 1 | ../../../landing_src/controllers -------------------------------------------------------------------------------- /web2py/VERSION: -------------------------------------------------------------------------------- 1 | Version 2.8.2-stable+timestamp.2013.11.28.13.54.07 2 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/markdown/LICENSE: -------------------------------------------------------------------------------- 1 | markdown2.py is released under MIT license. -------------------------------------------------------------------------------- /web2py/welcome.w2p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/welcome.w2p -------------------------------------------------------------------------------- /web2py/applications/admin/cron/crontab: -------------------------------------------------------------------------------- 1 | 10 * * * * root **applications/admin/cron/expire_sessions.py 2 | 3 | -------------------------------------------------------------------------------- /start_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "python web2py/web2py.py -p 8080" 4 | python web2py/web2py.py -p 8080 5 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/aes.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/aes.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pam.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pam.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/qdb.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/qdb.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/rss2.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/rss2.pyc -------------------------------------------------------------------------------- /web2py/extras/icons/web2py.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/extras/icons/web2py.gif -------------------------------------------------------------------------------- /web2py/extras/icons/web2py.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/extras/icons/web2py.icns -------------------------------------------------------------------------------- /web2py/extras/icons/web2py.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/extras/icons/web2py.ico -------------------------------------------------------------------------------- /web2py/gluon/contrib/heroku.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/heroku.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/ipaddr.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/ipaddr.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/memdb.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/memdb.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pbkdf2.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pbkdf2.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyfpdf.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyfpdf.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/shell.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/shell.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/stripe.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/stripe.pyc -------------------------------------------------------------------------------- /client_min/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_min/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /client_src/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /web2py/extras/icons/splashlogo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/extras/icons/splashlogo.gif -------------------------------------------------------------------------------- /web2py/gluon/contrib/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/autolinks.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/autolinks.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/fpdf.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/fpdf.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/html.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/html.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/php.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/php.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/gae_retry.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/gae_retry.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/generics.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/generics.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/populate.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/populate.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pypyodbc.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pypyodbc.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/sms_utils.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/sms_utils.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/webclient.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/webclient.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/DowCommerce.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/DowCommerce.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/feedparser.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/feedparser.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/fonts.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/fonts.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/imageutils.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/imageutils.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/ordereddict.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/ordereddict.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/paymentech.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/paymentech.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pdfinvoice.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pdfinvoice.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/util.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/util.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/err.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/err.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyuca/pyuca.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyuca/pyuca.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/redis_cache.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/redis_cache.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/spreadsheet.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/spreadsheet.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/timecollect.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/timecollect.pyc -------------------------------------------------------------------------------- /client_src/images/TermTopicMatrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/images/TermTopicMatrix.png -------------------------------------------------------------------------------- /web2py/gluon/contrib/AuthorizeNet.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/AuthorizeNet.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/template.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/template.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/ttfonts.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/fpdf/ttfonts.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/gae_memcache.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/gae_memcache.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/gateways/fcgi.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/gateways/fcgi.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/google_wallet.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/google_wallet.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/cssmin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/minify/cssmin.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/htmlmin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/minify/htmlmin.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/jsmin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/minify/jsmin.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/minify.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/minify/minify.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pbkdf2_ctypes.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pbkdf2_ctypes.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/dbapi.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/dbapi.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/errors.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/errors.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/types.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/types.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/times.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/times.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/util.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/util.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/Elements.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/Elements.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/Renderer.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/Renderer.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/Styles.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/Styles.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyuca/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyuca/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/redis_session.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/redis_session.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejsonrpc.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejsonrpc.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/taskbar_widget.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/taskbar_widget.pyc -------------------------------------------------------------------------------- /client_min/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_min/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /client_min/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_min/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /client_min/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_min/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /client_src/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /client_src/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /client_src/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /landing_src/models/000_track_changes.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from gluon.custom_import import track_changes 4 | track_changes(True) 5 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markmin/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/markmin.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markmin/markmin.pdf -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/minify/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/interface.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/interface.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/protocol.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pg8000/protocol.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/af.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/af.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/bg.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/bg.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/cs.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/cs.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/de.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/de.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/en.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/en.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/es.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/es.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/fr.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/fr.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/he.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/he.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/hi.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/hi.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/hu.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/hu.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/id.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/id.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/it.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/it.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ja.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/ja.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/lt.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/lt.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/my.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/my.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/nl.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/nl.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/pl.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/pl.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/pt.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/pt.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ro.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/ro.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ru.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/ru.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/sk.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/sk.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/sl.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/sl.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/tr.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/tr.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/uk.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/uk.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/zh.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/zh.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/charset.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/charset.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/cursors.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/cursors.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/Constants.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/Constants.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/tool.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/tool.pyc -------------------------------------------------------------------------------- /client_src/images/TermTopicMatrix copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/client_src/images/TermTopicMatrix copy.png -------------------------------------------------------------------------------- /web2py/gluon/contrib/gateways/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/gateways/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markdown/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markdown/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markdown/markdown2.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markdown/markdown2.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/markmin2pdf.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markmin/markmin2pdf.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/memcache/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/memcache/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/memcache/memcache.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/memcache/memcache.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/connections.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/connections.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/converters.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/converters.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/PropertySets.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pyrtf/PropertySets.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/client.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pysimplesoap/client.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/server.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pysimplesoap/server.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/decoder.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/decoder.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/encoder.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/encoder.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/scanner.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/scanner.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/user_agent_parser.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/user_agent_parser.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/websocket_messaging.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/websocket_messaging.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/loginza.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/loginza.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/markmin2html.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markmin/markmin2html.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/markmin/markmin2latex.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/markmin/markmin2latex.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/plural_rules/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/ER.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/ER.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pysimplesoap/__init__.pyc -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/chat.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/help.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/menu.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/start.png -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/basic_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/basic_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/cas_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/cas_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/email_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/email_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/ldap_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/ldap_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/motp_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/motp_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/pam_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/pam_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/x509_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/x509_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/CLIENT.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/CLIENT.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/FLAG.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/FLAG.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/tests/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/tests/__init__.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/simplexml.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pysimplesoap/simplexml.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/transport.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pysimplesoap/transport.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/ordered_dict.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/simplejson/ordered_dict.pyc -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/folder.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/search.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/spinner.gif -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/openid_auth.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/openid_auth.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/rpx_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/rpx_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/COMMAND.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/COMMAND.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/__init__.pyc -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/dim_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/dim_bullet.gif -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/embossed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/embossed.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/folder_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/folder_sm.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/header_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/header_bg.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/questions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/questions.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/red_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/red_bullet.gif -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/save_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/save_icon.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/test_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/test_icon.png -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/plugins.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{=H3("Available plugins")}} 3 | {{=P("Source: web2pyslices")}} 4 | {{=plugins}} 5 | 6 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/dropbox_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/dropbox_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/oauth20_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/oauth20_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/oneall_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/oneall_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/FIELD_TYPE.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/FIELD_TYPE.pyc -------------------------------------------------------------------------------- /client_min/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /client_min/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /client_src/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /client_src/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/delete_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/delete_icon.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/files_toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/files_toggle.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/small_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/small_button.png -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/browserid_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/browserid_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/linkedin_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/linkedin_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/oauth10a_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/oauth10a_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/SERVER_STATUS.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/pymysql/constants/SERVER_STATUS.pyc -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/folder_locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/folder_locked.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/header_shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/header_shadow.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/menu_responsive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/menu_responsive.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/section_bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/section_bullet.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/sidebar_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/sidebar_bullet.gif -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/ticket_section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/ticket_section.png -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/extended_login_form.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/extended_login_form.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/gae_google_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/gae_google_account.pyc -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/loginradius_account.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/gluon/contrib/login_methods/loginradius_account.pyc -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/glyphicons-halflings.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/sidebar_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/sidebar_background.jpg -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/small_special_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/small_special_button.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_multiselect/switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_multiselect/switch.png -------------------------------------------------------------------------------- /web2py/extras/build_web2py/README: -------------------------------------------------------------------------------- 1 | The files in this folder must be run from the main web2py folder. 2 | They are for building windows and osx binary distribution and not meant for the end user. -------------------------------------------------------------------------------- /web2py/gluon/contrib/pysimplesoap/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | "PySimpleSOAP" 4 | import client 5 | import server 6 | import simplexml 7 | import transport -------------------------------------------------------------------------------- /web2py/applications/admin/languages/plural-en.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | { 3 | # "singular form (0)": ["first plural form (1)", "second plural form (2)", ...], 4 | 'file': ['files'], 5 | } 6 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/iphone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/iphone.jpg -------------------------------------------------------------------------------- /landing_src/controllers/default.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from core import TermiteCore 4 | 5 | def index(): 6 | core = TermiteCore( request, response ) 7 | return core.GenerateResponse() 8 | -------------------------------------------------------------------------------- /web2py/applications/admin/languages/plural-ru.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | { 3 | # "singular form (0)": ["first plural form (1)", "second plural form (2)", ...], 4 | 'файл': ['файла','файлов'], 5 | } 6 | -------------------------------------------------------------------------------- /web2py/applications/admin/settings.cfg: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | theme = web2py 3 | closetag = true 4 | editor = default 5 | 6 | [editor] 7 | theme = web2py 8 | editor = default 9 | closetag = true 10 | 11 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/images/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/images/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/ajax-loader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/ajax-loader.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_multiselect/start.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function(){jQuery('[multiple]').multiSelect({selectableHeader:'Options',selectedHeader:'Selected'});}); 2 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen { 2 | position: fixed; 3 | top: 0; left: 0; right: 0; bottom: 0; 4 | height: auto; 5 | z-index: 9; 6 | } 7 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/icons-18-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/icons-18-black.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/icons-18-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/icons-18-white.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/icons-36-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/icons-36-black.png -------------------------------------------------------------------------------- /web2py/applications/admin/static/plugin_jqmobile/images/icons-36-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/termite-visualizations/HEAD/web2py/applications/admin/static/plugin_jqmobile/images/icons-36-white.png -------------------------------------------------------------------------------- /web2py/applications/admin/controllers/plugin_jqmobile.py: -------------------------------------------------------------------------------- 1 | response.files = response.files[:3] 2 | response.menu = [] 3 | 4 | 5 | def index(): 6 | return locals() 7 | 8 | 9 | def about(): 10 | return locals() 11 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/change_password.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}change_password{{end}} 4 | 5 |

Change Admin Password

6 | 7 |
8 | {{=form}} 9 |
10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .gitignore~ 3 | *.py~ 4 | *.pyc 5 | *.sh~ 6 | *.class 7 | /externals/ 8 | /tools/ 9 | /apps/ 10 | /data/ 11 | /web2py/httpserver.log 12 | /web2py/httpserver.pid 13 | /web2py/parameters_8080.py 14 | /web2py/applications/init/errors 15 | -------------------------------------------------------------------------------- /web2py/applications/admin/ABOUT: -------------------------------------------------------------------------------- 1 | web2py is an open source full-stack framework for agile development 2 | of secure database-driven web-based applications, written and programmable in 3 | Python. 4 | 5 | Created by Massimo Di Pierro 6 | 7 | -------------------------------------------------------------------------------- /web2py/applications/admin/languages/plural-uk.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | { 3 | # "singular form (0)": ["first plural form (1)", "second plural form (2)", ...], 4 | 'останній': ['останні','останніх'], 5 | 'файл': ['файли','файлів'], 6 | 'твіт': ['твіти','твітів'], 7 | } 8 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/uninstall.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 3 |

{{=T('Are you sure you want to uninstall application "%s"?', app)}}

4 |
5 | {{=dialog}} 6 |
7 | -------------------------------------------------------------------------------- /web2py/applications/admin/models/plugin_multiselect.py: -------------------------------------------------------------------------------- 1 | response.files.append( 2 | URL('static', 'plugin_multiselect/jquery.multi-select.js')) 3 | response.files.append(URL('static', 'plugin_multiselect/multi-select.css')) 4 | response.files.append(URL('static', 'plugin_multiselect/start.js')) 5 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyuca/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pyuca 3 | 4 | unicode_collator = None 5 | 6 | def set_unicode_collator(file): 7 | global unicode_collator 8 | unicode_collator = pyuca.Collator(file) 9 | 10 | set_unicode_collator(os.path.join(os.path.dirname(__file__), 'allkeys.txt')) 11 | -------------------------------------------------------------------------------- /web2py/gluon/sql.py: -------------------------------------------------------------------------------- 1 | # this file exists for backward compatibility 2 | 3 | __all__ = ['DAL', 'Field', 'DRIVERS'] 4 | 5 | from dal import DAL, Field, Table, Query, Set, Expression, Row, Rows, DRIVERS, BaseAdapter, SQLField, SQLTable, SQLXorable, SQLQuery, SQLSet, SQLRows, SQLStorage, SQLDB, GQLDB, SQLALL, SQLCustomType 6 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/FLAG.py: -------------------------------------------------------------------------------- 1 | NOT_NULL = 1 2 | PRI_KEY = 2 3 | UNIQUE_KEY = 4 4 | MULTIPLE_KEY = 8 5 | BLOB = 16 6 | UNSIGNED = 32 7 | ZEROFILL = 64 8 | BINARY = 128 9 | ENUM = 256 10 | AUTO_INCREMENT = 512 11 | TIMESTAMP = 1024 12 | SET = 2048 13 | PART_KEY = 16384 14 | GROUP = 32767 15 | UNIQUE = 65536 16 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/__init__.py: -------------------------------------------------------------------------------- 1 | from PropertySets import * 2 | from Elements import * 3 | from Styles import * 4 | from Renderer import * 5 | 6 | def dumps(doc): 7 | import cStringIO 8 | s=cStringIO.StringIO() 9 | r=Renderer() 10 | r.Write(doc,s) 11 | return s.getvalue() 12 | 13 | -------------------------------------------------------------------------------- /client_min/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /client_min/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /client_src/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /client_src/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-style: normal; 8 | font-weight: normal; 9 | line-height: 1; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/mercurial/revision.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 3 |

{{=T('Revision %s', rev)}}

4 | 5 | {{=form}} 6 | 7 |

8 |

{{=T('Changelog')}}

9 | 10 | {{=desc}} 11 | 12 |

13 |

{{=T('Files added')}}

14 | 15 | {{=TABLE(*[TR(f) for f in files])}} 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /web2py/scripts/bench.py: -------------------------------------------------------------------------------- 1 | import time 2 | import sys 3 | import urllib2 4 | import urllib2 5 | 6 | n = int(sys.argv[1]) 7 | url = sys.argv[2] 8 | headers = {"Accept-Language": "en"} 9 | req = urllib2.Request(url, None, headers) 10 | 11 | t0 = time.time() 12 | for k in xrange(n): 13 | data = urllib2.urlopen(req).read() 14 | print (time.time() - t0) / n 15 | if n == 1: 16 | print data 17 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyrtf/README: -------------------------------------------------------------------------------- 1 | Version 0.46 2 | 3 | Added EMF support. 4 | 5 | Added more sophisticated scaling options. 6 | 7 | See examples2.py for both. 8 | 9 | Grant Edwards, grante@users.sourceforge.net 10 | 11 | 12 | 13 | Version 0.45 14 | 15 | Finally, image support!!! Handles PNGs and JPGs. 16 | 17 | See examples2.py for the gory details. 18 | 19 | Simon Cusack, scusack@sourceforge.net 20 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/delete_plugin.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}delete_plugin{{end}} 4 | 5 |
6 |

{{=T('Are you sure you want to delete plugin "%s"?', plugin)}}

7 |

{{=FORM(INPUT(_type='submit',_name='nodelete',_value=T('NO')))}}

8 |

{{=FORM(INPUT(_type='submit',_name='delete',_value=T('YES')))}}

9 |
10 | 11 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/uninstall.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 |
4 |

{{=T('Are you sure you want to uninstall application "%s"?', app)}}

5 | 6 | 7 | 8 |
{{=FORM(INPUT(_type='submit',_name='nodelete',_value=T('Abort')))}}{{=FORM(INPUT(_type='submit',_name='delete',_value=T('Uninstall')))}}
9 |
10 | 11 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/fpdf/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | "FPDF for python" 5 | 6 | __license__ = "LGPL 3.0" 7 | __version__ = "1.7" 8 | 9 | from fpdf import * 10 | try: 11 | from html import HTMLMixin 12 | except ImportError: 13 | import warnings 14 | warnings.warn("web2py gluon package not installed, required for html2pdf") 15 | 16 | from template import Template 17 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/memcache/PKG-INFO: -------------------------------------------------------------------------------- 1 | Metadata-Version: 1.0 2 | Name: python-memcached 3 | Version: 1.48 4 | Summary: A Python memcached client library. 5 | Home-page: http://www.tummy.com/Community/software/python-memcached/ 6 | Author: Sean Reifschneider 7 | Author-email: jafo-memcached@tummy.com 8 | License: Python Software Foundation License 9 | Description: A Python memcached client library. 10 | Platform: UNKNOWN 11 | -------------------------------------------------------------------------------- /client_min/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /client_src/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /client_min/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /client_min/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /client_src/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /client_src/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/SERVER_STATUS.py: -------------------------------------------------------------------------------- 1 | 2 | SERVER_STATUS_IN_TRANS = 1 3 | SERVER_STATUS_AUTOCOMMIT = 2 4 | SERVER_MORE_RESULTS_EXISTS = 8 5 | SERVER_QUERY_NO_GOOD_INDEX_USED = 16 6 | SERVER_QUERY_NO_INDEX_USED = 32 7 | SERVER_STATUS_CURSOR_EXISTS = 64 8 | SERVER_STATUS_LAST_ROW_SENT = 128 9 | SERVER_STATUS_DB_DROPPED = 256 10 | SERVER_STATUS_NO_BACKSLASH_ESCAPES = 512 11 | SERVER_STATUS_METADATA_CHANGED = 1024 12 | 13 | -------------------------------------------------------------------------------- /web2py/scripts/setup-shared-hosting-2.4.sh: -------------------------------------------------------------------------------- 1 | # install virtualenv 2 | easy_install virtualenv 3 | python virtualenv.py w2env 4 | # install missing modules 5 | w2env/bin/easy_install -U pysqlite hashlib 6 | # donwload web2py and unpack 7 | wget http://web2py.com/examples/static/web2py_src.zip 8 | unzip web2py_src.zip 9 | cd web2py 10 | # start web2py using command-line script 11 | w2env/bin/python web2py.py -i 0.0.0.0 -p 8123 -a 'adminpasswd' 12 | -------------------------------------------------------------------------------- /client_min/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /client_src/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/util.py: -------------------------------------------------------------------------------- 1 | import struct 2 | 3 | def byte2int(b): 4 | if isinstance(b, int): 5 | return b 6 | else: 7 | return struct.unpack("!B", b)[0] 8 | 9 | def int2byte(i): 10 | return struct.pack("!B", i) 11 | 12 | def join_bytes(bs): 13 | if len(bs) == 0: 14 | return "" 15 | else: 16 | rv = bs[0] 17 | for b in bs[1:]: 18 | rv += b 19 | return rv 20 | -------------------------------------------------------------------------------- /client_min/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /client_src/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from pymysql.tests.test_issues import * 2 | from pymysql.tests.test_example import * 3 | from pymysql.tests.test_basic import * 4 | from pymysql.tests.test_DictCursor import * 5 | 6 | import sys 7 | if sys.version_info[0] == 2: 8 | # MySQLdb tests were designed for Python 3 9 | from pymysql.tests.thirdparty import * 10 | 11 | if __name__ == "__main__": 12 | import unittest 13 | unittest.main() 14 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/times.py: -------------------------------------------------------------------------------- 1 | from time import localtime 2 | from datetime import date, datetime, time, timedelta 3 | 4 | Date = date 5 | Time = time 6 | TimeDelta = timedelta 7 | Timestamp = datetime 8 | 9 | def DateFromTicks(ticks): 10 | return date(*localtime(ticks)[:3]) 11 | 12 | def TimeFromTicks(ticks): 13 | return time(*localtime(ticks)[3:6]) 14 | 15 | def TimestampFromTicks(ticks): 16 | return datetime(*localtime(ticks)[:6]) 17 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyfpdf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | "FPDF for python (a.k.a. pyfpdf)" 5 | # Read more about this http://code.google.com/p/pyfpdf 6 | # Please note that new package name is fpdf (to avoid some naming conflicts) 7 | # import fpdf into pyfpdf for backward compatibility (prior web2py 2.0): 8 | from fpdf import * 9 | 10 | # import warnings 11 | # warnings.warn("pyfpdf package name is deprecated, please use fpdf instead") 12 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/bin/lint: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var lint = require("../test/lint/lint"), 4 | path = require("path"); 5 | 6 | if (process.argv.length > 2) { 7 | lint.checkDir(process.argv[2]); 8 | } else { 9 | process.chdir(path.resolve(__dirname, "..")); 10 | lint.checkDir("lib"); 11 | lint.checkDir("mode"); 12 | lint.checkDir("addon"); 13 | lint.checkDir("keymap"); 14 | } 15 | 16 | process.exit(lint.success() ? 0 : 1); 17 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/memcache/README: -------------------------------------------------------------------------------- 1 | This software is a 100% Python interface to the memcached memory cache 2 | daemon. It is the client side software which allows storing values in one 3 | or more, possibly remote, memcached servers. Search google for memcached 4 | for more information. 5 | 6 | This package was originally written by Evan Martin of Danga. 7 | Please do not contact Evan about maintenance. 8 | Sean Reifschneider of tummy.com, ltd. has taken over maintenance of it. 9 | -------------------------------------------------------------------------------- /client_min/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: -@fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client_min/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /client_src/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: -@fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client_src/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/about.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}about{{end}} 4 | 5 |

{{=T("About application")}} "{{=app}}"

6 |

{{=T("About")}} {{=app}}

7 |

{{=button(URL('edit/%s/ABOUT' % (app)), T('Edit'))}}

8 |
{{=about}}
9 |

{{=T('License for')}} {{=app}}

10 |

{{=button(URL('edit/%s/LICENSE' % (app)), T('Edit'))}}

11 |
{{=license}}
12 | 13 | 14 | -------------------------------------------------------------------------------- /client_min/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client_src/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /web2py/scripts/web2py-lock.sh: -------------------------------------------------------------------------------- 1 | chown -R nobody:nobody *.py 2 | chown -R nobody:nobody gluon 3 | chown -R nobody:nobody scripts 4 | chown -R nobody:nobody applications/*/modules/ 5 | chown -R nobody:nobody applications/*/models/ 6 | chown -R nobody:nobody applications/*/controllers/ 7 | chown -R nobody:nobody applications/*/views/ 8 | chown -R nobody:nobody applications/*/static/ 9 | chown -R nobody:nobody applications/*/cron/ 10 | 11 | echo "unlock with chown -R www-data:www-data ./" 12 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ja.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for ja (Japanese) 4 | 5 | nplurals=1 # Japanese language has ONE form! 6 | 7 | # Always returns 0: 8 | get_plural_id = lambda n: 0 9 | 10 | # Construct and return plural form of *word* using 11 | # *plural_id* (which ALWAYS>0). This function will be executed 12 | # for words (or phrases) not found in plural_dict dictionary 13 | # construct_plural_form = lambda word, plural_id: word 14 | 15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/tr.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for tr (Turkish) 4 | 5 | nplurals=1 # Turkish language has ONE form! 6 | 7 | # Always returns 0: 8 | get_plural_id = lambda n: 0 9 | 10 | # Construct and return plural form of *word* using 11 | # *plural_id* (which ALWAYS>0). This function will be executed 12 | # for words (or phrases) not found in plural_dict dictionary 13 | # construct_plural_form = lambda word, plural_id: word 14 | 15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/zh.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for zh (Chinese) 4 | 5 | nplurals=1 # Chinese language has ONE form! 6 | 7 | # Always returns 0: 8 | get_plural_id = lambda n: 0 9 | 10 | # Construct and return plural form of *word* using 11 | # *plural_id* (which ALWAYS>0). This function will be executed 12 | # for words (or phrases) not found in plural_dict dictionary 13 | # construct_plural_form = lambda word, plural_id: word 14 | 15 | -------------------------------------------------------------------------------- /client_min/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /client_min/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /client_src/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /client_src/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "spinning"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/git_push.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | frm = form 4 | smt_button = frm.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = frm.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | 11 |

{{=T('This will push changes to the remote repo for application "%s".', app)}}

12 |
13 | {{=form}} 14 |
15 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/edit_language.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 10 | 11 | {{block sectionclass}}edit_language{{end}} 12 | 13 |

{{=T('Editing Language file')}} "{{=filename}}"

14 | 15 |
16 | {{=form}} 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/peek.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}peek{{end}} 4 | 5 |

{{=T("Peeking at file")}} "{{=filename}}"

6 | 7 |

8 | {{=button(URL('design',args=request.args[0]), T('back'))}} 9 | {{=button(URL('edit',args=request.args), T('Edit'))}} 10 |

11 | 12 | {{ 13 | if filename[-3:]=='.py': language='python' 14 | else: language='html' 15 | }} 16 | {{=CODE(data,language=language,link='/examples/global/vars/')}} 17 | 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/edit_plurals.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 9 | {{block sectionclass}}edit_language{{end}} 10 | 11 |

{{=T("Editing Plural Forms File")}} "{{=filename}}"

12 |
13 | {{=form}} 14 |
15 | -------------------------------------------------------------------------------- /web2py/scripts/cleanjs.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | 4 | def cleanjs(text): 5 | text = re.sub('\s*}\s*', '\n}\n', text) 6 | text = re.sub('\s*{\s*', ' {\n', text) 7 | text = re.sub('\s*;\s*', ';\n', text) 8 | text = re.sub('\s*,\s*', ', ', text) 9 | text = re.sub('\s*(?P[\+\-\*/\=]+)\s*', ' \g ', text) 10 | lines = text.split('\n') 11 | text = '' 12 | indent = 0 13 | for line in lines: 14 | rline = line.strip() 15 | if rline: 16 | pass 17 | return text 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/git_pull.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | dlg = dialog 4 | smt_button = dlg.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = dlg.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | 11 |
12 |

{{=T('This will pull changes from the remote repo for application "%s"?', app)}}

13 | {{=dialog}} 14 |
15 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/delete.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}delete{{end}} 4 | 5 |
6 |

{{=T('Are you sure you want to delete file "%s"?', filename)}}

7 |

{{=FORM(INPUT(_type='submit',_name='nodelete',_value=T('Abort')),INPUT(_type='hidden',_name='sender',_value=sender), _class="inline")}}{{=FORM(INPUT(_type='submit',_name='delete',_value=T('Delete')),INPUT(_type='hidden',_name='sender',_value=sender), _class="inline")}}

8 |
9 | 10 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/generic.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{""" 3 | 4 | You should not modify this file. 5 | It is used as default when a view is not provided for your controllers 6 | 7 | """}} 8 |

{{=' '.join(x.capitalize() for x in request.function.split('_'))}}

9 | {{if len(response._vars)==1:}} 10 | {{=BEAUTIFY(response._vars.values()[0])}} 11 | {{elif len(response._vars)>1:}} 12 | {{=BEAUTIFY(response._vars)}} 13 | {{pass}} 14 | {{if request.is_local:}} 15 | {{=response.toolbar()}} 16 | {{pass}} 17 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/git_push.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | {{ 3 | frm = form 4 | smt_button = frm.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = frm.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | 11 |

{{=T('This will push changes to the remote repo for application "%s".', app)}}

12 |
13 | {{=form}} 14 |
15 | -------------------------------------------------------------------------------- /web2py/scripts/setup-web2py-heroku.sh: -------------------------------------------------------------------------------- 1 | read -p "Choose your admin password?" passwd 2 | sudo pip install virtualenv 3 | sudo pip install psycopg2 4 | virtualenv venv --distribute 5 | source venv/bin/activate 6 | pip freeze > requirements.txt 7 | echo "web: python web2py.py -a '$passwd' -i 0.0.0.0 -p \$PORT" > Procfile 8 | git init 9 | git add . 10 | git add Procfile 11 | git commit -a -m "first commit" 12 | heroku create 13 | git push heroku master 14 | heroku addons:add heroku-postgresql:dev 15 | heroku scale web=1 16 | heroku open 17 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/delete.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | dlg = dialog 4 | smt_button = dlg.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = dlg.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | {{block sectionclass}}delete{{end}} 11 | 12 |

{{=T('Are you sure you want to delete file "%s"?', filename)}}

13 |
14 | {{=dialog}} 15 |
16 | -------------------------------------------------------------------------------- /web2py/gluon/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from test_http import * 2 | from test_cache import * 3 | from test_dal import * 4 | from test_html import * 5 | from test_is_url import * 6 | from test_languages import * 7 | from test_router import * 8 | from test_routes import * 9 | from test_storage import * 10 | from test_template import * 11 | from test_validators import * 12 | from test_utils import * 13 | from test_contribs import * 14 | from test_web import * 15 | 16 | import sys 17 | if sys.version[:3] == '2.7': 18 | from test_old_doctests import * 19 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/git_pull.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | {{ 3 | dlg = dialog 4 | smt_button = dlg.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = dlg.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | 11 |
12 |

{{=T('This will pull changes from the remote repo for application "%s"?', app)}}

13 | {{=dialog}} 14 |
15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/FIELD_TYPE.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | DECIMAL = 0 4 | TINY = 1 5 | SHORT = 2 6 | LONG = 3 7 | FLOAT = 4 8 | DOUBLE = 5 9 | NULL = 6 10 | TIMESTAMP = 7 11 | LONGLONG = 8 12 | INT24 = 9 13 | DATE = 10 14 | TIME = 11 15 | DATETIME = 12 16 | YEAR = 13 17 | NEWDATE = 14 18 | VARCHAR = 15 19 | BIT = 16 20 | NEWDECIMAL = 246 21 | ENUM = 247 22 | SET = 248 23 | TINY_BLOB = 249 24 | MEDIUM_BLOB = 250 25 | LONG_BLOB = 251 26 | BLOB = 252 27 | VAR_STRING = 253 28 | STRING = 254 29 | GEOMETRY = 255 30 | 31 | CHAR = TINY 32 | INTERVAL = ENUM 33 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/install_plugin.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{if True:}} 3 | {{=P(T("Installation of %(plugin)s for %(app)s") % dict(plugin=plugin, app=app))}} 4 | {{=H3(T("Are you sure?"))}} 5 | {{form.custom.submit["_value"] = T("Yes")}} 6 | {{=form}} 7 | {{pass}} 8 | {{=A(T("Back to the plugins list"), _href=URL(f="plugins", args=[app,]))}} 9 | {{=P("Note: this is an experimental feature; If you find problems using the automatic plugin installation, try uploading the installer directly from ", A(T("here"), _href=source))}} 10 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/delete_plugin.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | dlg = dialog 4 | smt_button = dlg.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = dlg.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | {{block sectionclass}}delete_plugin{{end}} 11 | 12 |

{{=T('Are you sure you want to delete plugin "%s"?', plugin)}}

13 |
14 | {{=dialog}} 15 |
16 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pg8000/util.py: -------------------------------------------------------------------------------- 1 | 2 | class MulticastDelegate(object): 3 | def __init__(self): 4 | self.delegates = [] 5 | 6 | def __iadd__(self, delegate): 7 | self.add(delegate) 8 | return self 9 | 10 | def add(self, delegate): 11 | self.delegates.append(delegate) 12 | 13 | def __isub__(self, delegate): 14 | self.delegates.remove(delegate) 15 | return self 16 | 17 | def __call__(self, *args, **kwargs): 18 | for d in self.delegates: 19 | d(*args, **kwargs) 20 | 21 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/constants/CLIENT.py: -------------------------------------------------------------------------------- 1 | 2 | LONG_PASSWORD = 1 3 | FOUND_ROWS = 1 << 1 4 | LONG_FLAG = 1 << 2 5 | CONNECT_WITH_DB = 1 << 3 6 | NO_SCHEMA = 1 << 4 7 | COMPRESS = 1 << 5 8 | ODBC = 1 << 6 9 | LOCAL_FILES = 1 << 7 10 | IGNORE_SPACE = 1 << 8 11 | PROTOCOL_41 = 1 << 9 12 | INTERACTIVE = 1 << 10 13 | SSL = 1 << 11 14 | IGNORE_SIGPIPE = 1 << 12 15 | TRANSACTIONS = 1 << 13 16 | SECURE_CONNECTION = 1 << 15 17 | MULTI_STATEMENTS = 1 << 16 18 | MULTI_RESULTS = 1 << 17 19 | CAPABILITIES = LONG_PASSWORD|LONG_FLAG|TRANSACTIONS| \ 20 | PROTOCOL_41|SECURE_CONNECTION 21 | -------------------------------------------------------------------------------- /client_min/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /client_src/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/minify/htmlmin.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | import re 4 | 5 | 6 | def minify(response): 7 | def _replace(match): 8 | match = match.group() 9 | # save whole
, |
 4 | 

{{=T("Peeking at file")}} "{{=filename}}"

5 |

6 | {{=button(URL('design',args=request.vars.app if request.vars.app else request.args[0], anchor=request.vars.id), T('back'))}} 7 | {{=button(URL('edit',args=request.args, vars=request.vars), T('Edit'))}} 8 |

9 |
10 | {{ 11 | if filename[-3:]=='.py': language='python' 12 | else: language='html' 13 | }} 14 | {{=CODE(data,language=language,link='/examples/global/vars/')}} 15 |
16 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/upgrade_web2py.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}upgrade{{end}} 4 | 5 |

{{=T('web2py upgrade')}}

6 | 7 |

{{=T('ATTENTION:')}} {{=T('This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk')}}
8 | {{=T('If start the upgrade, be patient, it may take a while to download')}}

9 | 10 |
11 | {{=FORM(INPUT(_type='submit',_name='noupgrade',_value=T('Cancel')), _class='inline')}} 12 | {{=FORM(INPUT(_type='submit',_name='upgrade',_value=T('Upgrade')), _class='inline')}} 13 |
14 | 15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/hi.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for he (Hindi) 4 | 5 | nplurals=2 # Hindi has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ro.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for ro (Romanian) 4 | 5 | nplurals=2 # Romanian has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/downgrade_web2py.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}upgrade{{end}} 4 | 5 |

{{=T('web2py downgrade')}}

6 | 7 |

{{=T('ATTENTION:')}} {{=T('This is an experimental feature and it needs more testing. If you decide to downgrade you do it at your own risk')}}
8 | {{=T('If start the downgrade, be patient, it may take a while to rollback')}}

9 | 10 |
11 | {{=FORM(INPUT(_type='submit',_name='nodowngrade',_value=T('Cancel')), _class='inline')}} 12 | {{=FORM(INPUT(_type='submit',_name='downgrade',_value=T('Downgrade')), _class='inline')}} 13 |
14 | 15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/de.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for de (Deutsch) 4 | 5 | nplurals=2 # German language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/fr.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for fr (French)) 4 | 5 | nplurals=2 # French language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/he.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for he (Hebrew) 4 | 5 | nplurals=2 # Hebrew language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/my.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for id (Malay) 4 | 5 | nplurals=2 # Malay language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/pt.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for pt (Portuguese) 4 | 5 | nplurals=2 # Portuguese has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/pam_auth.py: -------------------------------------------------------------------------------- 1 | from gluon.contrib.pam import authenticate 2 | 3 | 4 | def pam_auth(): 5 | """ 6 | to use pam_login: 7 | from gluon.contrib.login_methods.pam_auth import pam_auth 8 | auth.settings.login_methods.append(pam_auth()) 9 | 10 | or 11 | 12 | auth.settings.actions_disabled=[ 13 | 'register','change_password','request_reset_password'] 14 | auth.settings.login_methods=[pam_auth()] 15 | 16 | The latter method will not store the user password in auth_user. 17 | """ 18 | 19 | def pam_auth_aux(username, password): 20 | return authenticate(username, password) 21 | 22 | return pam_auth_aux 23 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/bg.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for bg (Bulgarian) 4 | 5 | nplurals=2 # Bulgarian language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/hu.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for hu (Hungarian) 4 | 5 | nplurals=2 # Hungarian language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/it.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for it (Italian) 4 | 5 | nplurals=2 # Italian language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/nl.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for nl (Dutch (Netherlands)) 4 | 5 | nplurals=2 # Dutch has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 2 | 3 | // declare global: jsonlint 4 | 5 | CodeMirror.registerHelper("lint", "json", function(text) { 6 | var found = []; 7 | jsonlint.parseError = function(str, hash) { 8 | var loc = hash.loc; 9 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 10 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 11 | message: str}); 12 | }; 13 | try { jsonlint.parse(text); } 14 | catch(e) {} 15 | return found; 16 | }); 17 | CodeMirror.jsonValidator = CodeMirror.lint.json; // deprecated 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/id.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for id (Indonesian) 4 | 5 | nplurals=2 # Indonesian language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /client_src/css/TermTopicMatrix.css: -------------------------------------------------------------------------------- 1 | div.TermTopicMatrixView div { 2 | display: inline-block; 3 | padding: 0; 4 | margin: 0; 5 | border: none; 6 | box-shadow: none; 7 | cursor: default; 8 | pointer-events: none; 9 | } 10 | div.TermTopicMatrixView div.container { 11 | font-family: Gill Sans; 12 | background: #fff; 13 | border: 1px solid #ccc; 14 | -webkit-touch-callout: none; 15 | -webkit-user-select: none; 16 | -khtml-user-select: none; 17 | -moz-user-select: moz-none; 18 | -ms-user-select: none; 19 | user-select: none; 20 | } 21 | div.TermTopicMatrixView div.canvas { 22 | position : absolute; 23 | } 24 | div.TermTopicMatrixView div.canvas * { 25 | position : absolute; 26 | } 27 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/af.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for af (Afrikaans (South Africa)) 4 | 5 | nplurals=2 # Afrikaans language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 17 | 18 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/tests/base.py: -------------------------------------------------------------------------------- 1 | import pymysql 2 | import unittest 3 | 4 | class PyMySQLTestCase(unittest.TestCase): 5 | # Edit this to suit your test environment. 6 | databases = [ 7 | {"host":"localhost","user":"root", 8 | "passwd":"","db":"test_pymysql", "use_unicode": True}, 9 | {"host":"localhost","user":"root","passwd":"","db":"test_pymysql2"}] 10 | 11 | def setUp(self): 12 | self.connections = [] 13 | 14 | for params in self.databases: 15 | self.connections.append(pymysql.connect(**params)) 16 | 17 | def tearDown(self): 18 | for connection in self.connections: 19 | connection.close() 20 | 21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/dialog/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: absolute; 3 | left: 0; right: 0; 4 | background: white; 5 | z-index: 15; 6 | padding: .1em .8em; 7 | overflow: hidden; 8 | color: #333; 9 | } 10 | 11 | .CodeMirror-dialog-top { 12 | border-bottom: 1px solid #eee; 13 | top: 0; 14 | } 15 | 16 | .CodeMirror-dialog-bottom { 17 | border-top: 1px solid #eee; 18 | bottom: 0; 19 | } 20 | 21 | .CodeMirror-dialog input { 22 | border: none; 23 | outline: none; 24 | background: transparent; 25 | width: 20em; 26 | color: inherit; 27 | font-family: monospace; 28 | } 29 | 30 | .CodeMirror-dialog button { 31 | font-size: 70%; 32 | } 33 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/bulk_register.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | # add bootstrap class to form 4 | form['_class']='span4 well well-small' 5 | # change form.custom.begin 6 | form.custom.begin=XML("<%s %s>" % (form.tag,form._xml()[0])) 7 | # new form buttons 8 | smt = form.element('input',_type='submit') 9 | smt['_class']='btn' 10 | form.element('input[type=submit]',replace=lambda button: DIV(button,_class="controls-inline")) 11 | }} 12 |

{{=T('Bulk Student Registration').capitalize()}}

13 |
14 | {{=form.custom.begin}} 15 | {{for e in form.components[0]:}} 16 | {{= e[0][0]}} 17 | {{= e[1][0]}} 18 | {{pass}} 19 | {{=form.custom.end}} 20 |
-------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/user.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 |

{{=T( request.args(0).replace('_',' ').capitalize() )}}

3 |
4 | {{=form}} 5 | {{if request.args(0)=='login':}} 6 | {{if not 'register' in auth.settings.actions_disabled:}} 7 |
register 8 | {{pass}} 9 | {{if not 'request_reset_password' in auth.settings.actions_disabled:}} 10 |
lost password 11 | {{pass}} 12 | {{pass}} 13 |
14 | 15 | 20 | 21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/README.md: -------------------------------------------------------------------------------- 1 | # CodeMirror 2 | [![Build Status](https://secure.travis-ci.org/marijnh/CodeMirror.png?branch=master)](http://travis-ci.org/marijnh/CodeMirror) 3 | [![NPM version](https://badge.fury.io/js/codemirror.png)](http://badge.fury.io/js/codemirror) 4 | 5 | CodeMirror is a JavaScript component that provides a code editor in 6 | the browser. When a mode is available for the language you are coding 7 | in, it will color your code, and optionally help with indentation. 8 | 9 | The project page is http://codemirror.net 10 | The manual is at http://codemirror.net/doc/manual.html 11 | The contributing guidelines are in [CONTRIBUTING.md](https://github.com/marijnh/CodeMirror/blob/master/CONTRIBUTING.md) 12 | -------------------------------------------------------------------------------- /client_min/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 9 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 10 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 11 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /client_src/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 9 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 10 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 11 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/wizard/generated.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{block sectionclass}}generated{{end}} 3 | 4 |
5 | {{=button(URL(app,'default','index'), T('Open new app in new window'))}} 6 | {{=button(URL('step1'), T('Back to wizard'))}} 7 | {{=button(URL('default','design',args=app), T('Admin design page'))}} 8 | {{if have_mercurial:}} 9 | {{=button(URL('mercurial','commit',args=app), T('Admin versioning page'))}} 10 | {{pass}} 11 | {{=button(URL(app,'appadmin','index'), T('Database administration'))}} 12 |
13 |

14 | 15 | -------------------------------------------------------------------------------- /client_min/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /client_src/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/pl.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for pl (Polish) 4 | 5 | nplurals=3 # Polish language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n==1 else 12 | 1 if 2<=n<=4 else 13 | 2) 14 | 15 | # Construct and return plural form of *word* using 16 | # *plural_id* (which ALWAYS>0). This function will be executed 17 | # for words (or phrases) not found in plural_dict dictionary 18 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 19 | 20 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/cs.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for cs (Czech) 4 | 5 | nplurals=3 # Czech language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: ( 0 if n==1 else 12 | 1 if 2<=n<=4 else 13 | 2 ) 14 | 15 | # Construct and return plural form of *word* using 16 | # *plural_id* (which ALWAYS>0). This function will be executed 17 | # for words (or phrases) not found in plural_dict dictionary 18 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 19 | 20 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/upgrade_web2py.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{ 3 | dlg = dialog 4 | smt_button = dlg.element(_type="submit") 5 | smt_button['_class'] = 'btn' 6 | smt_button['_style'] = 'margin-right:4px;' 7 | ccl_button = dlg.element(_type="button") 8 | ccl_button['_class'] = 'btn' 9 | }} 10 | {{block sectionclass}}upgrade{{end}} 11 | 12 |

{{=T('web2py upgrade')}}

13 |

{{=T('ATTENTION:')}} {{=T('This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk')}}
14 | {{=T('If start the upgrade, be patient, it may take a while to download')}}

15 |
16 | {{=dialog}} 17 |
-------------------------------------------------------------------------------- /web2py/scripts/fixws.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import glob 3 | 4 | 5 | def read_fileb(filename, mode='rb'): 6 | f = open(filename, mode) 7 | try: 8 | return f.read() 9 | finally: 10 | f.close() 11 | 12 | 13 | def write_fileb(filename, value, mode='wb'): 14 | f = open(filename, mode) 15 | try: 16 | f.write(value) 17 | finally: 18 | f.close() 19 | 20 | for filename in glob.glob(sys.argv[1]): 21 | data1 = read_fileb(filename) 22 | write_fileb(filename + '.bak2', data1) 23 | data2lines = read_fileb(filename).strip().split('\n') 24 | data2 = '\n'.join([line.rstrip( 25 | ).replace('\t', ' ' * 2) for line in data2lines]) + '\n' 26 | write_fileb(filename, data2) 27 | print filename, len(data1) - len(data2) 28 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /client_min/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon-rotate(@degrees, @rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 6 | -webkit-transform: rotate(@degrees); 7 | -moz-transform: rotate(@degrees); 8 | -ms-transform: rotate(@degrees); 9 | -o-transform: rotate(@degrees); 10 | transform: rotate(@degrees); 11 | } 12 | 13 | .fa-icon-flip(@horiz, @vert, @rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 15 | -webkit-transform: scale(@horiz, @vert); 16 | -moz-transform: scale(@horiz, @vert); 17 | -ms-transform: scale(@horiz, @vert); 18 | -o-transform: scale(@horiz, @vert); 19 | transform: scale(@horiz, @vert); 20 | } 21 | -------------------------------------------------------------------------------- /client_src/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon-rotate(@degrees, @rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); 6 | -webkit-transform: rotate(@degrees); 7 | -moz-transform: rotate(@degrees); 8 | -ms-transform: rotate(@degrees); 9 | -o-transform: rotate(@degrees); 10 | transform: rotate(@degrees); 11 | } 12 | 13 | .fa-icon-flip(@horiz, @vert, @rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); 15 | -webkit-transform: scale(@horiz, @vert); 16 | -moz-transform: scale(@horiz, @vert); 17 | -ms-transform: scale(@horiz, @vert); 18 | -o-transform: scale(@horiz, @vert); 19 | transform: scale(@horiz, @vert); 20 | } 21 | -------------------------------------------------------------------------------- /client_min/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon-rotate($degrees, $rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 6 | -webkit-transform: rotate($degrees); 7 | -moz-transform: rotate($degrees); 8 | -ms-transform: rotate($degrees); 9 | -o-transform: rotate($degrees); 10 | transform: rotate($degrees); 11 | } 12 | 13 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 15 | -webkit-transform: scale($horiz, $vert); 16 | -moz-transform: scale($horiz, $vert); 17 | -ms-transform: scale($horiz, $vert); 18 | -o-transform: scale($horiz, $vert); 19 | transform: scale($horiz, $vert); 20 | } 21 | -------------------------------------------------------------------------------- /client_src/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon-rotate($degrees, $rotation) { 5 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 6 | -webkit-transform: rotate($degrees); 7 | -moz-transform: rotate($degrees); 8 | -ms-transform: rotate($degrees); 9 | -o-transform: rotate($degrees); 10 | transform: rotate($degrees); 11 | } 12 | 13 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 14 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); 15 | -webkit-transform: scale($horiz, $vert); 16 | -moz-transform: scale($horiz, $vert); 17 | -ms-transform: scale($horiz, $vert); 18 | -o-transform: scale($horiz, $vert); 19 | transform: scale($horiz, $vert); 20 | } 21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/edit/continuelist.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | var listRE = /^(\s*)([*+-]|(\d+)\.)(\s*)/, 5 | unorderedBullets = '*+-'; 6 | 7 | CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) { 8 | var pos = cm.getCursor(), 9 | inList = cm.getStateAfter(pos.line).list !== false, 10 | match; 11 | 12 | if (!inList || !(match = cm.getLine(pos.line).match(listRE))) { 13 | cm.execCommand('newlineAndIndent'); 14 | return; 15 | } 16 | 17 | var indent = match[1], after = match[4]; 18 | var bullet = unorderedBullets.indexOf(match[2]) >= 0 19 | ? match[2] 20 | : (parseInt(match[3], 10) + 1) + '.'; 21 | 22 | cm.replaceSelection('\n' + indent + bullet + after, 'end'); 23 | }; 24 | 25 | }()); 26 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/lt.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for lt (Lithuanian) 4 | 5 | nplurals=3 # Lithuanian language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n % 10 == 1 and n % 100 != 11 else 12 | 1 if n % 10 >= 2 and (n % 100 < 10 or n % 100 >= 20) else 13 | 2) 14 | 15 | # Construct and return plural form of *word* using 16 | # *plural_id* (which ALWAYS>0). This function will be executed 17 | # for words (or phrases) not found in plural_dict dictionary 18 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 19 | 20 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/tests/test_example.py: -------------------------------------------------------------------------------- 1 | import pymysql 2 | from pymysql.tests import base 3 | 4 | class TestExample(base.PyMySQLTestCase): 5 | def test_example(self): 6 | conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='mysql') 7 | 8 | 9 | cur = conn.cursor() 10 | 11 | cur.execute("SELECT Host,User FROM user") 12 | 13 | # print cur.description 14 | 15 | # r = cur.fetchall() 16 | # print r 17 | # ...or... 18 | u = False 19 | 20 | for r in cur.fetchall(): 21 | u = u or conn.user in r 22 | 23 | self.assertTrue(u) 24 | 25 | cur.close() 26 | conn.close() 27 | 28 | __all__ = ["TestExample"] 29 | 30 | if __name__ == "__main__": 31 | import unittest 32 | unittest.main() 33 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/toolbar/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{response.files.append(URL('static','js/jquery.js'))}} 4 | {{include 'web2py_ajax.html'}} 5 | 6 | 7 |
8 | URL: {{=URL(app,'default','index')}} 9 | 10 | 14 |
15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/en.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for en (English) 4 | 5 | nplurals=2 # English language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | construct_plural_form = lambda word, plural_id: (word + 17 | ('es' if word[-1:] in ('s','x','o') or 18 | word[-2:] in ('sh','ch') 19 | else 's')) 20 | 21 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/sl.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for sl (Slovenian) 4 | 5 | nplurals=4 # Slovenian language has 4 forms: 6 | # 1 singular and 3 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n % 100 == 1 else 12 | 1 if n % 100 == 2 else 13 | 2 if n % 100 in (3,4) else 14 | 3) 15 | 16 | # Construct and return plural form of *word* using 17 | # *plural_id* (which ALWAYS>0). This function will be executed 18 | # for words (or phrases) not found in plural_dict dictionary 19 | # construct_plural_form = lambda word, plural_id: (word + 'suffix') 20 | 21 | -------------------------------------------------------------------------------- /web2py/gluon/xmlrpc.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | This file is part of the web2py Web Framework 6 | Copyrighted by Massimo Di Pierro 7 | License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html) 8 | """ 9 | 10 | from SimpleXMLRPCServer import SimpleXMLRPCDispatcher 11 | 12 | 13 | def handler(request, response, methods): 14 | response.session_id = None # no sessions for xmlrpc 15 | dispatcher = SimpleXMLRPCDispatcher(allow_none=True, encoding=None) 16 | for method in methods: 17 | dispatcher.register_function(method) 18 | dispatcher.register_introspection_functions() 19 | response.headers['Content-Type'] = 'text/xml' 20 | dispatch = getattr(dispatcher, '_dispatch', None) 21 | return dispatcher._marshaled_dispatch(request.body.read(), dispatch) 22 | -------------------------------------------------------------------------------- /web2py/applications/admin/models/plugin_statebutton.py: -------------------------------------------------------------------------------- 1 | response.files.append(URL('static','plugin_statebutton/js/bootstrap-switch.js')) 2 | response.files.append(URL('static','plugin_statebutton/css/bootstrap-switch.css')) 3 | 4 | def stateWidget(field, value, data={'on-label':'Enabled', 'off-label':'Disabled', 'on':"primary", 'off':"default" }): 5 | try: 6 | fieldName = str(field).split('.')[1] 7 | except: 8 | fieldName = field 9 | 10 | div = DIV(INPUT( _type='checkbox', _name='%s' % fieldName, _checked= 'checked' if value == 'true' else None, _value='true'), 11 | _class='make-bootstrap-switch', 12 | data=data) 13 | script = SCRIPT(""" 14 | jQuery(".make-bootstrap-switch input[name='%s']").parent().bootstrapSwitch(); 15 | """ % fieldName) 16 | return DIV(div, script) 17 | 18 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/resolve.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}resolve{{end}} 4 | 5 |

{{=T('Resolve Conflict file')}} "{{=filename}}"

6 | 7 | 12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 |
20 |
21 | {{=diff}} 22 |
23 |
24 |
25 | 26 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/change_password.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{block sectionclass}}change_password{{end}} 3 | 4 |

web2py™ {{=T('Web Framework')}}

5 |

{{=T('Change Admin Password')}}

6 |
7 | {{=form.custom.begin}} 8 | {{ for fieldname in form.table.fields: }} 9 | {{if fieldname is not 'id':}} 10 | 11 | {{=form.custom.widget[fieldname]}} 12 | {{pass}} 13 | {{pass}} 14 |
15 | {{=form.custom.end}} 16 |
17 | 22 | -------------------------------------------------------------------------------- /web2py/gluon/myregex.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | This file is part of the web2py Web Framework 6 | Copyrighted by Massimo Di Pierro 7 | License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html) 8 | """ 9 | 10 | import re 11 | 12 | # pattern to find defined tables 13 | 14 | regex_tables = re.compile( 15 | """^[\w]+\.define_table\(\s*[\'\"](?P\w+)[\'\"]""", 16 | flags=re.M) 17 | 18 | # pattern to find exposed functions in controller 19 | 20 | regex_expose = re.compile( 21 | '^def\s+(?P_?[a-zA-Z0-9]\w*)\( *\)\s*:', 22 | flags=re.M) 23 | 24 | regex_include = re.compile( 25 | '(?P\{\{\s*include\s+[\'"](?P[^\'"]*)[\'"]\s*\}\})') 26 | 27 | regex_extend = re.compile( 28 | '^\s*(?P\{\{\s*extend\s+[\'"](?P[^\'"]+)[\'"]\s*\}\})', re.MULTILINE) 29 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/es.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for es (Spanish) 4 | 5 | nplurals=2 # Spanish language has 2 forms: 6 | # 1 singular and 1 plural 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: int(n != 1) 12 | 13 | # Construct and return plural form of *word* using 14 | # *plural_id* (which ALWAYS>0). This function will be executed 15 | # for words (or phrases) not found in plural_dict dictionary 16 | construct_plural_form = lambda word, plural_id: (word + 17 | ('es' if word[-1:] in ('s', 'x', 'y', 'l', 'r', 'n', 'd', 'z', 'j') or 18 | word[-2:] == 'ch' 19 | else 's')) 20 | 21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-link {color: #762;} 10 | .cm-s-elegant span.cm-error {background-color: #fdd;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | CodeMirror.defineMode("markdown_with_stex", function(){ 3 | var inner = CodeMirror.getMode({}, "stex"); 4 | var outer = CodeMirror.getMode({}, "markdown"); 5 | 6 | var innerOptions = { 7 | open: '$', 8 | close: '$', 9 | mode: inner, 10 | delimStyle: 'delim', 11 | innerStyle: 'inner' 12 | }; 13 | 14 | return CodeMirror.multiplexingMode(outer, innerOptions); 15 | }); 16 | 17 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 18 | 19 | function MT(name) { 20 | test.mode( 21 | name, 22 | mode, 23 | Array.prototype.slice.call(arguments, 1), 24 | 'multiplexing'); 25 | } 26 | 27 | MT( 28 | "stexInsideMarkdown", 29 | "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); 30 | })(); 31 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/index.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 |

web2py™ {{=T('Web Framework')}}

4 |

{{=T('Login to the Administrative Interface')}}

5 | 6 | {{if request.is_https or request.is_local:}} 7 |
8 |
9 |
10 | 11 | 12 | 13 |
{{=T('Administrator Password:')}}
14 | 15 |
16 |
17 | {{else:}} 18 |

{{=T('ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.')}}

19 | {{pass}} 20 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/web2py_ajax.html: -------------------------------------------------------------------------------- 1 | 8 | {{ 9 | response.files.insert(0,URL('static','js/jquery.js')) 10 | response.files.insert(1,URL('static','css/calendar.css')) 11 | response.files.insert(2,URL('static','js/calendar.js')) 12 | response.files.insert(3,URL('static','js/web2py.js')) 13 | response.include_meta() 14 | response.include_files() 15 | }} 16 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/basic_auth.py: -------------------------------------------------------------------------------- 1 | import urllib 2 | import urllib2 3 | import base64 4 | 5 | 6 | def basic_auth(server="http://127.0.0.1"): 7 | """ 8 | to use basic login with a different server 9 | from gluon.contrib.login_methods.basic_auth import basic_auth 10 | auth.settings.login_methods.append(basic_auth('http://server')) 11 | """ 12 | 13 | def basic_login_aux(username, 14 | password, 15 | server=server): 16 | key = base64.b64encode(username + ':' + password) 17 | headers = {'Authorization': 'Basic ' + key} 18 | request = urllib2.Request(server, None, headers) 19 | try: 20 | urllib2.urlopen(request) 21 | return True 22 | except (urllib2.URLError, urllib2.HTTPError): 23 | return False 24 | return basic_login_aux 25 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/ru.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for ru (Russian) 4 | 5 | nplurals=3 # Russian language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n % 10 == 1 and n % 100 != 11 else 12 | 1 if n % 10 >= 2 and n % 10 <= 4 and 13 | (n % 100 < 10 or n % 100 >= 20) else 14 | 2) 15 | 16 | # construct_plural_form() is not used now because of complex 17 | # rules of Russian language. Default version of 18 | # this function is used to simple insert new words into 19 | # plural_dict dictionary) 20 | # construct_plural_form = lambda word, plural_id: word 21 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/sk.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for sk (Slovak (Slovakia)) 4 | 5 | nplurals=3 # Slovak language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n % 10 == 1 and n % 100 != 11 else 12 | 1 if n % 10 >= 2 and n % 10 <= 4 and 13 | (n % 100 < 10 or n % 100 >= 20) else 14 | 2) 15 | 16 | # construct_plural_form() is not used now because of complex 17 | # rules of Slovak language. Default version of this function 18 | # is used to simple insert new words into plural_dict dictionary) 19 | # construct_plural_form = lambda word, plural_id: word 20 | 21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | .CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/plural_rules/uk.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf8 -*- 3 | # Plural-Forms for uk (Ukrainian) 4 | 5 | nplurals=3 # Ukrainian language has 3 forms: 6 | # 1 singular and 2 plurals 7 | 8 | # Determine plural_id for number *n* as sequence of positive 9 | # integers: 0,1,... 10 | # NOTE! For singular form ALWAYS return plural_id = 0 11 | get_plural_id = lambda n: (0 if n % 10 == 1 and n % 100 != 11 else 12 | 1 if n % 10 >= 2 and n % 10 <= 4 and 13 | (n % 100 < 10 or n % 100 >= 20) else 14 | 2) 15 | 16 | # construct_plural_form() is not used now because of complex 17 | # rules of Ukrainian language. Default version of 18 | # this function is used to simple insert new words into 19 | # plural_dict dictionary) 20 | # construct_plural_form = lambda word, plural_id: word 21 | 22 | -------------------------------------------------------------------------------- /web2py/applications/admin/models/0_imports.py: -------------------------------------------------------------------------------- 1 | import time 2 | import os 3 | import sys 4 | import re 5 | import urllib 6 | import cgi 7 | import difflib 8 | import shutil 9 | import stat 10 | import socket 11 | 12 | from textwrap import dedent 13 | 14 | try: 15 | from mercurial import ui, hg, cmdutil 16 | try: 17 | from mercurial.scmutil import addremove 18 | except: 19 | from mercurial.cmdutil import addremove 20 | have_mercurial = True 21 | except ImportError: 22 | have_mercurial = False 23 | 24 | from gluon.utils import md5_hash 25 | from gluon.fileutils import listdir, cleanpath, up 26 | from gluon.fileutils import tar, tar_compiled, untar, fix_newlines 27 | from gluon.languages import findT, update_all_languages 28 | from gluon.myregex import * 29 | from gluon.restricted import * 30 | from gluon.compileapp import compile_application, remove_compiled_application 31 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/resolve.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{block sectionclass}}resolve{{end}} 3 | 4 |

{{=T('Resolve Conflict file')}} "{{=filename}}"

5 | 10 |
11 | 12 | 13 | 14 |
15 |
16 |
17 | {{=diff}} 18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"3.19.0", 4 | "main": "lib/codemirror.js", 5 | "description": "In-browser code editing made bearable", 6 | "licenses": [{"type": "MIT", 7 | "url": "http://codemirror.net/LICENSE"}], 8 | "directories": {"lib": "./lib"}, 9 | "scripts": {"test": "node ./test/run.js"}, 10 | "devDependencies": {"node-static": "0.6.0"}, 11 | "bugs": "http://github.com/marijnh/CodeMirror/issues", 12 | "keywords": ["JavaScript", "CodeMirror", "Editor"], 13 | "homepage": "http://codemirror.net", 14 | "maintainers":[{"name": "Marijn Haverbeke", 15 | "email": "marijnh@gmail.com", 16 | "web": "http://marijnhaverbeke.nl"}], 17 | "repository": {"type": "git", 18 | "url": "http://marijnhaverbeke.nl/git/codemirror"} 19 | } 20 | -------------------------------------------------------------------------------- /client_min/less/spinning.less: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /client_min/scss/_spinning.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /client_src/less/spinning.less: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /client_src/scss/_spinning.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: spin 2s infinite linear; 6 | -moz-animation: spin 2s infinite linear; 7 | -o-animation: spin 2s infinite linear; 8 | animation: spin 2s infinite linear; 9 | } 10 | 11 | @-moz-keyframes spin { 12 | 0% { -moz-transform: rotate(0deg); } 13 | 100% { -moz-transform: rotate(359deg); } 14 | } 15 | @-webkit-keyframes spin { 16 | 0% { -webkit-transform: rotate(0deg); } 17 | 100% { -webkit-transform: rotate(359deg); } 18 | } 19 | @-o-keyframes spin { 20 | 0% { -o-transform: rotate(0deg); } 21 | 100% { -o-transform: rotate(359deg); } 22 | } 23 | @-ms-keyframes spin { 24 | 0% { -ms-transform: rotate(0deg); } 25 | 100% { -ms-transform: rotate(359deg); } 26 | } 27 | @keyframes spin { 28 | 0% { transform: rotate(0deg); } 29 | 100% { transform: rotate(359deg); } 30 | } 31 | -------------------------------------------------------------------------------- /web2py/scripts/rmorphans.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | paths = [sys.argv[1]] 4 | paths1 = [] 5 | paths2 = [] 6 | while paths: 7 | path = paths.pop() 8 | for filename in os.listdir(path): 9 | fullname = os.path.join(path, filename) 10 | if os.path.isdir(fullname): 11 | paths.append(fullname) 12 | else: 13 | extension = filename.split('.')[-1] 14 | if extension.lower() in ('png', 'gif', 'jpg', 'jpeg', 'js', 'css'): 15 | paths1.append((filename, fullname)) 16 | if extension.lower() in ('css', 'js', 'py', 'html'): 17 | paths2.append(fullname) 18 | for filename, fullname in paths1: 19 | for otherfullname in paths2: 20 | if open(otherfullname).read().find(filename) >= 0: 21 | break 22 | else: 23 | print fullname 24 | # os.system('hg rm '+fullname) 25 | # os.system('rm '+fullname) 26 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/heroku.py: -------------------------------------------------------------------------------- 1 | """ 2 | Usage: in web2py models/db.py 3 | 4 | from gluon.contrib.heroku import get_db 5 | db = get_db() 6 | 7 | """ 8 | import os 9 | from gluon import * 10 | from gluon.dal import ADAPTERS, UseDatabaseStoredFile,PostgreSQLAdapter 11 | 12 | class HerokuPostgresAdapter(UseDatabaseStoredFile,PostgreSQLAdapter): 13 | drivers = ('psycopg2',) 14 | uploads_in_blob = True 15 | 16 | ADAPTERS['postgres'] = HerokuPostgresAdapter 17 | 18 | def get_db(name = None, pool_size=10): 19 | if not name: 20 | names = [n for n in os.environ.keys() 21 | if n[:18]+n[-4:]=='HEROKU_POSTGRESQL__URL'] 22 | if names: 23 | name = names[0] 24 | if name: 25 | db = DAL(os.environ[name], pool_size=pool_size) 26 | current.session.connect(current.request, current.response, db=db) 27 | else: 28 | db = DAL('sqlite://heroku.test.sqlite') 29 | return db 30 | -------------------------------------------------------------------------------- /web2py/applications/admin/controllers/toolbar.py: -------------------------------------------------------------------------------- 1 | import os 2 | from gluon.settings import global_settings, read_file 3 | # 4 | 5 | 6 | def index(): 7 | app = request.args(0) 8 | return dict(app=app) 9 | 10 | 11 | def profiler(): 12 | """ 13 | to use the profiler start web2py with -F profiler.log 14 | """ 15 | KEY = 'web2py_profiler_size' 16 | filename = global_settings.cmd_options.profiler_filename 17 | data = 'profiler disabled' 18 | if filename: 19 | if KEY in request.cookies: 20 | size = int(request.cookies[KEY].value) 21 | else: 22 | size = 0 23 | if os.path.exists(filename): 24 | data = read_file('profiler.log', 'rb') 25 | if size < len(data): 26 | data = data[size:] 27 | else: 28 | size = 0 29 | size += len(data) 30 | response.cookies[KEY] = size 31 | return data 32 | -------------------------------------------------------------------------------- /web2py/applications/admin/cron/expire_sessions.py: -------------------------------------------------------------------------------- 1 | EXPIRATION_MINUTES=60 2 | DIGITS=('0','1','2','3','4','5','6','7','8','9') 3 | import os, time, stat, cPickle, logging 4 | path = os.path.join(request.folder,'sessions') 5 | if not os.path.exists(path): 6 | os.mkdir(path) 7 | now = time.time() 8 | for filename in os.listdir(path): 9 | fullpath=os.path.join(path,filename) 10 | if os.path.isfile(fullpath) and filename.startswith(DIGITS): 11 | try: 12 | filetime = os.stat(fullpath)[stat.ST_MTIME] # get it before our io 13 | try: 14 | session_data = cPickle.load(open(fullpath, 'rb+')) 15 | expiration = session_data['auth']['expiration'] 16 | except: 17 | expiration = EXPIRATION_MINUTES * 60 18 | if (now - filetime) > expiration: 19 | os.unlink(fullpath) 20 | except: 21 | logging.exception('failure to check %s' % fullpath) 22 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/edit_language.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 13 | 14 | {{block sectionclass}}edit_language{{end}} 15 | 16 |

{{=T('Editing Language file')}} "{{=filename}}"

17 | 22 |
23 | {{=form}} 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/mercurial/commit.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{import time}} 3 | 4 |

{{=T.M("Mercurial Version Control System Interface[[NEWLINE]]for application '%s'", request.args[0])}}

5 | 6 |

{{=T('Commit form')}}

7 | {{=form}} 8 | 9 | {{if repo['.'].rev()>=0:}} 10 |

{{=T('Last Revision')}}

11 | 12 | 13 | 14 | 15 | 16 | 17 |
{{=T('Revision:')}}{{=repo['.'].rev()}}
{{=T('Node:')}}{{=repo['.']}}
{{=T('Created by:')}}{{=repo['.'].user()}}
{{=T('Created on:')}}{{=time.ctime(repo['.'].date()[0])}}
{{=T('Description:')}}{{=repo['.'].description()}}
18 | 19 |

{{=T('Past revisions')}}

20 |
21 | {{=changes}} 22 |
23 | 24 | {{if files:}} 25 |

{{=T('Committed files')}}

26 |
27 | {{=files}} 28 |
29 | {{pass}} 30 | 31 | {{pass}} 32 | 33 | -------------------------------------------------------------------------------- /web2py/extras/build_web2py/setup_exe.conf: -------------------------------------------------------------------------------- 1 | [Setup] 2 | #py2exe often includes DLLS from windows which aren't licensed for 3 | #open source distribution. Should they be removed? 4 | remove_microsoft_dlls: Yes 5 | 6 | #copy all web2py apps currently installed? 7 | #If no, only the default admin, welcome & example apps will be included 8 | copy_apps: No 9 | 10 | #include the web2py\site-packages directory? 11 | copy_site_packages: Yes 12 | 13 | #include the web2py\scripts directory? 14 | copy_scripts: Yes 15 | 16 | #create a zip file of the build for easy distribution? 17 | make_zip: Yes 18 | 19 | #what should the zip file be named? (leave off the .zip extension) 20 | zip_filename = web2py_win 21 | 22 | #should the build, deposit & dist directories used by py2exe be removed? 23 | #if you created a zip file you likely don't need these directories anymore 24 | remove_build_files = Yes 25 | 26 | #should the build include the gevented webserver (needs gevent) 27 | include_gevent = Yes -------------------------------------------------------------------------------- /web2py/scripts/cpplugin.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import glob 3 | import os 4 | import shutil 5 | name = sys.argv[1] 6 | app = sys.argv[2] 7 | dest = sys.argv[3] 8 | a = glob.glob( 9 | 'applications/%(app)s/*/plugin_%(name)s.*' % dict(app=app, name=name)) 10 | b = glob.glob( 11 | 'applications/%(app)s/*/plugin_%(name)s/*' % dict(app=app, name=name)) 12 | 13 | for f in a: 14 | print 'cp %s ...' % f, 15 | shutil.copyfile(f, os.path.join('applications', dest, *f.split('/')[2:])) 16 | print 'done' 17 | 18 | for f in b: 19 | print 'cp %s ...' % f, 20 | path = f.split('/') 21 | for i in range(3, len(path)): 22 | try: 23 | os.mkdir(os.path.join('applications', dest, *path[2:i])) 24 | except: 25 | pass 26 | path = os.path.join('applications', dest, *f.split('/')[2:]) 27 | if os.path.isdir(f): 28 | if not os.path.exists(path): 29 | shutil.copytree(f, path) 30 | else: 31 | shutil.copyfile(f, path) 32 | print 'done' 33 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/runmode/colorize.js: -------------------------------------------------------------------------------- 1 | CodeMirror.colorize = (function() { 2 | 3 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 4 | 5 | function textContent(node, out) { 6 | if (node.nodeType == 3) return out.push(node.nodeValue); 7 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 8 | textContent(ch, out); 9 | if (isBlock.test(node.nodeType)) out.push("\n"); 10 | } 11 | } 12 | 13 | return function(collection, defaultMode) { 14 | if (!collection) collection = document.body.getElementsByTagName("pre"); 15 | 16 | for (var i = 0; i < collection.length; ++i) { 17 | var node = collection[i]; 18 | var mode = node.getAttribute("data-lang") || defaultMode; 19 | if (!mode) continue; 20 | 21 | var text = []; 22 | textContent(node, text); 23 | node.innerHTML = ""; 24 | CodeMirror.runMode(text.join(""), mode, node); 25 | 26 | node.className += " cm-s-default"; 27 | } 28 | }; 29 | })(); 30 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/css/jqueryMultiSelect.css: -------------------------------------------------------------------------------- 1 | .multiSelect { 2 | width: 200px; 3 | border: solid 1px #BBB; 4 | background: #FFF right center no-repeat; 5 | padding: 2px 4px; 6 | padding-right: 20px; 7 | display: inline; 8 | } 9 | 10 | .multiSelect.hover { 11 | background: right center no-repeat; 12 | } 13 | 14 | .multiSelect.active, 15 | .multiSelect.focus { 16 | border: inset 1px #000; 17 | } 18 | 19 | .multiSelect.active { 20 | background: right center no-repeat; 21 | } 22 | 23 | .multiSelectOptions { 24 | width: 500px; 25 | max-height: 150px; 26 | margin-top: -1px; 27 | overflow: auto; 28 | border: solid 1px #B2B2B2; 29 | background: #FFF; 30 | } 31 | 32 | .multiSelectOptions LABEL { 33 | padding: 2px 5px; 34 | display: block; 35 | } 36 | 37 | .multiSelectOptions LABEL.checked { 38 | background: #E6E6E6; 39 | } 40 | 41 | .multiSelectOptions LABEL.selectAll { 42 | border-bottom: dotted 1px #CCC; 43 | } 44 | 45 | .multiSelectOptions LABEL.hover { 46 | background: #CFCFCF; 47 | } 48 | -------------------------------------------------------------------------------- /web2py/gluon/messageboxhandler.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import os 3 | 4 | try: 5 | import Tkinter 6 | except: 7 | Tkinter = None 8 | 9 | 10 | class MessageBoxHandler(logging.Handler): 11 | def __init__(self): 12 | logging.Handler.__init__(self) 13 | 14 | def emit(self, record): 15 | if Tkinter: 16 | msg = self.format(record) 17 | root = Tkinter.Tk() 18 | root.wm_title("web2py logger message") 19 | text = Tkinter.Text() 20 | text["height"] = 12 21 | text.insert(0.1, msg) 22 | text.pack() 23 | button = Tkinter.Button(root, text="OK", command=root.destroy) 24 | button.pack() 25 | root.mainloop() 26 | 27 | 28 | class NotifySendHandler(logging.Handler): 29 | def __init__(self): 30 | logging.Handler.__init__(self) 31 | 32 | def emit(self, record): 33 | if Tkinter: 34 | msg = self.format(record) 35 | os.system("notify-send '%s'" % msg) 36 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/plugin_jqmobile/index.html: -------------------------------------------------------------------------------- 1 | {{extend 'plugin_jqmobile/layout.html'}} 2 | 3 | {{block header}} 4 | {{if 'auth' in globals():}} 5 | {{if not auth.user:}} 6 | Login 7 | {{else:}} 8 | Logout 9 | {{pass}} 10 | {{pass}} 11 | {{=T("Home")}} 12 | {{end}} 13 | 14 | 15 |
Search results for tag: {{='tag'}}
16 | 17 |
    18 | {{if True:}} 19 |
  • Pages
  • 20 | {{for child in ('dog','cat','mouse'):}} 21 | {{title = child}} 22 |
  • {{=child}}
  • 23 | {{pass}} 24 | {{pass}} 25 |
26 | 27 |
28 | {{for tag in ('dog','cat','mouse'):}} 29 | {{=tag}} 30 | {{pass}} 31 |
32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /landing_src/controllers/TermTopicMatrix.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from core import TermiteCore 4 | 5 | def index(): 6 | core = TermiteCore( request, response ) 7 | return core.GenerateResponse({ 8 | 'js_files' : [ 9 | "js/TermTopicMatrix/CoreModel.js", 10 | "js/TermTopicMatrix/CoreView.js", 11 | "js/TermTopicMatrix/MatrixState.js", 12 | "js/TermTopicMatrix/MatrixModel.js", 13 | "js/TermTopicMatrix/MatrixModel_Precomputations.js", 14 | "js/TermTopicMatrix/MatrixModel_Visibilities.js", 15 | "js/TermTopicMatrix/MatrixModel_Styles.js", 16 | "js/TermTopicMatrix/MatrixModel_Values.js", 17 | "js/TermTopicMatrix/MatrixModel_Positions.js", 18 | "js/TermTopicMatrix/MatrixModel_AnnotationControls.js", 19 | "js/TermTopicMatrix/MatrixModel_SelectionGroups.js", 20 | "js/TermTopicMatrix/MatrixInteractions.js", 21 | "js/TermTopicMatrix/MatrixView.js", 22 | "js/TermTopicMatrix/MatrixSelections.js" 23 | ], 24 | 'css_files' : [ 25 | "css/TermTopicMatrix.css" 26 | ], 27 | 'visualization' : 'TermTopicMatrix' 28 | }) 29 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/lint/coffeescript-lint.js: -------------------------------------------------------------------------------- 1 | // Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 2 | 3 | // declare global: coffeelint 4 | 5 | CodeMirror.registerHelper("lint", "coffeescript", function(text) { 6 | var found = []; 7 | var parseError = function(err) { 8 | var loc = err.lineNumber; 9 | found.push({from: CodeMirror.Pos(loc-1, 0), 10 | to: CodeMirror.Pos(loc, 0), 11 | severity: err.level, 12 | message: err.message}); 13 | }; 14 | try { 15 | var res = coffeelint.lint(text); 16 | for(var i = 0; i < res.length; i++) { 17 | parseError(res[i]); 18 | } 19 | } catch(e) { 20 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 21 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 22 | severity: 'error', 23 | message: e.message}); 24 | } 25 | return found; 26 | }); 27 | CodeMirror.coffeeValidator = CodeMirror.lint.coffeescript; // deprecated 28 | -------------------------------------------------------------------------------- /web2py/web2py.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | import sys 6 | 7 | if '__file__' in globals(): 8 | path = os.path.dirname(os.path.abspath(__file__)) 9 | elif hasattr(sys, 'frozen'): 10 | path = os.path.dirname(os.path.abspath(sys.executable)) # for py2exe 11 | else: # should never happen 12 | path = os.getcwd() 13 | os.chdir(path) 14 | 15 | sys.path = [path] + [p for p in sys.path if not p == path] 16 | 17 | # import gluon.import_all ##### This should be uncommented for py2exe.py 18 | import gluon.widget 19 | 20 | # Start Web2py and Web2py cron service! 21 | if __name__ == '__main__': 22 | try: 23 | from multiprocessing import freeze_support 24 | freeze_support() 25 | except: 26 | sys.stderr.write('Sorry, -K only supported for python 2.6-2.7\n') 27 | if os.environ.has_key("COVERAGE_PROCESS_START"): 28 | try: 29 | import coverage 30 | coverage.process_startup() 31 | except: 32 | pass 33 | gluon.widget.start(cron=True) 34 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/index.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{block sectionclass}}login{{end}} 3 | 4 |

web2py™ {{=T('Web Framework')}}

5 |

{{=T('Login to the Administrative Interface')}}

6 |
7 | {{if request.is_https or request.is_local:}} 8 |
9 | 10 | 11 | 12 |
13 |
14 | {{else:}} 15 |

{{=T('ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.')}}

16 | {{pass}} 17 |
18 | 23 | -------------------------------------------------------------------------------- /web2py/scripts/update_web2py.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | crontab -e 6 | * 3 * * * root path/to/this/file 7 | """ 8 | 9 | USER = 'www-data' 10 | TMPFILENAME = 'web2py_src_update.zip' 11 | 12 | import sys 13 | import os 14 | import urllib 15 | import zipfile 16 | 17 | if len(sys.argv) > 1 and sys.argv[1] == 'nightly': 18 | version = 'http://web2py.com/examples/static/nightly/web2py_src.zip' 19 | else: 20 | version = 'http://web2py.com/examples/static/web2py_src.zip' 21 | 22 | realpath = os.path.realpath(__file__) 23 | path = os.path.dirname(os.path.dirname(os.path.dirname(realpath))) 24 | os.chdir(path) 25 | try: 26 | old_version = open('web2py/VERSION', 'r').read().strip() 27 | except IOError: 28 | old_version = '' 29 | open(TMPFILENAME, 'wb').write(urllib.urlopen(version).read()) 30 | new_version = zipfile.ZipFile(TMPFILENAME).read('web2py/VERSION').strip() 31 | if new_version > old_version: 32 | os.system('sudo -u %s unzip -o %s' % (USER, TMPFILENAME)) 33 | os.system('apachectl restart | apache2ctl restart') 34 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/css/web2py-codemirror.css: -------------------------------------------------------------------------------- 1 | /* Fullscreen */ 2 | .CodeMirror-fullscreen { 3 | z-index: 1030; 4 | } 5 | 6 | /* BREAKPOINTS */ 7 | 8 | .breakpoints {width: .8em;} 9 | .breakpoint { color: #822; } 10 | 11 | /* Trailing Whitespace */ 12 | 13 | .cm-trailingspace { 14 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==); 15 | background-position: bottom left; 16 | background-repeat: repeat-x; 17 | } 18 | 19 | /* Close button on tab*/ 20 | .nav-tabs li a > .close { 21 | font-size: 18px; 22 | padding-left: 5px; 23 | float: right; 24 | margin-right: -10px; 25 | padding-right: 5px; 26 | } 27 | 28 | .nav-tabs>li>a { 29 | overflow: hidden; 30 | white-space: nowrap; 31 | word-wrap: normal; 32 | -o-text-overflow: ellipsis; 33 | text-overflow: ellipsis; 34 | } 35 | 36 | /*.nav-tabs>li { 37 | min-width: 100px; 38 | }*/ 39 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default.mobile/test.html: -------------------------------------------------------------------------------- 1 | {{extend 'default.mobile/layout.html'}} 2 | 3 | {{block sectionclass}}test{{end}} 4 | 5 |

{{=T('Testing application')}} "{{=app}}"

6 | 7 | {{for controller in sorted(controllers):}} 8 |
9 |

Testing controller "{{=controller}}"... please wait!

10 |
11 | 12 | 15 | {{pass}} 16 | 17 |

{{=T("""If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code. 18 | A green title indicates that all tests (if defined) passed. In this case test results are not shown.""")}}

19 |

{{=T('Functions with no doctests will result in [passed] tests.')}}

20 |

{{=T('ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.')}}

21 | 22 | -------------------------------------------------------------------------------- /web2py/scripts/cleancss.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import sys 5 | import re 6 | 7 | filename = sys.argv[1] 8 | 9 | datafile = open(filename, 'r') 10 | try: 11 | data = '\n' + datafile.read() 12 | finally: 13 | datafile.close() 14 | SPACE = '\n ' if '-n' in sys.argv[1:] else ' ' 15 | 16 | data = re.compile('(?.*)').sub('/* \g */', data) 17 | data = re.compile('[ ]+').sub(' ', data) 18 | data = re.compile('\s*{\s*').sub(' {' + SPACE, data) 19 | data = re.compile('\s*;\s*').sub(';' + SPACE, data) 20 | data = re.compile(',\s*').sub(', ', data) 21 | data = re.compile('\s*\*/\s*').sub('*/' + SPACE, data) 22 | data = re.compile('\s*}\s*').sub(SPACE + '}\n', data) 23 | data = re.compile('\n\s*\n').sub('\n', data) 24 | data = re.compile(';\s+/\*').sub('; /*', data) 25 | data = re.compile('\*/\s+/\*').sub(' ', data) 26 | data = re.compile('[ ]+\n').sub('\n', data) 27 | data = re.compile('\n\s*/[\*]+(?P.*?)[\*]+/', re.DOTALL).sub( 28 | '\n/*\g*/\n', data) 29 | data = re.compile('[ \t]+(?P\S.+?){').sub(' \g{', data) 30 | data = data.replace('}', '}\n') 31 | 32 | print data 33 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 PyMySQL contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Bob Ippolito 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/twitter.load: -------------------------------------------------------------------------------- 1 | {{response.headers['web2py-response-flash']=response.flash}} 2 | 3 | {{ 4 | """ 5 | Tweet attributes 6 | 7 | 'iso_language_code', 8 | 'to_user_name', 9 | 'to_user_id_str', 10 | 'profile_image_url_https', 11 | 'from_user_id_str', 12 | 'text', 13 | 'from_user_name', 14 | 'in_reply_to_status_id_str', 15 | 'profile_image_url', 16 | 'id', 17 | 'to_user', 18 | 'source', 19 | 'in_reply_to_status_id', 20 | 'id_str', 21 | 'from_user', 22 | 'from_user_id', 23 | 'to_user_id', 24 | 'geo', 25 | 'created_at', 26 | 'metadata' 27 | """ 28 | }} 29 | 30 | {{import re}} 31 | {{hashtag = re.compile('([#@])(\w+)')}} 32 | {{link = re.compile('(?!<")https?\:\/\/[\w\./?&]+')}} 33 | 34 | {{ for t in tweets: }} 35 | 36 | 37 | 41 | 42 | {{ pass }} 43 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/google_wallet.py: -------------------------------------------------------------------------------- 1 | from gluon import XML 2 | 3 | def button(merchant_id="123456789012345", 4 | products=[dict(name="shoes", 5 | quantity=1, 6 | price=23.5, 7 | currency='USD', 8 | description="running shoes black")]): 9 | t = '\n' 10 | list_products = '' 11 | for k, product in enumerate(products): 12 | for key in ('name','description','quantity','price','currency'): 13 | list_products += t % dict(k=k + 1, key=key, value=product[key]) 14 | button = """
\n%(list_products)s\n\n
""" % dict(merchant_id=merchant_id, list_products=list_products) 15 | return XML(button) 16 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2013 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pyuca/LICENSE: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2006-2012 James Tauber and contributors 2 | # 3 | # Permission is hereby granted, free of charge, to any person obtaining a copy 4 | # of this software and associated documentation files (the "Software"), to deal 5 | # in the Software without restriction, including without limitation the rights 6 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | # copies of the Software, and to permit persons to whom the Software is 8 | # furnished to do so, subject to the following conditions: 9 | # 10 | # The above copyright notice and this permission notice shall be included in 11 | # all copies or substantial portions of the Software. 12 | # 13 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | # THE SOFTWARE. -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/about.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{block sectionclass}}about{{end}} 3 | 4 |

{{=T("About application")}} "{{=app}}"

5 |

{{=T("About")}} {{=app}}

6 |

{{=button(URL('edit/%s/ABOUT' % (app)), T('Edit'))}}

7 |
{{=about}}
8 |

{{=T('License for')}} {{=app}}

9 |

{{=button(URL('edit/%s/LICENSE' % (app)), T('Edit'))}}

10 |
{{=license}}
11 |

{{=T('Project Progress')}}

12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 26 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/login_methods/gae_google_account.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | This file is part of web2py Web Framework (Copyrighted, 2007-2009). 6 | Developed by Massimo Di Pierro . 7 | License: GPL v2 8 | 9 | Thanks to Hans Donner for GaeGoogleAccount. 10 | """ 11 | 12 | from google.appengine.api import users 13 | 14 | 15 | class GaeGoogleAccount(object): 16 | """ 17 | Login will be done via Google's Appengine login object, instead of web2py's 18 | login form. 19 | 20 | Include in your model (eg db.py):: 21 | 22 | from gluon.contrib.login_methods.gae_google_account import \ 23 | GaeGoogleAccount 24 | auth.settings.login_form=GaeGoogleAccount() 25 | 26 | """ 27 | 28 | def login_url(self, next="/"): 29 | return users.create_login_url(next) 30 | 31 | def logout_url(self, next="/"): 32 | return users.create_logout_url(next) 33 | 34 | def get_user(self): 35 | user = users.get_current_user() 36 | if user: 37 | return dict(nickname=user.nickname(), email=user.email(), 38 | user_id=user.user_id(), source="google account") 39 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/display/fullscreen.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | "use strict"; 3 | 4 | CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { 5 | if (old == CodeMirror.Init) old = false; 6 | if (!old == !val) return; 7 | if (val) setFullscreen(cm); 8 | else setNormal(cm); 9 | }); 10 | 11 | function setFullscreen(cm) { 12 | var wrap = cm.getWrapperElement(); 13 | cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, 14 | width: wrap.style.width, height: wrap.style.height}; 15 | wrap.style.width = wrap.style.height = ""; 16 | wrap.className += " CodeMirror-fullscreen"; 17 | document.documentElement.style.overflow = "hidden"; 18 | cm.refresh(); 19 | } 20 | 21 | function setNormal(cm) { 22 | var wrap = cm.getWrapperElement(); 23 | wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); 24 | document.documentElement.style.overflow = ""; 25 | var info = cm.state.fullScreenRestore; 26 | wrap.style.width = info.width; wrap.style.height = info.height; 27 | window.scrollTo(info.scrollLeft, info.scrollTop); 28 | cm.refresh(); 29 | } 30 | })(); 31 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/addon/fold/indent-fold.js: -------------------------------------------------------------------------------- 1 | CodeMirror.registerHelper("fold", "indent", function(cm, start) { 2 | var lastLine = cm.lastLine(), 3 | tabSize = cm.getOption("tabSize"), 4 | firstLine = cm.getLine(start.line); 5 | if (!tabSize || !firstLine) return; 6 | var myIndent = CodeMirror.countColumn(firstLine, null, tabSize); 7 | 8 | function foldEnded(curColumn, prevColumn) { 9 | return curColumn < myIndent || 10 | (curColumn == myIndent && prevColumn >= myIndent) || 11 | (curColumn > myIndent && i == lastLine); 12 | } 13 | 14 | for (var i = start.line + 1; i <= lastLine; i++) { 15 | var curColumn = CodeMirror.countColumn(cm.getLine(i), null, tabSize); 16 | var prevColumn = CodeMirror.countColumn(cm.getLine(i-1), null, tabSize); 17 | 18 | if (foldEnded(curColumn, prevColumn)) { 19 | var lastFoldLineNumber = curColumn > myIndent && i == lastLine ? i : i-1; 20 | var lastFoldLine = cm.getLine(lastFoldLineNumber); 21 | return {from: CodeMirror.Pos(start.line, firstLine.length), 22 | to: CodeMirror.Pos(lastFoldLineNumber, lastFoldLine.length)}; 23 | } 24 | } 25 | }); 26 | 27 | CodeMirror.indentRangeFinder = CodeMirror.fold.indent; // deprecated 28 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/pack_custom.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | {{import os}} 3 | 4 | {{def tree(path):}} 5 | 6 |
7 | {{=path[len(base):] or '/%s' % app}} 8 | 9 |
    10 | {{for file in files[path]['files']:}} 11 |
  • 12 | {{p = os.path.relpath(os.path.join(path,file),base)}} 13 | 14 | {{=file}} 15 |
  • 16 | {{pass}} 17 | {{for dir in files[path]['folders']:}} 18 |
  • 19 | {{tree(os.path.join(path,dir))}} 20 |
  • 21 | {{pass}} 22 |
23 | {{return}} 24 | 25 |
26 |

{{=T('Select Files to Package')}}

27 | 28 |
29 | {{tree(base)}} 30 |
31 |
32 | 33 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-qualifier {color: #555;} 15 | .cm-s-eclipse span.cm-builtin {color: #30a;} 16 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 17 | .cm-s-eclipse span.cm-tag {color: #170;} 18 | .cm-s-eclipse span.cm-attribute {color: #00c;} 19 | .cm-s-eclipse span.cm-link {color: #219;} 20 | .cm-s-eclipse span.cm-error {color: #f00;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | -------------------------------------------------------------------------------- /web2py/gluon/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | This file is part of the web2py Web Framework 3 | Copyrighted by Massimo Di Pierro 4 | License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html) 5 | """ 6 | 7 | import os 8 | import sys 9 | import platform 10 | from gluon.storage import Storage 11 | 12 | global_settings = Storage() 13 | settings = global_settings # legacy compatibility 14 | 15 | if not hasattr(os, 'mkdir'): 16 | global_settings.db_sessions = True 17 | 18 | if global_settings.db_sessions is not True: 19 | global_settings.db_sessions = set() 20 | 21 | global_settings.gluon_parent = \ 22 | os.environ.get('web2py_path', os.getcwd()) 23 | 24 | global_settings.applications_parent = global_settings.gluon_parent 25 | 26 | global_settings.app_folders = set() 27 | 28 | global_settings.debugging = False 29 | 30 | global_settings.is_pypy = \ 31 | hasattr(platform, 'python_implementation') and \ 32 | platform.python_implementation() == 'PyPy' 33 | 34 | global_settings.is_jython = \ 35 | 'java' in sys.platform.lower() or \ 36 | hasattr(sys, 'JYTHON_JAR') or \ 37 | str(sys.copyright).find('Jython') > 0 38 | 39 | global_settings.is_source = os.path.exists(os.path.join( 40 | global_settings.gluon_parent,'web2py.py')) 41 | -------------------------------------------------------------------------------- /landing_src/views/TermTopicMatrix/index.html: -------------------------------------------------------------------------------- 1 | {{extend 'template.html'}} 2 | {{import json}} 3 | 4 | 21 | 22 |
23 |
24 |
25 |

Termite Visualization by Jason Chuang et al.
26 | Stanford Visualization Group & UW Interactive Data Lab

27 |
28 |
 
29 |
30 | -------------------------------------------------------------------------------- /web2py/applications/admin/views/default/test.html: -------------------------------------------------------------------------------- 1 | {{extend 'layout.html'}} 2 | 3 | {{block sectionclass}}test{{end}} 4 | 5 |

{{=T('Testing application')}} "{{=app}}"

6 | 7 | {{for controller in sorted(controllers):}} 8 |
9 |

Testing controller "{{=controller}}"... please wait!

10 |
11 | 12 | 15 | {{pass}} 16 | 17 |
18 |

{{=T("""If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code. 19 | A green title indicates that all tests (if defined) passed. In this case test results are not shown.""")}}

20 |
21 |
22 |

{{=T('Functions with no doctests will result in [passed] tests.')}}

23 |
24 |
25 |

{{=T('ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.')}}

26 |
27 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/simplejson/tool.py: -------------------------------------------------------------------------------- 1 | r"""Command-line tool to validate and pretty-print JSON 2 | 3 | Usage:: 4 | 5 | $ echo '{"json":"obj"}' | python -m simplejson.tool 6 | { 7 | "json": "obj" 8 | } 9 | $ echo '{ 1.2:3.4}' | python -m simplejson.tool 10 | Expecting property name: line 1 column 2 (char 2) 11 | 12 | """ 13 | import sys 14 | import simplejson as json 15 | 16 | def main(): 17 | if len(sys.argv) == 1: 18 | infile = sys.stdin 19 | outfile = sys.stdout 20 | elif len(sys.argv) == 2: 21 | infile = open(sys.argv[1], 'rb') 22 | outfile = sys.stdout 23 | elif len(sys.argv) == 3: 24 | infile = open(sys.argv[1], 'rb') 25 | outfile = open(sys.argv[2], 'wb') 26 | else: 27 | raise SystemExit(sys.argv[0] + " [infile [outfile]]") 28 | try: 29 | try: 30 | obj = json.load(infile, 31 | object_pairs_hook=json.OrderedDict, 32 | use_decimal=True) 33 | except ValueError, e: 34 | raise SystemExit(e) 35 | json.dump(obj, outfile, sort_keys=True, indent=' ', use_decimal=True) 36 | outfile.write('\n') 37 | finally: 38 | infile.close() 39 | outfile.close() 40 | 41 | if __name__ == '__main__': 42 | main() 43 | 44 | -------------------------------------------------------------------------------- /web2py/applications/admin/static/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 4 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 5 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 6 | 7 | .cm-s-cobalt span.cm-comment { color: #08f; } 8 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 9 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 10 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 11 | .cm-s-cobalt span.cm-string { color: #3ad900; } 12 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 13 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 14 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 15 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 16 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 17 | .cm-s-cobalt span.cm-link { color: #845dc4; } 18 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 19 | 20 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} 21 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 22 | -------------------------------------------------------------------------------- /web2py/scripts/web2py.archlinux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # the script should be run 3 | # from WEB2PY root directory 4 | 5 | prog="web2py.py" 6 | 7 | chmod +x $prog 8 | 9 | function web2py_start { 10 | nohup python2 ./$prog -a "" >>/dev/null 2>/dev/null & 11 | pid=`pgrep -f $prog | tail -1` 12 | if [ "x$pid" != "x$$" ] 13 | then 14 | echo "WEB2PY has been started (pid $pid). Stop it with '$0 stop'" 15 | else 16 | echo "Failed to start WEB2PY." 17 | fi 18 | } 19 | 20 | function web2py_stop { 21 | pid="`pgrep -f $prog | grep -v $$`" 22 | if [ "x$pid" == "x" ] 23 | then 24 | echo "No WEB2PY processes to stop." 25 | else 26 | kill -15 $pid 27 | # Wait for web2py to shut down gracefully. 28 | sleep 2 29 | pid="`pgrep -f $prog | head -1`" 30 | if [ "x$pid" == "x" ] 31 | then 32 | echo "WEB2PY has been stopped." 33 | else 34 | echo "Failed to stop WEB2PY. (Possibly, only one of several web2py processes was killed.)" 35 | echo "Still running:" 36 | pgrep -af $prog 37 | fi 38 | fi 39 | } 40 | 41 | case "$1" in 42 | start) 43 | web2py_start 44 | ;; 45 | stop) 46 | web2py_stop 47 | ;; 48 | restart) 49 | web2py_stop 50 | web2py_start 51 | ;; 52 | *) 53 | echo "Usage: $0 [start|stop|restart]" 54 | ;; 55 | esac 56 | 57 | exit 0 58 | -------------------------------------------------------------------------------- /web2py/gluon/contrib/pymysql/README.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | PyMySQL Installation 3 | ==================== 4 | 5 | .. contents:: 6 | .. 7 | This package contains a pure-Python MySQL client library. 8 | Documentation on the MySQL client/server protocol can be found here: 9 | http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol 10 | If you would like to run the test suite, edit the config parameters in 11 | pymysql/tests/base.py. The goal of pymysql is to be a drop-in 12 | replacement for MySQLdb and work on CPython 2.3+, Jython, IronPython, PyPy 13 | and Python 3. We test for compatibility by simply changing the import 14 | statements in the Django MySQL backend and running its unit tests as well 15 | as running it against the MySQLdb and myconnpy unit tests. 16 | 17 | Requirements 18 | ------------- 19 | 20 | + Python 2.4 or higher 21 | 22 | * http://www.python.org/ 23 | 24 | * 2.6 is the primary test environment. 25 | 26 | * MySQL 4.1 or higher 27 | 28 | * protocol41 support, experimental 4.0 support 29 | 30 | Installation 31 | ------------ 32 | 33 | # easy_install pymysql 34 | # ... or ... 35 | # python setup.py install 36 | 37 | Python 3.0 Support 38 | ------------------ 39 | 40 | Simply run the build-py3k.sh script from the local directory. It will 41 | build a working package in the ./py3k directory. 42 | -------------------------------------------------------------------------------- /web2py/scripts/tickets2email.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import sys 5 | import os 6 | import time 7 | import stat 8 | import datetime 9 | 10 | from gluon.utils import md5_hash 11 | from gluon.restricted import RestrictedError 12 | from gluon.tools import Mail 13 | 14 | 15 | path = os.path.join(request.folder, 'errors') 16 | hashes = {} 17 | mail = Mail() 18 | 19 | ### CONFIGURE HERE 20 | SLEEP_MINUTES = 5 21 | ALLOW_DUPLICATES = True 22 | mail.settings.server = 'localhost:25' 23 | mail.settings.sender = 'you@localhost' 24 | administrator_email = 'you@localhost' 25 | ### END CONFIGURATION 26 | 27 | while 1: 28 | for file in os.listdir(path): 29 | if not ALLOW_DUPLICATES: 30 | fileobj = open(file, 'r') 31 | try: 32 | file_data = fileobj.read() 33 | finally: 34 | fileobj.close() 35 | key = md5_hash(file_data) 36 | 37 | if key in hashes: 38 | continue 39 | 40 | hashes[key] = 1 41 | 42 | error = RestrictedError() 43 | error.load(request, request.application, file) 44 | 45 | mail.send(to=administrator_email, 46 | subject='new web2py ticket', message=error.traceback) 47 | 48 | os.unlink(os.path.join(path, file)) 49 | time.sleep(SLEEP_MINUTES * 60) 50 | --------------------------------------------------------------------------------