跳转到主要内容

phpBB3的Django数据库模型

项目描述

Django-phpBB3

Django-phpBB3提供现有phpBB3安装的数据库模型。这对于所有希望从Django应用程序访问phpbb论坛数据库的人来说很有用。它不是phpBB克隆或论坛!

Django-phpBB3还有一个将phpBB3论坛迁移到 DjangoBB论坛 的脚本。见下文。

注意

  • 原始phpBB3数据库模式和Django-phpBB3中的models.py之间存在一些不匹配。因此:通过syncdb创建phpBB3表将无法与phpBB3一起工作。

    • phpBB3经常使用0作为未设置值,但我们需要在数据库中一个真正的null值(以获取None返回)

  • 不支持具有复合键的phpBB3模型,但存储在django_phpBB3/unsupported_models.py

警告:尚未测试对原始phpBB数据库的写访问。因此,无法保证通过django管理器所做的更改与phpBB3兼容!因此,在当前状态下,您应仅以“只读”方式访问原始phpBB3数据 ;)

欢迎提交补丁!请发送拉取请求。

示例项目

我们添加了两个示例项目

`django_phpBB3_project`_

没有额外依赖的最小项目

`phpBB2DjangoBB_project`_

DjangoBB示例项目,用于使用phpBB2DjangoBB迁移命令

设置

~$ virtualenv DjangoBB_env
~$ cd DjangoBB_env/
~/DjangoBB_env$ source bin/activate
(DjangoBB_env)~/DjangoBB_env$ pip install django-phpBB3 # Will also install Django

(如果默认Python解释器是<2.7:使用: virtualenv -p python2.7 DjangoBB_env -见下文)

或者如果您将使用最新的git版本

# install git read-only clone (Will also install Django):
(DjangoBB_env)~/DjangoBB_env$ pip install -e git+git://github.com/jedie/django-phpBB3.git#egg=django-phpBB3

如果您想测试/使用DjangoBB迁移,请安装此软件

(DjangoBB_env)~/DjangoBB_env$ pip install -e git+git://github.com/slav0nic/DjangoBB.git#egg=DjangoBB
(DjangoBB_env)~/DjangoBB_env$ pip install Whoosh

也许您想用我的DjangoBB的dev分支(更多信息请见我的DjangoBB github wiki页面

(DjangoBB_env)~/DjangoBB_env$ pip install -e git+git://github.com/jedie/DjangoBB.git@dev#egg=DjangoBB
(DjangoBB_env)~/DjangoBB_env$ pip install Whoosh

local_settings.py示例

# database table prefix (default is: "phpbb3_")
#PHPBB_TABLE_PREFIX = "phpbb_"

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'phpbb3', # Or path to database file if using sqlite3.
        'USER': 'phpbb3', # Not used with sqlite3.
        'PASSWORD': 'foo bar', # Not used with sqlite3.
        'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '', # Set to empty string for default. Not used with sqlite3.
    }
}

# settings for phpBB3 migration:

# filesystem path to the /files/ sub directory of the phpBB installation:
# Set to None, if your phpBB3 forum has no attachments
PHPBB_ATTACHMENT_PATH = "/path/to/phpBB/files/"

初始化数据库

如果您要测试两个示例项目,您需要初始化数据库,例如:

~$ cd DjangoBB_env/
~/DjangoBB_env$ source bin/activate
(DjangoBB_env)~/DjangoBB_env$ cd src/django-phpbb3/phpBB2DjangoBB_project
(DjangoBB_env).../phpBB2DjangoBB_project$ # create local_settings.py here, see above!
(DjangoBB_env).../phpBB2DjangoBB_project$ ./manage.py syncdb --all
(DjangoBB_env).../phpBB2DjangoBB_project$ ./manage.py migrate --fake

测试django-phpBB3

我们在/django_phpBB3_project/中添加了一个测试项目,以方便开始。

/django_phpBB3_project/中创建一个local_settings.py,见上述示例。

您必须初始化数据库(见上述内容)。

您可以使用以下方式启动测试服务器,例如:

