spatial template fixes
spatial template fixes

import urllib import urllib
import json import json
from pprint import pprint from pprint import pprint
import logging import logging
import ckan.logic as logic import ckan.logic as logic
import hashlib import hashlib
import threading import threading
from ckan.common import _, c, request, response from ckan.common import _, c, request, response
from pylons import config from pylons import config
  from webob.multidict import UnicodeMultiDict
  from paste.util.multidict import MultiDict
   
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
   
from ckan.controllers.api import ApiController from ckan.controllers.api import ApiController
   
class DGAApiController(ApiController): class DGAApiController(ApiController):
   
def _post_analytics(self,user,request_obj_type,request_function,request_id): def _post_analytics(self,user,request_obj_type,request_function,request_id):
if (config.get('googleanalytics.id') != None): if (config.get('googleanalytics.id') != None):
data = urllib.urlencode({ data = urllib.urlencode({
"v":1, "v":1,
"tid":config.get('googleanalytics.id'), "tid":config.get('googleanalytics.id'),
"cid":hashlib.md5(user).hexdigest(), "cid":hashlib.md5(user).hexdigest(),
"t":"event", "t":"event",
"dh":c.environ['HTTP_HOST'], "dh":c.environ['HTTP_HOST'],
"dp":c.environ['PATH_INFO'], "dp":c.environ['PATH_INFO'],
"dr":c.environ.get('HTTP_REFERER',''), "dr":c.environ.get('HTTP_REFERER',''),
"ec":"CKAN API Request", "ec":"CKAN API Request",
"ea":request_obj_type+request_function, "ea":request_obj_type+request_function,
"el":request_id, "el":request_id,
}) })
log.debug("Sending API Analytics Data: "+data) log.debug("Sending API Analytics Data: "+data)
# send analytics asynchronously # send analytics asynchronously
threading.Thread(target=urllib.urlopen,args=("http://www.google-analytics.com/collect", data)).start() threading.Thread(target=urllib.urlopen,args=("http://www.google-analytics.com/collect", data)).start()
   
def action(self, logic_function, ver=None): def action(self, logic_function, ver=None):
try: try:
function = logic.get_action(logic_function) function = logic.get_action(logic_function)
except Exception,e: except Exception,e:
log.debug(e) log.debug(e)
pass pass
try: try:
side_effect_free = getattr(function, 'side_effect_free', False) side_effect_free = getattr(function, 'side_effect_free', False)
request_data = self._get_request_data(try_url_params=side_effect_free) request_data = self._get_request_data(try_url_params=side_effect_free)
if isinstance(request_data, dict): if isinstance(request_data, dict):
id = request_data.get('id','') id = request_data.get('id','')
if 'q' in request_data.keys(): if 'q' in request_data.keys():
id = request_data['q'] id = request_data['q']
if 'query' in request_data.keys(): if 'query' in request_data.keys():
id = request_data['query'] id = request_data['query']
self._post_analytics(c.user,logic_function,'', id) self._post_analytics(c.user,logic_function,'', id)
except Exception,e: except Exception,e:
print log.debug(e) print log.debug(e)
pass pass
return ApiController.action(self,logic_function, ver) return ApiController.action(self,logic_function, ver)
def list(self, ver=None, register=None, subregister=None, id=None): def list(self, ver=None, register=None, subregister=None, id=None):
self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"list",id) self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"list",id)
return ApiController.list(self,ver, register, subregister, id) return ApiController.list(self,ver, register, subregister, id)
def show(self, ver=None, register=None, subregister=None, id=None, id2=None): def show(self, ver=None, register=None, subregister=None, id=None, id2=None):
self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"show",id) self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"show",id)
return ApiController.show(self,ver, register, subregister, id,id2) return ApiController.show(self,ver, register, subregister, id,id2)
def update(self, ver=None, register=None, subregister=None, id=None, id2=None): def update(self, ver=None, register=None, subregister=None, id=None, id2=None):
self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"update",id) self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"update",id)
return ApiController.update(self,ver, register, subregister, id,id2) return ApiController.update(self,ver, register, subregister, id,id2)
def delete(self, ver=None, register=None, subregister=None, id=None, id2=None): def delete(self, ver=None, register=None, subregister=None, id=None, id2=None):
self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"delete",id) self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"delete",id)
return ApiController.delete(self,ver, register, subregister, id,id2) return ApiController.delete(self,ver, register, subregister, id,id2)
def search(self, ver=None, register=None): def search(self, ver=None, register=None):
id = None id = None
try: try:
params = MultiDict(self._get_search_params(request.params)) params = MultiDict(self._get_search_params(request.params))
if 'q' in params.keys(): if 'q' in params.keys():
id = params['q'] id = params['q']
if 'query' in params.keys(): if 'query' in params.keys():
id = params['query'] id = params['query']
except ValueError, e: except ValueError, e:
print str(e) print str(e)
pass pass
self._post_analytics(c.user,register,"search",id) self._post_analytics(c.user,register,"search",id)
   
  {% ckan_extends %}
  {% block meta %}
  {{ super() }}
  <meta name="google-site-verification" content="B8scmW2_LMm4IW_ogXK9lojznO57GBpYlWrFjfGz3X8" />
  {% endblock %}
 
 
  {% ckan_extends %}
  {% block scripts %}
  {{ super() }}
  <script>
  preload_resource.url = preload_resource.url.replace("https:","").replace("http:","");
  preload_resource.original_url = preload_resource.original_url.replace("https:","").replace("http:","");
  </script>
  {% endblock %}
 
 
 
