page_patch.py 文件源码

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

项目:wagtail-translation 作者: skirsdeda 项目源码 文件源码
def _update_descendant_lang_url_paths(self, old_page):
    cursor = connection.cursor()
    if connection.vendor == 'sqlite':
        field_update_fmt = "{0} = %s || substr({0}, %s)"
    elif connection.vendor == 'mysql':
        field_update_fmt = "{0} = CONCAT(%s, substring({0}, %s))"
    elif connection.vendor in ('mssql', 'microsoft'):
        field_update_fmt = "{0} = CONCAT(%s, (SUBSTRING({0}, 0, %s)))"
    else:
        field_update_fmt = "{0} = %s || substring({0} from %s)"

    exec_args = []
    update_fields_sql = []
    for lang_code in mt_settings.AVAILABLE_LANGUAGES:
        url_path_attr = build_localized_fieldname('url_path', lang_code)
        new_url_path = getattr(self, url_path_attr)
        old_url_path = getattr(old_page, url_path_attr)
        if new_url_path != old_url_path:
            update_fields_sql.append(field_update_fmt.format(url_path_attr))
            exec_args.append(new_url_path)
            exec_args.append(len(old_url_path) + 1)

    if not update_fields_sql:
        # in case page was moved but parent did not change
        # nothing has to be updated
        return

    update_sql = """
    UPDATE wagtailcore_page
    SET {} WHERE path LIKE %s AND id <> %s
    """.format(','.join(update_fields_sql))
    exec_args.append(self.path + '%')
    exec_args.append(self.id)
    cursor.execute(update_sql, exec_args)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号