当前位置: 首页>>代码示例>>Python>>正文


Python Node.find方法代码示例

本文整理汇总了Python中website.project.model.Node.find方法的典型用法代码示例。如果您正苦于以下问题:Python Node.find方法的具体用法?Python Node.find怎么用?Python Node.find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在website.project.model.Node的用法示例。


在下文中一共展示了Node.find方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_queryset

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
 def get_queryset(self):
     query = self.get_query_from_request()
     blacklisted = self.is_blacklisted(query)
     nodes = Node.find(query)
     # If attempting to filter on a blacklisted field, exclude withdrawals.
     if blacklisted:
         non_withdrawn_list = [node._id for node in nodes if not node.is_retracted]
         non_withdrawn_nodes = Node.find(Q("_id", "in", non_withdrawn_list))
         return non_withdrawn_nodes
     return nodes
开发者ID:cwisecarver,项目名称:osf.io,代码行数:12,代码来源:views.py

示例2: get_queryset

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
 def get_queryset(self):
     query = self.get_query_from_request()
     blacklisted = self.is_blacklisted(query)
     nodes = Node.find(query)
     # If attempting to filter on a blacklisted field, exclude retractions.
     if blacklisted:
         non_retracted_list = [node._id for node in nodes if not node.is_retracted]
         non_retracted_nodes = Node.find(Q('_id', 'in', non_retracted_list))
         return non_retracted_nodes
     return nodes
开发者ID:ajski,项目名称:osf.io,代码行数:12,代码来源:views.py

示例3: do_migration

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def do_migration():
    dupe_nodes = [n for n in Node.find(Q('_id', 'in', list(set([l.node._id for l in NodeLog.find(Q('action', 'eq', 'preprint_license_updated'))])))) if NodeLog.find(Q('action', 'eq', 'preprint_license_updated') & Q('node', 'eq', n._id)).count() > 1]
    logger.info('Found {} nodes with multiple preprint_license_updated logs'.format(len(dupe_nodes)))

    for node in dupe_nodes:
        preprint_license_updated_logs = [log for log in node.logs if log.action == 'preprint_license_updated']

        log = preprint_license_updated_logs.pop()
        while(preprint_license_updated_logs):
            next_log = preprint_license_updated_logs.pop()
            timedelta = log.date - next_log.date
            if timedelta.seconds < 60:
                logger.info(
                    'Hiding duplicate preprint_license_updated log with ID {} from node {}, timedelta was {}'.format(
                        log._id, node._id, timedelta
                    )
                )
                log.should_hide = True
                log.save()
            else:
                logger.info(
                    'Skipping preprint_license_updated log with ID {} from node {}, timedelta was {}'.format(
                        log._id, node._id, timedelta
                    )
                )

            log = next_log
开发者ID:adlius,项目名称:osf.io,代码行数:29,代码来源:remove_duplicate_preprint_logs.py

示例4: main

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def main(send_email=False):
    logger.info('Starting Project storage audit')
    init_app(set_backends=True, routes=False)

    lines = []
    projects = {}
    users = defaultdict(lambda: (0, 0))

    for node in Node.find(Q('__backrefs.parent.node.nodes', 'eq', None)):  # ODM hack to ignore all nodes with parents
        if node._id in WHITE_LIST:
            continue  # Dont count whitelisted nodes against users
        projects[node] = get_usage(node)
        for contrib in node.contributors:
            if node.can_edit(user=contrib):
                users[contrib] = tuple(map(sum, zip(users[contrib], projects[node])))  # Adds tuples together, map(sum, zip((a, b), (c, d))) -> (a+c, b+d)

    for collection, limit in ((users, USER_LIMIT), (projects, PROJECT_LIMIT)):
        for item, (used, deleted) in filter(functools.partial(limit_filter, limit), collection.items()):
            line = '{!r} has exceeded the limit {:.2f}GBs ({}b) with {:.2f}GBs ({}b) used and {:.2f}GBs ({}b) deleted.'.format(item, limit / GBs, limit, used / GBs, used, deleted / GBs, deleted)
            logger.info(line)
            lines.append(line)

    if lines:
        if send_email:
            logger.info('Sending email...')
            mails.send_mail('[email protected]', mails.EMPTY, body='\n'.join(lines), subject='Script: OsfStorage usage audit')
        else:
            logger.info('send_email is False, not sending email'.format(len(lines)))
        logger.info('{} offending project(s) and user(s) found'.format(len(lines)))
    else:
        logger.info('No offending projects or users found')
