Hello, Please excuse me in advance if this post is long winded. I have the following nagging issue for which I have found a work around, but wanted a better solution.
I am using jQuery to populate tabs with some data, such as news and jobs posts, as can be seen at http://uk.expert.travel In my application, I have the following structure (only partially listed): $ tree -L 2 . |-- expert_travel.py |-- ui | `-- ui.tabs.js ... `-- utils.py #expert_travel.py from utils import t1, t2, t3, t4 ... #################################################################### # News - List #################################################################### def list_news(self, context): namespace = {} namespace['batch'] = '' #Search the catalogue, list all news items in company ... # Set batch informations [t1] batch_start = int(context.get_form_value('t1', default=0)) batch_size = 5 batch_total = len(news_items) batch_fin = batch_start + batch_size if batch_fin > batch_total: batch_fin = batch_total news_items = news_items[batch_start:batch_fin] # Namespace if news_items: msgs = (u'There is one news item.', u'There are ${n} news items.') [t1] news_batch = t1(context.uri, batch_start, batch_size, batch_total, msgs=msgs) msg = None else: news_batch = None msg = u'Currently there is no news.' #################################################################### # List jobs list_jobs__label__ = u'List jobs' list_jobs__access__ = True def list_jobs(self, context): ... # Set batch informations [t2] batch_start = int(context.get_form_value('t2', default=0)) batch_size = 5 batch_total = len(jobs) batch_fin = batch_start + batch_size if batch_fin > batch_total: batch_fin = batch_total jobs = jobs[batch_start:batch_fin] # Namespace if jobs: msgs = (u'There is one job.', u'There are ${n} jobs.') [t2] job_batch = t2(context.uri, batch_start, batch_size, batch_total, msgs=msgs) msg = None else: job_table = None job_batch = None msg = u'Sorry but there are no jobs' ... #### #utils.py def t1(uri, start, size, total, gettext=Handler.gettext, msgs=(u"There is 1 object.", u"There are ${n} objects.")): # Plural forms if total == 1: msg1 = gettext(msgs[0]) else: msg1 = gettext(msgs[1]) msg1 = Template(msg1).substitute(n=total) msg1 = msg1.encode('utf-8') # Calculate end end = min(start + size, total) # Previous previous = None if start > 0: previous = max(start - size, 0) previous = str(previous) [t1] previous = uri.replace(t1=previous) previous = str(previous) previous = XMLAttribute.encode(previous) previous = '<a href="%s" title="%s"><<</a>' \ % (previous, gettext(u'Previous')) # Next next = None if end < total: next = str(end) [t1] next = uri.replace(t1=next) next = str(next) next = XMLAttribute.encode(next) next = '<a href="%s" title="%s">>></a>' \ % (next, gettext(u'Next')) # Output if previous is None and next is None: msg = msg1 else: # View more if previous is None: link = next elif next is None: link = previous else: link = '%s %s' % (previous, next) msg2 = gettext(u"View from ${start} to ${end} (${link}):") msg2 = Template(msg2) msg2 = msg2.substitute(start=(start+1), end=end, link=link) msg2 = msg2.encode('utf-8') msg = '%s %s' % (msg1, msg2) # Wrap around a paragraph return Parser('<p class="batchcontrol">%s</p>' % msg, namespaces) #Second TAB def t2(uri, start, size, total, gettext=Handler.gettext, msgs=(u"There is 1 object.", u"There are ${n} objects.")): # Plural forms ... ### I would like to alter this batch control so that I don't have to create a new method everytime I need a new tab. For example, I would like to change t1, t2 ... t[n] depending on the tab I am at. You can see it in action at http://uk.expert.travel/;view If you click on the [Jobs] tab, there are 6 jobs, if you then click on the 'There are 6 jobs. View from 1 to 5 (>>):' you will get a list of the last post. Note the URI http://uk.expert.travel/;view?t2=5 If I only use one global method, the problem would be that when I clicked on the News tab, I will get no items displayed as can be seen here: http://uk.expert.travel/companies/abakuc/;view I hope this makes sense ;) Any advice would be much appreciated. Cheers Norman _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor