Add embed hint to datapreviews
Add embed hint to datapreviews

<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
<component name="masterDetails"> <component name="RegexUtilComponent" text="1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31" flags="0" regex="(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])" mode="0" />
<states>  
<state key="ProjectJDKs.UI">  
<settings>  
<splitter-proportions>  
<option name="proportions">  
<list>  
<option value="0.2" />  
</list>  
</option>  
</splitter-proportions>  
</settings>  
</state>  
</states>  
</component>  
</project> </project>
   
   
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="BookmarkManager"> <component name="BookmarkManager">
<bookmark url="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" line="71" /> <bookmark url="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" line="71" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="89ace156-8d75-43de-ba53-6e829c197435" name="Default" comment=""> <list default="true" id="89ace156-8d75-43de-ba53-6e829c197435" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/resource_item.html" />
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html" />
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html" />
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" />
  <change type="MODIFICATION" beforePath="$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html" afterPath="$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list> </list>
<ignored path="ckanext-datagovau.iws" /> <ignored path="ckanext-datagovau.iws" />
<ignored path=".idea/workspace.xml" /> <ignored path=".idea/workspace.xml" />
<file path="/Dummy.txt" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378773145747" ignored="false" /> <file path="/Dummy.txt" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379987697128" ignored="false" />
<file path="/plugin.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378731005672" ignored="false" /> <file path="/plugin.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379980346924" ignored="false" />
<file path="/setup.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378168657134" ignored="false" /> <file path="/setup.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379980236185" ignored="false" />
<file path="/package_basic_fields.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378727992485" ignored="false" /> <file path="/package_basic_fields.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379984845682" ignored="false" />
<file path="/package_metadata_fields.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378729194397" ignored="false" /> <file path="/package_metadata_fields.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379984915516" ignored="false" />
<file path="/read_base.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378774943838" ignored="false" /> <file path="/read_base.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379985182291" ignored="false" />
<file path="/read.rdf" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378775057466" ignored="false" /> <file path="/read.rdf" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379985068490" ignored="false" />
<file path="/README.rst" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378703724236" ignored="false" /> <file path="/README.rst" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378703724236" ignored="false" />
<file path="/a.dummy" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378689054922" ignored="false" /> <file path="/a.dummy" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379987251443" ignored="false" />
<file path="/read.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378721657045" ignored="false" /> <file path="/read.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379984781447" ignored="false" />
<file path="/create.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378705719051" ignored="false" /> <file path="/create.py" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378705719051" ignored="false" />
<file path="/additional_info.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378717234941" ignored="false" /> <file path="/additional_info.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378717234941" ignored="false" />
<file path="/resource_read.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1378775248415" ignored="false" /> <file path="/resource_read.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379985226010" ignored="false" />
  <file path="/resources_list.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379986542457" ignored="false" />
  <file path="/resource_item.html" changelist="89ace156-8d75-43de-ba53-6e829c197435" time="1379987596016" ignored="false" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" /> <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
<component name="CreatePatchCommitExecutor"> <component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" /> <option name="PATCH_PATH" value="" />
</component> </component>
<component name="DaemonCodeAnalyzer"> <component name="DaemonCodeAnalyzer">
<disable_hints /> <disable_hints />
</component> </component>
<component name="DebuggerManager"> <component name="DebuggerManager">
<ui_properties default_suspend_policy="SuspendAll" default_condition_enabled="true" />  
<breakpoint_any default_suspend_policy="SuspendAll" default_condition_enabled="true"> <breakpoint_any default_suspend_policy="SuspendAll" default_condition_enabled="true">
<breakpoint> <breakpoint>
<option name="NOTIFY_CAUGHT" value="true" /> <option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" /> <option name="NOTIFY_UNCAUGHT" value="true" />
<option name="ENABLED" value="false" /> <option name="ENABLED" value="false" />
<option name="LOG_ENABLED" value="false" /> <option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" /> <option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="REMOVE_AFTER_HIT" value="false" /> <option name="REMOVE_AFTER_HIT" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" /> <option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="SUSPEND" value="true" /> <option name="SUSPEND" value="true" />
<option name="COUNT_FILTER_ENABLED" value="false" /> <option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" /> <option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="true" /> <option name="CONDITION_ENABLED" value="true" />
<option name="CLASS_FILTERS_ENABLED" value="false" /> <option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" /> <option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" /> <option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" /> <option name="LOG_MESSAGE" value="" />
</breakpoint> </breakpoint>
<breakpoint> <breakpoint>
<option name="NOTIFY_CAUGHT" value="true" /> <option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" /> <option name="NOTIFY_UNCAUGHT" value="true" />
<option name="ENABLED" value="false" /> <option name="ENABLED" value="false" />
<option name="LOG_ENABLED" value="false" /> <option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" /> <option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="REMOVE_AFTER_HIT" value="false" /> <option name="REMOVE_AFTER_HIT" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" /> <option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="SUSPEND" value="true" /> <option name="SUSPEND" value="true" />
<option name="COUNT_FILTER_ENABLED" value="false" /> <option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" /> <option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="true" /> <option name="CONDITION_ENABLED" value="true" />
<option name="CLASS_FILTERS_ENABLED" value="false" /> <option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" /> <option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" /> <option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" /> <option name="LOG_MESSAGE" value="" />
</breakpoint> </breakpoint>
</breakpoint_any> </breakpoint_any>
  <ui_properties default_suspend_policy="SuspendAll" default_condition_enabled="true" />
<breakpoint_rules /> <breakpoint_rules />
<ui_properties /> <ui_properties />
</component> </component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager"> <component name="FavoritesManager">
<favorites_list name="ckanext-datagovau" /> <favorites_list name="ckanext-datagovau" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf> <leaf>
<file leaf-file-name="package_metadata_fields.html" pinned="false" current="false" current-in-tab="false"> <file leaf-file-name="read_base.html" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="35" column="74" selection-start="1081" selection-end="1081" vertical-scroll-proportion="-20.875"> <state line="6" column="110" selection-start="190" selection-end="190" vertical-scroll-proportion="-3.9230769">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="read_base.html" pinned="false" current="false" current-in-tab="false"> <file leaf-file-name="resource_read.html" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="11" column="0" selection-start="247" selection-end="1668" vertical-scroll-proportion="-6.875"> <state line="10" column="0" selection-start="233" selection-end="246" vertical-scroll-proportion="-6.5384617">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="resource_read.html" pinned="false" current="true" current-in-tab="true"> <file leaf-file-name="read.html" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/user/read.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="14" column="89" selection-start="580" selection-end="580" vertical-scroll-proportion="0.30837005"> <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="read.rdf" pinned="false" current="false" current-in-tab="false"> <file leaf-file-name="read.rdf" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="47" column="50" selection-start="2578" selection-end="2596" vertical-scroll-proportion="0.0"> <state line="57" column="119" selection-start="2936" selection-end="2936" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  </file>
  <file leaf-file-name="dashboard_datasets.html" pinned="false" current="false" current-in-tab="false">
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/user/dashboard_datasets.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="0" column="21" selection-start="0" selection-end="18" vertical-scroll-proportion="-0.0">
  <folding />
  </state>
  </provider>
  </entry>
  </file>
  <file leaf-file-name="plugin.py" pinned="false" current="false" current-in-tab="false">
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/plugin.py">
  <provider selected="true" editor-type-id="text-editor">
  <state line="14" column="154" selection-start="577" selection-end="577" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  </file>
  <file leaf-file-name="resource_item.html" pinned="false" current="true" current-in-tab="true">
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/resource_item.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="22" column="129" selection-start="1133" selection-end="1133" vertical-scroll-proportion="0.5771605">
  <folding />
  </state>
  </provider>
  </entry>
  </file>
  <file leaf-file-name="package_basic_fields.html" pinned="false" current="false" current-in-tab="false">
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="51" column="125" selection-start="2745" selection-end="2745" vertical-scroll-proportion="-13.807693">
  <folding />
  </state>
  </provider>
  </entry>
  </file>
  <file leaf-file-name="read.html" pinned="false" current="false" current-in-tab="false">
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="12" column="96" selection-start="451" selection-end="451" vertical-scroll-proportion="-7.8461537">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
</leaf> </leaf>
</component> </component>
<component name="FindManager"> <component name="FindManager">
<FindUsagesManager> <FindUsagesManager>
<setting name="OPEN_NEW_TAB" value="false" /> <setting name="OPEN_NEW_TAB" value="false" />
</FindUsagesManager> </FindUsagesManager>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
  <option name="SYNC_SETTING" value="DONT" />
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="GitLogSettings"> <component name="GitLogSettings">
<option name="myDateState"> <option name="myDateState">
<MyDateState /> <MyDateState />
</option> </option>
</component> </component>
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="changedFiles"> <option name="changedFiles">
<list> <list>
<option value="$PROJECT_DIR$/ckanext/datagovau/theme/templates/layout.html" />  
<option value="$PROJECT_DIR$/ckanext/datagovau/forms.py" /> <option value="$PROJECT_DIR$/ckanext/datagovau/forms.py" />
<option value="$PROJECT_DIR$/setup.py" />  
<option value="$PROJECT_DIR$/README.rst" /> <option value="$PROJECT_DIR$/README.rst" />
<option value="$PROJECT_DIR$/ckanext/datagovau/theme/public/licenses.json" /> <option value="$PROJECT_DIR$/ckanext/datagovau/theme/public/licenses.json" />
<option value="$PROJECT_DIR$/../ckan/ckan/logic/action/create.py" /> <option value="$PROJECT_DIR$/../ckan/ckan/logic/action/create.py" />
<option value="$PROJECT_DIR$/../ckan/ckan/templates/package/snippets/additional_info.html" /> <option value="$PROJECT_DIR$/../ckan/ckan/templates/package/snippets/additional_info.html" />
<option value="$PROJECT_DIR$/../ckan/ckan/templates/package/read_base.html" /> <option value="$PROJECT_DIR$/../ckan/ckan/templates/package/read_base.html" />
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html" /> <option value="$PROJECT_DIR$/setup.py" />
  <option value="$PROJECT_DIR$/ckanext/datagovau/plugin.py" />
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html" /> <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html" />
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html" /> <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html" />
<option value="$PROJECT_DIR$/ckanext/datagovau/plugin.py" />  
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" />  
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" /> <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf" />
<option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html" /> <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html" />
  <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/resources_list.html" />
  <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html" />
  <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html" />
  <option value="$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/resource_item.html" />
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="x" value="1280" /> <option name="x" value="-4" />
<option name="width" value="1920" /> <option name="y" value="-4" />
<option name="height" value="1080" /> <option name="width" value="1928" />
  <option name="height" value="1044" />
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false"> <component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" /> <OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" /> <OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" /> <OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" /> <OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" /> <OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" /> <OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" /> <ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" /> <ConfirmationsSetting value="0" id="Remove" />
</component> </component>
<component name="ProjectReloadState"> <component name="ProjectReloadState">
<option name="STATE" value="0" /> <option name="STATE" value="0" />
</component> </component>
<component name="ProjectView"> <component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5"> <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
<flattenPackages /> <flattenPackages />
<showMembers /> <showMembers />
<showModules /> <showModules />
<showLibraryContents /> <showLibraryContents />
<hideEmptyPackages /> <hideEmptyPackages />
<abbreviatePackageNames /> <abbreviatePackageNames />
<autoscrollToSource /> <autoscrollToSource />
<autoscrollFromSource /> <autoscrollFromSource />
<sortByType /> <sortByType />
</navigator> </navigator>
<panes> <panes>
<pane id="Scope" /> <pane id="PackagesPane" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value=".idea" /> <option name="myItemId" value=".idea" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext_datagovau.egg-info" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
  <PATH_ELEMENT>
  <option name="myItemId" value="datagovau" />
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="datagovau" /> <option name="myItemId" value="datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
  <PATH_ELEMENT>
  <option name="myItemId" value="public" />
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="datagovau" /> <option name="myItemId" value="datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="public" /> <option name="myItemId" value="templates" />
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  </PATH_ELEMENT>
  <PATH_ELEMENT>
  <option name="myItemId" value="user" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="datagovau" /> <option name="myItemId" value="datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
  <option name="myItemId" value="templates" />
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  </PATH_ELEMENT>
  <PATH_ELEMENT>
<option name="myItemId" value="package" /> <option name="myItemId" value="package" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext-datagovau" /> <option name="myItemId" value="ckanext-datagovau" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="ckanext" /> <option name="myItemId" value="ckanext" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="datagovau" /> <option name="myItemId" value="datagovau" />
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
  </PATH_ELEMENT>
  <PATH_ELEMENT>
  <option name="myItemId" value="templates" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="package" /> <option name="myItemId" value="package" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="snippets" /> <option name="myItemId" value="snippets" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="PackagesPane" /> <pane id="Scope" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
  <property name="project.structure.last.edited" value="Project" />
<property name="GoToFile.includeJavaFiles" value="false" /> <property name="GoToFile.includeJavaFiles" value="false" />
  <property name="project.structure.proportion" value="0.0" />
  <property name="options.splitter.main.proportions" value="0.3" />
  <property name="MemberChooser.sorted" value="false" />
  <property name="options.lastSelected" value="vcs.Git" />
  <property name="last_opened_file_path" value="$PROJECT_DIR$" />
  <property name="project.structure.side.proportion" value="0.0" />
  <property name="DefaultHtmlFileTemplate" value="Html5" />
  <property name="MemberChooser.copyJavadoc" value="false" />
<property name="GoToClass.toSaveIncludeLibraries" value="false" /> <property name="GoToClass.toSaveIncludeLibraries" value="false" />
<property name="WebServerToolWindowFactoryState" value="false" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="MemberChooser.sorted" value="false" />  
<property name="last_opened_file_path" value="$PROJECT_DIR$/../ckan/ckan/templates/package/resource_read.html" />  
<property name="MemberChooser.showClasses" value="true" /> <property name="MemberChooser.showClasses" value="true" />
<property name="DefaultHtmlFileTemplate" value="Html5" />  
<property name="GoToClass.includeLibraries" value="false" /> <property name="GoToClass.includeLibraries" value="false" />
<property name="MemberChooser.copyJavadoc" value="false" /> <property name="options.searchVisible" value="true" />
  <property name="options.splitter.details.proportions" value="0.2" />
