NOTE: This works fine on my local system just not on the live servers and
the error message provided is impossible to find out where the problem
exists. As Michele says I can debug at the postgres level however if there
is an issue with secondary DB in web2py not throwing accurate error
messages we should look into it right?
db.py:
*# I noticed if something is invalid with this DB as it is the primary db
for auth etc... then the system will throw exceptions*
advertising_db = DAL('postgres://youadweb:1111@localhost
/youad_advertisement')
*# However if something is wrong with any secondary DB like for example DB
was created however has no tables in it and all tables are set to migrate
false, I just get the error I mentioned earlier.*
db = DAL('postgres://youadweb:1111@localhost/youad')
directory_db = DAL('postgres://youadweb:1111@localhost/youad_directory')
from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
auth = Auth(advertising_db, hmac_key=Auth.get_or_create_key())
crud, service, plugins = Crud(advertising_db), Service(), PluginManager()
advertising_db.define_table(
auth.settings.table_user_name,
Field('first_name'),
Field('last_name'),
Field('referral_id'),
Field('uad_id'),
Field('email', length=128, default=''),
Field('address'),
Field('country', 'integer'),
Field('province', 'integer'),
Field('city', 'integer'),
Field('postal_code'),
Field('phone'),
Field('department', notnull=False),
Field('employee', 'boolean', default=False),
Field('description','text', notnull=False),
Field('status', 'boolean', default=True),
Field('password', 'password', length=512, readable=False,
label='Password'),
Field('registration_key', length=512, writable=False, readable=False,
default=''),
Field('reset_password_key', length=512, writable=False, readable=False,
default=''),
Field('reset_security_key', length=512, writable=False, readable=False,
default=''),
Field('registration_id', length=512, writable=False, readable=False,
default='')
)
custom_auth_table = advertising_db[auth.settings.table_user_name] # get the
custom_auth_table
custom_auth_table.password.requires = [IS_STRONG(), CRYPT()]
custom_auth_table.email.requires =
[IS_EMAIL(error_message=auth.messages.invalid_email),
IS_NOT_IN_DB(advertising_db, custom_auth_table.email)]
auth.settings.table_user = custom_auth_table
auth.define_tables()
# defined just for /union/details
directory_db.define_table('directory_listing',
Field('user_id'),
Field('business_name'),
Field('address'),
Field('postal_code'),
Field('country'),
Field('province'),
Field('city'),
Field('location'),
Field('website'),
Field('phone'),
Field('section'),
Field('category'),
Field('intro', 'text'),
Field('accepted', 'boolean', default=False),
Field('show_listing','boolean', default=True),
Field('uad_union', 'boolean', default=False),
Field('created_at', 'datetime', default=request.now),
Field('business_id'),
migrate = False
)
directory_db.define_table('uad_union',
Field('directory_listing', 'reference directory_listing'),
Field('accepted', 'boolean', default=False),
Field('managefee_pc'),
Field('rating_results','text'),
Field('total_ratings', 'integer', default=0),
Field('added_date', 'datetime', default=request.now),
Field('valid'),
Field('business_id'),
Field('business_name'),
Field('country'),
Field('province'),
Field('city'),
Field('location'),
Field('address'),
Field('postal_code'),
Field('website'),
Field('phone'),
Field('fax'),
Field('contact_person'),
Field('intro'),
Field('category'),
Field('updated_at', 'datetime', default=request.now),
Field('is_listed'),
Field('waiting_no'),
Field('end_cond'),
Field('limit_hours'),
Field('limit_views'),
Field('total_views', default=0),
Field('start_at'),
Field('end_at'),
Field('user_id'),
migrate = False
)
controllers/union.py
def index():
page='listing'
searchKeyword = request.vars.searchKeyword if "searchKeyword" in
request.vars else ''
searchCategory = request.vars.searchCategory if "searchCategory" in
request.vars else 'business_name'
categories = [(T('Business Name'), 'business_name'), (T('Accepted'),
'accepted'), (T('Owner ID'), 'user_id')]
searchCategoryOptions = [OPTION(option[0], _value=option[1]) for option
in categories]
# set location box, change location box & form, and receive a tuple,
location
location = make_location_box(db, session, request, response, T)
# make grid ==================================================
query = ((directory_db.uad_union.valid==True) &
(directory_db.uad_union.country == location['selected_country']))
if int(location['selected_province']) != 0: query &=
directory_db.uad_union.province == location['selected_province']
if int(location['selected_city']) != 0: query &=
directory_db.uad_union.city == location['selected_city']
if int(location['selected_location']) != 0: query &=
directory_db.uad_union.location == location['selected_location']
if searchKeyword=='':
query = query
elif searchCategory=='business_name':
query &=
directory_db.uad_union.business_name.like('%'+searchKeyword+'%')
elif searchCategory=='accepted':
accepted = 'T'
if searchKeyword.lower() == 'yes':
accepted = 'T'
elif searchKeyword.lower() == 'no':
accepted = 'F'
query &= directory_db.uad_union.accepted==accepted
elif searchCategory=='user_id':
try:
id = "%07d" % int(searchKeyword)
except:
id = 0
query &= directory_db.uad_union.user_id== str(id)
#from datetime import date
import datetime
directory_db.uad_union.added_date.represent = lambda added_date, r:
type(r.added_date) is datetime.datetime and
r.added_date.strftime('%Y.%m.%d') or '-'
directory_db.uad_union.is_listed.represent = lambda value,r:
value==False and SPAN(' ') \
or
SPAN(_class="ui-icon ui-icon-check left", _style="margin: -2px 4px 0px
0px;")
fields = [
directory_db.uad_union.id, # for the args in links, it should
be included in the fields
directory_db.uad_union.user_id,
directory_db.uad_union.business_name,
directory_db.uad_union.phone,
directory_db.uad_union.is_listed,
directory_db.uad_union.accepted,
directory_db.uad_union.added_date
]
# these two columns are only for arguments in links, so hide them
directory_db.uad_union.id.readable = False
default_sort_order = [directory_db.uad_union.business_name]
links = [
lambda row: A(T('Details'),_href=URL("union","details",args=[row.id]),
_class="gridlink-button details"),
lambda row: A(T('Edit'),_href=URL("union","edit_union",args=[row.id],
user_signature=False), _class="gridlink-button edit"),
lambda row: A(T('DELETE'),_href=URL("union","update_union",args=[
row.id], vars={'type':'D'}, user_signature=True), _class="gridlink-button
delete button-delete")
]
# make search form ==========================================
searchForm=FORM(
LABEL(T('Search')),
INPUT(_type='text', _name='searchKeyword', _id='search-keyword',
_value=searchKeyword, _style="width: 280px;"),
LABEL(T('By')),
SELECT(searchCategoryOptions, value=searchCategory, _id =
"search-category", _name="searchCategory"),
INPUT(_type='submit', _class='submit-button search',
_value=T('Search')),
_action=URL('union','index'), _name='searchForm', _method="GET"
)
grid = SQLFORM.grid(query, fields=fields,
links=links,
orderby=default_sort_order,
sortable=True,
# , sorter_icons=(' ^ ',' v ')
create=False,
csv=False,
details=False,
deletable=False,
editable=False,
# , selectable=True
searchable=False,
# , user_signature = True
maxtextlength=64,
paginate=defVal.PAGENATE,
# , showbuttontext=False
search_widget='default',
formname='myform'
)
# make a breadcrumbs
=======================================================
return dict(
pageTitle=make_page_title(T("Consumer Union"), pageIcon.UNION),
pageBreadCrumbs=make_page_breadcrumbs([T('Union')]),
page=page,
grid=grid,
#unionLocation=unionLocationForm,
location = location,
searchKeyword=searchKeyword,
searchCategory=searchCategory,
searchForm=searchForm,
)
On Fri, Jun 15, 2012 at 7:53 PM, Massimo Di Pierro <
[email protected]> wrote:
> can you show us some code?
>
>
> On Friday, 15 June 2012 15:42:02 UTC-5, Bruce Wade wrote:
>>
>> I have just found if I have a secondary database with no tables and I try
>> to use the database I get the following very unclear and very hard to debug
>> error:
>>
>> <class 'psycopg2.InternalError'> current transaction is aborted, commands
>> ignored until end of transaction block
>> TRACEBACK
>>
>> 1.
>> 2.
>> 3.
>> 4.
>> 5.
>> 6.
>> 7.
>> 8.
>> 9.
>> 10.
>> 11.
>> 12.
>> 13.
>> 14.
>> 15.
>> 16.
>> 17.
>> 18.
>> 19.
>> 20.
>> 21.
>> 22.
>> 23.
>> 24.
>> 25.
>>
>> Traceback (most recent call last):
>>
>> File "/home/developer/projects/yaw/**gluon/restricted.py", line 205, in
>> restricted
>>
>> exec ccode in environment
>> File
>> "/home/developer/projects/yaw/**applications/advertisement/**controllers/manage_customers.**py"
>>
>> <https://ad.youadworld.com/admin/edit/advertisement/controllers/manage_customers.py>,
>> line 600, in <module>
>>
>> File "/home/developer/projects/yaw/**gluon/globals.py", line 173, in
>> <lambda>
>>
>> self._caller = lambda f: f()
>>
>> File "/home/developer/projects/yaw/**gluon/tools.py", line 2575, in f
>>
>> return action(*a, **b)
>>
>> File
>> "/home/developer/projects/yaw/**applications/advertisement/**controllers/manage_customers.**py"
>>
>> <https://ad.youadworld.com/admin/edit/advertisement/controllers/manage_customers.py>,
>> line 147, in index
>>
>> formname='myform'
>> File "/home/developer/projects/yaw/**gluon/sqlhtml.py", line 1769, in grid
>>
>> rows =
>> dbset.select(left=left,orderby**=orderby,limitby=limitby,*tabl**e_fields)
>>
>> File "/home/developer/projects/yaw/**gluon/dal.py", line 7578, in select
>>
>> return adapter.select(self.query,fiel**ds,attributes)
>>
>> File "/home/developer/projects/yaw/**gluon/dal.py", line 1315, in select
>>
>> rows = response(sql)
>>
>> File "/home/developer/projects/yaw/**gluon/dal.py", line 1305, in response
>>
>> self.execute(sql)
>>
>> File "/home/developer/projects/yaw/**gluon/dal.py", line 1392, in execute
>>
>> return self.log_execute(*a, **b)
>>
>> File "/home/developer/projects/yaw/**gluon/dal.py", line 1386, in
>> log_execute
>>
>> ret = self.cursor.execute(*a, **b)
>> InternalError: current transaction is aborted, commands ignored until end of
>> transaction block
>>
>> --
>> --
>> Regards,
>> Bruce Wade
>> http://ca.linkedin.com/in/**brucelwade<http://ca.linkedin.com/in/brucelwade>
>> http://www.wadecybertech.com
>> http://www.fittraineronline.**com <http://www.fittraineronline.com> -
>> Fitness Personal Trainers Online
>> http://www.warplydesigned.com
>>
>>
--
--
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.fittraineronline.com - Fitness Personal Trainers Online
http://www.warplydesigned.com