{% ckan_extends %} {% ckan_extends %}
{% block primary_content_inner %} {% block primary_content_inner %}
{{ super() }} {{ super() }}
   
<div class="module-content"> <div class="module-content">
{{ h.disqus_comments() }} {{ h.disqus_comments() }}
</div> </div>
{% endblock %} {% endblock %}
{% block package_additional_info %} {% block package_additional_info %}
<section class="additional-info" prefix="dc: http://purl.org/dc/elements/1.1/ dcat: http://www.w3.org/ns/dcat# <section class="additional-info" prefix="dc: http://purl.org/dc/elements/1.1/ dcat: http://www.w3.org/ns/dcat#
dcam: http://purl.org/dc/dcam/ dcam: http://purl.org/dc/dcam/
aglsterms: http://www.agls.gov.au/agls/terms/ aglsterms: http://www.agls.gov.au/agls/terms/
agentterms: http://www.agls.gov.au/agls/agentterms/ agentterms: http://www.agls.gov.au/agls/agentterms/
availterms: http://www.agls.gov.au/agls/availterms/ availterms: http://www.agls.gov.au/agls/availterms/
adminterms: http://www.agls.gov.au/agls/adminterms/ adminterms: http://www.agls.gov.au/agls/adminterms/
dct: http://purl.org/dc/terms/"> dct: http://purl.org/dc/terms/">
<h3>{{ _('Additional Info') }}</h3> <h3>{{ _('Additional Info') }}</h3>
<table class="table table-striped table-bordered table-condensed"> <table class="table table-striped table-bordered table-condensed">
<thead> <thead>
<tr> <tr>
<th scope="col">{{ _('Field') }}</th> <th scope="col">{{ _('Field') }}</th>
<th scope="col">{{ _('Value') }}</th> <th scope="col">{{ _('Value') }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
   
   
{# Add our custom field to the dataset read page. #} {# Add our custom field to the dataset read page. #}
{% if pkg.get('metadata_created') %} {% if pkg.get('metadata_created') %}
<tr> <tr>
<th scope="row" class="dataset-label">Date Published</th> <th scope="row" class="dataset-label">Date Published</th>
<td class="dataset-details" property="dct:issued">{{ pkg.metadata_created.split("T")[0] }}</td> <td class="dataset-details" property="dct:issued">{{ pkg.metadata_created.split("T")[0] }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('metadata_updated') %} {% if pkg.get('metadata_updated') %}
<tr> <tr>
<th scope="row" class="dataset-label">Date Updated</th> <th scope="row" class="dataset-label">Date Updated</th>
<td class="dataset-details" property="dct:updated">{{ pkg.metadata_updated.split("T")[0] }}</td> <td class="dataset-details" property="dct:updated">{{ pkg.metadata_updated.split("T")[0] }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('agency_program') %} {% if pkg.get('agency_program') %}
<tr> <tr>
<th scope="row" class="dataset-label">Agency Program</th> <th scope="row" class="dataset-label">Agency Program</th>
<td class="dataset-details"> {{ pkg.agency_program }}</td> <td class="dataset-details"> {{ pkg.agency_program }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('url') %} {% if pkg.get('url') %}
<tr> <tr>
<th scope="row" class="dataset-label">{{ _('Source') }}</th> <th scope="row" class="dataset-label">{{ _('Source') }}</th>
<td class="dataset-details" property="dct:source">{{ h.link_to(pkg.get('url'), <td class="dataset-details" property="dct:source">{{ h.link_to(pkg.get('url'),
pkg.get('url'), rel='dct:source', target='_blank') }} pkg.get('url'), rel='dct:source', target='_blank') }}
</td> </td>
</tr> </tr>
{% endif %} {% endif %}
   
{% if pkg.get('contact_point') %} {% if pkg.get('contact_point') %}
<tr> <tr>
<th scope="row" class="dataset-label">Contact Point</th> <th scope="row" class="dataset-label">Contact Point</th>
<td class="dataset-details" property="dcat:contactPoint"> {{ h.mail_to(email_address=pkg.contact_point, <td class="dataset-details" property="dcat:contactPoint"> {{ h.mail_to(email_address=pkg.contact_point,
name=pkg.contact_point) }}</td> name=pkg.contact_point) }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('spatial_coverage') %} {% if pkg.get('spatial_coverage') %}
   
<tr> <tr>
<th scope="row" class="dataset-label">Geospatial Coverage</th> <th scope="row" class="dataset-label">Geospatial Coverage</th>
<td class="dataset-details" property="dct:spatial"> {{ pkg.spatial_coverage }}</td> <td class="dataset-details" property="dct:spatial"> {{ pkg.spatial_coverage }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('granularity') %} {% if pkg.get('granularity') %}
   
<tr> <tr>
<th scope="row" class="dataset-label">Data Granularity</th> <th scope="row" class="dataset-label">Data Granularity</th>
<td class="dataset-details"> {{ pkg.granularity }}</td> <td class="dataset-details"> {{ pkg.granularity }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('jurisdiction') %} {% if pkg.get('jurisdiction') %}
<tr> <tr>
<th scope="row" class="dataset-label">Government Jurisdiction</th> <th scope="row" class="dataset-label">Government Jurisdiction</th>
<td class="dataset-details" property="aglsterms:AglsJuri"> {{ pkg.jurisdiction }}</td> <td class="dataset-details" property="aglsterms:AglsJuri"> {{ pkg.jurisdiction }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('temporal_coverage') %} {% if pkg.get('temporal_coverage') %}
<tr> <tr>
<th scope="row" class="dataset-label">Temporal Coverage</th> <th scope="row" class="dataset-label">Temporal Coverage</th>
<td class="dataset-details" property="dct:temporal"> {{ pkg.temporal_coverage }}</td> <td class="dataset-details" property="dct:temporal"> {{ pkg.temporal_coverage }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('data_state') %} {% if pkg.get('data_state') %}
<tr> <tr>
<th scope="row" class="dataset-label">Data State</th> <th scope="row" class="dataset-label">Data State</th>
<td class="dataset-details"> {{ pkg.data_state }}</td> <td class="dataset-details"> {{ pkg.data_state }}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if pkg.get('update_freq') %} {% if pkg.get('update_freq') %}
   
<tr> <tr>
<th scope="row" class="dataset-label">Update Frequency</th> <th scope="row" class="dataset-label">Update Frequency</th>
<td class="dataset-details"> {{ pkg.update_freq }}</td> <td class="dataset-details"> {{ pkg.update_freq }}</td>
</tr> </tr>
{% endif %} {% endif %}
   
{% set email =h.get_last_active_user(c.pkg_dict['id']).get('email','') %} {% set email =h.get_last_active_user(c.pkg_dict['id']).get('email','') %}
<tr> <tr>
<th scope="row" class="dataset-label">{{ _('Maintainer') }}</th> <th scope="row" class="dataset-label">{{ _('Maintainer') }}</th>
<td class="dataset-details" property="dc:contributor">{{ <td class="dataset-details" property="dc:contributor">{{
h.mail_to(email_address=(email or ' '), name=h.get_last_active_user(c.pkg_dict['id']).get("display_name",'')) }} h.mail_to(email_address=(email or ' '), name=h.get_last_active_user(c.pkg_dict['id']).get("display_name",'')) }}
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row" class="dataset-label">Publisher/Agency</th> <th scope="row" class="dataset-label">Publisher/Agency</th>
<td class="dataset-details" property="dc:publisher">{{ c.pkg_dict['organization']['title']}} <td class="dataset-details" property="dc:publisher">{{ c.pkg_dict['organization']['title']}}
</td> </td>
</tr> </tr>
<tr> <tr>
<th scope="row" class="dataset-label">Type</th> <th scope="row" class="dataset-label">Type</th>
<td class="dataset-details" property="dc:type">Dataset</td> <td class="dataset-details" property="dc:type">Dataset</td>
</tr> </tr>
<tr> <tr>
<th scope="row" class="dataset-label">Language</th> <th scope="row" class="dataset-label">Language</th>
<td class="dataset-details" property="dc:language">English</td> <td class="dataset-details" property="dc:language">English</td>
</tr> </tr>
   
</tbody> </tbody>
</table> </table>
</section> </section>
   
   
{% endblock %} {% endblock %}
   
  {% block secondary_content %}
  {{ super() }}
   
  {% set dataset_extent = h.get_pkg_dict_extra(c.pkg_dict, 'spatial', '') %}
  {% if dataset_extent %}
  {% snippet "spatial/snippets/dataset_map_sidebar.html", extent=dataset_extent %}
  {% endif %}
   
  {% endblock %}
   
  {% ckan_extends %}
  {% block secondary_content %}
  {{ super() }}
  {% snippet "spatial/snippets/spatial_query.html", default_extent="[[-11, 114], [-42, 154]]" %}
 
  {% endblock %}