Mercurial > public > sg101
diff gpp/forums/attachments.py @ 285:8fd4984d5c3b
This is a first rough commit for #95, adding the ability to embed YouTube videos in forum posts. Some more polish and testing needs to happen at this point. I wanted to get all these changes off my hard drive and into the repository.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 14 Oct 2010 02:39:35 +0000 |
parents | |
children | 72fd300685d5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gpp/forums/attachments.py Thu Oct 14 02:39:35 2010 +0000 @@ -0,0 +1,45 @@ +""" +This module contains a class for handling attachments on forum posts. +""" +from oembed.models import Oembed +from forums.models import Attachment + + +class AttachmentProcessor(object): + """ + This class is aggregated by various form classes to handle + attachments on forum posts. New posts can receive attachments and edited + posts can have their attachments replaced, augmented, or deleted. + + """ + def __init__(self, ids): + """ + This class is constructed with a list of Oembed ids. We retrieve the + actual Oembed objects associated with these keys for use in subsequent + operations. + + """ + # ensure all ids are integers + self.pks = [] + for pk in ids: + try: + pk = int(pk) + except ValueError: + continue + self.pks.append(pk) + + self.embeds = [] + if self.pks: + self.embeds = Oembed.objects.in_bulk(self.pks) + + def save_attachments(self, post): + """ + Create and save attachments to the supplied post object. + Any existing attachments on the post are removed first. + + """ + post.attachments.clear() + + for n, pk in enumerate(self.pks): + attachment = Attachment(post=post, embed=self.embeds[pk], order=n) + attachment.save()