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 中缺失的功能
将属于用户组 ADMINISTRATORS 或 GLOBAL_MODERATORS 的 phpBB 用户迁移到所有论坛管理员。
全局帖子 和 公告 转换为正常置顶帖子
子论坛将被扁平化
幽灵移动的帖子 将被忽略(只会创建已移动的帖子)
论坛关注将被忽略
访客帖子将映射到新的“匿名”用户(密码不可用且没有电子邮件地址)。注意:在 DjangoBB 中计划访客帖子,请参阅:http://support.djangobb.org/topic/98/
待办事项
处理论坛权限:现在所有论坛在迁移后将公开
用户帖子计数迁移的 Bug 修复 - 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.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
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 - 2012年9月21日
通过禁用haystack搜索索引创建来加速迁移。
错误修复:处理不存在的phpBB用户 -> 映射到匿名用户。
添加对pudb调试器(可选)的支持,并回退到pdb
在迁移中修复错误:清理用户签名,也。
如果phpBB3论坛中没有附件,则不要检查PHPBB_ATTACHMENT_PATH。
通过仅输出统计信息来加速用户迁移
在迁移命令中添加 --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启动
项目链接
主页 |
|
PyPi |
捐赠
将Bitcoins发送到1YJk2JTMyDrZ8oTHkMhTaQtRWqSgrHPiS
联系
加入对话,除了github通信功能之外
论坛 |
|
IRC |
#pylucid on freenode.net(是的,PyLucid频道…) |
webchat |