> And I forgot to say that I would like to have a solution such that if
> new objects are added (i.e. new tables are added) that also can be
> commented on then I don't want to redesign anything. In the ideal case
> I would set something on the new table that indicates that this table
> (object) can be commented on and that should be it.

Ah, then ignore the previous email. What you really need is a
ForeignKey pointing to your comment table in each of your other
objects. Then if you want an object to be able to have comments, just
add a "comment_id" column to that object/table.

class FirstTable(SQLObject):
    comment = ForeignKey("Comment")

class SecondTable(SQLObject):
    comment = ForeignKey("Comment")

The difficult part becomes going back from the Comment object itself
to the object it is associated with. This would be pretty messy to do
purely with SQL and database schemas. But with python it is fairly
straight forward. Note: this also assumes a comment will only be
associated with one object in one other table.

class Comment(SQLObject):
    _objectTypes = [FirstTable, SecondTable]
    def getOriginalObject(self):
        for t in self._objectTypes:
            for r in t.selectBy(commentID=self.id):
                return r
        raise KeyError, "This comment is not associated with anything!"

You could come up with some SQLObject machinery that dynamically
creates the _objectTypes list, but the concept would be the same.

-Brian

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to