</component> </component>
<component name="PyConsoleOptionsProvider"> <component name="PyConsoleOptionsProvider">
<option name="myPythonConsoleState"> <option name="myPythonConsoleState">
<PyConsoleSettings /> <PyConsoleSettings />
</option> </option>
<option name="myDjangoConsoleState"> <option name="myDjangoConsoleState">
<PyConsoleSettings /> <PyConsoleSettings />
</option> </option>
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/ckanext/datagovau/templates/package" /> <recent name="$PROJECT_DIR$/ckanext/datagovau/templates/package" />
</key> </key>
</component> </component>
<component name="RunManager"> <component name="RunManager">
<configuration default="true" type="Remote" factoryName="Remote">  
<option name="USE_SOCKET_TRANSPORT" value="true" />  
<option name="SERVER_MODE" value="false" />  
<option name="SHMEM_ADDRESS" value="javadebug" />  
<option name="HOST" value="localhost" />  
<option name="PORT" value="5005" />  
<method />  
</configuration>  
<configuration default="true" type="PythonConfigurationType" factoryName="Python"> <configuration default="true" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" /> <env name="PYTHONUNBUFFERED" value="1" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" /> <option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<module name="ckanext-datagovau" /> <module name="ckanext-datagovau" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" /> <option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" /> <option name="PARAMETERS" value="" />
  <method />
  </configuration>
  <configuration default="true" type="Remote" factoryName="Remote">
  <option name="USE_SOCKET_TRANSPORT" value="true" />
  <option name="SERVER_MODE" value="false" />
  <option name="SHMEM_ADDRESS" value="javadebug" />
  <option name="HOST" value="localhost" />
  <option name="PORT" value="5005" />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="tests" factoryName="Unittests"> <configuration default="true" type="tests" factoryName="Unittests">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs /> <envs />
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" /> <option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<module name="" /> <module name="" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" /> <option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" /> <option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" /> <option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" /> <option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" /> <option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" /> <option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" /> <option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" /> <option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" /> <option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" /> <option name="USE_PARAM" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="Applet" factoryName="Applet"> <configuration default="true" type="Applet" factoryName="Applet">
<module name="" /> <module name="" />
<option name="MAIN_CLASS_NAME" /> <option name="MAIN_CLASS_NAME" />
<option name="HTML_FILE_NAME" /> <option name="HTML_FILE_NAME" />
<option name="HTML_USED" value="false" /> <option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" /> <option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" /> <option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<option name="VM_PARAMETERS" /> <option name="VM_PARAMETERS" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" /> <option name="ALTERNATIVE_JRE_PATH" />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="Application" factoryName="Application"> <configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" /> <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" /> <option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" /> <option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" /> <option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" /> <option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" /> <option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" /> <option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" /> <option name="PASS_PARENT_ENVS" value="true" />
<module name="" /> <module name="" />
<envs /> <envs />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="tests" factoryName="Doctests"> <configuration default="true" type="tests" factoryName="Doctests">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs /> <envs />
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" /> <option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<module name="ckanext-datagovau" /> <module name="ckanext-datagovau" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="" /> <option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" /> <option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" /> <option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" /> <option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" /> <option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" /> <option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" /> <option name="USE_PATTERN" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration default="true" type="JavascriptDebugSession" factoryName="Local" singleton="true"> <configuration default="true" type="JavascriptDebugSession" factoryName="Local" singleton="true">
<JSDebuggerConfigurationSettings> <JSDebuggerConfigurationSettings>
<option name="engineId" value="embedded" /> <option name="engineId" value="embedded" />
<option name="fileUrl" /> <option name="fileUrl" />
</JSDebuggerConfigurationSettings> </JSDebuggerConfigurationSettings>
<method /> <method />
</configuration> </configuration>
<list size="0" /> <list size="0" />
<configuration name="&lt;template&gt;" type="JUnit" default="true" selected="false"> <configuration name="&lt;template&gt;" type="JUnit" default="true" selected="false">
<option name="MAIN_CLASS_NAME" /> <option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" value="-ea" /> <option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" /> <option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration> </configuration>
<configuration name="&lt;template&gt;" type="TestNG" default="true" selected="false"> <configuration name="&lt;template&gt;" type="TestNG" default="true" selected="false">
<option name="MAIN_CLASS_NAME" /> <option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" value="-ea" /> <option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" /> <option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
</configuration> </configuration>
<configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false"> <configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" /> <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" />
</configuration> </configuration>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false"> <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host> <Host>localhost</Host>
<Port>5050</Port> <Port>5050</Port>
</configuration> </configuration>
</component> </component>
<component name="ShelveChangesManager" show_recycled="false" /> <component name="ShelveChangesManager" show_recycled="false" />
  <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false" SSL_PROTOCOLS="all">
  <option name="USER" value="" />
  <option name="PASSWORD" value="" />
  <option name="mySSHConnectionTimeout" value="30000" />
  <option name="mySSHReadTimeout" value="30000" />
  <option name="LAST_MERGED_REVISION" />
  <option name="MERGE_DRY_RUN" value="false" />
  <option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
  <option name="UPDATE_LOCK_ON_DEMAND" value="false" />
  <option name="IGNORE_SPACES_IN_MERGE" value="false" />
  <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
  <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
  <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
  <option name="FORCE_UPDATE" value="false" />
  <option name="IGNORE_EXTERNALS" value="false" />
  <myIsUseDefaultProxy>false</myIsUseDefaultProxy>
  </component>
<component name="TodoView" selected-index="0"> <component name="TodoView" selected-index="0">
<todo-panel id="selected-file"> <todo-panel id="selected-file">
<are-packages-shown value="false" /> <are-packages-shown value="false" />
<are-modules-shown value="false" /> <are-modules-shown value="false" />
<flatten-packages value="false" /> <flatten-packages value="false" />
<is-autoscroll-to-source value="true" /> <is-autoscroll-to-source value="true" />
</todo-panel> </todo-panel>
<todo-panel id="all"> <todo-panel id="all">
<are-packages-shown value="true" /> <are-packages-shown value="true" />
<are-modules-shown value="false" /> <are-modules-shown value="false" />
<flatten-packages value="false" /> <flatten-packages value="false" />
<is-autoscroll-to-source value="true" /> <is-autoscroll-to-source value="true" />
</todo-panel> </todo-panel>
<todo-panel id="default-changelist"> <todo-panel id="default-changelist">
<are-packages-shown value="false" /> <are-packages-shown value="false" />
<are-modules-shown value="false" /> <are-modules-shown value="false" />
<flatten-packages value="false" /> <flatten-packages value="false" />
<is-autoscroll-to-source value="false" /> <is-autoscroll-to-source value="false" />
</todo-panel> </todo-panel>
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="1280" y="0" width="1920" height="1080" extended-state="6" /> <frame x="-4" y="-4" width="1928" height="1044" extended-state="6" />
<editor active="true" /> <editor active="false" />
<layout> <layout>
  <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290735" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290735" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290735" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3290735" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
  <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22048998" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16183448" sideWeight="0.7795527" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16183448" sideWeight="0.77951" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22044729" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22048998" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32962137" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22091782" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />  
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />  
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout> </layout>
</component> </component>
<component name="VcsContentAnnotationSettings"> <component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" /> <option name="myLimit" value="2678400000" />
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" /> <option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" /> <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="CHECK_NEW_TODO" value="true" /> <option name="CHECK_NEW_TODO" value="true" />
<option name="myTodoPanelSettings"> <option name="myTodoPanelSettings">
<value> <value>
<are-packages-shown value="false" /> <are-packages-shown value="false" />
<are-modules-shown value="false" /> <are-modules-shown value="false" />
<flatten-packages value="false" /> <flatten-packages value="false" />
<is-autoscroll-to-source value="false" /> <is-autoscroll-to-source value="false" />
</value> </value>
</option> </option>
<option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" /> <option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
<option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" /> <option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
<option name="PERFORM_EDIT_IN_BACKGROUND" value="true" /> <option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
<option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" /> <option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
<option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" /> <option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
<option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" /> <option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
<option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" /> <option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
<option name="CHANGED_ON_SERVER_INTERVAL" value="60" /> <option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
<option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" /> <option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" /> <option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
<option name="DEFAULT_PATCH_EXTENSION" value="patch" /> <option name="DEFAULT_PATCH_EXTENSION" value="patch" />
<option name="SHORT_DIFF_HORIZONTALLY" value="true" /> <option name="SHORT_DIFF_HORIZONTALLY" value="true" />
<option name="SHORT_DIFF_EXTRA_LINES" value="2" /> <option name="SHORT_DIFF_EXTRA_LINES" value="2" />
<option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" /> <option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
<option name="INCLUDE_TEXT_INTO_PATCH" value="false" /> <option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" /> <option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" /> <option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
<option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" /> <option name="SHOW_VCS_ERROR_NOTIFICATIONS" value="true" />
<option name="SHOW_DIRTY_RECURSIVELY" value="false" /> <option name="SHOW_DIRTY_RECURSIVELY" value="false" />
<option name="LIMIT_HISTORY" value="true" /> <option name="LIMIT_HISTORY" value="true" />
<option name="MAXIMUM_HISTORY_ROWS" value="1000" /> <option name="MAXIMUM_HISTORY_ROWS" value="1000" />
<option name="UPDATE_FILTER_SCOPE_NAME" /> <option name="UPDATE_FILTER_SCOPE_NAME" />
<option name="USE_COMMIT_MESSAGE_MARGIN" value="false" /> <option name="USE_COMMIT_MESSAGE_MARGIN" value="false" />
<option name="COMMIT_MESSAGE_MARGIN_SIZE" value="72" /> <option name="COMMIT_MESSAGE_MARGIN_SIZE" value="72" />
<option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="false" /> <option name="WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" /> <option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" /> <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="Update HTML package output to interim metadata standard" /> <option name="LAST_COMMIT_MESSAGE" value="Allow anonymous access to datastore API search" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" /> <option name="MAKE_NEW_CHANGELIST_ACTIVE" value="false" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" /> <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" /> <option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" /> <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" /> <option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
<option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" /> <option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
<option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" /> <option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
<option name="ACTIVE_VCS_NAME" /> <option name="ACTIVE_VCS_NAME" />
<option name="UPDATE_GROUP_BY_PACKAGES" value="false" /> <option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" /> <option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
<option name="UPDATE_FILTER_BY_SCOPE" value="false" /> <option name="UPDATE_FILTER_BY_SCOPE" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" /> <option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" /> <option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
<MESSAGE value="Update HTML package output to interim metadata standard" /> <MESSAGE value="Update HTML package output to interim metadata standard" />
  <MESSAGE value="Move Disqus comments to package not resource page" />
  <MESSAGE value="Allow anonymous access to datastore API search" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager /> <breakpoint-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../ckan/ckan/templates/base.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" /> <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
</provider> <folding />
</entry> </state>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/templates/macros/form.html"> </provider>
<provider selected="true" editor-type-id="text-editor"> </entry>
<state line="94" column="0" selection-start="4027" selection-end="4027" vertical-scroll-proportion="-21.333334" /> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="11" column="0" selection-start="247" selection-end="1668" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="14" column="89" selection-start="580" selection-end="580" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/setup.py">
  <provider selected="true" editor-type-id="text-editor">
  <state line="23" column="48" selection-start="677" selection-end="677" vertical-scroll-proportion="0.6788194">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/plugin.py">
  <provider selected="true" editor-type-id="text-editor">
  <state line="14" column="154" selection-start="577" selection-end="577" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf">
  <provider selected="true" editor-type-id="text-editor">
  <state line="57" column="119" selection-start="2936" selection-end="2936" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="18" column="70" selection-start="675" selection-end="675" vertical-scroll-proportion="-11.769231">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/user/dashboard_datasets.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="0" column="21" selection-start="0" selection-end="18" vertical-scroll-proportion="-0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/user/read.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="10" column="0" selection-start="233" selection-end="246" vertical-scroll-proportion="-6.5384617">
  <folding />
  </state>
  </provider>
  </entry>
  <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html">
  <provider selected="true" editor-type-id="text-editor">
  <state line="6" column="110" selection-start="190" selection-end="190" vertical-scroll-proportion="-3.9230769">
  <folding />
  </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0"> <state line="12" column="96" selection-start="451" selection-end="451" vertical-scroll-proportion="-7.8461537">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_basic_fields.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0"> <state line="51" column="125" selection-start="2745" selection-end="2745" vertical-scroll-proportion="-13.807693">
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/templates/package/snippets/package_metadata_fields.html"> <entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/resource_item.html">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state line="21" column="0" selection-start="1147" selection-end="1147" vertical-scroll-proportion="-0.625" /> <state line="22" column="129" selection-start="1133" selection-end="1133" vertical-scroll-proportion="0.5771605">
</provider> <folding />
</entry> </state>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/model/package.py"> </provider>
<provider selected="true" editor-type-id="text-editor"> </entry>
<state line="209" column="0" selection-start="7434" selection-end="7434" vertical-scroll-proportion="0.0" /> </component>
</provider> <component name="masterDetails">
</entry> <states>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/logic/action/get.py"> <state key="ArtifactsStructureConfigurable.UI">
<provider selected="true" editor-type-id="text-editor"> <settings>
<state line="758" column="37" selection-start="24462" selection-end="24462" vertical-scroll-proportion="-6.6" /> <artifact-editor />
</provider> <splitter-proportions>
</entry> <option name="proportions">
<entry file="file://$PROJECT_DIR$/../ckan/ckan/logic/schema.py"> <list>
<provider selected="true" editor-type-id="text-editor"> <option value="0.2" />
<state line="172" column="0" selection-start="7641" selection-end="7641" vertical-scroll-proportion="0.0" /> </list>
</provider> </option>
</entry> </splitter-proportions>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/lib/navl/validators.py"> </settings>
<provider selected="true" editor-type-id="text-editor"> </state>
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" /> <state key="FacetStructureConfigurable.UI">
</provider> <settings>
</entry> <last-edited>No facets are configured</last-edited>
<entry file="file://$PROJECT_DIR$/../ckan/ckan/logic/converters.py"> <splitter-proportions>
<provider selected="true" editor-type-id="text-editor"> <option name="proportions">
<state line="33" column="0" selection-start="391" selection-end="1056" vertical-scroll-proportion="0.0" /> <list>
</provider> <option value="0.2" />
</entry> </list>
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/plugin.py"> </option>
<provider selected="true" editor-type-id="text-editor"> </splitter-proportions>
<state line="106" column="0" selection-start="4140" selection-end="4271" vertical-scroll-proportion="0.0" /> </settings>
</provider> </state>
</entry> <state key="GlobalLibrariesConfigurable.UI">
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/snippets/package_metadata_fields.html"> <settings>
<provider selected="true" editor-type-id="text-editor"> <splitter-proportions>
<state line="35" column="74" selection-start="1081" selection-end="1081" vertical-scroll-proportion="-20.875"> <option name="proportions">
<folding /> <list>
</state> <option value="0.2" />
</provider> </list>
</entry> </option>
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read_base.html"> </splitter-proportions>
<provider selected="true" editor-type-id="text-editor"> </settings>
<state line="11" column="0" selection-start="247" selection-end="1668" vertical-scroll-proportion="-6.875"> </state>
<folding /> <state key="JdkListConfigurable.UI">
</state> <settings>
</provider> <splitter-proportions>
</entry> <option name="proportions">
<entry file="file://$PROJECT_DIR$/../ckan/ckan/templates/package/resource_read.html"> <list>
<provider selected="true" editor-type-id="text-editor"> <option value="0.2" />
<state line="24" column="105" selection-start="970" selection-end="970" vertical-scroll-proportion="0.48018292"> </list>
<folding /> </option>
</state> </splitter-proportions>
</provider> </settings>
</entry> </state>
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/read.rdf"> <state key="ModuleStructureConfigurable.UI">
<provider selected="true" editor-type-id="text-editor"> <settings>
<state line="47" column="50" selection-start="2578" selection-end="2596" vertical-scroll-proportion="0.0"> <last-edited>ckanext-datagovau</last-edited>
<folding /> <splitter-proportions>
</state> <option name="proportions">
</provider> <list>
</entry> <option value="0.2" />
<entry file="file://$PROJECT_DIR$/ckanext/datagovau/templates/package/resource_read.html"> <option value="0.5" />
<provider selected="true" editor-type-id="text-editor"> </list>
<state line="14" column="89" selection-start="580" selection-end="580" vertical-scroll-proportion="0.30837005"> </option>
<folding /> </splitter-proportions>
</state> </settings>
</provider> </state>
</entry> <state key="ProjectJDKs.UI">
  <settings>
  <splitter-proportions>
  <option name="proportions">
  <list>
  <option value="0.2" />
  </list>
  </option>
  </splitter-proportions>
  </settings>
  </state>
  <state key="ProjectLibrariesConfigurable.UI">
  <settings>
  <splitter-proportions>
  <option name="proportions">
  <list>
  <option value="0.2" />
  </list>
  </option>
  </splitter-proportions>
  </settings>
  </state>
  </states>
