Denkt ihr das django dafür weniger geeignet ist?Y0Gi hat geschrieben:Die jetzige, portierte Version basiert auf Werkzeug 0.2, SQLAlchemy, Genshi und Babel.
Wie sieht ein Datenmodell für ein Forum aus?
Y0Gi, wenn ihr ein Forum baut, wie löst ihr denn das Problem, gelesene bzw. ungelesene Beiträge pro Anwender zu verwalten?
Im Pocoo-Source gibt es übrigens neben den von mir bereits postulierten Tabellen noch
wobei mir nicht ganz klar ist, warum man beides braucht. Es sieht aber so aus, als wenn Pocoo nur "alle Beträge seit XY sind gelesen" speichern kann. Jedenfalls wird da ggf. `datetime.utcnow()` in einer Funktion `mark_forum_as_read` reingeschrieben.
Dieses Forum hier macht es besser - allerdings nur so lange, wie man sich nicht versucht, ein zweites Mal anzumelden während man angemeldet ist. Dabei werden offenbar alle Markierungen gelöscht - sehr lästig.
Stefan
Im Pocoo-Source gibt es übrigens neben den von mir bereits postulierten Tabellen noch
Code: Alles auswählen
class ReadForums(models.Model):
user = models.ForeignKey(User)
forum = models.ForeignKey(Forum)
date = models.DateTimeField()
class ReadThreads(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
date = models.DateTimeField()
Dieses Forum hier macht es besser - allerdings nur so lange, wie man sich nicht versucht, ein zweites Mal anzumelden während man angemeldet ist. Dabei werden offenbar alle Markierungen gelöscht - sehr lästig.
Stefan
Ich hab das damals bei meinem PHP Forum recht einfach gemacht. Wenn sich ein User eingeloggt hat habe ich einfach alle Beiträge zwischen der letzten Aktivität und dem aktuellen Login in einer Tabelle eingetragensma hat geschrieben:Y0Gi, wenn ihr ein Forum baut, wie löst ihr denn das Problem, gelesene bzw. ungelesene Beiträge pro Anwender zu verwalten?
Ah super. Der erste, die mal auf die Frage eingeht :)burli hat geschrieben:Ich hab das damals bei meinem PHP Forum recht einfach gemacht. Wenn sich ein User eingeloggt hat habe ich einfach alle Beiträge zwischen der letzten Aktivität und dem aktuellen Login in einer Tabelle eingetragen
Dieses Forum macht's wohl genauso, denn das würde erklären, warum nochmaliges Anmelden die Liste der ungelesenen Beiträge tilgt.
Stefan
Das hat so nix zu sagen. Das kann man ja programmieren wie man will. Ich habe einfach alle Einträge in der "ungelesen" Tabelle, die älter als 1 Tag waren, bei der nächsten Anmeldung gelöscht. Man kann bei einer neuen Anmeldung des Users auch seine kompletten Einträge löschen, wie man will.sma hat geschrieben: Dieses Forum macht's wohl genauso, denn das würde erklären, warum nochmaliges Anmelden die Liste der ungelesenen Beiträge tilgt.
Wenn man noch ein Feld für das Unterforum einfügt kann man zb auch, wie hier, selektiv für jedes Unterforum einen Link "Forum als gelesen markieren" einfügen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das Toolset was wir haben hat durchaus einige Vorteile: zu Werkzeug haben wir wesentlich besseren Upstream-Kontakt, SQLAlchemy schlägt von den Features das Django-ORM recht leicht (welches bei komplizierteren Sachen sich teilweise ziemlich dumm verhält und man einige Dinge selbst simulieren muss, was es in SQLAlchemy frei Haus gibt), Genshi bietet XML-Templates (das System hat schon seit langem auf XML-Templates gesetzt, da wäre der Wechsel zu Djangos Templates ein ausreichend großer Aufwand, dass man gleich hätte auf Jinja umsteigen können) und Babel ist die für Genshi passende i18n-Lösung.jens hat geschrieben:Denkt ihr das django dafür weniger geeignet ist?Y0Gi hat geschrieben:Die jetzige, portierte Version basiert auf Werkzeug 0.2, SQLAlchemy, Genshi und Babel.
Außerdem sind wir wohl Eigenbrötler. Klar, mit Django könnte man das alles auch, aber Teil des Spaßes ist es auch neue Techniken auszuprobieren und einzusetzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Käptn Haddock
- User
- Beiträge: 169
- Registriert: Freitag 24. März 2006, 14:27
Ich würde das über einen Vergleich des Last Login oder der letzen Aktion des Users mit dem Erstellungsdatum des Posts machen. Beiträge die danach erstellt wurden, kann er ja nicht gelesen haben. Ansonsten müsstest du ja für jeden Beitrag und jeden User einen Datensatz schreiben, was auf Dauer bei einem wachsenden Forum etws unhandlich werden dürfte.Für jeden User möchte ich nun festhalten, welche Beiträge er gesehen hat bzw. welche noch neu für ihn sind. Wie mache ich dies und insbesondere, wie mache ich dies einigermaßen speichereffizient?
Gruß Uwe
---------------------------------
have a lot of fun!
have a lot of fun!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das macht IMHO nur Sinn, wenn der User wirklich immer alle Beiträge lesen will oder das Forum sehr "klein" ist. Ansonsten wird die Liste schnell viel zu unübersichtlich.sma hat geschrieben:Für jeden User möchte ich nun festhalten, welche Beiträge er gesehen hat bzw. welche noch neu für ihn sind.
IMHO reicht eine Funktion wie "Alle Beiträge der letzten X-Std" oder "Zeige die letzten X Beiträge"
Nein, Sinn mach das schon. Wenn ich hier im Forum nur die Funktion "last24h" hätte wäre mir das zu wenig. Ich möchte schon wissen wo etwas neues geschrieben wurde ohne mir die Uhrzeit merken zu müssen. Ich muss ja nicht alles lesen, nur das was mich interessiert. Den Rest markiere ich dann einfach als gelesen, das ist dann ja auch aus der Tabelle gelöscht
Ich verwalte mit meinem Google-Reader ca. 90 RSS-Feeds von Blogs um über alles mögliche auf dem Laufenden zu bleiben. Etwas als gelesen oder ungelesen zu markieren oder (mittels * oder tag) auf Wiedervorlage zu setzen ist für mich essentiell, um den Überblick zu behalten. Zum Teil lagern die Artikel Tage oder Wochen, bis ich dazu komme, sie zu lesen oder wenigstens zu überfliegen. Einfach nur die letzten 24h wäre kein Feature für mich.
PS: Warum hat dieses Forum eigentlich keinen RSS-Feed der letzten 24h. Wäre praktisch, denn dann könnte ich auch hier meinem Reader benutzen.
Stefan
PS: Warum hat dieses Forum eigentlich keinen RSS-Feed der letzten 24h. Wäre praktisch, denn dann könnte ich auch hier meinem Reader benutzen.
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil phpBB 2.0.x das nicht unterstützt. Sorry.sma hat geschrieben:PS: Warum hat dieses Forum eigentlich keinen RSS-Feed der letzten 24h. Wäre praktisch, denn dann könnte ich auch hier meinem Reader benutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich schon, ja. Django ist zu starr und unflexibel, austauschbare Komponenten sind da besser.jens hat geschrieben:Denkt ihr das django dafür weniger geeignet ist?Y0Gi hat geschrieben:Die jetzige, portierte Version basiert auf Werkzeug 0.2, SQLAlchemy, Genshi und Babel.
Es gibt Tabellen, die User- und Thread-/Kategorie-ID sowie den Zeitpunkt der letzten Betrachtung speichern.sma hat geschrieben:Y0Gi, wenn ihr ein Forum baut, wie löst ihr denn das Problem, gelesene bzw. ungelesene Beiträge pro Anwender zu verwalten?