Mercurial > public > sg101
diff forums/attachments.py @ 581:ee87ea74d46b
For Django 1.4, rearranged project structure for new manage.py.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 05 May 2012 17:10:48 -0500 |
parents | gpp/forums/attachments.py@72fd300685d5 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/forums/attachments.py Sat May 05 17:10:48 2012 -0500 @@ -0,0 +1,59 @@ +""" +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() + + def has_attachments(self): + """ + Return true if we have valid pending attachments. + + """ + return len(self.embeds) > 0 + + def get_ids(self): + """ + Return the list of Oembed ids. + + """ + return self.pks