Skip to main content

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 中缺少的功能:

  • 我们将用户组ADMINISTRATORSGLOBAL_MODERATORS中的 phpBB 用户转移给所有论坛版主。

  • 全局帖子公告转换为普通置顶帖

  • 子论坛将被扁平化

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

  • ForumWatch 被忽略

  • 访客帖子将映射到新的“匿名”用户(密码不可用且没有电子邮件地址)。注意:来宾帖子计划在 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.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

历史

  • 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 - 21.09.2012

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

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

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

    • 迁移中的错误修复:也清除了用户签名。

    • 如果 phpBB3 论坛中不存在附件,请不要检查 PHPBB_ATTACHMENT_PATH。

    • 在迁移输出中避免 UnicodeEncodeError

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

    • 在迁移命令中添加--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 开始

项目详情


下载文件

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

源分布

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

已上传 source