使用postgres在Django CMS 3.0(mptt)文章树中的错误位置添加/更新页面

时间:2015-10-22 14:58:20

标签: django postgresql django-cms

对于https://developer.ubuntu.com我们使用Django CMS 3.0.6(mptt),我们对它非常满意。

最近我们为我们添加了从项目的bzr分支导入降价文档的功能,所以我们可以在我们感兴趣的一些上游项目发生变化时让cronjobs更新文章。我花了一些时间来完成它,但我们得到了它的工作。本地我使用sqlite(默认)并且很高兴。一旦将其部署到分段,导入也会起作用,但是脚本添加或更新的文章最终会出现在文章树中的不同位置。一段时间后,我可以通过本地postgres安装重现这一点。

我们目前正在此处跟踪此问题:https://bugs.launchpad.net/developer-ubuntu-com/+bug/1506861

我有点迷失,不太懂得如何调试。

我为此准备了一个测试用例,它基本上是:

<%
}  
else 
{
  response.sendRedirect("index.jsp");
  return; //this is to redirect immediately so it doesn't
  //run any code below this point before redirecting
}
%>

然后将类似http://pastebin.ubuntu.com/12798510/的差异应用于developer_portal / settings.py并运行

$ bzr branch lp:~developer-ubuntu-com-dev/developer-ubuntu-com/debug-md-importer
$ cd debug-md-importer
$ virtualenv ./env
$ ./env/bin/pip install -r requirements.txt
$ ./env/bin/pip install django psycopg2

要查看操作中的问题,请运行:

$ sudo apt install python-pip python-dev libpq-dev postgresql postgresql-contrib
$ sudo -u postgres psql -c "CREATE USER developerportal_user WITH PASSWORD '123abc';"

在postgres设置和

$ ./postgres-retry.sh

在sqlite设置中。

脚本将从头开始创建一个新的数据库,使用调试消息运行导入程序并为您运行runserver,这样您就可以轻松地在页面列表中检查结构的更改方式。

目前的状况: sqlite很好,postgres的文章树搞砸了。

此问题的所有相关代码都可以在developer_portal / management / commands / import-external-docs-branches.py中找到

如果有人能给我一个指针,那就非常感激了。

提前多多感谢。

祝你有美好的一天,  丹尼尔

1 个答案:

答案 0 :(得分:3)

我从http://bazaar.launchpad.net/~developer-ubuntu-com-dev/developer-ubuntu-com/debug-md-importer/view/head:/requirements.txt#L18看到你在django CMS 3.0.6上,这意味着你正在使用Django MPTT。

一般来说,人们在django CMS中遇到的大多数树问题在移动后都被证明是与Django MPTT相关的腐败。

如果您还没有这样做,可以尝试以下方法之一:

  • 而不是使用django-mptt==0.6.1尝试最新版本的https://github.com/django-mptt/django-mptt
  • 我没有机会完成您的流程,但如果可行,请尝试在每次操作后运行manage.py cms fix-mptt命令
  • 在django CMS 3.1中,我们开始使用Treebeard而不是MPTT。如果您在没有太多额外工作的情况下尝试使用3.1而不是3.0.x,那么这可能是一项非常有用的实验。