phpBB3的django数据库模型
项目描述
Django-phpBB3
Django-phpBB3 提供现有 phpBB3 安装的数据库模型。这对于所有喜欢从 django 应用程序访问 phpbb 论坛数据库的人来说都是有用的。这不是 phpBB 克隆或论坛!
Django-phpBB3 还有一个脚本,用于将 phpBB3 论坛迁移到DjangoBB 论坛。见下文。
笔记:
原始 phpBB3 数据库架构与Django-phpBB3的models.py格式之间存在一些不匹配。正因为如此:通过syncdb创建 phpBB3 表不适用于 phpBB3。
phpBB3 经常使用0来表示未设置的值,但我们需要在 db 中使用真正的null值(以获取None返回)
不支持具有复合键的 phpBB3 模型,但存储在django_phpBB3/unsupported_models.py
警告:对原始 phpBB 数据库的写访问尚未经过测试。因此,不能保证通过 django 管理员进行的更改将适用于 phpBB3!因此,在当前状态下,您应该只访问原始 phpBB3 数据的“只读”;)
欢迎打补丁!请发送拉取请求。
示例项目
我们添加两个示例项目:
`django_phpBB3_project`_ |
没有额外依赖的最小项目 |
`phpBB2DjangoBB_project`_ |
使用 phpBB2DjangoBB 迁移命令的 DjangoBB 示例项目 |
设置
~$ 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开发分支(更多信息在我的 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.djangoproject.com/en/dev/ref/django-admin/#sqlsequencereset-appname-appname
选项
清理用户
添加--cleanup_users=x以设置要迁移的用户,其中x是一个数字:
0 |
所有用户 |
1 |
具有电子邮件地址的用户(跳过机器人) |
2 |
拥有电子邮件并具有“lastvisit”日期的用户(默认) |
3 |
电子邮件 + lastvisit 并创建了至少一个帖子 |
迁移限制
尚未转移的东西:
论坛版主
类别组
类别/论坛的排序不会转换为职位编号
处理 DjangoBB 中缺少的功能:
我们将用户组ADMINISTRATORS或GLOBAL_MODERATORS中的 phpBB 用户转移给所有论坛版主。
全局帖子和公告转换为普通置顶帖
子论坛将被扁平化
幽灵移动的帖子被忽略(只会创建移动的帖子)
ForumWatch 被忽略
访客帖子将映射到新的“匿名”用户(密码不可用且没有电子邮件地址)。注意:来宾帖子计划在 DjangoBB 中,请参阅:http: //support.djangobb.org/topic/98/
去做:
处理论坛权限:迁移后,现在所有论坛都是公开的!
用户帖子计数迁移的错误修复 - https://github.com/jedie/django-phpBB3/issues/6
添加一个单独的命令,用于将 phpBB 私人消息迁移到 django-messages(非常低的优先级,欢迎使用补丁)
迁移 - 注释
用户名
迁移脚本以 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.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords
迁移 - 开放式问题
UTC oder 中phpbb_posts中的 phpBB 时间是否来自用户?
故障排除
迁移后出现 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 解释器创建 virtualenv,则进行工作:设置: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
phpBB3 链接
这里有一些 phpBB 文档的链接:
phpBB 的 SQL 模式文件可以在这里找到:
历史
v0.3.0 - 25.09.2012
也迁移 phpBB3 密码并为此添加 PASSWORD_HASHERS,见下文。
v0.2.1 - 21.09.2012
为所有“全局版主”添加“is_staff”标志
设置依赖于“user_inactive_time”的“is_active”标志
添加--only_users仅用于迁移/更新用户。
用于获取伪“匿名”用户帐户
v0.2.0 - 21.09.2012
通过禁用 haystack 搜索索引创建来加速迁移。
错误修正:处理不存在的 phpBB 用户 -> 映射到匿名用户。
添加对 pudb 调试器的支持(可选)并回退到 pdb
迁移中的错误修复:也清除了用户签名。
如果 phpBB3 论坛中不存在附件,请不要检查 PHPBB_ATTACHMENT_PATH。
通过仅统计输出加速用户迁移
在迁移命令中添加--flush_djangobb和--max_entries进行测试。
v0.1.6 - 29.08.2012
在 README 中添加更多信息
修复 unicode 错误
v0.1.5 - 31.07.2012
v0.1.4 - 30.07.2012
v0.1.3 - 27.07.2012
如果帖子无法迁移,则捕获错误并继续迁移
从 phpbb2djangobb 项目设置中删除 django_authopenid 和 django_messages
使用 eta 时间迁移时输出更好
v0.1.2 - 27.07.2012
从版本字符串中删除日期
添加这个历史列表;)
v0.1.0 - 24.07.2012
也迁移帖子订阅。
23.07.2012
也迁移 phpBB3 文件附件。
bbcode 清理中的错误修正
在清理中处理 html 实体
20.07.2012
由 nitely 贡献的 bbcode 清理
19.07.2012
从 phpBB3 迁移命令开始
16.07.2012
项目由 Jens Diemer 开始
项目链接
主页 |
|
派皮 |
捐款
接触
进入对话,除了 github 通信功能:
论坛 |
|
国税局 |
freenode.net 上的#pylucid(是的,PyLucid 频道……) |
网络聊天 |