gora_mohanty

Django olwidget MultiInfoLayer

Sep 2nd, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.54 KB | None | 0 0
  1. from collections import Iterable
  2.  
  3. from django import forms
  4. from django.conf import settings
  5. from django.template.loader import render_to_string
  6. from django.utils import simplejson
  7. from django.utils.encoding import smart_str
  8. from django.utils.safestring import mark_safe
  9.  
  10. from olwidget import utils
  11. from olwidget.widgets import InfoLayer
  12.  
  13. class MultiInfoLayer(InfoLayer):
  14.     def _prepare_single_layer(self, layer):
  15.         wkt_array = []
  16.         for geom, attr in layer:
  17.             wkt = utils.get_ewkt(geom)
  18.             if isinstance(attr, dict):
  19.                 wkt_array.append( [wkt, utils.translate_options(attr)] )
  20.             else:
  21.                 wkt_array.append( [wkt, attr] )
  22.         return wkt_array
  23.  
  24.     def prepare(self, name, value, attrs=None):
  25.         wkt_array = []
  26.         if isinstance( self.info[0], Iterable ):
  27.             for layer in self.info:
  28.                 wkt_array += self._prepare_single_layer( layer )
  29.         else:
  30.             wkt_array += self._prepare_single_layer( self.info )
  31.         info_json = simplejson.dumps(wkt_array)
  32.  
  33.         if name and not self.options.has_key('name'):
  34.             self.options['name'] = forms.forms.pretty_name(name)
  35.  
  36.         context = {
  37.             'info_array': info_json,
  38.             'options': simplejson.dumps(utils.translate_options(self.options)),
  39.             'STATIC_URL': settings.STATIC_URL,
  40.         }
  41.         context.update(self.get_extra_context())
  42.         js = mark_safe(render_to_string(self.template, context))
  43.         html = ""
  44.         return (js, html)
Advertisement
Add Comment
Please, Sign In to add comment