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 [email protected].
For more options, visit https://groups.google.com/d/optout.