./manage.py runserver --traceback --insecure

将phpBB3安装迁移到DjangoBB

我们在/phpBB2DjangoBB_project/中添加了一个示例项目,用于phpBB3迁移。

从phpBB3到DjangoBB的迁移在此作为迁移命令实现:/django_phpBB3/management/commands/phpbb2djangobb.py

要运行迁移,您可以使用最简单的phpBB2DjangoBB示例项目示例。该项目包括DjangoBB论坛应用和django-phpBB3应用。在开始之前,您必须安装依赖项!

您必须在/phpBB2DjangoBB_project/中创建一个local_settings.py,见上述示例。

在开始迁移之前:您应该检查数据库编码设置是否正确。要检查,请登录并检查在 admin / Django_phpBB3 / **Posts** 中非ascii字符是否正常。

典型问题是:例如,在默认的ubuntu/debian设置中,mysql服务器将使用latin-1!因此,在您开始之前,您应该更正这一点。例如:

ALTER DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

在进行任何操作之前先进行SQL备份!!!

使用./manage.py phpbb2djangobb运行迁移,例如:

~$ cd DjangoBB_env/
~/DjangoBB_env$ source bin/activate
(DjangoBB_env)~/DjangoBB_env$ cd src/django-phpbb3/phpBB2DjangoBB_project
(DjangoBB_env).../phpBB2DjangoBB_project$ ./manage.py phpbb2djangobb

迁移之后

重要:尚未迁移任何phpBB论坛权限。因此:在您将迁移的论坛对公众开放之前,您必须手动隐藏任何内部论坛(如果存在)!要在DjangoBB中限制论坛,例如:

  • 在django管理面板中创建一个新用户组

  • 创建一个单独的djangobb类别并将创建的用户组添加进去

  • 内部论坛移动到新类别

  • 为了给用户内部论坛的权限:编辑用户并添加创建的用户组。

您必须使用以下方式更新haystack搜索索引,例如:

(DjangoBB_env).../phpBB2DjangoBB_project$ ./manage.py update_index --verbosity=2

更多信息:http://django-haystack.readthedocs.org/en/latest/management_commands.html

根据使用的数据库,您必须重置序列。

Sequences are indexes used by some database engines to track the next available number for automatically incremented fields.

更多信息:https://docs.django.ac.cn/en/dev/ref/django-admin/#sqlsequencereset-appname-appname

选项

cleanup_users

--cleanup_users=x添加到设置中要迁移的用户,其中x是一个数字

0

所有用户

1

有电子邮件地址的用户(跳过机器人)

2

有电子邮件地址并且有“lastvisit”日期的用户(默认)

3

电子邮箱 + 最后访问时间,并且已创建至少一个帖子

迁移限制

尚未转移的内容

  • 论坛管理员

  • 分类组

  • 分类/论坛的某种类型不会转换为位置编号

处理 DjangoBB 中缺失的功能

  • 将属于用户组 ADMINISTRATORSGLOBAL_MODERATORS 的 phpBB 用户迁移到所有论坛管理员。

  • 全局帖子公告 转换为正常置顶帖子

  • 子论坛将被扁平化

  • 幽灵移动的帖子 将被忽略(只会创建已移动的帖子)

  • 论坛关注将被忽略

  • 访客帖子将映射到新的“匿名”用户(密码不可用且没有电子邮件地址)。注意:在 DjangoBB 中计划访客帖子,请参阅:http://support.djangobb.org/topic/98/

待办事项

迁移 - 备注

用户名

迁移脚本以 1:1 的比例复制了 phpBB 用户名,并没有进行任何清理。创建/更改用户的 django 表单将仅限制为:仅字母、数字和 @/./+/-/_。但是模型字段是一个简单的 CharField。昵称是否会被接受登录取决于你在项目中使用的登录表单。

密码

我们将迁移 phpBB3 密码并添加一个自有的密码哈希器。在首次登录时,Django 会使用默认的哈希器(PBKDF2)升级旧密码。为此,需要将 phpBB3 密码哈希器添加到你的设置中,例如。

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.SHA1PasswordHasher',
    'django.contrib.auth.hashers.MD5PasswordHasher',
    'django.contrib.auth.hashers.CryptPasswordHasher',
    'django_phpBB3.hashers.PhpBB3PasswordHasher',
)

