Seite 1 von 4

django-phpBB3

Verfasst: Montag 16. Juli 2012, 17:16
von jens
So ich hab ja mit https://github.com/jedie/django-phpBB3 angefangen.

Erstmal ist es nur dafür da, das man an die Daten von einer phpBB3 Installation kommt. Also das man eine gescheite models.py und admin.py hat.

Das kann dann dazu dienen eine Migration zu einer anderen Forumssoftware zu machen. Man kann es aber vielleicht auch ähnlich nutzten wie das existierende https://code.google.com/p/django-phpbb/ Also in einer anderen Django-App an die Daten des Forums anzapfen.

Doch für mich ist es erstmal nur die Grundlage zur Migration. Wenn dann irgendwann mal eine Migration vollzogen ist, werde ich wohl das Projekt nicht großartig weiter führen.

z.Z. sieht alles danach aus, das es nach DjangoBB geht, aber wer weiß... Dazu mehr im anderen Thread: http://www.python-forum.de/viewtopic.ph ... 9&start=75


Hier geht es also um django-phpBB3...

Ich habe schon herraus gefunden, das es hier Informationen zum Datenbank Schema von phpBB gibt:
http://wiki.phpbb.com/Tables
http://www.phpbbdoctor.com/doc_tables.php

Mit einem gehackten Script ( https://github.com/jedie/django-phpBB3/ ... le_desc.py ) konnte ich eine Wiki Seite Auslesen um die Beschreibungen der Tabellen in die models.py und admin.py automatisch zu übernehmen, siehe: https://github.com/jedie/django-phpBB3/ ... 1757810221

Interessant wird es aber z.B. help_text automatisiert auszufüllen. Im Wiki gibt es zu jeder Tabelle eine Unterseite, z.B.: http://wiki.phpbb.com/Table.phpbb_users
Unter der Haupt Seiten steht:
Script used to create this list: User:Pyramide/DB2wiki.
Doch ich könnte noch nicht herraus finden, aus welchen Daten die Wiki Seiten erzeugt werden.

Weiß da jemand mehr zu?

Re: django-phpBB3

Verfasst: Dienstag 17. Juli 2012, 14:00
von jens
Hab ein weiteres script zusammen gehackt um die Wiki Seiten zu parsen: https://github.com/jedie/django-phpBB3/ ... 84eee3b65d

Ergebnis ist dann aktuell das:

Code: Alles auswählen

{'PhpbbAclGroups': {'auth_setting': {'content': 'ACL_YES, ACL_NO or ACL_NEVER',
                                     'default': '0',
                                     'type (MySQL)': 'tinyint(2)'},
                    'description': 'Permission roles and/or individual permissions assigned to groups',
                    'page_name': 'Table.phpbb_acl_groups'},
 'PhpbbAclOptions': {'description': 'List of possible permissions',
                     'founder_only': {'content': 'only founders can have this permission',
                                      'default': '0',
                                      'type (MySQL)': 'tinyint(1) unsigned'},
                     'page_name': 'Table.phpbb_acl_options'},
 'PhpbbAclRoles': {'description': 'Permission roles (Standard Moderator, Simple Moderator etc.)',
                   'page_name': 'Table.phpbb_acl_roles',
                   'role_order': {'content': 'tbd',
                                  'default': '0',
                                  'type (MySQL)': 'smallint(4) unsigned'}},
...
Vollständiges dict: http://pastebin.com/NGKwxHhJ

Muß noch überprüfen ob die Angaben so richtig sind. Als nächstes will ich die Info automaitsch in die models.py einfügen ;)

Re: django-phpBB3

Verfasst: Dienstag 17. Juli 2012, 14:30
von jens
Ups. War noch ein Fehler drin... Nun speichere ich die geparsten Daten auch in einer datei: https://github.com/jedie/django-phpBB3/ ... el_data.py

Re: django-phpBB3

Verfasst: Dienstag 17. Juli 2012, 16:28
von jens
So, ich hab nun alle Daten die ich aus dem Wiki bekommen hab in der models.py mit dem script https://github.com/jedie/django-phpBB3/ ... _models.py eingearbeitet.

Neben den Meta Daten wie help_text habe ich auch über das Skript die ganzen ForeignKey fields automatisch gesetzt. Dazu noch IntegerField in PositiveIntegerField bzw. PositiveSmallIntegerField geändert und ein "default" gesetzt.

Danach habe ich noch mit https://github.com/jedie/django-phpBB3/ ... _models.py alle Model Klassen Namen umbenannt: Mehrzahl zu Einzahl gemacht.

Getestet habe ich das Ergebnis allerdings noch nicht ;)