开发者ID:AllisonLBowers,项目名称:osf.io,代码行数:33,代码来源:usage_audit.py

示例5: project_tag

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def project_tag(tag, auth, **kwargs):
    tag_obj = Tag.load(tag)
    if tag_obj:
        nodes = Node.find(Q("tags", "eq", tag_obj._id))
    else:
        nodes = []

    visible_nodes = [obj for obj in nodes if obj.can_view(auth)]
    return {"nodes": [{"title": node.title, "url": node.url} for node in visible_nodes], "tag": tag}
开发者ID:ycchen1989,项目名称:osf.io,代码行数:11,代码来源:tag.py

示例6: test_delete_registration_tree

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
 def test_delete_registration_tree(self):
     proj = factories.NodeFactory()
     factories.NodeFactory(parent=proj)
     comp2 = factories.NodeFactory(parent=proj)
     factories.NodeFactory(parent=comp2)
     reg = factories.RegistrationFactory(project=proj)
     reg_ids = [reg._id] + [r._id for r in reg.get_descendants_recursive()]
     archiver_utils.delete_registration_tree(reg)
     assert_false(Node.find(Q('_id', 'in', reg_ids) & Q('is_deleted', 'eq', False)).count())
开发者ID:bdyetton,项目名称:osf.io,代码行数:11,代码来源:test_archiver.py

示例7: migrate_nodes

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def migrate_nodes():
    migrated_count = 0
    for node in Node.find():
        was_migrated = migrate_category(node)
        if was_migrated:
            node.save()
            logger.info('Migrated {0}'.format(node._id))
            migrated_count += 1
    logger.info('Finished migrating {0} nodes.'.format(migrated_count))
开发者ID:adlius,项目名称:osf.io,代码行数:11,代码来源:migrate_categories.py

示例8: main

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def main(send_email=False):
    logger.info('Starting Project storage audit')
    init_app(set_backends=True, routes=False)

    lines = []
    projects = {}
    users = defaultdict(lambda: (0, 0))

    progress_bar = progressbar.ProgressBar(maxval=Node.find(Q('parent_node', 'eq', None)).count()).start()

    for i, node in enumerate(Node.find(Q('parent_node', 'eq', None))):
        progress_bar.update(i+1)
        if node._id in WHITE_LIST:
            continue  # Dont count whitelisted nodes against users
        projects[node._id] = get_usage(node)
        for contrib in node.contributors:
            if node.can_edit(user=contrib):
                users[contrib._id] = tuple(map(sum, zip(users[contrib._id], projects[node._id])))  # Adds tuples together, map(sum, zip((a, b), (c, d))) -> (a+c, b+d)

        if i % 25 == 0:
            # Clear all caches
            for key in ('node', 'user', 'fileversion', 'storedfilenode'):
                Node._cache.data.get(key, {}).clear()
                Node._object_cache.data.get(key, {}).clear()
            # Collect garbage
            gc.collect()
    progress_bar.finish()

    for model, collection, limit in ((User, users, USER_LIMIT), (Node, projects, PROJECT_LIMIT)):
        for item, (used, deleted) in filter(functools.partial(limit_filter, limit), collection.items()):
            line = '{!r} has exceeded the limit {:.2f}GBs ({}b) with {:.2f}GBs ({}b) used and {:.2f}GBs ({}b) deleted.'.format(model.load(item), limit / GBs, limit, used / GBs, used, deleted / GBs, deleted)
            logger.info(line)
            lines.append(line)

    if lines:
        if send_email:
            logger.info('Sending email...')
            mails.send_mail('[email protected]', mails.EMPTY, body='\n'.join(lines), subject='Script: OsfStorage usage audit')
        else:
            logger.info('send_email is False, not sending email'.format(len(lines)))
        logger.info('{} offending project(s) and user(s) found'.format(len(lines)))
    else:
        logger.info('No offending projects or users found')
开发者ID:545zhou,项目名称:osf.io,代码行数:45,代码来源:usage_audit.py

示例9: get_queryset

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
    def get_queryset(self):
        node = self.get_node()
        req_query = self.get_query_from_request()

        query = (
            Q('_id', 'in', [e._id for e in node.nodes if e.primary]) &
            req_query
        )
        nodes = Node.find(query)
        auth = get_user_auth(self.request)
        return sorted([each for each in nodes if each.can_view(auth)], key=lambda n: n.date_modified, reverse=True)
