beginnings of autoupdate
[ckanext-datagovau.git] / admin / autoupdate.py
blob:a/admin/autoupdate.py -> blob:b/admin/autoupdate.py
--- a/admin/autoupdate.py
+++ b/admin/autoupdate.py
@@ -1,1 +1,47 @@
+import requests
+import ckanapi
+# copy (select id,url,format,extras from resource where extras like '%"autoupdate": "active"%') TO STDOUT WITH CSV;
+# f759e4b6-723c-4863-8a26-1529d689cad8,http://data.gov.au/geoserver/geelong-roofprints-kml/wms?request=GetCapabilities,wms,"{""autoupdate"": ""active""}"
+import fileinput
+import csv
 
+def updateresource(id):
+    url = 'http://data.disclosurelo.gs'
+    api_key = ''
+    db_credentials = ''
+    print id
+    ckan = ckanapi.RemoteCKAN('http://data.disclosurelo.gs')
+    #ckan = ckanapi.RemoteCKAN('http://demo.ckan.org')
+    resource = ckan.action.resource_show(id=id)
+    print resource
+    url = resource['url'] 
+    #last_modified= 'Mon, 24 Feb 2014 01:48:29 GMT'
+    #etag='"1393206509.38-638"'
+    headers={}
+    if 'etag' in resource:
+        headers['If-None-Match'] = resource['etag']
+    if 'file_last_modified' in resource:
+        headers["If-Modified-Since"] = resource['file_last_modified']
+    r = requests.head(url, headers=headers)
+    if r.status_code == 304:
+        print 'not modified'
+        return
+    else:
+        print r.status_code
+        print r.headers
+        if 'last-modified' in r.headers:
+            resource['file_last_modified'] = r.headers['last-modified']
+        if 'etag' in r.headers:
+            resource['etag'] = r.headers['etag']
+        #save updated resource
+        if 'format' == 'shp':
+            print "geoingest!"
+        else:
+            ckan.action.datapusher_submit(resource_id=id)
+#    result = ckan.action.resource_update(id,resource)
+        
+
+for line in fileinput.input():
+    row = csv.reader(line)
+    updateresource(line.replace("\n",""))
+