Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)
        )
    )
Exemplo n.º 4
0
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]
Exemplo n.º 5
0
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]
Exemplo n.º 6
0
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)
    )
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
    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