Exemplo n.º 1
0
 def render(self, context):
     if not self.var_args or not self.var_asname:
         return ''
     if isinstance( self.var_args, list ):
         args =[]
         for attr in self.var_args:
             num = retrieve_value ( attr, context, 0 )
             try:
                 num = int(num)
             except:
                 num = 0
             args += [ num ]
         try:
             ret = number_intervals( *args )
         except:
             raise template.TemplateSyntaxError, \
                     'Wrong Arguments for intervals: %s' % ','.join( args )
     else:
         kwargs = {}
         args = args_split_list( self.var_args, single_no_list = True )
         for k, value in args.iteritems():
             try:
                 num = int( retrieve_value( value, context, 0 ) )
             except:
                 num = 0
             kwargs[k] = num
         try:
             ret = number_intervals(**kwargs)
         except:
             raise template.TemplateSyntaxError, \
                 'Wrong Arguments for intervals (keybased): %s' % kwargs                
     context[self.var_asname] = ret
     return ''
Exemplo n.º 2
0
 def render(self, context):
     # try to get "request"
     gets = None
     try:
         req = template.Variable("request").resolve(context)
         gets = req.GET
     except:
         try:
             gets = template.Variable("GET").resolve(context)
         except:
             raise
     
     args = args_split_list( self.var_args, single_no_list = True )
     
     
     real_gets = {}
     if gets and 'fresh' not in self.opts:
         for getkey in gets.keys():
             real_gets[str(getkey)] = gets[getkey]
     gets = real_gets
     
     for k in args.keys():
         if k.startswith('!'):
             if k[1:] in gets.keys():
                 del gets[k[1:]]
             continue
         elif k.startswith('?'):
             if k[1:] not in gets.keys():
                 continue
             gets[k[1:]] = retrieve_values( args[k], context, True )
         else:
             gets[ k ] = retrieve_values( args[k], context, True )
     
     # @todo URIENCODE.
     gets_str = ''
     for get in gets.keys():
         if not gets_str:
             if gets[get]:
                 gets_str = '?%s=%s' % (get, gets[get])
             else:
                 gets_str = '?%s=' % get
         else:
             if gets[get]:
                 gets_str += '&%s=%s' % (get, gets[get])
             else:
                 gets_str += '&%s=' % get
     if '?' in self.opts: 
         if gets_str == '':
             gets_str = '?'
         else:
             gets_str = gets_str + '&'
     if 'plain' in self.opts:
         if gets_str.startswith('?') or gets_str.startswith('&'):
             return gets_str[1:]
     return gets_str
Exemplo n.º 3
0
 def render(self, context):
     if not self.args or not self.name or not self.list_object:
         raise template.TemplateSyntaxError, "You need arguments for pagination."
         return ''
     list_object = retrieve_value( self.list_object, context, None )
     if list_object is None:
         raise template.TemplateSyntaxError, "No List object to paginate."
     kwargs = {}
     args = args_split_list( self.args, single_no_list = True )
     for k, value in args.iteritems():
         try:
             num = int( retrieve_value( value, context, 0 ) )
         except:
             num = 0
         kwargs[k] = num
     try:
         ret = Pagination( list_object, **kwargs )
     except Exception, e:
         print e
         raise template.TemplateSyntaxError, \
                 'Wrong Arguments for intervals (keybased): %s (nested exception: %s)' % (kwargs, e)