</component> </component>
</project> </project>
   
   
file:a/README.rst -> file:b/README.rst
This CKAN Extension customises a CKAN instance for the hosting of data.gov.au. This CKAN Extension customises a CKAN instance for the hosting of data.gov.au.
   
It comprises: It comprises:
   
* A CKAN Extension "plugin" at ``ckanext/datagovau/plugin.py`` which, when * A CKAN Extension "plugin" at ``ckanext/datagovau/plugin.py`` which, when
loaded, overrides various settings in the core ``ini``-file to provide: loaded, overrides various settings in the core ``ini``-file to provide:
* A path to local customisations of the core templates * A path to local customisations of the core templates to include AGLS/Dublin Core minimum metadata
* A custom Package edit form that defaults to cc-by licence * A custom Package edit form that defaults to cc-by licence
* A custom n3/rdf output format * A custom n3/rdf output format
  * Replaces links with http/https protocol independent versions
  * Provides HTML to users to embed data previews on their own website
   
* A cut down licenses.json file * A cut down licenses.json file
   
Installation Installation
============ ============
   
To install this package, from your CKAN virtualenv, run the following from your CKAN base folder (e.g. ``pyenv/``):: To install this package, from your CKAN virtualenv, run the following from your CKAN base folder (e.g. ``pyenv/``)::
   
pip install -e git+https://github.com/okfn/ckanext-datagovau#egg=ckanext-datagovau pip install -e git+https://github.com/okfn/ckanext-datagovau#egg=ckanext-datagovau
   
Then activate it by setting ``ckan.plugins = datagovau`` in your main ``ini``-file. Then activate it by setting ``ckan.plugins = datagovau`` in your main ``ini``-file.
   
To add the cut down licenses.json set ``licenses_group_url = http://%(ckan.site_url)/licenses.json`` To add the cut down licenses.json set ``licenses_group_url = http://%(ckan.site_url)/licenses.json``
or copy ``ckanext/datagovau/theme/public/licenses.json`` to the same folder as your CKAN config ini file or copy ``ckanext/datagovau/theme/public/licenses.json`` to the same folder as your CKAN config ini file
and set ``licenses_group_url = file://%(here)s/licenses.json`` and set ``licenses_group_url = file://%(here)s/licenses.json``
   
   
   
<VirtualHost 127.0.0.1:8080> <VirtualHost 127.0.0.1:8080>
ServerAdmin webmaster@localhost ServerAdmin webmaster@localhost
   
ServerName data.gov.au ServerName data.gov.au
ServerAlias www.data.gov.au, opendata.linkdigital.com.au ServerAlias www.data.gov.au, opendata.linkdigital.com.au
   
   
#allow access to local static content eg. logos #allow access to local static content eg. logos
Alias /index.html /var/www/index.html Alias /index.html /var/www/index.html
Alias /logos /var/www/logos Alias /logos /var/www/logos
Alias /tools /var/www/tools.shtml Alias /tools /var/www/tools.shtml
Alias /opendata /var/www/opendata.shtml Alias /opendata /var/www/opendata.shtml
Alias /opengov /var/www/opengov.shtml Alias /opengov /var/www/opengov.shtml
   
DocumentRoot /var/www DocumentRoot /var/www
<IfModule mod_expires.c> <IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$"> <FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On ExpiresActive On
ExpiresDefault "access plus 1 week" ExpiresDefault "access plus 1 week"
</FilesMatch> </FilesMatch>
</IfModule> </IfModule>
  AddType application/octet-stream .woff
  <FilesMatch "\.(eot|otf|woff|ttf)$">
  SetEnvIf Origin "^http(s)?://(.+\.)?(data.gov.au)$" origin_is=$0
  Header set Access-Control-Allow-Origin %{origin_is}e env=origin_is
  </FilesMatch>
   
<Directory /> <Directory />
Options FollowSymLinks Options FollowSymLinks
AllowOverride None AllowOverride None
</Directory> </Directory>
   
<Directory /var/www/> <Directory /var/www/>
Options -Indexes -FollowSymLinks -MultiViews +Includes Options -Indexes -FollowSymLinks -MultiViews +Includes
AllowOverride None AllowOverride None
   
Order allow,deny Order allow,deny
allow from all allow from all
   
AddType text/html .shtml AddType text/html .shtml
AddOutputFilter INCLUDES .shtml AddOutputFilter INCLUDES .shtml
</Directory> </Directory>
   
ErrorLog ${APACHE_LOG_DIR}/error.log ErrorLog ${APACHE_LOG_DIR}/error.log
   
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg. # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn LogLevel warn
   
CustomLog ${APACHE_LOG_DIR}/access.log varnishcombined CustomLog ${APACHE_LOG_DIR}/access.log varnishcombined
RewriteEngine On RewriteEngine On
   
RewriteMap lc int:tolower RewriteMap lc int:tolower
   
# RewriteRule ^/apps/antenna-mate/?$ http://antennamate.com/ [PT] # RewriteRule ^/apps/antenna-mate/?$ http://antennamate.com/ [PT]
# RewriteRule ^/apps/postcode-finder/?$ http://www.aus-emaps.com/postcode_finder.php [PT] # RewriteRule ^/apps/postcode-finder/?$ http://www.aus-emaps.com/postcode_finder.php [PT]
# RewriteRule ^/apps/the-australian-cost-of-living-heatmap/?$ http://www.creditcardcompare.com.au/tools/cost-of-living-heatmap/ [PT] # RewriteRule ^/apps/the-australian-cost-of-living-heatmap/?$ http://www.creditcardcompare.com.au/tools/cost-of-living-heatmap/ [PT]
RewriteRule ^/catalogues/?$ /organization [PT] RewriteRule ^/catalogues/?$ /organization [PT]
RewriteRule ^/dataset/“cycling-in-new-south-wales-what-the-data-tells-us”-and-related-data/? /dataset/2809cycling-in-new-south-wales-what-the-data-tells-us2809-and-related-data [PT] RewriteRule ^/dataset/“cycling-in-new-south-wales-what-the-data-tells-us”-and-related-data/? /dataset/2809cycling-in-new-south-wales-what-the-data-tells-us2809-and-related-data [PT]
RewriteRule ^/dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-actives/? /dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-acti [PT] RewriteRule ^/dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-actives/? /dataset/apvma-pubcris-dataset-for-registered-agricultural-and-veterinary-chemical-products-and-approved-acti [PT]
RewriteRule ^/dataset_category/business/?$ /group/business [PT] RewriteRule ^/dataset_category/business/?$ /group/business [PT]
RewriteRule ^/dataset_category/community/?$ /group/community [PT] RewriteRule ^/dataset_category/community/?$ /group/community [PT]
RewriteRule ^/dataset_category/geography/?$ /group/geography [PT] RewriteRule ^/dataset_category/geography/?$ /group/geography [PT]
RewriteRule ^/dataset_category/government/?$ /group/government [PT] RewriteRule ^/dataset_category/government/?$ /group/government [PT]
RewriteRule ^/dataset_category/health/?$ /group/health [PT] RewriteRule ^/dataset_category/health/?$ /group/health [PT]
RewriteRule ^/dataset_category/?$ /group [PT] RewriteRule ^/dataset_category/?$ /group [PT]
RewriteRule ^/feed/?$ /feeds/dataset.atom [PT] RewriteRule ^/feed/?$ /feeds/dataset.atom [PT]
RewriteRule ^/jurisdiction/australian-capital-territory/?$ /dataset?q=act [PT] RewriteRule ^/jurisdiction/australian-capital-territory/?$ /dataset?q=act [PT]
RewriteRule ^/jurisdiction/new-south-wales/?$ /dataset?q=new+south+wales [PT] RewriteRule ^/jurisdiction/new-south-wales/?$ /dataset?q=new+south+wales [PT]
RewriteRule ^/jurisdiction/queensland/?$ /dataset?q=queensland [PT] RewriteRule ^/jurisdiction/queensland/?$ /dataset?q=queensland [PT]
RewriteRule ^/jurisdiction/south-australia/?$ /dataset?q=south+australia [PT] RewriteRule ^/jurisdiction/south-australia/?$ /dataset?q=south+australia [PT]
RewriteRule ^/jurisdiction/victoria/?$ /dataset?q=victoria [PT] RewriteRule ^/jurisdiction/victoria/?$ /dataset?q=victoria [PT]
RewriteRule ^/jurisdiction/western-australia/?$ /dataset?q=western+australia [PT] RewriteRule ^/jurisdiction/western-australia/?$ /dataset?q=western+australia [PT]
RewriteRule ^/jurisdiction/?$ /dataset [PT] RewriteRule ^/jurisdiction/?$ /dataset [PT]
   
# RewriteCond %{QUERY_STRING} ^category=([a-z]+) # RewriteCond %{QUERY_STRING} ^category=([a-z]+)
# RewriteRule ^/data/?$ /group/${lc:%1}? [PT] # RewriteRule ^/data/?$ /group/${lc:%1}? [PT]
   
# RewriteCond %{QUERY_STRING} ^format=Shapefile # RewriteCond %{QUERY_STRING} ^format=Shapefile
# RewriteRule ^/data/?$ /dataset?res_format=shp [PT] # RewriteRule ^/data/?$ /dataset?res_format=shp [PT]
   
RewriteRule ^/data/?$ /dataset? [PT] RewriteRule ^/data/?$ /dataset? [PT]
   
RewriteCond %{QUERY_STRING} ^s=(.*) RewriteCond %{QUERY_STRING} ^s=(.*)
RewriteRule ^/ /dataset?q=%1 [PT] RewriteRule ^/ /dataset?q=%1 [PT]
   
   
FilterDeclare OPENDATA FilterDeclare OPENDATA
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $text/ FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $text/
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/javascript FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/javascript
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/json FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/json
FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/xml FilterProvider OPENDATA SUBSTITUTE resp=Content-Type $/xml
FilterChain OPENDATA FilterChain OPENDATA
Substitute "s#//opendata.linkdigital.com.au#//data.gov.au#" Substitute "s#//opendata.linkdigital.com.au#//data.gov.au#"
   
WSGIScriptAlias / /var/lib/ckan/dga/pyenv/bin/dga.py WSGIScriptAlias / /var/lib/ckan/dga/pyenv/bin/dga.py
WSGIPassAuthorization On WSGIPassAuthorization On
   
ErrorLog /var/log/apache2/ckandga.error.log ErrorLog /var/log/apache2/ckandga.error.log
CustomLog /var/log/apache2/ckandga.custom.log combined CustomLog /var/log/apache2/ckandga.custom.log combined
</VirtualHost> </VirtualHost>
   
# This is a basic VCL configuration file for varnish. See the vcl(7) # This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics. # man page for details on VCL syntax and semantics.
# #
# Default backend definition. Set this to point to your content # Default backend definition. Set this to point to your content
# server. # server.
# #
backend default { backend default {
.host = "127.0.0.1"; .host = "127.0.0.1";
.port = "8080"; .port = "8080";
} }
   
sub vcl_fetch { sub vcl_fetch {
set beresp.grace = 1h; set beresp.grace = 1h;
if (beresp.http.content-type ~ "(text|application)") { if (beresp.http.content-type ~ "(text|application)") {
set beresp.do_gzip = true; set beresp.do_gzip = true;
} }
if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") {
unset beresp.http.set-cookie; unset beresp.http.set-cookie;
} }
} }
sub vcl_recv { sub vcl_recv {
if (req.url ~ "^/_tracking") { if (req.url ~ "^/_tracking") {
return (pass); return (pass);
} }
if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") { if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|woff|eot)$") {
return(lookup); return(lookup);
} }
  if (req.url ~ "/(..|.._..)/") {
  set req.url = regsub(req.url, "/((?!js)..|.._..)/", "/");
  }
if (req.http.Cookie) { if (req.http.Cookie) {
set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing
   
if (req.http.Cookie == "") { if (req.http.Cookie == "") {
remove req.http.Cookie; remove req.http.Cookie;
} }
} }
} }
  sub vcl_hash {
  # http://serverfault.com/questions/112531/ignoring-get-parameters-in-varnish-vcl
  set req.url = regsub(req.url, "(?:(.com|.au))/((?!js)..|.._..)/", "/");
  hash_data(req.url);
  if (req.http.host) {
  hash_data(req.http.host);
  } else {
  hash_data(server.ip);
  }
  return (hash);
  }
sub vcl_deliver { sub vcl_deliver {
if (!resp.http.Vary) { if (!resp.http.Vary) {
set resp.http.Vary = "Accept-Encoding"; set resp.http.Vary = "Accept-Encoding";
} else if (resp.http.Vary !~ "(?i)Accept-Encoding") { } else if (resp.http.Vary !~ "(?i)Accept-Encoding") {
set resp.http.Vary = resp.http.Vary + ",Accept-Encoding"; set resp.http.Vary = resp.http.Vary + ",Accept-Encoding";
} }
if (obj.hits > 0) { if (obj.hits > 0) {
set resp.http.X-Cache = "HIT"; set resp.http.X-Cache = "HIT";
} else { } else {
set resp.http.X-Cache = "MISS"; set resp.http.X-Cache = "MISS";
} }
} }
   
