Hello all, I have an issue when using web2py-haystack and I hope somebody here will be able to help me. I understand that this plugin is an experimental plugin, but I am using this plugin in its simplest form (without an external search backend) and unmodified.
The issue appears when I attempt to modify a record once it has been inserted and indexed (through appadmin and using sqlforms in controllers). Upon modifying the records, the index appears updated with the new data but the actual records is not updated. The schema is not a complex schema and I can replicate this using a simplified scheme with a single table and three fields of which all are indexed. Attached is the schema I have been able to replicate this issue with, and both the table, updated table (1), index and updated index (1). Any help or direction with debugging this issue would be greatly appreciated! Version 2.7.2-stable+timestamp.2013.10.07.13.52.24 -- 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/groups/opt_out.
# -*- coding: utf-8 -*- ######################################################################### ## This scaffolding model makes your app work on Google App Engine too ## File is released under public domain and you can use without limitations ######################################################################### ## if SSL/HTTPS is properly configured and you want all HTTP requests to ## be redirected to HTTPS, uncomment the line below: # request.requires_https() if not request.env.web2py_runtime_gae: ## if NOT running on Google App Engine use SQLite or other DB db = DAL('sqlite://storage2.sqlite',pool_size=1,check_reserved=['all']) else: ## connect to Google BigTable (optional 'google:datastore://namespace') db = DAL('google:datastore') ## store sessions and tickets there session.connect(request, response, db=db) ## or store session in Memcache, Redis, etc. ## from gluon.contrib.memdb import MEMDB ## from google.appengine.api.memcache import Client ## session.connect(request, response, db = MEMDB(Client())) ## by default give a view/generic.extension to all actions from localhost ## none otherwise. a pattern can be 'controller/function.extension' response.generic_patterns = ['*'] if request.is_local else [] ## (optional) optimize handling of static files # response.optimize_css = 'concat,minify,inline' # response.optimize_js = 'concat,minify,inline' ######################################################################### ## Here is sample code if you need for ## - email capabilities ## - authentication (registration, login, logout, ... ) ## - authorization (role based authorization) ## - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss) ## - old style crud actions ## (more options discussed in gluon/tools.py) ######################################################################### from gluon.tools import Auth, Crud, Service, PluginManager, prettydate auth = Auth(db) crud, service, plugins = Crud(db), Service(), PluginManager() ## create all tables needed by auth if not custom tables auth.define_tables(username=False, signature=False) ## configure email mail = auth.settings.mailer mail.settings.server = 'logging' or 'smtp.gmail.com:587' mail.settings.sender = 'y...@gmail.com' mail.settings.login = 'username:password' ## configure auth policy auth.settings.registration_requires_verification = False auth.settings.registration_requires_approval = False auth.settings.reset_password_requires_verification = True ## if you need to use OpenID, Facebook, MySpace, Twitter, Linkedin, etc. ## register with janrain.com, write your domain:api_key in private/janrain.key from gluon.contrib.login_methods.rpx_account import use_janrain use_janrain(auth, filename='private/janrain.key') ######################################################################### ## Define your tables below (or better in another model file) for example ## ## >>> db.define_table('mytable',Field('myfield','string')) ## ## Fields can be 'string','text','password','integer','double','boolean' ## 'date','time','datetime','blob','upload', 'reference TABLENAME' ## There is an implicit 'id integer autoincrement' field ## Consult manual for more options, validators, etc. ## ## More API examples for controllers: ## ## >>> db.mytable.insert(myfield='value') ## >>> rows=db(db.mytable.myfield=='value').select(db.mytable.ALL) ## >>> for row in rows: print row.id, row.myfield ######################################################################### ## after defining tables, uncomment below to enable auditing # auth.enable_record_versioning(db) db.define_table('test', Field('name'), Field('blurb', 'text'), Field('body', 'text'), format='%(name)s') from plugin_haystack import Haystack index = Haystack(db.test) index.indexes('name','blurb','body')
haystack_test.id,haystack_test.fieldname,haystack_test.keyword,haystack_test.record_id 1,name,this,1 2,name,test,1 4,blurb,this,1 5,blurb,test,1 7,body,this,1 8,body,test,1 10,name,name1,1 11,blurb,blurb1,1 12,body,body1,1
haystack_test.id,haystack_test.fieldname,haystack_test.keyword,haystack_test.record_id 1,name,this,1 2,name,test,1 3,name,name,1 4,blurb,this,1 5,blurb,test,1 6,blurb,blurb,1 7,body,this,1 8,body,test,1 9,body,body,1
test.id,test.name,test.blurb,test.body 1,This is a test name,This is a test blurb,This is a test body
test.id,test.name,test.blurb,test.body 1,This is a test name,This is a test blurb,This is a test body