- Timestamp:
- 01/28/11 16:28:46 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sara_cmt/sara_cmt/cluster/templatetags/ramonb_extras.py
r12445 r12446 32 32 parser.delete_first_token() 33 33 return NoBlankLinesNode(nodelist) 34 35 @stringfilter 36 def arpanize(value): 37 ip_blocks = value.split('.') 38 39 reverse_block = [ ip_blocks[2], ip_blocks[1], ip_blocks[0], 'in-addr.arpa' ] 40 41 return string.join( reverse_block, '.' ) 42 43 register.filter( 'arpanize', arpanize ) 34 44 35 45 @stringfilter … … 154 164 mypath_str = pathvar.resolve(context) 155 165 except template.VariableDoesNotExist: 156 raise template.TemplateSyntaxError, '%r tag argument 1: not an variable %r' %( tag, path_str ) 166 #raise template.TemplateSyntaxError, '%r tag argument 1: not an variable %r' %( tag, path_str ) 167 pass 157 168 158 169 # RB: render template between store tags … … 194 205 195 206 from django.db.models import get_model 207 208 @register.tag(name='getbasenets') 209 def do_getbasenets(parser, token): 210 211 try: 212 tag, network_name, kw_as, varname = token.split_contents() 213 except ValueError: 214 raise template.TemplateSyntaxError, '%r tag requires exactly 4 arguments' % tag 215 216 return getBaseNets( varname, network_name ) 217 218 class getBaseNets(template.Node): 219 220 """ 221 Get list of basenets in a network (name) 222 223 Usage: {% getbasenets <network name> as <listname> %} 224 """ 225 226 def __init__(self, varname, network_name ): 227 228 self.varname = varname 229 self.network_name = network_name.strip("'").strip('"').__str__() 230 self.basenets = [ ] 231 232 def render(self, context): 233 234 if (self.network_name[0] == self.network_name[-1] and self.network_name[0] in ('"', "'")): 235 236 network_str = str( self.network_name.strip("'").strip('"') ) 237 else: 238 # RB: Not quoted: must be an variable: attempt to resolve to value 239 try: 240 networkvar = template.Variable( str(self.network_name) ) 241 network_str = networkvar.resolve(context) 242 except template.VariableDoesNotExist: 243 #raise template.TemplateSyntaxError, '%r tag argument 1: not an variable %r' %( tag, path_str ) 244 pass 245 246 from IPy import IP 247 248 print network_str 249 250 network_units = get_model('cluster', 'Network').objects.filter( name=str(network_str) ) 251 252 print len( network_units ) 253 254 for n in network_units: 255 256 print n.netaddress 257 for ipnum in IP( n.cidr ): 258 if not base_net( ipnum ) in self.basenets: 259 self.basenets.append( str( base_net( ipnum ) ) ) 260 261 context[ self.varname ] = self.basenets 262 print self.basenets 263 self.basenets = [ ] 264 return '' 265 196 266 197 267 @register.tag(name='getracks') … … 249 319 if definition[-2] != 'as': 250 320 raise template.TemplateSyntaxError, "second last argument of %r tag has to be 'as'" % tag 321 251 322 entity = definition[1] 252 323 query = definition[-3] 253 #attr,val = query.split('=')254 324 key = definition[-1] 255 #queryset = get_model('cluster', entity).objects.filter(**{attr:val}) 256 #return ObjectNode(definition[-1], definition[1]) 325 257 326 return QuerySetNode(entity, query, key) 258 259 327 260 328 class QuerySetNode(template.Node): … … 265 333 def __init__(self, entity, query, key): 266 334 self.entity = entity 267 self.query = query .strip("'").strip('"').__str__()335 self.query = query 268 336 self.key = key 269 337 270 338 def render(self, context): 271 attr, val = self.query.split('=') 339 340 if (self.query[0] == self.query[-1] and self.query[0] in ('"', "'")): 341 342 myquery_str = str( self.query.strip("'").strip('"') ) 343 else: 344 # RB: Not quoted: must be an variable: attempt to resolve to value 345 try: 346 queryvar = template.Variable( str(self.query) ) 347 myquery_str = queryvar.resolve(context) 348 except template.VariableDoesNotExist: 349 #raise template.TemplateSyntaxError, '%r tag argument 1: not an variable %r' %( tag, path_str ) 350 pass 351 352 attr, val = myquery_str.split('=') 272 353 queryset = get_model('cluster', self.entity).objects.filter(**{attr:val}) 273 354 if len(queryset) == 1:
Note: See TracChangeset
for help on using the changeset viewer.