# #
# Below is a commented-out copy of the default VCL logic. If you # Below is a commented-out copy of the default VCL logic. If you
# redefine any of these subroutines, the built-in logic will be # redefine any of these subroutines, the built-in logic will be
# appended to your code. # appended to your code.
# sub vcl_recv { # sub vcl_recv {
# if (req.restarts == 0) { # if (req.restarts == 0) {
# if (req.http.x-forwarded-for) { # if (req.http.x-forwarded-for) {
# set req.http.X-Forwarded-For = # set req.http.X-Forwarded-For =
# req.http.X-Forwarded-For + ", " + client.ip; # req.http.X-Forwarded-For + ", " + client.ip;
# } else { # } else {
# set req.http.X-Forwarded-For = client.ip; # set req.http.X-Forwarded-For = client.ip;
# } # }
# } # }
# if (req.request != "GET" && # if (req.request != "GET" &&
# req.request != "HEAD" && # req.request != "HEAD" &&
# req.request != "PUT" && # req.request != "PUT" &&
# req.request != "POST" && # req.request != "POST" &&
# req.request != "TRACE" && # req.request != "TRACE" &&
# req.request != "OPTIONS" && # req.request != "OPTIONS" &&
# req.request != "DELETE") { # req.request != "DELETE") {
# /* Non-RFC2616 or CONNECT which is weird. */ # /* Non-RFC2616 or CONNECT which is weird. */
# return (pipe); # return (pipe);
# } # }
# if (req.request != "GET" && req.request != "HEAD") { # if (req.request != "GET" && req.request != "HEAD") {
# /* We only deal with GET and HEAD by default */ # /* We only deal with GET and HEAD by default */
# return (pass); # return (pass);
# } # }
# if (req.http.Authorization || req.http.Cookie) { # if (req.http.Authorization || req.http.Cookie) {
# /* Not cacheable by default */ # /* Not cacheable by default */
# return (pass); # return (pass);
# } # }
# return (lookup); # return (lookup);
# } # }
# #
# sub vcl_pipe { # sub vcl_pipe {
# # Note that only the first request to the backend will have # # Note that only the first request to the backend will have
# # X-Forwarded-For set. If you use X-Forwarded-For and want to # # X-Forwarded-For set. If you use X-Forwarded-For and want to
# # have it set for all requests, make sure to have: # # have it set for all requests, make sure to have:
# # set bereq.http.connection = "close"; # # set bereq.http.connection = "close";
# # here. It is not set by default as it might break some broken web # # here. It is not set by default as it might break some broken web
# # applications, like IIS with NTLM authentication. # # applications, like IIS with NTLM authentication.
# return (pipe); # return (pipe);
# } # }
# #
# sub vcl_pass { # sub vcl_pass {
# return (pass); # return (pass);
# } # }
# #
# sub vcl_hash { # sub vcl_hash {
# hash_data(req.url); # hash_data(req.url);
# if (req.http.host) { # if (req.http.host) {
# hash_data(req.http.host); # hash_data(req.http.host);
# } else { # } else {
# hash_data(server.ip); # hash_data(server.ip);
# } # }
# return (hash); # return (hash);
# } # }
# #
# sub vcl_hit { # sub vcl_hit {
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_miss { # sub vcl_miss {
# return (fetch); # return (fetch);
# } # }
# #
# sub vcl_fetch { # sub vcl_fetch {
# if (beresp.ttl <= 0s || # if (beresp.ttl <= 0s ||
# beresp.http.Set-Cookie || # beresp.http.Set-Cookie ||
# beresp.http.Vary == "*") { # beresp.http.Vary == "*") {
# /* # /*
# * Mark as "Hit-For-Pass" for the next 2 minutes # * Mark as "Hit-For-Pass" for the next 2 minutes
# */ # */
# set beresp.ttl = 120 s; # set beresp.ttl = 120 s;
# return (hit_for_pass); # return (hit_for_pass);
# } # }
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_deliver { # sub vcl_deliver {
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_error { # sub vcl_error {
# set obj.http.Content-Type = "text/html; charset=utf-8"; # set obj.http.Content-Type = "text/html; charset=utf-8";
# set obj.http.Retry-After = "5"; # set obj.http.Retry-After = "5";
# synthetic {" # synthetic {"
# <?xml version="1.0" encoding="utf-8"?> # <?xml version="1.0" encoding="utf-8"?>
# <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" # <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
# "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> # "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
# <html> # <html>
# <head> # <head>
# <title>"} + obj.status + " " + obj.response + {"</title> # <title>"} + obj.status + " " + obj.response + {"</title>
# </head> # </head>
# <body> # <body>
# <h1>Error "} + obj.status + " " + obj.response + {"</h1> # <h1>Error "} + obj.status + " " + obj.response + {"</h1>
# <p>"} + obj.response + {"</p> # <p>"} + obj.response + {"</p>
# <h3>Guru Meditation:</h3> # <h3>Guru Meditation:</h3>
# <p>XID: "} + req.xid + {"</p> # <p>XID: "} + req.xid + {"</p>
# <hr> # <hr>
# <p>Varnish cache server</p> # <p>Varnish cache server</p>
# </body> # </body>
# </html> # </html>
# "}; # "};
# return (deliver); # return (deliver);
# } # }
# #
# sub vcl_init { # sub vcl_init {
# return (ok); # return (ok);
# } # }
# #
# sub vcl_fini { # sub vcl_fini {
# return (ok); # return (ok);
# } # }
   
  #
  # ckan - Pylons configuration
  #
  # The %(here)s variable will be replaced with the parent directory of this file
  #
  [DEFAULT]
 
  # Change debug to true when doing CKAN development, it enables Pylons'
  # interactive debugging tool, makes Fanstatic serve unminified JS and CSS
  # files, and enables CKAN templates' debugging features.
  #
  # WARNING: *THIS SETTING MUST BE SET TO FALSE ON A PRODUCTION ENVIRONMENT*
  # Debug mode will enable the interactive debugging tool, allowing ANYONE to
  # execute malicious code after an exception is raised.
  debug = False
 
  email_to = ddg@alert.links.com.au
  error_email_from = data.gov@finance.gov.au
 
  # The SMTP server to connect to when sending emails to users, with optional
  # port (default: 25). For example: lavabit.com, or smtp.gmail.com:587. To
  # connect to a local sendmail process enter 'localhost'.
  #smtp.server = localhost
  smtp.server = smtp.gmail.com:587
 
  # Whether or not to use STARTTLS when connecting to the SMTP server.
  #smtp.starttls = False
  smtp.starttls = True
 
  # The username and password to use to authenticate with the SMTP server.
  # Optional, if these are left commented-out then CKAN will try to send email
  # to the SMTP server without logging in first.
  #smtp.user = your_username@gmail.com
  #smtp.password = your_password
  smtp.user = datagovau@gmail.com
  smtp.password = ***
  googleanalytics.id = ***
  # The email address that emails sent by CKAN to users should appear to come
  # from. Optional (default: None, note that the SMTP server may insert its own
  # from address).
  smtp.mail_from = data.gov@finance.gov.au
 
  [server:main]
  use = egg:Paste#http
  host = 0.0.0.0
  port = 5000
 
  [app:main]
  use = egg:ckan
  ckan.tracking_enabled = true
  full_stack = true
  cache_dir = %(here)s/data
  beaker.session.key = ckan
  beaker.session.secret = ***
  app_instance_uuid = ***
  # Auth
 
  ckan.auth.anon_create_dataset = false
  ckan.auth.create_unowned_dataset = false
  ckan.auth.create_dataset_if_not_in_organization = false
  ckan.auth.user_create_organizations = false
  ckan.auth.user_delete_organizations = true
  ckan.auth.user_create_groups = false
  ckan.auth.user_delete_groups = true
  ckan.auth.create_user_via_api = true
 
  # List the names of CKAN extensions to activate.
  # Note: This line is required to be here for packaging, even if it is empty.
  # Note: Add ``pdf_preview`` to enable the resource preview for PDFs
  # Add the ``resource_proxy`` plugin to enable resorce proxying and get around the same origin policy
  # Add ``datastore`` to enable the CKAN DataStore extension
  ckan.plugins = qa disqus stats json_preview recline_preview datastore datastorer googleanalytics resource_proxy wms_preview kml_preview geojson_preview datagovau
 
  disqus.name = datagovau
 
  # If you'd like to fine-tune the individual locations of the cache data dirs
  # for the Cache data, or the Session saves, un-comment the desired settings
  # here:
  #beaker.cache.data_dir = %(here)s/data/cache
  #beaker.session.data_dir = %(here)s/data/sessions
 
  # Specify the database for SQLAlchemy to use:
  # * Postgres is currently required for a production CKAN deployment
  # * Sqlite (memory or file) can be used as a quick alternative for testing
  #sqlalchemy.url = postgresql://ckanuser:pass@localhost/ckantest
  sqlalchemy.url = ***
  #sqlalchemy.url = sqlite:///
  #sqlalchemy.url = sqlite:///%(here)s/somedb.db
 
  # Un-comment and specify the URLs for the DataStore database.
  # * Postgres is required
  #ckan.datastore.write_url = postgresql://ckanuser:pass@localhost/datastore
  #ckan.datastore.read_url = postgresql://readonlyuser:pass@localhost/datastore
  ckan.datastore.write_url = ***
  ckan.datastore.read_url = ***
 
  # repoze.who config
  who.config_file = %(here)s/who.ini
  who.log_level = warning
  who.log_file = %(cache_dir)s/who_log.ini
 
  # Location of RDF versions of datasets
  #rdf_packages = http://semantic.ckan.net/record/
 
  # Location of licenses group (defaults to cached local version of ckan group)
  #licenses_group_url = http://licenses.opendefinition.org/licenses/groups/ckan.json
  licenses_group_url = file://%(here)s/licenses.json
 
  # Dataset form to use
  package_form = standard
 
  # Hide certain extras fields from dataset read form:
  # package_hide_extras = for_search_index_only
 
  # API configuration
  #apikey_header_name = X-CKAN-API-Key
 
  ## extra places to look for templates and public files (comma separated lists)
  ## any templates/files found will override correspondingly named ones in
  ## ckan/templates/ and ckan/public
  ## (e.g. to override main layout template layout.html or add extra css files)
  # extra_template_paths = %(here)s/my-templates
  # extra_public_paths = %(here)s/my-public
 
  # Dataset form integration
  #package_edit_return_url = http://another.frontend/dataset/<NAME>
  #package_new_return_url = http://another.frontend/dataset/<NAME>
 
 
  # Turn on messaging with carrot, default to false
  #ckan.async_notifier = true
  # Messaging module used by carrot:
  # * pyamqplib - AMQP (e.g. for RabbitMQ)
  # * queue - native Python Queue (debugging and tests only)
  #carrot_messaging_library = pyamqplib
 
  ## Perform search just using database (rather than use e.g. solr).
  ## In this setup search is crude and limited .e.g no full-text search, no faceting ...
  ## However, very useful for getting up and running quickly with CKAN
  # ckan.simple_search = 1
 
  ## Title of site (using in several places including templates and <title> tag
  ckan.site_title = data.gov.au
 
  ## Logo image to use on the home page
  ckan.site_logo = /base/images/ckan-logo.png
 
  ## Site tagline / description (used on front page)
  ckan.site_description = Australian Government Open Data Catalogue
 
  ## Used in creating some absolute urls (such as rss feeds, css files) and
  ## dump filenames
  ckan.site_url = http://data.gov.au
 
  ## Favicon (default is the CKAN software favicon)
  ckan.favicon = /images/icons/ckan.ico
 
  ## The gravatar default to use. This can be any of the pre-defined strings
  ## as defined on http://en.gravatar.com/site/implement/images/ (e.g. "identicon"
  ## or "mm"). Or it can be a url, e.g. "http://example.com/images/avatar.jpg"
  ckan.gravatar_default = identicon
 
  ## Solr support
  solr_url = http://solr.data.gov.au:8983/solr
 
  ## Automatic indexing. Make all changes immediately available via the search
  ## after editing or creating a dataset. Default is true. If for some reason
  ## you need the indexing to occur asynchronously, set this option to 0.
  # ckan.search.automatic_indexing = 1
 
  ## An 'id' for the site (using, for example, when creating entries in a common search index)
  ## If not specified derived from the site_url
  ckan.site_id = data.gov.au
 
  ## API url to use (e.g. in AJAX callbacks)
  ## Enable if the API is at a different domain
  # ckan.api_url = http://www.ckan.net
 
  ## html content to be inserted just before </head> tag (e.g. extra stylesheet)
  ## NB: can use html e.g. <strong>blah</strong>
  ## NB: can have multiline strings just indent following lines
  # ckan.template_head_end = <link rel="stylesheet" href="http://mysite.org/css/custom.css" type="text/css">
 
  ## html content to be inserted just before </body> tag (e.g. google analytics code)
  ## NB: can use html e.g. <strong>blah</strong>
  ## NB: can have multiline strings just indent following lines
  # ckan.template_footer_end =
 
  # These three settings (ckan.log_dir, ckan.dump_dir and ckan.backup_dir) are
  # all used in cron jobs, not in CKAN itself. CKAN logging is configured
  # in the logging configuration below
  # Directory for logs (produced by cron scripts associated with ckan)
  ckan.log_dir = %(here)s/log
  # Directory for JSON/CSV dumps (must match setting in apache config)
  ckan.dump_dir = %(here)s/dump
  # Directory for SQL database backups
  ckan.backup_dir = %(here)s/backup
 
  # Default authorizations for new domain objects
  #ckan.default_roles.Package = {"visitor": ["reader"], "logged_in": ["reader"]}
  #ckan.default_roles.Group = {"visitor": ["reader"], "logged_in": ["reader"]}
  #ckan.default_roles.System = {"visitor": ["reader"], "logged_in": ["editor"]}
  #ckan.default_roles.AuthorizationGroup = {"visitor": ["reader"], "logged_in": ["reader"]}
 
  ## Ckan public and private recaptcha keys [localhost]
  #ckan.recaptcha.publickey = 6LcL-94SAAAAAKCHKLIgCYNJczalehF4a3GHlPyR
  #ckan.recaptcha.privatekey = 6LcL-94SAAAAADCsq995yBsNl7lHEgJ3Ukqf4Ykq
 
  # Locale/languages
  ckan.locale_default = en_GB
  ckan.locales_offered = en_GB
  # Languages are grouped by percentage of strings in CKAN 1.8 translated
  # (those with 100% first, then those with >=80%, then >=50%, then <50%) and
  # within these groups roughly sorted by number of worldwide native speakers
  # according to Wikipedia.
  ckan.locale_order = en_GB pt_BR ja it cs_CZ ca es fr el sv sr sr@latin no sk fi ru de pl nl bg ko_KR hu sa sl lv
  ckan.locales_filtered_out = en
 
  ## Atom Feeds
  #
  # Settings for customising the metadata provided in
  # atom feeds.
  #
  # These settings are used to generate the <id> tags for both feeds
  # and entries. The unique <id>s are created following the method
  # outlined in http://www.taguri.org/ ie - they generate tagURIs, as specified
  # in http://tools.ietf.org/html/rfc4151#section-2.1 :
  #
  # <id>tag:thedatahub.org,2012:/feeds/group/933f3857-79fd-4beb-a835-c0349e31ce76</id>
  #
  # Each component has the corresponding settings:
  #
  # "thedatahub.org" is ckan.feeds.authority_name
  # "2012" is ckan.feeds.date
  #
 
  # Leave blank to use the ckan.site_url config value, otherwise set to a
  # domain or email address that you own. e.g. thedatahub.org or
  # admin@thedatahub.org
  ckan.feeds.authority_name =
 
  # Pick a date of the form "yyyy[-mm[-dd]]" during which the above domain was
  # owned by you.
  ckan.feeds.date = 2012
 
  # If not set, then the value in `ckan.site_id` is used.
  ckan.feeds.author_name =
 
  # If not set, then the value in `ckan.site_url` is used.
  ckan.feeds.author_link =
 
  ## File Store
  #
  # CKAN allows users to upload files directly to file storage either on the local
  # file system or to online ‘cloud’ storage like Amazon S3 or Google Storage.
  #
  # If you are using local file storage, remember to set ckan.site_url.
  #
  # To enable cloud storage (Google or S3), first run: pip install boto
  #
  # @see http://docs.ckan.org/en/latest/filestore.html
 
  # 'Bucket' to use for file storage
  ckan.storage.bucket = ckandga
 
  # To enable local file storage:
  ofs.impl = pairtree
  ofs.storage_dir = /srv/ckan/dga
 
  # To enable Google cloud storage:
  #ofs.impl = google
  #ofs.gs_access_key_id =
  #ofs.gs_secret_access_key =
 
  # To enable S3 cloud storage:
  #ofs.impl = s3
  #ofs.aws_access_key_id = ....
  #ofs.aws_secret_access_key = ....
 
 
  ## Previews
  #
  # Set the file types that should be previewed inline (e.g. images) or directly in an iframe.
 
  ckan.preview.direct = png jpg gif
  ckan.preview.loadable = html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json
 
 
  # Activity Streams
  #
  # Default maximum number of activities to show in an activity stream.
  # ckan.activity_list_limit = 31
 
 
  # Activity Streams Email Notifications
  #
  # Uncomment this line to enable activity streams email notifications.
  # You also need to setup a cron job to send the emails, see the documentation.
  #ckan.activity_streams_email_notifications = True
 
  # Email notifications for events older than this time delta will not be sent.
  # Accepted formats: '2 days', '14 days', '4:35:00' (hours, minutes, seconds),
  # '7 days, 3:23:34', etc.
  # ckan.email_notifications_since = 2 days
 
  ckan.cache_expires = 2592000
  #ckan.page_cache_enabled = True
  ckan.static_max_age = 2592000
  ckan.cache_enabled = True
  # DEBUGGING
 
  # ckan.debug_supress_header This option can be set to suppress the debug
  # information showing the controller and action recieving the request being
  # shown in the header. Note: This info only shows if debug is set to true.
  ckan.debug_supress_header = false
 
  ## ===================================
  ## Extensions
 
  ## Config option to enable the (1 day) cache for stats
  ## Default (if not defined) is True as stats computations are intensive
  # ckanext.stats.cache_enabled = True
 
  # Logging configuration
  [loggers]
  keys = root, ckan, ckanext
 
  [handlers]
  keys = console, file
 
  [formatters]
  keys = generic
 
  [logger_root]
  level = WARNING
  handlers = console, file
 
  [logger_ckan]
  level = ERROR
  handlers = console, file
  qualname = ckan
  propagate = 0
 
  [logger_ckanext]
  level = WARNING
  handlers = console, file
  qualname = ckanext
  propagate = 0
 
  [handler_console]
  class = StreamHandler
  args = (sys.stderr,)
  level = NOTSET
  formatter = generic
 
  [handler_file]
  class = logging.handlers.RotatingFileHandler
  formatter = generic
  level = NOTSET
  #args = ("ckan.log", "a", 20000000, 9)
  args = ("/var/log/ckan/dga/ckan.log", "a", 20000000, 9)
 
  [formatter_generic]
  format = %(asctime)s %(levelname)-5.5s [%(name)s] %(message)s
 
file:b/admin/reset.sh (new)
  paster --plugin=ckan db clean --config=development.ini
  echo "drop extension postgis cascade;" | psql -d ckantest
  paster --plugin=ckan db clean --config=development.ini
 
  #to initiate for first time instead of load from dump
  #paster --plugin=ckan db init --config=development.in
  #paster --plugin=ckan user add maxious password=snmc email=maxious@gmail.com
  #paster --plugin=ckan sysadmin add maxious
  #paster --plugin=ckan db dump dump.db
 
  #paster --plugin=ckan db load --config=development.ini dump.db
  paster --plugin=ckan db load --config=development.ini dump.harvest.db
  echo "create extension postgis;" | psql -d ckantest
  #sleep 2
  paster --plugin=ckan search-index rebuild --config=development.ini
  #rm -r /tmp/pairtree_*
 
  import urllib
  import json
  from pprint import pprint
  import logging
  import ckan.logic as logic
  import hashlib
  import threading
  from ckan.common import _, c, request, response
  from pylons import config
  from webob.multidict import UnicodeMultiDict
  from paste.util.multidict import MultiDict
 
  log = logging.getLogger(__name__)
 
  from ckan.controllers.api import ApiController
 
  class DGAApiController(ApiController):
 
  def _post_analytics(self,user,request_obj_type,request_function,request_id):
  if (config.get('googleanalytics.id') != None):
  data = urllib.urlencode({
  "v":1,
  "tid":config.get('googleanalytics.id'),
  "cid":hashlib.md5(user).hexdigest(),
  "t":"event",
  "dh":c.environ['HTTP_HOST'],
  "dp":c.environ['PATH_INFO'],
  "dr":c.environ.get('HTTP_REFERER',''),
  "ec":"CKAN API Request",
  "ea":request_obj_type+request_function,
  "el":request_id,
  })
  log.debug("Sending API Analytics Data: "+data)
  # send analytics asynchronously
  threading.Thread(target=urllib.urlopen,args=("http://www.google-analytics.com/collect", data)).start()
 
 
  def action(self, logic_function, ver=None):
  try:
  function = logic.get_action(logic_function)
  except Exception,e:
  log.debug(e)
  pass
  try:
  side_effect_free = getattr(function, 'side_effect_free', False)
  request_data = self._get_request_data(try_url_params=side_effect_free)
  if isinstance(request_data, dict):
  id = request_data.get('id','')
  if 'q' in request_data.keys():
  id = request_data['q']
  if 'query' in request_data.keys():
  id = request_data['query']
  self._post_analytics(c.user,logic_function,'', id)
  except Exception,e:
  print log.debug(e)
  pass
 
  return ApiController.action(self,logic_function, ver)
 
  def list(self, ver=None, register=None, subregister=None, id=None):
  self._post_analytics(c.user,register+("_"+str(subregister) if subregister else ""),"list",id)
  return ApiController.list(self,ver, register, subregister, id)
  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)
  return ApiController.show(self,ver, register, subregister, id,id2)
  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)
  return ApiController.update(self,ver, register, subregister, id,id2)
  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)
  return ApiController.delete(self,ver, register, subregister, id,id2)
  def search(self, ver=None, register=None):
  id = None
  try:
  params = MultiDict(self._get_search_params(request.params))
  if 'q' in params.keys():
  id = params['q']
  if 'query' in params.keys():
  id = params['query']
  except ValueError, e:
  print str(e)
  pass
  self._post_analytics(c.user,register,"search",id)
 