更多信息:https://docs.django.ac.cn/en/1.4/topics/auth/#password-upgrading

迁移 - 开放性问题

  • phpBB 时间在 phpbb_posts 中是 UTC 时间还是用户的本地时间?

故障排除

在帖子迁移过程中出现 HTMLParseError

也许你使用了比 2.7.3 更早的 Python 版本。在旧版本中,HTMLParser 不如 2.7.3 那样健壮。也许默认的 Python 解释器是 2.6,但已安装 2.7,那么尝试

# Display the exsiting Python version:
~$ python --version # Default python
Python 2.6.6
~$ python2.7 --version # Try if 2.7 is available
Python 2.7.3

# Create env with 2.7:
~$ virtualenv -p python2.7 DjangoBB_env

如果无法使用较新的 Python 解释器创建虚拟环境,则可以采取以下方法:设置:settings.DJANGOBB_SMILES_SUPPORT = False 更多信息请参阅:https://github.com/jedie/django-phpBB3/issues/14

在运行迁移时在终端出现 UnicodeEncodeError

解决方案:你必须设置你的区域设置或设置环境变量 PYTHONIOENCODING,根据你的终端编码 - 在大多数情况下,为 utf-8。更多信息可以在 问题 9 的评论中找到

如何调试迁移

我们使用 python 内置的 pdb 模块来调试迁移跟踪。如果已安装,则使用 pudb。例如,要安装它,请运行:

~$ cd DjangoBB_env/
~/DjangoBB_env$ source bin/activate
(DjangoBB_env)~/DjangoBB_env$ pip install pudb

历史记录

  • v0.3.0 - 25.09.2012

    • 迁移 phpBB3 密码,并为此添加 PASSWORD_HASHERS,请参阅以下内容。

  • v0.2.1 - 21.09.2012

    • 将“is_staff”标志添加到所有“全局管理员”

    • 根据“user_inactive_time”设置“is_active”标志

    • 添加 --only_users 以仅迁移/更新用户。

    • 使用 {get_or_create 获取伪“匿名”用户账户

  • v0.2.0 - 2012年9月21日

    • 通过禁用haystack搜索索引创建来加速迁移。

    • 错误修复:处理不存在的phpBB用户 -> 映射到匿名用户。

    • 添加对pudb调试器(可选)的支持,并回退到pdb

    • 在迁移中修复错误:清理用户签名,也。

    • 如果phpBB3论坛中没有附件,则不要检查PHPBB_ATTACHMENT_PATH。

    • 避免在迁移输出中发生UnicodeEncodeError

    • 通过仅输出统计信息来加速用户迁移

    • 在迁移命令中添加 --flush_djangobb--max_entries 以进行测试。

  • v0.1.6 - 2012年8月29日

    • 在README中添加更多信息

    • 修复Unicode错误

  • v0.1.5 - 2012年7月31日

  • v0.1.4 - 2012年7月30日

  • v0.1.3 - 2012年7月27日

    • 如果帖子无法迁移,则捕获错误并继续迁移

    • 从phpbb2djangobb项目设置中删除django_authopenid和django_messages

    • 迁移时输出更友好的信息,并显示估计时间

  • v0.1.2 - 2012年7月27日

    • 从版本字符串中删除日期

    • 添加此历史列表 ;)

  • v0.1.0 - 2012年7月24日

    • 迁移帖子订阅,也。

  • 23.07.2012

    • 迁移phpBB3文件附件,也。

    • 在bbcode清理中修复错误

    • 在清理中处理HTML实体

  • 20.07.2012

    • bbcode清理由nitely提供

  • 19.07.2012

    • 从phpBB3迁移命令开始

  • 16.07.2012

    • 项目由Jens Diemer启动

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源分布

django-phpBB3-0.3.0.tar.gz (48.2 kB 查看哈希)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页