def orga_resource(portalid, snapshot, orga):
    with Timer(key="get_orga_resource", verbose=True):
        Session = current_app.config['dbsession']
        dbc = current_app.config['dbc']

        data = getResourceInfo(Session, dbc, portalid, snapshot, orga)
        q = getResourceInfos(Session, snapshot, portalid, orga)

        data['resList'] = []
        for i in q:
            dataset_id = i[1]
            dataset_title = i[2]
            orig_link = getDatasetURI(dataset_id, portalid)
            data['resList'].append({
                'uri': row2dict(i[0]),
                'dataset': {
                    'uri': orig_link,
                    'title': dataset_title
                }
            })

        data.update(getPortalInfos(Session, portalid, snapshot))
        r = current_app.config['dbsession'].query(
            Portal.resourcecount).filter(Portal.id == portalid)
        for P in r:
            data['resources'] = P[0]

        return render("odpw_portal_resources_list.jinja",
                      data=data,
                      snapshot=snapshot,
                      portalid=portalid)
def portalResBody(snapshot, portalid):
    with Timer(key="get_portalRes", verbose=True):
        Session = current_app.config['dbsession']
        dbc = current_app.config['dbc']
        with Timer(key="query_portalRes", verbose=True):
            data = getResourceInfo(Session, dbc, portalid, snapshot)

        with Timer(key="query_getMetaResource", verbose=True):
            viewName = "view_{}_{}_{}".format('resinfo', portalid, snapshot)
            qorg = getResourceInfos(Session, snapshot, portalid)
            q = withView(qorg, viewName, Session, dbc)
            #print q
            start = time.time()
            data['uris'] = [row2dict(i) for i in q]
            end = time.time()
            if (end - start) > 5:
                print("Create View {}".format(viewName))
                createView(qorg, viewName, Session)

        data.update(getPortalInfos(Session, portalid, snapshot))
        #data['portals']= [ row2dict(r) for r in Session.query(Portal).all()]
        with Timer(key="query_portalResourceCount", verbose=True):
            r = current_app.config['dbsession'].query(
                Portal.resourcecount).filter(Portal.id == portalid)
            ps = []
            for P in r:
                data['resources'] = P[0]

        return render("odpw_portal_resources_list.jinja",
                      data=data,
                      snapshot=snapshot,
                      portalid=portalid)
def resourceInfo(snapshot, portalid, uri):
    with Timer(key="get_resourceInfo", verbose=True):
        #print snapshot,portalid,uri

        Session = current_app.config['dbsession']
        dbc = current_app.config['dbc']
        data = getPortalInfos(Session, portalid, snapshot)

        with Timer(key="query_resources", verbose=True):
            viewName = "view_{}_{}_{}".format('resinfo', portalid, snapshot)
            qorg = getResourceInfos(Session, snapshot, portalid)
            q = withView(qorg, viewName, Session, dbc)
            start = time.time()
            data['resources'] = [row2dict(r) for r in q.all()]
            end = time.time()
            if (end - start) > 5:
                print("Create View {}".format(viewName))
                try:
                    createView(qorg, viewName, Session)
                except Exception as e:
                    if 'already exists' in e.message:
                        pass
                    else:
                        raise e

        with Timer(key="query_resourceInfo", verbose=True):
            q = Session.query(ResourceInfo) \
                .filter(ResourceInfo.uri == uri)
            #print q
            data['resourceInfo'] = [row2dict(r) for r in q.all()]

            for r in data['resourceInfo']:
                if 'header' in r:
                    if r['header'] is None:
                        r['header'] = ""
                    else:
                        #print type(r['header']),r['header'],r
                        r['header'] = ast.literal_eval(str(r['header']))

        return render("odpw_portal_resource.jinja",
                      snapshot=snapshot,
                      portalid=portalid,
                      uri=uri,
                      data=data)