def get_prospector_data(app=None):
    "Returns Google Charts string of Prospector Holdings"
    # update_institution_count()
    js_str = ''
    #! THIS OPERATION SHOULD BE CACHED
    for row in  REDIS_DATASTORE.zrevrange('prospector-holdings',
                                          0,
                                          -1,
                                          withscores=True):
        org_key = row[0]
        if int(row[1]) < 1:
            continue
        library_info = [REDIS_DATASTORE.hget(org_key, 'label'),
                        REDIS_DATASTORE.scard(
                            "{0}:bf:Books".format(org_key)),
                        REDIS_DATASTORE.scard(
                            "{0}:bf:MovingImage".format(org_key)),
                        REDIS_DATASTORE.scard(
                            "{0}:bf:MusicalAudio".format(org_key)),
                        row[1] # Total Holdings
                        ]
        js_str += '["{0}",{1}],\n'.format(library_info[0],
                                          ','.join([str(i)
                                                    for i in library_info[1:]]))
    js_str = js_str[:-2] # Removes trailing comma
    return mark_safe(js_str)
def get_facet(facet):
    "Returns accordion group based on template and redis-key"
    # Assume facet_key is sorted set
    facet_grp_template = template.loader.get_template('cc-facet-group')
    facet = {'label': facet_key.split(":")[-1],
             'items': []}
    facet['name'] = facet.get('label').lower().sub(" ","-")
    for item in REDIS_DATASTORE.zrevrange(facet_key,
                                          0,
                                          -1,
                                          withscores=True):
        item = {'label': item[0].split(":")[-1],
                'count': item[1]}
        facet['items'].append(item)
    return mark_safe(facet_grp_template.render(
        template.Context(facet)))
def get_prospector_bar_chart(app=None):
    "Returns a javascript for a Canvas.js bar chart of Prospector Holdings"
    js_str = "var ctx=$('#prospector-rlsp-bar').get(0).getContext('2d');"
    data = {'labels':[],
            'data':[]}
    for row in  REDIS_DATASTORE.zrevrange('prospector-holdings',
                                          0,
                                          -1,
                                          withscores=True):
        if float(row[1]) > 0:
            org_key = row[0]
            data['labels'].append(REDIS_DATASTORE.hget(org_key, 'label'))
            data['data'].append(str(row[1]))
    js_str += """var data={{ labels: ["{0}"],""".format('","'.join(data['labels']))
    js_str += """datasets: [ {{ fillColor : "rgba(151,187,205,0.5)",
                               strokeColor : "rgba(151,187,205,1)",
                               data : [{0}]}}]}};""".format(','.join(data['data']))
    js_str += "new Chart(ctx).Bar(data, {scaleShowLabel: true});"
    return mark_safe(js_str)