import logging import logging
   
import ckan.plugins as plugins import ckan.plugins as plugins
import ckan.lib as lib import ckan.lib as lib
import ckan.lib.dictization.model_dictize as model_dictize import ckan.lib.dictization.model_dictize as model_dictize
import ckan.plugins.toolkit as tk import ckan.plugins.toolkit as tk
import ckan.model as model import ckan.model as model
from pylons import config from pylons import config
  from routes.mapper import SubMapper, Mapper as _Mapper
   
  from sqlalchemy import orm
  import ckan.model
   
#parse the activity feed for last active non-system user #parse the activity feed for last active non-system user
def get_last_active_user(id): def get_last_active_user(id):
system_user = lib.helpers.get_action('user_show',{'id': config.get('ckan.site_id', 'ckan_site_user')}) system_user = lib.helpers.get_action('user_show',{'id': config.get('ckan.site_id', 'ckan_site_user')})
user_list = [x for x in lib.helpers.get_action('package_activity_list',{'id':id}) if x['user_id'] != system_user['id']] user_list = [x for x in lib.helpers.get_action('package_activity_list',{'id':id}) if x['user_id'] != system_user['id']]
user = None user = None
if len(user_list) > 0: if len(user_list) > 0:
user = user_list[0].get('user_id', None) user = user_list[0].get('user_id', None)
if user is None: if user is None:
return system_user return system_user
else: else:
return lib.helpers.get_action('user_show',{'id':user}) return lib.helpers.get_action('user_show',{'id':user})
   
# get user created datasets and those they have edited # get user created datasets and those they have edited
def get_user_datasets(user_dict): def get_user_datasets(user_dict):
created_datasets_list = user_dict['datasets'] created_datasets_list = user_dict['datasets']
active_datasets_list = [x['data']['package'] for x in active_datasets_list = [x['data']['package'] for x in
lib.helpers.get_action('user_activity_list',{'id':user_dict['id']}) if x['data'].get('package')] lib.helpers.get_action('user_activity_list',{'id':user_dict['id']}) if x['data'].get('package')]
return created_datasets_list + active_datasets_list return created_datasets_list + active_datasets_list
   
   
class ExampleIDatasetFormPlugin(plugins.SingletonPlugin, class DataGovAuPlugin(plugins.SingletonPlugin,
tk.DefaultDatasetForm): tk.DefaultDatasetForm):
'''An example IDatasetForm CKAN plugin. '''An example IDatasetForm CKAN plugin.
   
Uses a tag vocabulary to add a custom metadata field to datasets. Uses a tag vocabulary to add a custom metadata field to datasets.
   
''' '''
plugins.implements(plugins.IConfigurer, inherit=False) plugins.implements(plugins.IConfigurer, inherit=False)
plugins.implements(plugins.IDatasetForm, inherit=False) plugins.implements(plugins.IDatasetForm, inherit=False)
plugins.implements(plugins.ITemplateHelpers, inherit=False) plugins.implements(plugins.ITemplateHelpers, inherit=False)
  plugins.implements(plugins.IRoutes, inherit=True)
# These record how many times methods that this plugin's methods are  
# called, for testing purposes. def before_map(self, map):
num_times_new_template_called = 0  
num_times_read_template_called = 0 # Helpers to reduce code clutter
num_times_edit_template_called = 0 GET = dict(method=['GET'])
num_times_search_template_called = 0 PUT = dict(method=['PUT'])
num_times_history_template_called = 0 POST = dict(method=['POST'])
num_times_package_form_called = 0 DELETE = dict(method=['DELETE'])
num_times_check_data_dict_called = 0 GET_POST = dict(method=['GET', 'POST'])
num_times_setup_template_variables_called = 0 # intercept API calls that we want to capture analytics on
  register_list = [
  'package',
  'dataset',
  'resource',
  'tag',
  'group',
  'related',
  'revision',
  'licenses',
  'rating',
  'user',
  'activity'
  ]
  register_list_str = '|'.join(register_list)
  # /api ver 3 or none
  with SubMapper(map, controller='ckanext.datagovau.controller:DGAApiController', path_prefix='/api{ver:/3|}',
  ver='/3') as m:
  m.connect('/action/{logic_function}', action='action',
  conditions=GET_POST)
   
  # /api ver 1, 2, 3 or none
  with SubMapper(map, controller='ckanext.datagovau.controller:DGAApiController', path_prefix='/api{ver:/1|/2|/3|}',
  ver='/1') as m:
  m.connect('/search/{register}', action='search')
   
  # /api/rest ver 1, 2 or none
  with SubMapper(map, controller='ckanext.datagovau.controller:DGAApiController', path_prefix='/api{ver:/1|/2|}',
  ver='/1', requirements=dict(register=register_list_str)
  ) as m:
   
  m.connect('/rest/{register}', action='list', conditions=GET)
  m.connect('/rest/{register}', action='create', conditions=POST)
  m.connect('/rest/{register}/{id}', action='show', conditions=GET)
  m.connect('/rest/{register}/{id}', action='update', conditions=PUT)
  m.connect('/rest/{register}/{id}', action='update', conditions=POST)
  m.connect('/rest/{register}/{id}', action='delete', conditions=DELETE)
   
  return map
   
def update_config(self, config): def update_config(self, config):
# Add this plugin's templates dir to CKAN's extra_template_paths, so # Add this plugin's templates dir to CKAN's extra_template_paths, so
# that CKAN will use this plugin's custom templates. # that CKAN will use this plugin's custom templates.
# here = os.path.dirname(__file__) # here = os.path.dirname(__file__)
# rootdir = os.path.dirname(os.path.dirname(here)) # rootdir = os.path.dirname(os.path.dirname(here))
   
tk.add_template_directory(config, 'templates') tk.add_template_directory(config, 'templates')
tk.add_public_directory(config, 'theme/public') tk.add_public_directory(config, 'theme/public')
tk.add_resource('theme/public', 'ckanext-datagovau') tk.add_resource('theme/public', 'ckanext-datagovau')
# config['licenses_group_url'] = 'http://%(ckan.site_url)/licenses.json' # config['licenses_group_url'] = 'http://%(ckan.site_url)/licenses.json'
   
def get_helpers(self): def get_helpers(self):
return {'get_last_active_user': get_last_active_user, 'get_user_datasets': get_user_datasets} return {'get_last_active_user': get_last_active_user, 'get_user_datasets': get_user_datasets}
   
def is_fallback(self): def is_fallback(self):
# Return True to register this plugin as the default handler for # Return True to register this plugin as the default handler for
# package types not handled by any other IDatasetForm plugin. # package types not handled by any other IDatasetForm plugin.
return True return True
   
def package_types(self): def package_types(self):
# This plugin doesn't handle any special package types, it just # This plugin doesn't handle any special package types, it just
# registers itself as the default (above). # registers itself as the default (above).
return [] return []
   
   
def create_package_schema(self): def create_package_schema(self):
schema = super(ExampleIDatasetFormPlugin, self).create_package_schema() schema = super(DataGovAuPlugin, self).create_package_schema()
schema = self._modify_package_schema(schema) schema = self._modify_package_schema(schema)
return schema return schema
   
def update_package_schema(self): def update_package_schema(self):
schema = super(ExampleIDatasetFormPlugin, self).update_package_schema() schema = super(DataGovAuPlugin, self).update_package_schema()
schema = self._modify_package_schema(schema) schema = self._modify_package_schema(schema)
return schema return schema
   
def show_package_schema(self): def show_package_schema(self):
schema = super(ExampleIDatasetFormPlugin, self).show_package_schema() schema = super(DataGovAuPlugin, self).show_package_schema()
   
