Anthony, Thanks a lot! Best regards André
Em quinta-feira, 9 de novembro de 2017 13:42:20 UTC-2, Anthony escreveu: > > Here is updated code. Note, it assumes the web2py folder is at the top > level within the home directory of the current user (you can change that > back to the old behavior if desired). It also allows you to have multiple > versions in different folders, such as "/web2py-2.15", "/web2py-master", > etc. You would then call it like "w2p myapp 2.15" or "w2p myapp master". > > The new code updates some of the global_settings -- including the web2py > version, which is causing the error you see. > > import os > import sys > import xml.dom.minidom as xml > > from IPython.core.magic import register_line_magic > from IPython.core import display > > @register_line_magic > def w2p(line): > ''' > `line` is of the form: app[/controller] [web2py_version], where > controller > and web2py_version are optional, and web2py_version is the folder > suffix > (excluding the hyphen) identifying the version (e.g., "2.15", "dev", > etc.). > > ''' > line = 'test/default' if not line else line.encode('ascii') > line = line.split(' ') > > # Add the web2py path to the Python search path. > web2py_path = os.path.join(os.path.expanduser('~'), 'web2py') > if len(line) > 1: > web2py_path += '-%s' % line[1] > sys.path.insert(1, web2py_path) # Ensure web2py is early in the > search path. > > import gluon.shell > from gluon.settings import global_settings > from gluon.storage import Storage > > line = line[0].split('/') > app = line[0] > controller = line[1] if len(line) > 1 else None > > # Update global_settings. > global_settings.gluon_parent = global_settings.applications_parent = > web2py_path > global_settings.cmd_options = Storage(shell=True) # for code that > tests for shell > with open(os.path.join(web2py_path, 'VERSION'), 'rb') as version_info: > global_settings.web2py_version = version_info.read().split()[-1]. > strip() > > # Create the web2py environment. > environment = gluon.shell.env(app, import_models=True, c=controller, > dir=os.path.join(web2py_path, 'applications', app)) > folder = environment['request'].folder > if controller: > pyfile = os.path.join(folder, 'controllers', controller + '.py') > if os.path.isfile(pyfile): > execfile(pyfile, environment) > globals().update(**environment) > > Anthony > > On Thursday, November 9, 2017 at 5:16:14 AM UTC-5, Morganti wrote: >> >> Hi, >> >> I am using the web2py version 2.15.4 and used the these intructions to >> use web2py with ipython. I am having the error below: >> >> if request.global_settings.web2py_version < "2.14.1": >> ----> 9 raise HTTP(500, "Requires web2py 2.13.3 or newer") >> 10 >> 11 ## if SSL/HTTPS is properly configured and you want all HTTP >> requests to >> >> HTTP: 500 INTERNAL SERVER ERROR >> >> How to fix it? >> >> Thanks >> Best regards >> André >> >> Em segunda-feira, 12 de maio de 2014 19:31:04 UTC-3, Anthony escreveu: >>> >>> Sorry, I've been meaning to release the relevant code. Note, I did not >>> create the web2py shell environment that way in IPython Notebook. Instead, >>> the %w2p magic function directly creates a web2py environment (using one of >>> the functions from gluon/shell.py). I created a web2py_magic.py file >>> (attached) and put it in the .ipython/profile_nbserver/startup folder. >>> Below is the code in that file: >>> >>> import os >>> import sys >>> import xml.dom.minidom as xml >>> >>> from IPython.core.magic import register_line_magic >>> from IPython.core import display >>> >>> cwd = os.getcwd() >>> if cwd.endswith(os.path.sep + 'web2py'): >>> WEB2PY_PATH = cwd >>> else: >>> WEB2PY_PATH = os.path.join('/', 'home', 'www-data', 'web2py') >>> sys.path.append(WEB2PY_PATH) >>> >>> import gluon.shell >>> from gluon.dal import Rows >>> from gluon.sqlhtml import SQLTABLE >>> >>> @register_line_magic >>> def w2p(line): >>> line = 'test/default' if not line else line.encode('ascii') >>> line = line.split('/') >>> app = line[0] >>> controller = line[1] if len(line) > 1 else None >>> environment = gluon.shell.env(app, import_models=True, c=controller, >>> dir=os.path.join(WEB2PY_PATH, 'applications', app)) >>> folder = environment['request'].folder >>> if controller: >>> pyfile = os.path.join(folder, 'controllers', controller + '.py') >>> if os.path.isfile(pyfile): >>> execfile(pyfile, environment) >>> globals().update(**environment) >>> >>> def pp(helper, indent=' '): >>> declaration = len(xml.Document().toxml()) + 1 >>> doc = xml.parseString(helper.xml()) >>> print XML(doc.toprettyxml(indent=indent)[declaration:]) >>> >>> def render(html): >>> if isinstance(html, Rows): >>> html = SQLTABLE(html) >>> return display.HTML(str(html)) >>> >>> So, just start up a notebook, and at the top, run: >>> >>> %w2p myapp/mycontroller >>> >>> and you will get a full web2py environment with the models from myapp as >>> well as the (optionally) specified controller (so you can run functions >>> from that controller). Should be easy to add an optional command line flag >>> to later add other controllers (without overwriting the full environment). >>> >>> Note, you may have to edit the hard-coded path provided in the >>> WEB2PY_PATH section of the code based on your server setup. >>> >>> The above code also defines the pp() and render() functions. >>> >>> Also, attached is the .ipynb file for the notebook I showed during the >>> presentation. >>> >>> Finally, I have also attached a PDF of the slides, though it's not >>> really intended to be read as a standalone document. >>> >>> Anthony >>> >>> On Monday, May 12, 2014 4:59:06 PM UTC-4, Johann Spies wrote: >>>> >>>> Thanks to Anthony for his talk about the hard way to learn Web2py. >>>> >>>> Anthony I have been thinking of writing to you to ask about how you got >>>> to know the inner workings of Web2py and you have answered about >>>> everything >>>> in your talk at the conference - of which I saw the video today. >>>> >>>> I did not know about ipython notebook before I saw your presentation so >>>> I tried it out but it complained a little bit: >>>> >>>> %run /home/js/web2py/web2py.py -M -S alterit >>>> >>>> WARNING:web2py:import IPython error; use default python shell >>>> Python 2.7.6 (default, Mar 22 2014, 15:40:47) >>>> [GCC 4.8.2] on linux2 >>>> Type "help", "copyright", "credits" or "license" for more information. >>>> (InteractiveConsole) >>>> >>>> web2py Web Framework >>>> Created by Massimo Di Pierro, Copyright 2007-2014 >>>> Version 2.9.5-trunk+timestamp.2014.04.15.10.26.52 >>>> Database drivers available: SQLite(sqlite3), MySQL(pymysql), >>>> MySQL(MySQLdb), PostgreSQL(pg8000), MSSQL(pyodbc), DB2(pyodbc), >>>> Teradata(pyodbc), Ingres(pyodbc), IMAP(imaplib) >>>> >>>> In : >>>> >>>> >>>> I have a further question - maybe because I do not have the time to >>>> study the source code of ipython notebook as you would probably do :) >>>> >>>> How did you define the %w2p macro or magic command? >>>> >>>> And >>>> >>>> Your "render" function with which you could show the form - how did you >>>> do it? >>>> >>>> Regards >>>> Johann >>>> >>>> -- >>>> Because experiencing your loyal love is better than life itself, >>>> my lips will praise you. (Psalm 63:3) >>>> >>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.