def curated_only(reclist): """Show only curated publications from reclist.""" from invenio.legacy.search_engine import search_pattern_parenthesised p = "collection: community-*" reclist = (reclist & search_pattern_parenthesised(p=p)) return reclist
def inputrecords_autocomplete_dataset(dummy_form, dummy_field, term, limit=50): from invenio.legacy.search_engine import search_pattern_parenthesised from invenio.modules.records.models import Record from invenio.modules.records.api import get_record if not term: objs = Record.query.limit(limit).all() else: # datasets from projects w/ curate = True recids = search_pattern_parenthesised( # p='title:%%%s%% AND 980__:dataset AND (980__:community-* OR # (8560_w:%s AND (NOT 980__:project-* OR 983__a:True)))' % # (term.encode('utf-8'), current_user.get_id())) p=('title:%%%s%% AND 980__:dataset AND' ' (980__:community-* OR 8560_w:%s)') % (term.encode('utf-8'), current_user.get_id())) objs = Record.query.filter( Record.id.in_(recids) ).filter_by().limit(limit).all() if not objs: if re.match(DOISyntaxValidator.pattern, term, re.I): return [{ 'value': "%s (doi)" % term, 'fields': { 'identifier': term, 'title': "%s (doi)" % term, 'is_pid': True } }] if re.match("lifewatch.openscience.\d+", term, re.I): return [{ 'value': "%s (pid)" % term, 'fields': { 'identifier': term, 'title': "%s (pid)" % term, 'is_pid': True } }] return map( lambda o: { 'value': "%s (record id: %s)" % (o[1]['title'], o[0]), 'fields': { 'identifier': o[0], 'title': "%s (record id: %s)" % (o[1]['title'], o[0]), } }, filter(lambda o: (o[1].get('project', None) == None or o[1].get('record_curated_in_project', False)), map(lambda o: (o.id, get_record(o.id)), objs) ) )
def zenodo_curated(reclist, length=10, reverse=False, open_only=False): """Show only curated publications from reclist.""" from invenio.legacy.search_engine import search_pattern_parenthesised if open_only: p = "(collection:curated OR collection:user-zenodo) " \ "AND (access_rights:open OR access_rights:embargoed)" else: p = "collection:curated OR collection:user-zenodo" reclist = (reclist & search_pattern_parenthesised(p=p)) if reverse: reclist = reclist[-length:] return reversed(reclist) else: return reclist[:length]
def inputrecords_autocomplete_software( dummy_form, dummy_field, term, limit=50): from invenio.legacy.search_engine import search_pattern_parenthesised from invenio.modules.records.models import Record from invenio.modules.records.api import get_record if not term: objs = Record.query.limit(limit).all() else: recids = search_pattern_parenthesised( p=('title:%%%s%% AND 980__:software AND' ' (980__:community-* OR 8560_w:%s)') % (term.encode('utf-8'), current_user.get_id())) objs = Record.query.filter( Record.id.in_(recids) ).filter_by().limit(limit).all() if not objs: if re.match(DOISyntaxValidator.pattern, term, re.I): return [{ 'value': "%s (doi)" % term, 'fields': { 'identifier': term, 'title': "%s (doi)" % term, 'is_pid': True } }] if re.match("lifewatch.openscience.\d+", term, re.I): return [{ 'value': "%s (pid)" % term, 'fields': { 'identifier': term, 'title': "%s (pid)" % term, 'is_pid': True } }] return map( lambda o: { 'value': "%s (record id: %s)" % (o[1], o[0]), 'fields': { 'identifier': o[0], 'title': "%s (record id: %s)" % (o[1], o[0]), } }, map(lambda o: (o.id, get_record(o.id)['title']), objs) )
def get_project_records(self, record_types=[], public=None, curated=None): """ Return all records of this project""" from invenio.legacy.search_engine import search_pattern_parenthesised from invenio.modules.records.models import Record q = ['980__:%s' % self.get_collection_name()] if record_types: qtypes = ['980__:%s' % t for t in record_types] if len(qtypes) > 1: q.append('(%s)' % ' OR '.join(qtypes)) else: q.extend(qtypes) if public is not None: q.append('983__b:%s' % public) if curated is not None: q.append('983__a:%s' % curated) p = (' AND '.join(q)) recids = search_pattern_parenthesised(p=p) records = Record.query.filter(Record.id.in_(recids)) return records
def get_instrument_records(self, record_types=[], public=None, curated=None): """ Return all records of this instruments""" from invenio.legacy.search_engine import search_pattern_parenthesised from invenio.modules.records.models import Record q = ['980__:%s' % self.get_collection_name()] if record_types: qtypes = ['980__:%s' % t for t in record_types] if len(qtypes) > 1: q.append('(%s)' % ' OR '.join(qtypes)) else: q.extend(qtypes) if public is not None: q.append('983__b:%s' % public) if curated is not None: q.append('983__a:%s' % curated) p = (' AND '.join(q)) recids = search_pattern_parenthesised(p=p) records = Record.query.filter(Record.id.in_(recids)) return records
def get_project_records(self, record_types=[], public=None, curated=None): """ Return all records of this project""" from invenio.legacy.search_engine import search_pattern_parenthesised from invenio.modules.records.models import Record q = ["980__:%s" % self.get_collection_name()] if record_types: qtypes = ["980__:%s" % t for t in record_types] if len(qtypes) > 1: q.append("(%s)" % " OR ".join(qtypes)) else: q.extend(qtypes) if public is not None: q.append("983__b:%s" % public) if curated is not None: q.append("983__a:%s" % curated) p = " AND ".join(q) recids = search_pattern_parenthesised(p=p) records = Record.query.filter(Record.id.in_(recids)) return records