from django import template
from django.template import Library
from django.template import RequestContext
from django.template import resolve_variable
GOOGLE_MAPS_API_KEY = {
"site1":"XXXXXAApNC8VraKxjnpTrC4pax3IRQTfsoMw3qz_e-LauZzPBIws5p_nhSKlQQunTrdkST45GbLxANehi-oSQ",
"site2":"FFSDFGSDFGSDFGSDFGrC4pax3IRSA7oaebcwS_GFScocy27dna4926BSle32YWjKmaH2Q-oFoR7xr_lzKAQ",
"site3":"ABQIAAAAXXXXXXXXXnpTrC4pax3IRTjlGRJ-JcA4ENdYSxSTUELqnaldxSXtgc7J9ZfVENFwQjXVhQX0f824A",
}
CURRENT_SITE = "site3"
register = Library()
INCLUDE_TEMPLATE = """
""" % (GOOGLE_MAPS_API_KEY [ CURRENT_SITE ] , )
BASIC_TEMPLATE = """
"""
# {% gmap name:mimapa width:300 height:300 latitude:x longitude:y zoom:20 view:hybrid %} Message for a marker at that point {% endgmap %}
class GMapNode (template.Node):
def __init__(self, params, nodelist):
self.params = params
self.nodelist = nodelist
def render (self, context):
for k,v in self.params.items():
try:
self.params[k] = resolve_variable(v, context)
except:
pass
if k == "view":
if v=="satellite":
v = 1
elif v=="map":
v = 0
else:
v = 2
self.params[k] = v
self.params["message"] = self.nodelist.render(context).replace("\n", "
")
return BASIC_TEMPLATE % (self.params['name'], self.params['width'], self.params['height'], self.params['name'], self.params['name'], self.params['latitude'], self.params['longitude'], self.params['zoom'], self.params['view'], self.params['message'])
def do_gmap(parser, token):
items = token.split_contents()
nodelist = parser.parse(('endgmap',))
parser.delete_first_token()
#Default values
parameters={
'name' : "default",
'width' : "300",
'height' : "300",
'latitude' : "33",
'longitude' : "-3",
'zoom' : "15",
'view' : "hybrid", # map, satellite, hybrid
'message' : "No message",
}
for item in items[1:]:
param, value = item.split(":")
param = param.strip()
value = value.strip()
if parameters.has_key(param):
if value[0]=="\"":
value = value[1:-1]
parameters[param] = value
return GMapNode(parameters, nodelist)
class GMapScriptNode (template.Node):
def __init__(self):
pass
def render (self, context):
return INCLUDE_TEMPLATE
def do_gmap_script(parser, token):
try:
tag_name = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError("La etiqueta no requiere argumentos" % token.contents[0])
return GMapScriptNode()
register.tag('gmap', do_gmap)
register.tag('gmap-script', do_gmap_script)