Now that I've seen most of the code, I'm not so convinced that you need the `get_entry()` and `get_entry_attribute()` methods. The only time the `get_entry_*()` methods are being used are in this loop, so you're iterating over all the entries, which you can do with a for loop. It doesn't look like you need access to just a single entry at any time (thus no looping over all entries).

I suggest replacing `get_entry_attribute(index)` methods with `get_attribute(presentation)` if possible. So this loop would then look like

    for presentation in self.get_entries():
        title = self.get_title(presentation)

and so on.