No. Its all good. I got it figured out. Sorry about that. On Monday, May 18, 2015 at 10:09:21 AM UTC-4, Richard wrote: > > Ron, are you saying that there is some kind of malware in dummy app? > > Richard > > On Fri, May 15, 2015 at 11:47 PM, Ron Chatterjee <achatte...@gmail.com > <javascript:>> wrote: > >> Caveat to that, is there a way to have to SQLFORM top and bottom like the >> picture attached? >> >> Its more like a django kind of admin panel feature. But in web2py, can we >> have the post and comment (two tables), embedded so when someone click on >> the blue "plus" sign a comment box shows up and people insert the comment >> on each post. Its one to many relationship (like attached picture). >> >> If someone really trying to know what I mean by that, here is the class >> definition generated for django. >> >> >> class Post(models.Model): >> created_at = models.DateTimeField(auto_now_add=True, db_index=True) >> title = models.CharField(max_length=255) >> slug = models.SlugField() >> body = models.TextField() >> comments = models.ManyToManyField('Comment') >> >> def get_absolute_url(self): >> return reverse('post', kwargs={"slug": self.slug}) >> >> def __unicode__(self): >> return self.title >> >> class Meta: >> ordering = ["-created_at"] >> >> >> class Comment(models.Model): >> created_at = models.DateTimeField(auto_now_add=True) >> body = models.TextField(verbose_name="Comment") >> author = models.CharField(verbose_name="Name", max_length=255) >> >> >> By the way, this app thats call "web2py.app.dummy.w2p", please be aware >> that it has some nasty nested stuff in it. Once I installed it was crawling >> all over desktop and wouldn't uninstall except from the DOS mode. Not fair. >> >> >> >> >> >> >> >> >> >> On Thursday, May 14, 2015 at 3:53:15 PM UTC-4, LoveWeb2py wrote: >> >>> No problem, Richard. Thank you for your help! >>> >>> On Thursday, May 14, 2015 at 11:45:28 AM UTC-4, Richard wrote: >>> >>> No time to hunt the issue with multiples loading... >>> >>> I guess it could come from not using the same web2py version... Or >>> because I made some change over app files which are binded to web2py >>> version /statis/js/web2py.js for instance... or views/web2py_ajax.html >>> >>> >>> You have at least an semi-working example... There is 2 issues that >>> remain : 1) The component load the whole site which he shouldn't (that may >>> be related to the second issue), 2) When you access the >>> http://hostname/appname/second_table_form/second_table there is a weird >>> issue with LOAD... >>> >>> I may have more time next week, but for now, I can't help you further... >>> >>> Richard >>> >>> >>> On Tue, May 12, 2015 at 11:11 AM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Repeating load might be because I extended the layout in the view for >>> the load. >>> >>> On Tuesday, May 12, 2015 at 10:22:41 AM UTC-4, Richard wrote: >>> >>> Almost there... I make it works, but there is something weird going on >>> related to component... I have to figure it out... But you were doing thing >>> the wrong way basically... add_function is for the main_table which >>> contains the city name... >>> >>> I will send you back the corrected app when I found the issue with the >>> repeating load... >>> >>> Richard >>> >>> On Mon, May 11, 2015 at 4:39 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> No rush, Richard. Thank you for your help I really appreciate it. >>> >>> On Monday, May 11, 2015 at 4:34:14 PM UTC-4, Richard wrote: >>> >>> I will try to review it ASAP... >>> >>> On Mon, May 11, 2015 at 4:30 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Here is my dummy app, Richard. >>> >>> >>> On Monday, May 11, 2015 at 3:50:20 PM UTC-4, Richard wrote: >>> >>> Did you make dummy app for testing it? >>> >>> Please attach it here and I have a look to your code... I can't help >>> much if I don't have a good idea of what you have done... >>> >>> new_exp_num=form.vars.exp_num >>> >>> This is something I left which should be adapted to your app... >>> form.vars.exp_num is the representation of the new inputed record... The >>> same field name you specify in the widget declaration for the field >>> attribute : db.table.representing_field, but that you get from the form >>> of the referenced table. >>> >>> Richard >>> >>> >>> On Mon, May 11, 2015 at 3:28 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Thanks haha. Just checking. Still not having much luck. I'm getting a >>> 500 error on the add function and can't figure out why >>> >>> when I try to edit my site I am getting an error for the "add function" >>> specified to add the >>> https://www.mywebsite.com/add_function/second_table_field >>> def add_function(): >>> """ >>> Modal form for adding element >>> """ >>> >>> >>> buttons = [TAG.button((I('', _class='icon-ok icon-large icon-white' >>> ), CAT(' '), STRONG(T('Add'))), >>> _type='submit', >>> _class='btn btn-small btn-primary', >>> _id='add_button_id', >>> _name='add_button', >>> )] >>> form = SQLFORM(db.table, buttons=buttons, formstyle=formstyle, >>> separator=separator) >>> response.js = '$(document).ready(function(){ >>> $(".input_wrapper").has(".error").addClass("inputError"); ' \ >>> '$(".w2p_fw").has(".error").addClass("control-group >>> error"); ' \ >>> '$(".w2p_fw").each(function(){ >>> $(this).find(".error_wrapper").appendTo(this); }); });' >>> response.js += '$(document).ready(function(){ >>> $("textarea").elastic(); });' >>> response.js += '$(document).ready(function () { >>> $("[rel=tooltip]").tooltip(); });' >>> if form.process(formname='add_form').accepted: >>> response.flash = T("Added") >>> target = request.args(0) >>> # close modal >>> response.js = '$("#{target}_modal-form").modal("hide");'.format( >>> target=target) >>> # update the select options >>> response.js += """$("#{target}").append( >>> "<option value='{new_id}'> >>> {new_id} >>> </option>");""".format(target=target, new_id= >>> form.vars.id) >>> # select newly added option >>> response.js += """$("#{target}").val("{new_exp_num}"); >>> >>> $('#{target}').keyup(); $('#{target}').blur(); >>> """.format(target=target, >>> >>> new_exp_num=form.vars.exp_num) >>> elif form.errors: >>> response.flash = '' >>> else: >>> response.flash = '' >>> return dict(form=form) >>> >>> Do I need to actually specify the db.table? From the looks of the class >>> I thought it would be defined on its own... am I wrong? >>> >>> Sorry for asking so many questions. I think this will be really helpful >>> when it's all finished. >>> >>> >>> >>> >>> On Monday, May 11, 2015 at 2:59:21 PM UTC-4, Richard wrote: >>> >>> The commented lines in the class was there because I recently refactor >>> it to make it use boostrap modal instead of jquery ui dialog as you may >>> understand carefully reading the code!! >>> >>> :-P >>> >>> Richard >>> >>> On Mon, May 11, 2015 at 2:40 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Are the commented lines necessary or was that for self reference? >>> >>> # js += '$("#%s_option_add_trigger"). >>> click(function() {' \ >>> # ' $("#%s_dialog-form").dialog("open");' \ >>> # ' return false;' \ >>> # ' }); ' % (my_select_id, my_select_id) >>> >>> >>> >>> On Thursday, May 7, 2015 at 9:33:28 AM UTC-4, Richard wrote: >>> >>> you need bootstrap 2.3.2 (not tested with BS3, but I am pretty sure it >>> is not working, too differents)... >>> >>> Did you try it with a recent web2py setup? I would suggest you try with >>> web2py 2.9.5 which is what I use actually and it works... >>> >>> Richard >>> >>> On Thu, May 7, 2015 at 9:20 AM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Another observation: >>> >>> All of this code: >>> >>> >>> >>> js += '$(function() {' \ >>> ' $("#%s_option_add_trigger").button({' \ >>> ' text: true,' \ >>> ' icons: {' \ >>> ' primary: "ui-icon-circle-plus"' \ >>> ' }' \ >>> ' });' \ >>> '});' % (my_select_id) >>> js += '$(function() { ' \ >>> ' $( "#%s_option_add_trigger" ).css("margin-left", >>> "+=5"); ' \ >>> '});' % (my_select_id) >>> js += >>> '$("#{modal_id}").appendTo("body");'.format(modal_id=my_select_id >>> + "_modal-form") >>> >>> >>> Get's commented out when it's rendered so it ends up looking like this >>> <!-- $(document).read(function() .... .appendTo("body");}); //--> >>> >>> Any idea why that could be happening and would that impact the button >>> showing the modal >>> >>> On Thursday, May 7, 2015 at 8:45:49 AM UTC-4, LoveWeb2py wrote: >>> >>> Hi Richard! >>> >>> I think I'm getting close. No more errors, and I applied the widget to >>> the field successfully. I see the + sign next to my field, but nothing >>> happens when I click it so I'm going over the javascript with a fine tooth >>> comb. Is there any additional .js or .css files I need to include? >>> >>> This is really looking promising! >>> >>> On Wednesday, May 6, 2015 at 12:42:34 PM UTC-4, Richard wrote: >>> >>> Let say the FK field is field2 : >>> >>> Field('field2','reference main_table', # Better syntax thand >>> "db.main_table" >>> widget=AutocompleteWidgetSelectOrAddOption( >>> request=request, >>> >>> field=db.main_table.field1, # which is you reprensting field >>> id_field= >>> db.main_table.id, >>> limitby=(0, 10), # how >>> much records you want in the dropbox >>> min_length=6, # when >>> you want the autocomplete pop in or how many caracters user have to entered >>> before the autocomplete kickin >>> form_title=T('Add new >>> title'), >>> controller="controler >>> name that contains the below function", >>> function="your add >>> function name", >>> button_text=T('Add new'), >>> placeholder=T('Start >>> typing...')) >>> >>> Richard >>> >>> On Wed, May 6, 2015 at 12:34 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Thank you, Richard. I think i'm getting closer. Could you show me an >>> example of how you apply this to a specific field in SQLFORM? >>> >>> Going back to my original model: >>> >>> db.define_table('main_table', >>> Field('field1','string'), >>> Field('field2','string'), >>> migrate=False) >>> >>> db.define_table('second_table', >>> Field('field1','db.main_table'), >>> Field('field2','db.main_table') >>> migrate=False) >>> >>> How could I integrate your widget with field 2 for a SQLFORM? >>> >>> >>> >>> >>> >>> >>> On Wednesday, May 6, 2015 at 9:40:02 AM UTC-4, Richard wrote: >>> >>> The id field and what field you want to show as a representation of the >>> id field of the referenced table... >>> >>> Start by putting the widget class in model file even if it not a good >>> thing to see if you can make it works... >>> >>> In the module I have these imports : >>> >>> from gluon.html import * >>> from gluon.sqlhtml import * >>> from gluon import current >>> from gluon.compileapp import LOAD >>> >>> >>> Which may not be related to the widget class... >>> >>> Richard >>> >>> >>> On Tue, May 5, 2015 at 4:28 PM, LoveWeb2py <atayl...@gmail.com> wrote: >>> >>> Hi Richard, >>> >>> I'm trying to get this setup, but am receiving an error self.url = >>> URL(args=request.args)\nNameError: global name \'URL\' is not defined\n'. >>> I'm wondering if this is because the gluon hasn't been imported yet. >>> >>> Also, could you ellaborate more on this? >>> >>> >>> field=db.table.representing_field, >>> >>> id_field=db.table.id_field, >>> >>> id_field should be the foreignkey table if I am not mistaking? >>> db.table.representing field, and db.table2.id_field (with foreign key) does >>> that sound right? >>> >>> >>> On Wednesday, April 29, 2015 at 10:04:35 AM UTC-4, Richard wrote: >>> >>> *# In a modules :* >>> >>> class AutocompleteWidgetSelectOrAddOption(object): >>> _class = 'string' >>> >>> def __init__(self, >>> request, >>> field, >>> id_field=None, >>> db=None, >>> orderby=None, >>> limitby=(0, 10), >>> keyword='_autocomplete_%(fieldname)s', >>> min_length=2, >>> # >>> ------------------------------------------------------------- >>> # From : SelectOrAddOption >>> controller=None, function=None, form_title=None, >>> button_text = None, dialog_width=1000, >>> # >>> ------------------------------------------------------------- >>> placeholder=None >>> ): >>> self.request = request >>> self.keyword = keyword % dict(fieldname=field.name) >>> self.db = db or field._db >>> self.orderby = orderby >>> self.limitby = limitby >>> self.min_length = min_length >>> self.fields = [field] >>> self.placeholder = placeholder >>> if id_field: >>> self.is_reference = True >>> self.fields.append(id_field) >>> else: >>> self.is_reference = False >>> if hasattr(request, 'application'): >>> self.url = URL(args=request.args) >>> self.callback() >>> else: >>> self.url = request >>> # >>> ---------------------------------------------------------------------- >>> # From : SelectOrAddOption >>> if form_title is None: >>> self.form_title = current.T('Add New') >>> else: >>> self.form_title = current.T(form_title) >>> if button_text is None: >>> self.button_text = current.T('Add') >>> else: >>> self.button_text = current.T(button_text) >>> self.dialog_width = dialog_width >>> >>> self.controller = controller >>> self.function = function >>> # >>> ---------------------------------------------------------------------- >>> >>> def callback(self): >>> if self.keyword in self.request.vars: >>> field = self.fields[0] >>> rows = >>> self.db(field.like(self.request.vars[self.keyword]+'%') >>> ).select(orderby=self.orderby, >>> limitby=self.limitby, *self.fields) >>> if rows: >>> if self.is_reference: >>> id_field = self.fields[1] >>> raise HTTP(200, SELECT(_id=self.keyword, >>> _class='autocomplete', >>> _size=len(rows), >>> _multiple=(len(rows) == 1), >>> *[OPTION(s[field.name], >>> _value=s[id_field.name], >>> _selected=(k == 0)) >>> for k, s in >>> enumerate(rows)]).xml()) >>> else: >>> raise HTTP(200, SELECT(_id=self.keyword, >>> _class='autocomplete', >>> _size=len(rows), >>> _multiple=(len(rows) == 1), >>> *[OPTION(s[field.name], >>> _selected=(k == 0)) >>> for k, s in >>> enumerate(rows)]).xml()) >>> else: >>> >>> raise HTTP(200, '') >>> >>> def __call__(self, field, value, **attributes): >>> # >>> ---------------------------------------------------------------------- >>> # From : SelectOrAddOption >>> my_select_id = '%s_%s' % (field._tablename, field.name) >>> # 'test_ph_eregistry_id' #select_widget.attributes.get('_id', >>> None) >>> >>> add_args = [my_select_id] >>> # create a div that will load the specified controller via ajax >>> # form_loader_div = DIV(LOAD(c=self.controller, f=self.function, >>> args=add_args, ajax=True), >>> # _id=my_select_id + "_dialog-form", >>> _title=self.form_title) >>> form_loader_div = DIV(DIV(BUTTON('x', _type='button', >>> _class='close', >>> **{'_data-dismiss': 'modal', >>> '_aria-hidden': 'true'}), >>> H3(self.form_title, >>> _id='myModalLabel'), _class='modal-header'), >>> DIV(LOAD(c=self.controller, >>> f=self.function, args=add_args, aj >>> >>> ... >> >> -- >> 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+un...@googlegroups.com <javascript:>. >> 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.