# Don't show vocab tags mixed in with normal 'free' tags # Don't show vocab tags mixed in with normal 'free' tags
# (e.g. on dataset pages, or on the search page) # (e.g. on dataset pages, or on the search page)
schema['tags']['__extras'].append(tk.get_converter('free_tags_only')) schema['tags']['__extras'].append(tk.get_converter('free_tags_only'))
   
# Add our custom_text field to the dataset schema. # Add our custom_text field to the dataset schema.
# ignore_missing == optional # ignore_missing == optional
# ignore_empty == mandatory but not for viewing # ignore_empty == mandatory but not for viewing
# !!! always convert_from_extras first # !!! always convert_from_extras first
schema.update({ schema.update({
'agency_program': [tk.get_converter('convert_from_extras'), 'agency_program': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing')], tk.get_validator('ignore_missing')],
'contact_point': [tk.get_converter('convert_from_extras'), 'contact_point': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'spatial_coverage': [tk.get_converter('convert_from_extras'), 'spatial_coverage': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'granularity': [tk.get_converter('convert_from_extras'), 'granularity': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'jurisdiction': [tk.get_converter('convert_from_extras'), 'jurisdiction': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'temporal_coverage': [tk.get_converter('convert_from_extras'), 'temporal_coverage': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'data_state': [tk.get_converter('convert_from_extras'), 'data_state': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')], tk.get_validator('ignore_empty')],
'update_freq': [tk.get_converter('convert_from_extras'), 'update_freq': [tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_empty')] tk.get_validator('ignore_empty')]
}) })
return schema return schema
   
def _modify_package_schema(self, schema): def _modify_package_schema(self, schema):
# Add our custom_test metadata field to the schema, this one will use # Add our custom_test metadata field to the schema, this one will use
# convert_to_extras instead of convert_to_tags. # convert_to_extras instead of convert_to_tags.
# ignore_missing == optional # ignore_missing == optional
# not_empty == mandatory, enforced here while modifying # not_empty == mandatory, enforced here while modifying
   
schema.update({ schema.update({
'agency_program': [tk.get_validator('ignore_missing'), 'agency_program': [tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras')], tk.get_converter('convert_to_extras')],
'contact_point': [tk.get_converter('convert_to_extras'), 'contact_point': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'spatial_coverage': [tk.get_converter('convert_to_extras'), 'spatial_coverage': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'granularity': [tk.get_converter('convert_to_extras'), 'granularity': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'jurisdiction': [tk.get_converter('convert_to_extras'), 'jurisdiction': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'temporal_coverage': [tk.get_converter('convert_to_extras'), 'temporal_coverage': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'data_state': [tk.get_converter('convert_to_extras'), 'data_state': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')], tk.get_validator('not_empty')],
'update_freq': [tk.get_converter('convert_to_extras'), 'update_freq': [tk.get_converter('convert_to_extras'),
tk.get_validator('not_empty')] tk.get_validator('not_empty')]
}) })
return schema return schema
   
# These methods just record how many times they're called, for testing # These methods just record how many times they're called, for testing
# purposes. # purposes.
# TODO: It might be better to test that custom templates returned by # TODO: It might be better to test that custom templates returned by
# these methods are actually used, not just that the methods get # these methods are actually used, not just that the methods get
# called. # called.
   
def setup_template_variables(self, context, data_dict): def setup_template_variables(self, context, data_dict):
return super(ExampleIDatasetFormPlugin, self).setup_template_variables( return super(DataGovAuPlugin, self).setup_template_variables(
context, data_dict) context, data_dict)
   
def new_template(self): def new_template(self):
return super(ExampleIDatasetFormPlugin, self).new_template() return super(DataGovAuPlugin, self).new_template()
   
def read_template(self): def read_template(self):
return super(ExampleIDatasetFormPlugin, self).read_template() return super(DataGovAuPlugin, self).read_template()
   
def edit_template(self): def edit_template(self):
return super(ExampleIDatasetFormPlugin, self).edit_template() return super(DataGovAuPlugin, self).edit_template()
   
def search_template(self): def search_template(self):
return super(ExampleIDatasetFormPlugin, self).search_template() return super(DataGovAuPlugin, self).search_template()
   
def history_template(self): def history_template(self):
return super(ExampleIDatasetFormPlugin, self).history_template() return super(DataGovAuPlugin, self).history_template()
   
def package_form(self): def package_form(self):
return super(ExampleIDatasetFormPlugin, self).package_form() return super(DataGovAuPlugin, self).package_form()
   
   
  {% 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 %}
 
 
 
  <div class="module-content ckanext-datapreview">
  {% if embed %}
  {# images can be embedded directly #}
  <img src="{{ resource_url }}"></img>
  {% else %}
  <div class="data-viewer-error js-hide">
  <p class="text-error">
  <i class="icon-info-sign"></i>
  {{ _('This resource can not be previewed at the moment.') }}
  <a href="#" data-toggle="collapse" data-target="#data-view-error">
  {{ _('Click here for more information.') }}
  </a>
  </p>
  <p id="data-view-error" class="collapse"></p>
  <p>
  <a href="{{ raw_resource_url }}" class="btn btn-large resource-url-analytics" target="_blank">
  <i class="icon-large icon-download"></i>
  {{ _('Download resource') }}
  </a>
  </p>
  </div>
  <iframe src="{{ resource_url }}" frameborder="0" width="100%" data-module="data-viewer">
  <p>{{ _('Your browser does not support iframes.') }}</p>
  </iframe>
  {% endif %}
  </div>
  <div class="embedhint" style="padding-left: 15px;">
  <h4>Embed this visualisation in your own website...</h4>
  Copy the HTML in the box below and you can display this visualisation on your own website.<br/>
  <textarea style="width:97%">&lt;iframe src="{{ resource_url }}" frameborder="0" width="100%" height="600px"&gt;&lt;/iframe&gt;</textarea>
  </div>
 
{% ckan_extends %} {% ckan_extends %}
  {% block primary_content_inner %}
  {{ super() }}
  <div class="module-content">
  {{ h.disqus_comments() }}
  </div>
  {% endblock %}
{% block package_additional_info %} {% block package_additional_info %}
<section class="additional-info" xmlns: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#
xmlns:dcam="http://purl.org/dc/dcam/" dcam: http://purl.org/dc/dcam/
xmlns:aglsterms="http://www.agls.gov.au/agls/terms/" aglsterms: http://www.agls.gov.au/agls/terms/
xmlns:agentterms="http://www.agls.gov.au/agls/agentterms/" agentterms: http://www.agls.gov.au/agls/agentterms/
xmlns:availterms="http://www.agls.gov.au/agls/availterms/" availterms: http://www.agls.gov.au/agls/availterms/
xmlns:adminterms="http://www.agls.gov.au/agls/adminterms/" adminterms: http://www.agls.gov.au/agls/adminterms/
xmlns: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('Agency Program') %} {% if pkg.get('url') %}
<tr>  
<th scope="row" class="dataset-label">Agency Program</th>  
<td class="dataset-details"> {{ pkg.get('Agency Program') }}</td>  
</tr>  
{% endif %}  
{% if h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI') %}  
<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(h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI'), <td class="dataset-details" property="dct:source">{{ h.link_to(pkg.get('url'),
h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI'), 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 h.get_pkg_dict_extra(pkg,'Geospatial Coverage') %}  
   
<tr>  
<th scope="row" class="dataset-label">Geospatial Coverage</th>  
<td class="dataset-details" property="dct:spatial"> {{ h.get_pkg_dict_extra(pkg,'Geospatial Coverage') }}</td>  
</tr>  
{% 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 h.get_pkg_dict_extra(pkg,'Granularity') %}  
   
<tr>  
<th scope="row" class="dataset-label">Data Granularity</th>  
<td class="dataset-details"> {{ h.get_pkg_dict_extra(pkg,'Granularity') }}</td>  
</tr>  
{% 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 h.get_pkg_dict_extra(pkg,'AGLSTERMS.Jurisdiction') %}  
   
<tr>  
<th scope="row" class="dataset-label">Government Jurisdiction</th>  
<td class="dataset-details" property="aglsterms:AglsJuri"> {{ h.get_pkg_dict_extra(pkg,'AGLSTERMS.Jurisdiction') }}</td>  
</tr>  
{% 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 h.get_pkg_dict_extra(pkg,'Temporal Coverage') %}  
   
<tr>  
<th scope="row" class="dataset-label">Temporal Coverage</th>  
<td class="dataset-details" property="dct:temporal"> {{ h.get_pkg_dict_extra(pkg,'Temporal Coverage') }}</td>  
</tr>  
{% 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>  
{% endif %}  
{% if h.get_pkg_dict_extra(pkg,'Update Frequency') %}  
<tr>  
<th scope="row" class="dataset-label">Update Frequency</th>  
<td class="dataset-details"> {{ h.get_pkg_dict_extra(pkg,'Update Frequency') }}</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 %}
   
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<rdf:RDF <rdf:RDF
xmlns:py="http://genshi.edgewall.org/" xmlns:py="http://genshi.edgewall.org/"
xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:dcat="http://www.w3.org/ns/dcat#"
xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcam="http://purl.org/dc/dcam/"
xmlns:aglsterms="http://www.agls.gov.au/agls/terms/" xmlns:aglsterms="http://www.agls.gov.au/agls/terms/"
xmlns:agentterms="http://www.agls.gov.au/agls/agentterms/" xmlns:agentterms="http://www.agls.gov.au/agls/agentterms/"
xmlns:availterms="http://www.agls.gov.au/agls/availterms/" xmlns:availterms="http://www.agls.gov.au/agls/availterms/"
xmlns:adminterms="http://www.agls.gov.au/agls/adminterms/" xmlns:adminterms="http://www.agls.gov.au/agls/adminterms/"
xmlns:dct="http://purl.org/dc/terms/" xmlns:dct="http://purl.org/dc/terms/"
> >
<dcat:Dataset rdf:about="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}"> <dcat:Dataset rdf:about="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}">
<dct:identifier>${c.pkg_dict['name']}</dct:identifier> <dct:identifier>${c.pkg_dict['name']}</dct:identifier>
<dct:title>${c.pkg_dict['title']}</dct:title> <dct:title>${c.pkg_dict['title']}</dct:title>
<dct:landingPage <dct:landingPage
rdf:resource="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True) }"/> rdf:resource="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True) }"/>
<owl:sameAs rdf:resource="urn:uuid:${c.pkg_dict['id']}"/> <owl:sameAs rdf:resource="urn:uuid:${c.pkg_dict['id']}"/>
<dct:type>Dataset</dct:type> <dct:type>Dataset</dct:type>
<dct:description>${c.pkg_dict['notes']}</dct:description> <dct:description>${c.pkg_dict['notes']}</dct:description>
<dct:issued>${c.pkg_dict['metadata_created']}</dct:issued> <dct:issued>${c.pkg_dict['metadata_created']}</dct:issued>
<dct:modified>${c.pkg_dict['metadata_modified']}</dct:modified> <dct:modified>${c.pkg_dict['metadata_modified']}</dct:modified>
<dct:language>en</dct:language>  
   
<py:choose> <py:choose>
<py:when test="c.pkg_dict.get('license_url',None)"> <py:when test="c.pkg_dict.get('license_url',None)">
<dct:license>${c.pkg_dict['license_url']}</dct:license> <dct:license rdf:resource="${c.pkg_dict['license_url']}"/>
<dct:rights rdf:resource="${c.pkg_dict['license_url']}"/> <dct:rights rdf:resource="${c.pkg_dict['license_url']}"/>
</py:when> </py:when>
<py:otherwise> <py:otherwise>
<dct:license>${c.pkg_dict['license_id']}</dct:license> <dct:license>${c.pkg_dict['license_id']}</dct:license>
<dct:rights rdf:resource="${c.pkg_dict['license_id']}"/> <dct:rights>"${c.pkg_dict['license_id']}"</dct:rights>
</py:otherwise> </py:otherwise>
</py:choose> </py:choose>
<py:for each="tag_dict in c.pkg_dict.get('tags',[])"> <py:for each="tag_dict in c.pkg_dict.get('tags',[])">
<dcat:keyword>${ tag_dict["name"] }</dcat:keyword> <dcat:keyword>${ tag_dict["name"] }</dcat:keyword>
</py:for> </py:for>
<py:for each="group_dict in c.pkg_dict.get('groups',[])">  
<dcat:theme>${ group_dict["title"] }</dcat:theme>  
</py:for>  
   
<foaf:homepage  
rdf:resource="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}"/>  
<rdfs:label>${c.pkg_dict['name']}</rdfs:label>  
   
   
<py:for each="rsc_dict in c.pkg_dict['resources']"> <py:for each="rsc_dict in c.pkg_dict['resources']">
<dcat:distribution> <dcat:distribution>
<dcat:Distribution> <dcat:Distribution>
<dct:title>${rsc_dict.get('name')}</dct:title> <dct:title>${rsc_dict.get('name')}</dct:title>
<owl:sameAs rdf:resource="urn:uuid:${rsc_dict.get('id')}"/> <owl:sameAs rdf:resource="urn:uuid:${rsc_dict.get('id')}"/>
<dct:description>${rsc_dict.get('description')}</dct:description> <dct:description>${rsc_dict.get('description')}</dct:description>
<dcat:accessURL rdf:resource="${ rsc_dict.get('url') }"/> <dcat:accessURL rdf:resource="${ rsc_dict.get('url') }"/>
<dct:created>${rsc_dict.get('created')}</dct:created> <dct:created>${rsc_dict.get('created')}</dct:created>
<dct:modified>${rsc_dict.get('revision_timestamp')}</dct:modified> <dct:modified>${rsc_dict.get('revision_timestamp')}</dct:modified>
<dcat:byteSize py:if="rsc_dict.get('size')">${rsc_dict.get('size')}</dcat:byteSize> <dcat:byteSize py:if="rsc_dict.get('size')">${rsc_dict.get('size')}</dcat:byteSize>
<dcat:mediaType py:if="rsc_dict.get('mimetype')">${rsc_dict.get('mimetype')}</dcat:mediaType> <dcat:mediaType py:if="rsc_dict.get('mimetype')">${rsc_dict.get('mimetype')}</dcat:mediaType>
<dct:extent py:if="rsc_dict.get('size')">${rsc_dict.get('size')} bytes</dct:extent> <dct:extent py:if="rsc_dict.get('size')">${rsc_dict.get('size')} bytes</dct:extent>
<dct:format py:if="rsc_dict.get('format')"> <dct:format py:if="rsc_dict.get('format')">
<dct:IMT> <dct:IMT>
<rdf:value>${rsc_dict.get('format')}</rdf:value> <rdf:value>${rsc_dict.get('format')}</rdf:value>
<rdfs:label>${rsc_dict.get('format')}</rdfs:label> <rdfs:label>${rsc_dict.get('format')}</rdfs:label>
</dct:IMT> </dct:IMT>
</dct:format> </dct:format>
<dct:title py:if="rsc_dict.get('name')">${rsc_dict.get('name')}</dct:title> <dct:title py:if="rsc_dict.get('name')">${rsc_dict.get('name')}</dct:title>
</dcat:Distribution> </dcat:Distribution>
</dcat:distribution> </dcat:distribution>
</py:for> </py:for>
   
   
  <!-- data.gov.au specific stuff below this line -->
<dct:publisher py:if="c.pkg_dict.get('organization', None)"> <dct:publisher py:if="c.pkg_dict.get('organization', None)">
<rdf:Description> <rdf:Description>
<foaf:name>${ c.pkg_dict['organization']['title'] }</foaf:name> <foaf:name>${ c.pkg_dict['organization']['title'] }</foaf:name>
</rdf:Description> </rdf:Description>
</dct:publisher> </dct:publisher>
<dct:creator py:if="c.pkg_dict.get('organization', None)"> <dct:creator py:if="c.pkg_dict.get('organization', None)">
<rdf:Description> <rdf:Description>
<foaf:name>${ c.pkg_dict['organization']['title'] }</foaf:name> <foaf:name>${ c.pkg_dict['organization']['title'] }</foaf:name>
</rdf:Description> </rdf:Description>
</dct:creator> </dct:creator>
<dct:contributor> <dct:contributor>
<rdf:Description> <rdf:Description>
<foaf:name>${h.get_last_active_user(c.pkg_dict['id'])["display_name"]}</foaf:name> <foaf:name>${h.get_last_active_user(c.pkg_dict['id'])["display_name"]}</foaf:name>
<foaf:mbox py:if="h.get_last_active_user(c.pkg_dict['id']).get('email', None)" <foaf:mbox py:if="h.get_last_active_user(c.pkg_dict['id']).get('email', None)"
rdf:resource="mailto:${h.get_last_active_user(c.pkg_dict['id'])['email']}"/> rdf:resource="mailto:${h.get_last_active_user(c.pkg_dict['id'])['email']}"/>
</rdf:Description> </rdf:Description>
</dct:contributor> </dct:contributor>
   
  <py:for each="extra_dict in c.pkg_dict.get('extras',[])">
<foaf:homepage py:if="h.get_pkg_dict_extra(c.pkg_dict,'DCTERMS.Source.URI')">${h.get_pkg_dict_extra(c.pkg_dict,'DCTERMS.Source.URI') } <dct:relation>
</foaf:homepage> <rdf:Description>
  <rdfs:label>${extra_dict.get('key','')}</rdfs:label>
  <rdf:value>${extra_dict.get('value','')}</rdf:value>
  </rdf:Description>
  </dct:relation>
  </py:for>
  <dct:language>en</dct:language>
  <foaf:homepage
  rdf:resource="${ h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}"/>
<dcat:contactPoint py:if="c.pkg_dict.get('contact_point')">${c.pkg_dict.contact_point }</dcat:contactPoint> <dcat:contactPoint py:if="c.pkg_dict.get('contact_point')">${c.pkg_dict.contact_point }</dcat:contactPoint>
  <py:choose>
  <py:when test="c.pkg_dict.get('spatial',None)">
  <dct:spatial py:if="c.pkg_dict.get('spatial')">${ c.pkg_dict.spatial }</dct:spatial>
  </py:when>
  <py:otherwise>
<dct:spatial py:if="c.pkg_dict.get('spatial_coverage')">${ c.pkg_dict.spatial_coverage }</dct:spatial> <dct:spatial py:if="c.pkg_dict.get('spatial_coverage')">${ c.pkg_dict.spatial_coverage }</dct:spatial>
<dct:spatial py:if="h.get_pkg_dict_extra(c.pkg_dict,'Geospatial Coverage')">${ h.get_pkg_dict_extra(c.pkg_dict,'Geospatial Coverage') }</dct:spatial> </py:otherwise>
  </py:choose>
<aglsterms:AglsJuri py:if="c.pkg_dict.get('jurisdiction')">${ c.pkg_dict.jurisdiction }</aglsterms:AglsJuri> <aglsterms:AglsJuri py:if="c.pkg_dict.get('jurisdiction')">${ c.pkg_dict.jurisdiction }</aglsterms:AglsJuri>
<aglsterms:AglsJuri py:if="h.get_pkg_dict_extra(c.pkg_dict,'AGLSTERMS.Jurisdiction')">${ h.get_pkg_dict_extra(c.pkg_dict,'AGLSTERMS.Jurisdiction') }</aglsterms:AglsJuri>  
<dct:temporal py:if="c.pkg_dict.get('temporal_coverage')">${ c.pkg_dict.get('temporal_coverage') }</dct:temporal> <dct:temporal py:if="c.pkg_dict.get('temporal_coverage')">${ c.pkg_dict.get('temporal_coverage') }</dct:temporal>
<dct:temporal py:if="h.get_pkg_dict_extra(c.pkg_dict,'Temporal Coverage')">${ h.get_pkg_dict_extra(c.pkg_dict,'Temporal Coverage') }</dct:temporal>  
<dct:relation py:if="c.pkg_dict.get('data_state')"> <dct:relation py:if="c.pkg_dict.get('data_state')">
<rdf:Description> <rdf:Description>
<rdfs:label>Data State</rdfs:label> <rdfs:label>Data State</rdfs:label>
<rdf:value>${ c.pkg_dict.get('data_state') }</rdf:value> <rdf:value>${ c.pkg_dict.get('data_state') }</rdf:value>
</rdf:Description> </rdf:Description>
</dct:relation> </dct:relation>
   
<dct:relation py:if="c.pkg_dict.get('update_freq')"> <dct:relation py:if="c.pkg_dict.get('update_freq')">
<rdf:Description> <rdf:Description>
<rdfs:label>Update Frequency</rdfs:label> <rdfs:label>Update Frequency</rdfs:label>
<rdf:value>${ c.pkg_dict.get('update_freq') }</rdf:value> <rdf:value>${ c.pkg_dict.get('update_freq') }</rdf:value>
</rdf:Description>  
</dct:relation>  
<dct:relation py:if="h.get_pkg_dict_extra(c.pkg_dict,'Update Frequency')">  
<rdf:Description>  
<rdfs:label>Update Frequency</rdfs:label>  
<rdf:value>${ h.get_pkg_dict_extra(c.pkg_dict,'Update Frequency') }</rdf:value>  
</rdf:Description>  
</dct:relation>  
   
<dct:relation py:if="h.get_pkg_dict_extra(c.pkg_dict,'Agency Program')">  
<rdf:Description>  
<rdfs:label>Agency Program</rdfs:label>  
<rdf:value>${ h.get_pkg_dict_extra(c.pkg_dict,'Agency Program') }</rdf:value>  
</rdf:Description> </rdf:Description>
</dct:relation> </dct:relation>
<dct:relation py:if="c.pkg_dict.get('agency_program')"> <dct:relation py:if="c.pkg_dict.get('agency_program')">
<rdf:Description> <rdf:Description>
<rdfs:label>Agency Program</rdfs:label> <rdfs:label>Agency Program</rdfs:label>
<rdf:value>${ c.pkg_dict.get('agency_program') }</rdf:value> <rdf:value>${ c.pkg_dict.get('agency_program') }</rdf:value>
</rdf:Description> </rdf:Description>
</dct:relation> </dct:relation>
   
<dct:relation py:if="h.get_pkg_dict_extra(c.pkg_dict,'Granularity')">  
<rdf:Description>  
<rdfs:label>Data Granularity</rdfs:label>  
<rdf:value>${ h.get_pkg_dict_extra(c.pkg_dict,'Granularity') }</rdf:value>  
</rdf:Description>  
</dct:relation>  
<dct:relation py:if="c.pkg_dict.get('granularity')"> <dct:relation py:if="c.pkg_dict.get('granularity')">
<rdf:Description> <rdf:Description>
<rdfs:label>Data Granularity</rdfs:label> <rdfs:label>Data Granularity</rdfs:label>
<rdf:value>${ c.pkg_dict.get('granularity') }</rdf:value> <rdf:value>${ c.pkg_dict.get('granularity') }</rdf:value>
</rdf:Description> </rdf:Description>
</dct:relation> </dct:relation>
   
<py:for each="extra_dict in c.pkg_dict.get('extras',[])">  
<dct:relation>  
<rdf:Description>  
<rdfs:label>${extra_dict.get('key','')}</rdfs:label>  
<rdf:value>${extra_dict.get('value','')}</rdf:value>  
</rdf:Description>  
</dct:relation>  
</py:for>  
</dcat:Dataset> </dcat:Dataset>
</rdf:RDF> </rdf:RDF>
   
{% ckan_extends %} {% ckan_extends %}
   
{% block links -%} {% block links -%}
{{ super() }} {{ super() }}
<link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" /> <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
<link rel="schema.AGLSTERMS" href="http://www.agls.gov.au/agls/terms/" /> <link rel="schema.AGLSTERMS" href="http://www.agls.gov.au/agls/terms/" />
   
{% endblock -%} {% endblock -%}
   
{% block head_extras -%} {% block head_extras -%}
{{ super() }} {{ super() }}
<meta name="DCTERMS.Language" scheme="RFC3066" content="en" /> <meta name="DCTERMS.Language" scheme="RFC3066" content="en" />
<meta name="DCTERMS.Type" scheme="AGLSTERMS.Document" content="dataset" /> <meta name="DCTERMS.Type" scheme="AGLSTERMS.Document" content="dataset" />
<meta name="DCTERMS.Creator" scheme="AGLSTERMS.AglsAgent" content="{{ pkg['organization']['title'] }}" /> <meta name="DCTERMS.Creator" scheme="AGLSTERMS.AglsAgent" content="{{ pkg['organization']['title'] }}" />
<meta name="DCTERMS.Modified" scheme="DCTERMS.ISO8601" content="{{pkg['metadata_modified']}}" /> <meta name="DCTERMS.Modified" scheme="DCTERMS.ISO8601" content="{{pkg['metadata_modified']}}" />
<meta name="DCTERMS.Published" scheme="DCTERMS.ISO8601" content="{{pkg['metadata_created']}}" /> <meta name="DCTERMS.Published" scheme="DCTERMS.ISO8601" content="{{pkg['metadata_created']}}" />
{% if h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI') %}<meta name="DCTERMS.Source.URI" content="{{h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI')}}" />{% endif %} <meta name="DCTERMS.Source.URI" content="{{pkg.url}}" />
<meta name="DCTERMS.License" content="{{pkg['license_url']}}" /> <meta name="DCTERMS.License" content="{{pkg['license_url']}}" />
<meta name="DCTERMS.Coverage.Temporal" content="{{pkg.temporal_coverage or h.get_pkg_dict_extra(pkg,'Temporal Coverage')}}" /> <meta name="DCTERMS.Coverage.Temporal" content="{{pkg.temporal_coverage}}" />
<meta name="DCTERMS.Coverage.Spatial" content="{{pkg.spatial_coverage or h.get_pkg_dict_extra(pkg,'Geospatial Coverage')}}" /> <meta name="DCTERMS.Coverage.Spatial" content="{{pkg.spatial_coverage}}" />
<meta name="AGLSTERMS.Jurisdiction" scheme="AGLSTERMS.AglsJuri" content="{{pkg.jurisdiction or h.get_pkg_dict_extra(pkg,'AGLSTERMS.Jurisdiction')}}" /> <meta name="AGLSTERMS.Jurisdiction" scheme="AGLSTERMS.AglsJuri" content="{{pkg.jurisdiction}}" />
<meta name="DCAT.Theme" scheme="VO" content="{% for x in pkg.groups %}{{x['title']}},{% endfor %}" /> <meta name="DCAT.Theme" scheme="VO" content="{% for x in pkg.groups %}{{x['title']}},{% endfor %}" />
<meta name="DCTERMS.Identifier" content="{{h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}}" /> <meta name="DCTERMS.Identifier" content="{{h.url_for(controller='package',action='read',id=c.pkg_dict['name'], qualified=True)}}" />
<meta name="DCTERMS.Title" content="{{pkg['title']}}" /> <meta name="DCTERMS.Title" content="{{pkg['title']}}" />
<meta name="DCTERMS.Description" scheme="" content="{{pkg['notes']}}" /> <meta name="DCTERMS.Description" scheme="" content="{{pkg['notes']}}" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   
{% endblock -%} {% endblock -%}
   
{% block package_info %} {% block package_info %}
<div class="module context-info"> <div class="module context-info">
<div class="module-content"> <div class="module-content">
<h1 class="heading" property="dct:title">{{ pkg.title or pkg.name }}</h1> <h1 class="heading" property="dc:title">{{ pkg.title or pkg.name }}</h1>
<div class="nums"> <div class="nums">
<dl> <dl>
<dt>{{ _('Followers') }}</dt> <dt>{{ _('Followers') }}</dt>
<dd>{{ h.SI_number_span(h.get_action('dataset_follower_count', {'id': pkg.id})) }}</dd> <dd>{{ h.SI_number_span(h.get_action('dataset_follower_count', {'id': pkg.id})) }}</dd>
</dl> </dl>
</div> </div>
<div class="follow_button"> <div class="follow_button">
{{ h.follow_button('dataset', pkg.name) }} {{ h.follow_button('dataset', pkg.name) }}
</div> </div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
   
   
{% ckan_extends %} {% ckan_extends %}
   
{% block links -%} {% block links -%}
{{ super() }} {{ super() }}
<link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" /> <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
<link rel="schema.AGLSTERMS" href="http://www.agls.gov.au/agls/terms/" /> <link rel="schema.AGLSTERMS" href="http://www.agls.gov.au/agls/terms/" />
   
{% endblock -%} {% endblock -%}
   
{% block head_extras -%} {% block head_extras -%}
{{ super() }} {{ super() }}
<meta name="DCTERMS.Language" scheme="RFC3066" content="en" /> <meta name="DCTERMS.Language" scheme="RFC3066" content="en" />
<meta name="DCTERMS.Type" scheme="AGLSTERMS.Document" content="dataset" /> <meta name="DCTERMS.Type" scheme="AGLSTERMS.Document" content="dataset" />
<meta name="DCTERMS.Creator" scheme="AGLSTERMS.AglsAgent" content="{{ pkg['organization']['title'] }}" /> <meta name="DCTERMS.Creator" scheme="AGLSTERMS.AglsAgent" content="{{ pkg['organization']['title'] }}" />
<meta name="DCTERMS.Modified" scheme="DCTERMS.ISO8601" content="{{res['revision_timestamp']}}" /> <meta name="DCTERMS.Modified" scheme="DCTERMS.ISO8601" content="{{res['revision_timestamp']}}" />
<meta name="DCTERMS.Published" scheme="DCTERMS.ISO8601" content="{{res['created']}}" /> <meta name="DCTERMS.Published" scheme="DCTERMS.ISO8601" content="{{res['created']}}" />
{% if h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI') %}<meta name="DCTERMS.Source.URI" content="{{h.get_pkg_dict_extra(pkg,'DCTERMS.Source.URI')}}" />{% endif %} <meta name="DCTERMS.Source.URI" content="{{pkg.url}}" />
<meta name="DCTERMS.License" content="{{pkg['license_url']}}" /> <meta name="DCTERMS.License" content="{{pkg['license_url']}}" />
<meta name="DCTERMS.Coverage.Temporal" content="{{pkg.temporal_coverage or h.get_pkg_dict_extra(pkg,'Temporal Coverage')}}" /> <meta name="DCTERMS.Coverage.Temporal" content="{{pkg.temporal_coverage}}" />
<meta name="DCTERMS.Coverage.Spatial" content="{{pkg.spatial_coverage or h.get_pkg_dict_extra(pkg,'Geospatial Coverage')}}" /> <meta name="DCTERMS.Coverage.Spatial" content="{{pkg.spatial_coverage}}" />
<meta name="AGLSTERMS.Jurisdiction" scheme="AGLSTERMS.AglsJuri" content="{{pkg.jurisdiction or h.get_pkg_dict_extra(pkg,'AGLSTERMS.Jurisdiction')}}" /> <meta name="AGLSTERMS.Jurisdiction" scheme="AGLSTERMS.AglsJuri" content="{{pkg.jurisdiction}}" />
<meta name="DCAT.Theme" scheme="VO" content="{% for x in pkg.groups %}{{x['title']}},{% endfor %}" /> <meta name="DCAT.Theme" scheme="VO" content="{% for x in pkg.groups %}{{x['title']}},{% endfor %}" />
<meta name="DCAT.byteSize" content="{{res.get('size')}}" /> <meta name="DCAT.byteSize" content="{{res.get('size')}}" />
<meta name="DCAT.mediaType" content="{{res.get('mimetype')}}" /> <meta name="DCAT.mediaType" content="{{res.get('mimetype')}}" />
<meta name="DCTERMS.Identifier" content="{{res.get('url')}}" /> <meta name="DCTERMS.Identifier" content="{{res.get('url')}}" />
<meta name="DCTERMS.Title" content="{{res['name']}}" /> <meta name="DCTERMS.Title" content="{{res['name']}}" />
<meta name="DCTERMS.Description" scheme="" content="{{res['description']}}" /> <meta name="DCTERMS.Description" scheme="" content="{{res['description']}}" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   
<meta name="DCTERMS.Format" content="{{res.format}}" /> <meta name="DCTERMS.Format" content="{{res.format}}" />
<meta name="DCTERMS.File.Size" content="{{res.size}}" /> <meta name="DCTERMS.File.Size" content="{{res.size}}" />
   
{% endblock -%} {% endblock -%}
   
   
   
  {% ckan_extends %}
  {% block secondary_content %}
  {{ super() }}
  {% snippet "spatial/snippets/spatial_query.html", default_extent="[[-11, 114], [-42, 154]]" %}
 
  {% endblock %}
 
{% ckan_extends %} {% ckan_extends %}
   
{% block package_basic_fields_org %} {% block package_basic_fields_org %}
   
{{ super() }} {{ super() }}
   
   
{{ form.input('agency_program', label=_('Agency Program'), id='field-agency_program', {{ form.input('agency_program', label=_('Agency Program'), id='field-agency_program',
placeholder=_('Name of the Agency Program that generated the data if relevant'), placeholder=_('Name of the Agency Program that generated the data if relevant'),
value=data.agency_program, error=errors.agency_program, classes=['control-medium']) }} value=data.agency_program, error=errors.agency_program, classes=['control-medium']) }}
   
{{ form.input('contact_point', label=_('Contact Point'), id='field-contact_point', {{ form.input('contact_point', label=_('Contact Point'), id='field-contact_point',
placeholder=_('Email address for questions about content of dataset'), placeholder=_('Email address for questions about content of dataset'),
value=data.contact_point, error=errors.contact_point, classes=['control-medium']) }} value=data.contact_point, error=errors.contact_point, classes=['control-medium']) }}
   
{{ form.input('spatial_coverage', label=_('Geospatial Coverage'), id='field-spatial_coverage', {{ form.input('spatial_coverage', label=_('Geospatial Coverage'), id='field-spatial_coverage',
placeholder=_('The geographical area covered by the data. Eg: Whole of Australia, New South Wales, Canberra'), placeholder=_('The geographical area covered by the data. Eg: Whole of Australia, New South Wales, Canberra'),
value=data.spatial_coverage, error=errors.spatial_coverage, classes=['control-medium']) }} value=data.spatial_coverage, error=errors.spatial_coverage, classes=['control-medium']) }}
   
{{ form.input('granularity', label=_('Data Granularity'), id='field-granularity', {{ form.input('granularity', label=_('Data Granularity'), id='field-granularity',
placeholder=_('Granularity in time, place etc. Eg: incidents reports on daily basis by location.'), placeholder=_('Granularity in time, place etc. Eg: incidents reports on daily basis by location.'),
value=data.granularity, error=errors.granularity, classes=['control-medium']) }} value=data.granularity, error=errors.granularity, classes=['control-medium']) }}
   
{{ form.input('jurisdiction', label=_('Government Jurisdiction'), id='field-jurisdiction', {{ form.input('jurisdiction', label=_('Government Jurisdiction'), id='field-jurisdiction',
placeholder=_('New South Wales, Glenorchy City Council, Federal'), placeholder=_('New South Wales, Glenorchy City Council, Federal'),
value=data.jurisdiction, error=errors.jurisdiction, classes=['control-medium']) }} value=data.jurisdiction, error=errors.jurisdiction, classes=['control-medium']) }}
   
{{ form.input('temporal_coverage', label=_('Temporal Coverage'), id='field-temporal_coverage', {{ form.input('temporal_coverage', label=_('Temporal Coverage'), id='field-temporal_coverage',
placeholder=_('The timespan the dataset relates to: Current, 2008, 2008-2012, Jan 2012'), placeholder=_('The timespan the dataset relates to: Current, 2008, 2008-2012, Jan 2012'),
value=data.temporal_coverage, error=errors.temporal_coverage, classes=['control-medium']) }} value=data.temporal_coverage, error=errors.temporal_coverage, classes=['control-medium']) }}
   
{{ form.select('data_state', label=_('Data State'), options= [{'value': 'active', 'text': 'Active'}, {'value': 'inactive', 'text': 'Inactive'}], {{ form.select('data_state', label=_('Data State'), options= [{'value': 'active', 'text': 'Active'}, {'value': 'inactive', 'text': 'Inactive'}],
selected='Active', error=errors.data_state) }} selected='Active', error=errors.data_state) }}
   
{{ form.input('update_freq', label=_('Update Frequency'), id='field-update_freq', {{ form.input('update_freq', label=_('Update Frequency'), id='field-update_freq',
placeholder=_('How often the dataset is updated. Eg: Daily, Weekly, Never'), placeholder=_('How often the dataset is updated. Eg: Daily, Weekly, Never'),
value=data.update_freq, error=errors.update_freq, classes=['control-medium']) }} value=data.update_freq, error=errors.update_freq, classes=['control-medium']) }}
   
{% endblock %} {% endblock %}
   
   
{% block package_basic_fields_license %} {% block package_basic_fields_license %}
<div class="control-group"> <div class="control-group">
{% set error = errors.license_id %} {% set error = errors.license_id %}
<label class="control-label" for="field-license">{{ _("License") }}</label> <label class="control-label" for="field-license">{{ _("License") }}</label>
<div class="controls"> <div class="controls">
<select id="field-license" name="license_id" data-module="autocomplete"> <select id="field-license" name="license_id" data-module="autocomplete">
{% for license_desc, license_id in licenses|sort if license_desc %} {% for license_desc, license_id in licenses|sort if license_desc %}
{# Make cc-by the default value for data.gov.au #} {# Make cc-by the default value for data.gov.au #}
<option value="{{ license_id }}" {% if data.get('license_id', 'cc-by') == license_id %}selected="selected"{% endif %}>{{ license_desc }}</option> <option value="{{ license_id }}" {% if data.get('license_id', 'cc-by') == license_id %}selected="selected"{% endif %}>{{ license_desc }}</option>
{% endfor %} {% endfor %}
</select> </select>
{% if error %}<span class="error-block">{{ error }}</span>{% endif %} {% if error %}<span class="error-block">{{ error }}</span>{% endif %}
<span class="info-block info-inline"> <span class="info-block info-inline">
<i class="icon-info-sign"></i> <i class="icon-info-sign"></i>
{% trans %} {% trans %}
License definitions and additional information can be found License definitions and additional information can be found
at <a href="http://opendefinition.org/licenses/">opendefinition.org</a> at <a href="http://opendefinition.org/licenses/">opendefinition.org</a>
{% endtrans %} {% endtrans %}
</span> </span>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
{% ckan_extends %} {% ckan_extends %}
   
{# Remove 'free extras' from the package form. If you're using {# Remove 'free extras' from the package form. If you're using
convert_to/from_extras() as we are with our 'custom_text' field below then convert_to/from_extras() as we are with our 'custom_text' field below then
you need to remove free extras from the form, or editing your custom field you need to remove free extras from the form, or editing your custom field
won't work. #} won't work. #}
{% block custom_fields %} {% block custom_fields %}
{% endblock %} {% endblock %}
   
{# https://github.com/okfn/ckan/blob/master/ckan/templates/macros/form.html documents the macros for fields #} {# https://github.com/okfn/ckan/blob/master/ckan/templates/macros/form.html documents the macros for fields #}
   
{% block package_metadata_fields %} {% block package_metadata_fields %}
  {{ form.input('url', label=_('Source URL'), id='field-url',
  placeholder=_('URL where dataset came from or more information can be obtained'),
  value=data.url, error=errors.url, classes=['control-medium']) }}
{{ super() }} {{ super() }}
   
{% endblock %} {% endblock %}
   
{% block package_metadata_author %} {% block package_metadata_author %}
{% endblock %} {% endblock %}
   
{% block package_metadata_fields_maintainer %} {% block package_metadata_fields_maintainer %}
{% endblock %} {% endblock %}
   
{% block dataset_fields %} {% block dataset_fields %}
{% if data.groups %} {% if data.groups %}
<div class="control-group"> <div class="control-group">
<label class="control-label">Groups/Themes</label> <label class="control-label">Groups/Themes</label>
<div class="controls"> <div class="controls">
{% for group in data.groups %} {% for group in data.groups %}
<label class="checkbox" for="field-group-{{ loop.index0 }}"> <label class="checkbox" for="field-group-{{ loop.index0 }}">
<input id="field-group-{{ loop.index0 }}" type="checkbox" name="groups__{{ loop.index0 }}__id" value="{{ group.id }}" checked="checked" /> <input id="field-group-{{ loop.index0 }}" type="checkbox" name="groups__{{ loop.index0 }}__id" value="{{ group.id }}" checked="checked" />
{{ group.title }} {{ group.title }}
</label> </label>
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
{% endif %} {% endif %}
{% set group_name = 'groups__%s__id' % data.groups|length %} {% set group_name = 'groups__%s__id' % data.groups|length %}
{% set group_attrs = {'data-module': 'autocomplete', 'data-module-source': '/api/2/util/group/autocomplete?q=?', 'data-module-key': 'id', 'data-module-label': 'title'} %} {% set group_attrs = {'data-module': 'autocomplete', 'data-module-source': '/api/2/util/group/autocomplete?q=?', 'data-module-key': 'id', 'data-module-label': 'title'} %}
{{ form.input(group_name, label=_('Add Group/Theme'), id="field-group", value=data[group_name], classes=['control-medium'], attrs=group_attrs) }} {{ form.input(group_name, label=_('Add Group/Theme'), id="field-group", value=data[group_name], classes=['control-medium'], attrs=group_attrs) }}
{% endblock %} {% endblock %}
  {% ckan_extends %}
 
  {% set url = h.url_for(controller='package', action='resource_read', id=pkg.name, resource_id=res.id) %}
  <li class="resource-item" vocab="http://www.w3.org/ns/dcat#"
  typeof="Distribution">
  {% block resource_item_title %}
  <a class="heading" href="{{ url }}" title="{{ res.name or res.description }}" property="title">
  {{ h.resource_display_name(res) | truncate(50) }}<span class="format-label" property="dc:format" data-format="{{ res.format.lower() or 'data' }}">{{ res.format }}</span>
  {{ h.popular('views', res.tracking_summary.total, min=10) }}
  </a>
  {% endblock %}
  <p class="description" property="description">
  {% if res.description %}
  {{ h.markdown_extract(res.description, extract_length=80) }}
  {% else %}
  <span class="empty">{{ _('No description for this resource') }}</span>
  {% endif %}
  </p>
  {% block resource_item_explore %}
  <div class="dropdown btn-group">
  <a href="#" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
  <i class="icon-share-alt"></i>
  {{ _('Explore') }}
  <span class="caret"></span>
  </a>
  <ul class="dropdown-menu">
  {% block resource_item_explore_links %}
  <li>
  <a href="{{ url }}" property="accessURL">
  {% if res.can_be_previewed %}
  <i class="icon-bar-chart"></i>
  {{ _('Preview') }}
  {% else %}
  <i class="icon-info-sign"></i>
  {{ _('More information') }}
  {% endif %}
  </a>
  </li>
  <li>
  <a href="{{ res.url }}" class="resource-url-analytics" target="_blank" property="accessURL">
  {% if res.can_be_previewed %}
  <i class="icon-download"></i>
  {{ _('Download') }}
  {% else %}
  <i class="icon-external-link"></i>
  {{ _('Go to resource') }}
  {% endif %}
  </a>
  </li>
  {% endblock %}
  </ul>
  </div>
  {% endblock %}
  </li>
file:a/setup.py -> file:b/setup.py
from setuptools import setup, find_packages from setuptools import setup, find_packages
   
version = '0.1' version = '0.1'
   
setup( setup(
name='ckanext-datagovau', name='ckanext-datagovau',
version=version, version=version,
description='Extension for customising CKAN for data.gov.au', description='Extension for customising CKAN for data.gov.au',
long_description='', long_description='',
classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
keywords='', keywords='',
author='Alex Sadleir', author='Alex Sadleir',
author_email='alex.sadleir@linkdigital.com.au', author_email='alex.sadleir@linkdigital.com.au',
url='', url='',
license='', license='',
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
namespace_packages=['ckanext', 'ckanext.datagovau'], namespace_packages=['ckanext', 'ckanext.datagovau'],
include_package_data=True, include_package_data=True,
zip_safe=False, zip_safe=False,
install_requires=[], install_requires=[],
entry_points=\ entry_points=\
""" """
[ckan.plugins] [ckan.plugins]
datagovau=ckanext.datagovau.plugin:ExampleIDatasetFormPlugin datagovau=ckanext.datagovau.plugin:DataGovAuPlugin
""", """,
) )