Here is something strange as well - working thru the web2py console,
everything works:

[web2py@su-postgres-ben-3 web2py]$ python ./web2py.py -S Mec -M
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2018
Version 2.17.2-stable+timestamp.2018.10.06.18.54.02
Database drivers available: psycopg2, pymysql, imaplib, sqlite3, pg8000,
pyodbc
WARNING:web2py:import IPython error; use default python shell
Python 2.7.13 (default, Feb  8 2017, 06:30:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> session.company_id = '5'
>>> Company_ID = session.company_id
>>> print Company_ID
5
>>> DbRows =
db(db.company.company_number==Company_ID).select(db.company.company_name).first()
>>> type(DbRows['company_name'])
<type 'str'>
>>> DbRows['company_name']
'Number 5 Company'
>>> session.company_data = DbRows
>>> type(DbRows['company_name'])
<type 'str'>
>>> print session.company_data['company_name']
Number 5 Company
>>>type(DbRows)
<class 'pydal.objects.Row'>
>>>





*Ben Duncan*
DBA / Chief Software Architect
Mississippi State Supreme Court
Electronic Filing Division


On Thu, Dec 6, 2018 at 12:22 PM Ben Duncan <linux...@gmail.com> wrote:

> Well I was thinking that, BUT:  I'm ALMOST convinced there is a bug in the
> latest web2py:
>
> CODE
> ------------------------------------------------------------------------------------------------------------------------------
> Snippet of controllers/default.py
>
> session.company = request.vars['Company']
>     Company_ID = "This is a %s of type %s " % (session.company,
> type(session.company))
>     Company_ID = session.company
>
>     DbRows =
> db(db.company.company_number==Company_ID).select(db.company.company_name).first()
>     # Co_Name = DbRows['company_name']
>
>     session.company_data = DbRows
>
> From view/default/company_login.html:
> {{extend 'layout.html'}}
> <!-- {{session.company = request.vars['Company']}} -->
>
> <INPUT type="button" value="HOME"
> onclick="location.href='{{=URL('index')}}'"/>
>
> <a href="{{=URL('index')}}">HOME</a>
>
> <h4>Input form</h4>
> {{=form}}
> <h4 style="margin:0;">Submitted variables</h4>
> {{=BEAUTIFY(request.vars)}}
> {{=(request.vars)}}
>
> <h4 style="margin:0;">Company vars: {{=(request.vars['Company'])}}</h4>
> <h4 style="margin:0;">Company session: {{=(session.company)}}</h4>
> <h4 style="margin:0;">session data: {{=(session.company_data)}}</h4>
>
> Will Display The following:
> (top of form omitted ...)
> ..... Submitted variables
> Company :
> 5
> password :
> makeit1
> username :
> b...@linux4ms.net
> <Storage {'username': 'b...@linux4ms.net', 'Company': '5', 'password':
> 'makeit1', '_formkey': '65ee8396-aac0-4b5c-a255-00be7e7b01ca', '_formname':
> 'no_table/create'}> Company vars: 5 Company session: 5 session data: <Row
> {'company_name': 'Number 5 Company'}>
>
> ___________________________________________________________________________________________________________________________________
>
> However, any type of referencing or attempt to do anything with either
> session.company_date or DbRows
> always gives a "Nonetype" error of various subtypes (such as __getitem__)
>
> Uncommenting the controller code  of  "# Co_Name = DbRows['company_name']"
> gives the error:
>
> Ticket ID
>
> 10.13.69.144.2018-12-06.12-17-59.81fd7ae1-6523-47ad-94c7-7b1b480179bd
> <type 'exceptions.TypeError'> 'NoneType' object has no attribute
> '__getitem__' Version
> web2py™ Version 2.17.2-stable+timestamp.2018.10.06.18.54.02
> Python Python 2.7.13: /usr/bin/python (prefix: /opt/rh/python27/root/usr)
> Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
>
> Traceback (most recent call last):
>   File "/data/web2py/web2py/gluon/restricted.py", line 219, in restricted
>     exec(ccode, environment)
>   File "/data/web2py/web2py/applications/Mec/controllers/default.py" 
> <https://10.13.70.47/admin/default/edit/Mec/controllers/default.py>, line 98, 
> in <module>
>   File "/data/web2py/web2py/gluon/globals.py", line 421, in <lambda>
>     self._caller = lambda f: f()
>   File "/data/web2py/web2py/applications/Mec/controllers/default.py" 
> <https://10.13.70.47/admin/default/edit/Mec/controllers/default.py>, line 84, 
> in company_login
>     Co_Name = DbRows['company_name']
> TypeError: 'NoneType' object has no attribute '__getitem__'
>
>
> As one can see , the Row item exists, it just seems there is no way to get
> to it ...
>
> Any other ideas ?
>
>
> *Ben Duncan*
> DBA / Chief Software Architect
> Mississippi State Supreme Court
> Electronic Filing Division
>
>
> On Thu, Dec 6, 2018 at 9:09 AM Leonel Câmara <leonelcam...@gmail.com>
> wrote:
>
>> What's happening here is that DbRows can become None in this line
>>
>>    DbRows =
>> db(db.company.company_number==Company_ID).select(db.company.company_name).first()
>>
>> So when you do DbRows['company_name'] you can get that error.
>>
>> Basically you need to check if DbRows is None and raise HTTP(404)
>>
>> --
>> 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.
>>
>

-- 
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.

Reply via email to