I pasted some code to better explain my approach: http://pastebin.com/MS3y6sNQ
Advantages of ajax=false for me is passing vars of current request to all LOADed components. On 2 июл, 20:21, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > Can you explain to me why you prefer ajax=False to ajax=True? What > advantages do you expect? > > On Jul 2, 1:28 am, LightOfMooN <vladsale...@yandex.ru> wrote: > > > > > > > > > ajax=False is very important for me, so, I like 1.96 more than 1.97 :) > > I use it at most interactive components, that can be displayed on the > > all pages of site. > > > Just one example: > > > def voting_viewlet(): > > if not session.has_key('finished_votings'): > > session.finished_votings = {} > > if request.vars.get('vote', None): > > active_voting = > > db((db.voting.id==session['active_voting'])&(db.voting.status=='opened')).s > > elect().first() > > if active_voting and active_voting.id not in > > session.get('finished_votings', []): > > answers = > > db(db.voting_answers.voting_id==active_voting.id).select() > > show_results = False > > if active_voting.multi: > > answerlist = [] > > tmp = makelist(request.vars.answer) > > for i in tmp: > > answerlist.append(int(i)) > > valide_answers = list(set(get_ids(answers)) & > > set(answerlist)) > > if valide_answers: > > > db(db.voting_answers.id.belongs(valide_answers)).update(count=db.voting_ans > > wers.count > > +1) > > try: > > > session['finished_votings'].append(active_voting.id) > > except: > > session['finished_votings']=[active_voting.id] > > show_results = True > > else: > > if request.vars.answer: > > answer = int(request.vars.answer) > > if answer in get_ids(answers): > > > db(db.voting_answers.id==answer).update(count=db.voting_answers.count > > +1) > > try: > > > session['finished_votings'].append(active_voting.id) > > except: > > > session['finished_votings']=[active_voting.id] > > show_results = True > > if show_results: > > voting = > > db(db.voting.id==active_voting.id).select().first() or > > redirect(URL('default','index')) > > answers = > > db(db.voting_answers.voting_id==voting.id).select(orderby=~db.voting_answer > > s.count) > > count = 0 > > if answers: > > max = answers.first().count > > for answer in answers: > > count += answer.count > > for answer in answers: > > if count > 0: > > answer.percent = > > int(float(answer.count)*100/count) > > answer.width = int(float(answer.count)*100/ > > max) > > answer.color = getColor() > > else: > > answer.percent = 0 > > answer.width = 0 > > answer.color = getColor() > > return response.render('voting/ > > voting_viewlet_results.html', dict(voting=voting, answers=answers, > > count=count)) > > > votings = db(db.voting.status=='opened').select() > > finished_votings = session.get('finished_votings',[]) > > unfinished_votings = [] > > for voting in votings: > > if voting.id not in finished_votings: > > unfinished_votings.append(voting) > > if unfinished_votings: > > active_voting = unfinished_votings[random.randint(0, > > len(unfinished_votings)-1)] > > session['active_voting'] = active_voting.id > > else: > > active_voting = None > > session['active_voting'] = None > > > if active_voting: > > answers = > > db(db.voting_answers.voting_id==active_voting.id).select(orderby=db.voting_ > > answers.id) > > else: > > answers = [] > > > return dict(active_voting=active_voting, answers=answers) > > > On 2 июл, 04:51, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > > > > There are logic problems with ajax=False. Just use ajax=True. I am not > > > sure ajax=False should be an option al all. > > > > On Jul 1, 11:45 am, LightOfMooN <vladsale...@yandex.ru> wrote: > > > > > Thx, but I just disabled some components until the new stable version > > > > of webpy :) > > > > > On 1 июл, 21:29, Anthony <abasta...@gmail.com> wrote: > > > > > > That problem has been fixed in trunk, but looks like another problem > > > > > may > > > > > have been introduced. Try downloading trunk revision d4c2d8d15bb1 -- > > > > > that > > > > > fixes the request.vars problem, but comes before the > > > > > copy.copy(request) > > > > > problem was introduced. Actually, maybe you could try the latest > > > > > revision in > > > > > trunk and see if the copy.copy(request) causes the same problem for > > > > > you as > > > > > it has for pbreit -- that might help diagnose the problem. > > > > > > Anthony > > > > > > On Friday, July 1, 2011 10:57:13 AM UTC-4, LightOfMooN wrote: > > > > > > so, request has no vars storage > > > > > > > On 1 июл, 20:53, LightOfMooN <vlads...@yandex.ru> wrote: > > > > > > > def voting_viewlet(): > > > > > > > return dict() > > > > > > > > works fine > > > > > > > > But if I try to check request.vars, it crashes: > > > > > > > > def voting_viewlet(): > > > > > > > if request.vars.vote: > > > > > > > pass > > > > > > > return dict() > > > > > > > > rises an error > > > > > > > > On 1 июл, 20:46, LightOfMooN <vlads...@yandex.ru> wrote: > > > > > > > > > Hello, just updated web2py to 1.97.1 and one of my sites > > > > > > > > crashed with > > > > > > > > the same problem: > > > > > > > > {{=LOAD('voting', 'voting_viewlet', ajax=False)[0][0]}} > > > > > > > > too bad > > > > > > > > > On 1 июл, 01:10, pbreit <pbreit...@gmail.com> wrote: > > > > > > > > > > Any ideas on this one? Has anyone else had problems with > > > > > > LOAD(ajax=False) in > > > > > > > > > trunk? I tried switching it to deepcopy and got same error. I > > > > > > > > > also > > > > > > tried > > > > > > > > > putting it in a try/except but could not find anything. Could > > > > > > > > > my > > > > > > request > > > > > > > > > have something funky in it?