Re: django-phpBB3

Verfasst: Dienstag 17. Juli 2012, 22:05
von jens
So, es gab noch eine ganze Reihe an updates. Nun zapfe ich damit auch eine phpBB3 installation an und schaue, wie man den admin bereich Sinnvoll voreinstellen kann...

Da bin ich an zwei Grenzen gestoßen:

1. Zum einen muß Django einen primary_key haben. Ein zusammengesetzter aus mehreren Feldern funktioniert nicht, wird aber in ein/zwei tabellen von phpBB gemacht. Denke die sind aber nicht so wichtig für den Zweck...

2. je nachdem was ich im Admin anzeigen lassen möchte, erhalte ich diesen Fehler:

Code: Alles auswählen

Exception Value: (1116, 'Too many tables; MySQL can only use 61 tables in a join')

Re: django-phpBB3

Verfasst: Mittwoch 18. Juli 2012, 07:57
von apollo13
jens hat geschrieben:2. je nachdem was ich im Admin anzeigen lassen möchte, erhalte ich diesen Fehler:

Code: Alles auswählen

Exception Value: (1116, 'Too many tables; MySQL can only use 61 tables in a join')
Wtf machst du? Du sollst nicht einfach select_related() machen.

Re: django-phpBB3

Verfasst: Mittwoch 18. Juli 2012, 08:25
von jens
das ist das vom django admin. Ich mache selbst noch überhaupt keine Queries ;)

Re: django-phpBB3

Verfasst: Mittwoch 18. Juli 2012, 09:35
von apollo13
Wohl kaum, Django admin macht selbst kein select_related, entweder sind deine __unicode__ methoden kaputt oder du hast list_select_related aktiv oder du zeigst ForeignKeys an…

Re: django-phpBB3

Verfasst: Mittwoch 18. Juli 2012, 09:49
von jens
Da hast du recht, der Fehler kommt, wenn ich ForeignKeys anzeigen lasse, was ich aber dann vermeide ;)

Re: django-phpBB3

Verfasst: Donnerstag 19. Juli 2012, 11:56
von jens
Es gibt noch einige Updates...

Ich fange auch gerade mit dem eigentlichen migrations script für DjangoBB...

Nun hab ich auch herraus gefunden, das phpBB die ForeignKey anders nutzt... Das Problem: In der Datenbank wird beim ForeignKey feld nicht "NULL" gesetzt, sindern eine 0 eingetragen... Django möchte somit gern den ForeignKey mit der ID 0 haben, den es natürlich nicht gibt...

Somit gibt es damit probleme:
1. Im Admin kann man solche Felder nicht bearbeiten, btw. leer lassen
2. Beim Zugriff gibt's ein DoesNotExist fehler, statt einem None

Zu 1. hab ich das gemacht:

Code: Alles auswählen

class PhpBBForeignKey(models.ForeignKey):
    """
    phpBB stores a None ForeignKey as a numeric 0
    """
    def get_db_prep_save(self, value, connection):
        if value in ("", None):
            value = 0
        return super(PhpBBForeignKey, self).get_db_prep_save(value, connection)
Wie kann ich diese Klasse erweitern, das ich auch 2. Lösen kann? Btw. nicht mehr umgehen muß?

EDIT: Hab den aktuellen Stand mal committet. Das Migration Skript ist hier:
https://github.com/jedie/django-phpBB3/ ... jangobb.py

Re: django-phpBB3

Verfasst: Donnerstag 19. Juli 2012, 17:14
von jens
Hab den aktuellen Stand nochmal comittet.

Informationen zum migrieren hier: https://github.com/jedie/django-phpBB3# ... o-djangobb

Die Migration ist noch nicht vollständig, aber es geht schon soweit, das die User, Foren, Topics und Posts da sind. Es gibt allerdings noch ein paar offene Fragen, siehe README...

Auf der TODO Liste ist u.a. das Handling von Attachments. Wobei das für mich erstmal nicht so interessant ist.

Sehr schade ist auch, das man die "Benachrichtigungen" nicht migrieren kann, weil das Django ORM nicht mit mehreren PrimaryKeys klar kommt, siehe: https://code.djangoproject.com/wiki/Mul ... rimaryKeys
Man könnte auf "raw SQL" zurück greifen?!?

Encoding und bbcode machen auch noch ärger und das Datum der Beiträge stimmt auch noch nicht...

Halt viele Bugs und einiges zu tun ;)

Re: django-phpBB3

Verfasst: Freitag 20. Juli 2012, 14:05
von jens
Es wird langsam...

