massimo thanks for the response. It is good to see someone else either has insomnia or likes to get up way to early. I swapped out the code from the tagging plugin with the code form the wiki, but still have the same problem. In essence I cannot use the plugin as is because of the separate community databases (a design decision that provides clear data partitioning and performance, at the cost of all these funky issues).
However, now that I removed the 3 lines of code in the top of the tagging controller, the init function is getting invoked. This is pretty painful sledding - what do you use for debugging? I would love some type of debugger with breakpoints, etc. any ideas on why the tagging view is never getting invoked and I get 'loading.." On Aug 17, 4:35 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > Please use plugin_wiki and > > {{=plugin_wiki.widget('tagging',...._}} > > instead. plugin_tagging as a separate piece will no longer be > supported unless somebody adopts it. > > On Aug 16, 7:32 pm, "david.waldrop" <david.wald...@gmail.com> wrote: > > > > > I am having a problem with some customization of the tagging plugin. > > I downloaded and installed in a test app and all is well. In my > > application I need to manipulate the data tables. More specifically I > > need one set of tagging tables (t tables) for each of my partitioned > > databases. This required me to customize it a bit. It is no longer a > > plugin, but the models and views and controllers are directly in my > > app. The problem is I get "loading..." whenever I try and invoke > > {{=tagging('meeting',43}} in my applications index view (my way of > > testing/debugging this). While I am not 100% sure I think the calling > > sequence initiated from the previous statement is: > > > 1) call to tagging defined in the model - tagging.py > > > def tagging(table_name=None,record_id=0): > > """ > > You can tag a record of a table by embedding this:: > > {{=tag('mytable',45)}} > > where 'mytable' is a table name and 45 is a record id. > > It will display a tagging widget. > > """ > > print ' ' > > print 'in model - tagging' > > print table_name > > print record_id > > print ' ' > > return > > LOAD('tagging','index',args=(table_name,record_id),ajax=True) > > > which in fact does print the debug statements. I am unsure if I need > > the LOAD statement and wonder if this is residual form the original > > plugin. > > > 2) I think that is what is supposed to happen is the LOAD statement > > invokes the "index" function in the "tagging controller" passing in > > the requisite parameters. This is not happening as the debug > > statements never print. Also I am not sure when (or if) the 3 lines > > of code after the import are getting executed. I assume this is > > relate dto the LOAD functiion. > > > Controller Code follows: > > > import re > > > mtgdb = getmtgdb() > > db_tag = mtgdb.tagging_tag > > db_link = mtgdb.tagging_link > > > def index(): > > > print '----------------------in tagging' > > print request.args(0) > > print request.args(1) > > print ' ' > > > table_name=request.args(0) > > record_id=request.args(1) > > if not auth.user_id: > > return '' > > if table_name!='0' and not (table_name in mtgdb.tables and > > record_id): > > raise HTTP(404) > > form = SQLFORM.factory(Field('tag_name')) > > if request.vars.tag_name: > > for item in request.vars.tag_name.split(','): > > tag_name = re.compile('\s+').sub(' ',item).strip() > > if not tag_name[-1:]=='/': tag_name+='/' > > tag_exists = tag = > > mtgdb(db_tag.name==tag_name).select().first() > > if not tag_exists: > > tag = db_tag.insert(name=tag_name, links=1) > > link = mtgdb(db_link.tag==tag.id)\ > > (db_link.table_name==table_name)\ > > (db_link.record_id==record_id).select().first() > > if not link: > > > db_link.insert(tag=tag.id,table_name=table_name,record_id=record_id) > > if tag_exists: > > tag.update_record(links=tag.links+1) > > for key in request.vars: > > if key[:6]=='delete': > > link_id=key[6:] > > link=db_link[link_id] > > del db_link[link_id] > > db_tag[link.tag] = dict(links=db_tag[link.tag].links-1) > > links = mtgdb(db_link.table_name==table_name)\ > > (db_link.record_id==record_id).select()\ > > .sort(lambda row: row.tag.name.upper()) > > return dict(links=links, form=form) > > > def tag_cloud(): > > tags = mtgdb(db_tag.links>0).select() > > if tags: > > mc = max([tag.links for tag in tags]) > > return DIV(_class='tagging_tag_cloud', > > *[SPAN(tag.name[:-1]+' ',_style='font-size:%sem' \ > > % (0.8+1.0*tag.links/mc)) for tag in tags]) > > > View Code - tagging.html: > > > <div class="tagging"> > > {{=form.custom.begin}} > > {{for link in links:}} > > <span>{{=link.tag.name[:-1]}}({{=link.tag.links}})</span> > > <input type="checkbox" name="delete{{=link.id}}" /> > > {{pass}} > > {{if links:}}<input type="submit" value="del"/>{{pass}} > > <input name="tag_name" value="" size="5" /> > > <input type="submit" value="tag" /> > > {{=form.custom.end}} > > </div> > > > Thanks in advance . /david