开发者ID:baylee-d,项目名称:osf.io,代码行数:13,代码来源:views.py

示例10: get_projects

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def get_projects(time=None, public=False, registered=False):
    query = (
        Q('parent_node', 'eq', None) &
        CONTENT_NODE_QUERY
    )
    if time:
        query = query & Q('date_created', 'lt', time)
    if public:
        query = query & Q('is_public', 'eq', True)
    if registered:
        query = query & Q('is_registration', 'eq', True)
    return Node.find(query).count()
开发者ID:alexschiller,项目名称:osf.io,代码行数:14,代码来源:utils.py

示例11: get_projects

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def get_projects(time=None, public=False, registered=False):
    query = (
        Q('category', 'eq', 'project') &
        Q('is_deleted', 'eq', False) &
        Q('is_folder', 'ne', True)
    )
    if time:
        query = query & Q('date_created', 'lt', time)
    if public:
        query = query & Q('is_public', 'eq', True)
    if registered:
        query = query & Q('is_registration', 'eq', True)
    return Node.find(query).count()
开发者ID:545zhou,项目名称:osf.io,代码行数:15,代码来源:utils.py

示例12: recent_public_registrations

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def recent_public_registrations(n=10):
    registrations = Node.find(
        CONTENT_NODE_QUERY &
        Q('parent_node', 'eq', None) &
        Q('is_public', 'eq', True) &
        Q('is_registration', 'eq', True)
    ).sort(
        '-registered_date'
    )
    for reg in registrations:
        if not n:
            break
        if reg.is_retracted or reg.is_pending_embargo:
            # Filter based on calculated properties
            continue
        n -= 1
        yield reg
开发者ID:HalcyonChimera,项目名称:osf.io,代码行数:19,代码来源:utils.py

示例13: project_tag

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def project_tag(tag, auth, **kwargs):
    tag_obj = Tag.load(tag)
    if tag_obj:
        nodes = Node.find(Q('tags', 'eq', tag_obj._id))
    else:
        nodes = []

    visible_nodes = [obj for obj in nodes if obj.can_view(auth)]
    return {
        'nodes': [
            {
                'title': node.title,
                'url': node.url,
            }
            for node in visible_nodes
        ],
        'tag': tag,
    }
开发者ID:545zhou,项目名称:osf.io,代码行数:20,代码来源:tag.py

示例14: migrate

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def migrate():
    targets = get_targets()
    total = len(targets)
    for i, user in enumerate(targets):
        logger.info('({}/{}) Preparing to migrate User {}'.format(i + 1, total, user._id))
        bookmarks = Node.find(Q('is_bookmark_collection', 'eq', True) & Q('creator', 'eq', user._id)).sort('-date_modified')

        bookmark_to_keep = None
        for n in bookmarks:
            if n.nodes:
                bookmark_to_keep = n
        bookmark_to_keep = bookmark_to_keep or bookmarks[0]
        logger.info('Marking Node {} as primary Bookmark Collection for User {}, preparing to delete others'.format(bookmark_to_keep._id, user._id))
        for n in bookmarks:
            if n._id != bookmark_to_keep._id:
                n.is_deleted = True
                n.save()
        logger.info('Successfully migrated User {}'.format(user._id))
    logger.info('Successfully migrated {} users'.format(total))
开发者ID:adlius,项目名称:osf.io,代码行数:21,代码来源:ensure_bookmark_uniqueness_legacy.py

示例15: recent_public_registrations

# 需要导入模块: from website.project.model import Node [as 别名]
# 或者: from website.project.model.Node import find [as 别名]
def recent_public_registrations(n=10):
    recent_query = (
        Q('category', 'eq', 'project') &
        Q('is_public', 'eq', True) &
        Q('is_deleted', 'eq', False)
    )
    registrations = Node.find(
        recent_query &
        Q('is_registration', 'eq', True)
    ).sort(
        '-registered_date'
    )
    for reg in registrations:
        if not n:
            break
        if reg.is_retracted or reg.pending_embargo:
            continue
        n = n - 1
        yield reg
开发者ID:XTech2K,项目名称:osf.io,代码行数:21,代码来源:utils.py


注:本文中的website.project.model.Node.find方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。