core.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:edd 作者: JBEI 项目源码 文件源码
def line_removed(sender, instance, **kwargs):
    """
    Checks study <-> strain associations following line deletion and removes study links from ICE
    for any strains that are no longer associated with the study. Note that the m2m_changed
    signal isn't broadcast when lines or studies are deleted. This signal is broadcast is in both
    cases, so we'll use it to fill the gap.
    """
    if check_ice_cannot_proceed():
        return
    if not (hasattr(instance, 'pre_delete_study') and hasattr(instance, 'pre_delete_strain_ids')):
        return
    study_strains = Q(line__study_id=instance.pre_delete_study.pk)
    with transaction.atomic(savepoint=False):
        # find the set of strains on the Study after the delete
        post_delete_strain_ids = set(
            edd_models.Strain.objects.filter(study_strains).distinct().values_list('id', flat=True)
        )
    # calculate which strains were removed as the set difference
    removed_strains = instance.pre_delete_strain_ids - post_delete_strain_ids
    logger.debug('Pre-deletion strains: %s', instance.pre_delete_strain_ids)
    logger.debug('Post-deletion strains: %s', post_delete_strain_ids)
    logger.debug('Removed strains: %s', removed_strains)
    # after transaction commits, schedule Celery task to unlink in ICE.
    partial = functools.partial(submit_ice_unlink, instance.pre_delete_study, removed_strains)
    connection.on_commit(partial)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号