Fehler beim encoding lag an meinem Datenbank Dump und hat nichts mit dem Projekt zu tun...

Die Migration läuft nun schon ganz gut. Nun sind all Posts auch da und die Statistiken stimmt auch mit dem Original überein.

Was noch Problematisch ist: Der dolle BBcode... phpBB3 macht da einige komische Dinge. Stichwort: bbcode_uid, bbcode_bitfield usw... In der phpBB Datenbank stehen halt noch ein paar "Meta" Informationen und nicht nur bbcode pur...

Re: django-phpBB3

Verfasst: Samstag 21. Juli 2012, 09:47
von jens
jens hat geschrieben:Was noch Problematisch ist: Der dolle BBcode... phpBB3 macht da einige komische Dinge. Stichwort: bbcode_uid, bbcode_bitfield usw... In der phpBB Datenbank stehen halt noch ein paar "Meta" Informationen und nicht nur bbcode pur...
der github User 'nitely' hat get_cleaned_bbcode() und phpbb_html2bbcode() implementiert:
https://github.com/nitely/django-phpBB3 ... ls.py#L705

Ich werde mir das nächste Woche mal ansehen...

Re: django-phpBB3

Verfasst: Montag 23. Juli 2012, 14:56
von jens
jens hat geschrieben:der github User 'nitely' hat get_cleaned_bbcode() und phpbb_html2bbcode() implementiert:
https://github.com/nitely/django-phpBB3 ... ls.py#L705
Hab das ganze nochmal etwas angepasst. Nun macht bbcode und html entities kein Problem mehr...

Was jetzt noch fehlt, sind die Dateianhänge in den Posts. Dann wäre die Migration komplett.

Re: django-phpBB3

Verfasst: Montag 23. Juli 2012, 16:42
von jens
jens hat geschrieben:Was jetzt noch fehlt, sind die Dateianhänge in den Posts. Dann wäre die Migration komplett.
Dateianhänge werden nun auch migriert... Doch ganz komplett ist es noch nicht, denn:
jens hat geschrieben:Sehr schade ist auch, das man die "Benachrichtigungen" nicht migrieren kann, weil das Django ORM nicht mit mehreren PrimaryKeys klar kommt, siehe: https://code.djangoproject.com/wiki/Mul ... rimaryKeys
Man könnte auf "raw SQL" zurück greifen?!?
siehe auch https://github.com/jedie/django-phpBB3/issues/5

Re: django-phpBB3

Verfasst: Dienstag 24. Juli 2012, 10:11
von jens
Mit https://github.com/jedie/django-phpBB3/ ... 06d4425f5c werden nun auch die "Benachrichtigungen" migriert.

Nun fehlt nichts mehr!

Re: django-phpBB3

Verfasst: Dienstag 24. Juli 2012, 12:04
von cofi
jens hat geschrieben:Nun fehlt nichts mehr!
Warum muss ich bloß an "beruehmte letzte Worte denken" :roll:

Re: django-phpBB3

Verfasst: Dienstag 24. Juli 2012, 12:22
von Kebap
Ich denk mehr so: Wow, gute Arbeit, da ist ja schon einiges zusammengekommen! 8)

Re: django-phpBB3

Verfasst: Dienstag 24. Juli 2012, 12:23
von jens
re cofi: Nunja, wenn ich mein Forum migriert habe, fällt natürlich das Interesse am django-phpBB3 auf nahezu Null und für die Migration fehlt aus meinen Augen nichts mehr ;)

Aber vielleicht ist das Projekt ja für den ein oder anderen interessant. Kann man z.B. auch nutzten um die Daten einer weiterlaufendem phpBB Forum anzuzapfen. z.B. um RSS Feeds zu generieren oder Spam User schneller zu löschen oder so... Halt Erweiterungen in Python für phpBB ;)

Re: django-phpBB3

Verfasst: Mittwoch 25. Juli 2012, 20:02
von sma
Wäre es nicht möglich, mal mit einer Kopie der DB dieses Forums (die ja vielleicht Damaskus zur Verfügung stellt) nur so zum Spaß mal die Migration zu testen und zu schauen, wie denn eine django-basierte Variante dieses Forums so aussähe? Wenn dieser elendige Bug mit & in Code-Segmenten verschwinden würde, wäre doch etwas gewonnen.

Und wenn ich dann noch Markdown (in der Github-Variante mit ```sprache ... ``` für einfaches Syntax-Highlighting) als alternatives Eingabeformat haben könnte, wäre ich auch für Python und gegen PHP und motiviert, das einzubauen zu helfen :)

Stefan