def download(request): suid = request.matchdict['suid'] rev = request.matchdict.get('rev') root = get_root() config = solr_config(root) query = Term('suid', suid) if rev: query = query & Term('revision', rev) else: query = query & Term('state', 'active') query = query & Term('visibility', 'anonymous') md = Metadata(config, SOLR_FIELDS) fl = 'effective,expires,physical_path,mimetype,filename' result = md.query(q=query, fl=fl) if len(result) != 1: raise MDBError(u'Dataset not found in SOLR. Query: %s' % query) md = result[0] if not chk_publication(md): raise MDBError(u'Item not effective or already expired') physical_path = u'/xsendfile%s.binary' % md['physical_path'] response = Response() response.content_type = md['mimetype'] response.content_disposition = \ 'attachment; filename=%s' % md['filename'] response.headers.add('X-Accel-Redirect', physical_path) return response
def info(request): root = get_root() config = solr_config(root) uid = request.matchdict['uid'] query = Term('uid', uid) & Term('visibility', 'anonymous') md = Metadata(config, SOLR_FIELDS) result = md.query(q=query, fl=revision_info_fl) if len(result) != 1: return {} md = result[0] if not chk_publication(md): return {} return revision_info(md)
def access(request): root = get_root() config = solr_config(root) uid = request.matchdict['uid'] query = Term('uid', uid) & Term('visibility', 'anonymous') md = Metadata(config, SOLR_FIELDS) fl = 'effective,expires' result = md.query(q=query, fl=fl) if len(result) != 1: return False md = result[0] if not chk_publication(md): return False return True
def relations_vocab(self): """XXX: move relations lookup """ vocab = list() relations = self.model.metadata.relations if not relations: return vocab md = SolrMetadata(solr_config(self.model), SOLR_FIELDS) for relation in relations: rel = md.query(q='uid:%s' % relation, fl='title') if rel and rel[0].get('title'): title = rel[0].title else: # happens if relation is not found in solr title = relation vocab.append((relation, title)) return vocab
def relations(self): """XXX: move relations lookup """ relations = self.model.metadata.relations ret = list() if not relations: return ret query = Term('uid', relations[0]) for rel in relations[1:]: query = query | Term('uid', rel) md = SolrMetadata(solr_config(self.model), SOLR_FIELDS) for relmd in md.query(q=query, fl='title,path'): ret.append({ 'target': '%s/%s' % (self.request.application_url, relmd.path), 'title': relmd.title, }) return ret