3 from manifold.manifoldapi import ManifoldAPI
5 # turn this on if you want to work offline
11 def __init__ (self, auth):
13 self.hash_by_subject={}
16 offline_filename="offline-metadata.json"
19 with file(offline_metadata) as f:
20 self.hash_by_subject=json.loads(f.read())
23 print "metadata.work_offline: failed to decode %s"%offline_filename
24 manifold_api = ManifoldAPI(self.auth)
25 fields = ['table', 'column.column',
26 'column.description','column.header', 'column.title',
27 'column.unit', 'column.info_type',
28 'column.resource_type', 'column.value_type',
29 'column.allowed_values', 'column.platforms.platform',
30 'column.platforms.platform_url']
31 results = manifold_api.Get('metadata:table', [], [], fields)
32 self.hash_by_subject = dict ( [ (result['table'], result) for result in results ] )
33 # save for next time we use offline mode
34 with file(offline_filename,'w') as f:
35 f.write(json.dumps(self.hash_by_subject))
38 return json.dumps(self.hash_by_subject)
40 def details_by_subject (self, subject):
41 return self.hash_by_subject[subject]
43 def sorted_fields_by_subject (self, subject):
44 return self.hash_by_subject[subject]['columns'].sort()