bgneal@285: """ bgneal@285: This module contains views for working with post attachments. bgneal@679: bgneal@285: """ bgneal@679: import json bgneal@679: bgneal@285: from django.http import HttpResponse bgneal@285: from django.http import HttpResponseForbidden bgneal@285: from django.http import HttpResponseBadRequest bgneal@285: from django.http import HttpResponseNotFound bgneal@285: bgneal@1037: from forums.models import Attachment bgneal@285: from forums.models import Post bgneal@285: bgneal@285: bgneal@285: def fetch_attachments(request): bgneal@285: """ bgneal@285: This view is the target of an AJAX GET request to retrieve the bgneal@285: attachment embed data for a given forum post. bgneal@285: bgneal@285: """ bgneal@285: if not request.user.is_authenticated(): bgneal@285: return HttpResponseForbidden('Please login or register.') bgneal@285: bgneal@285: post_id = request.GET.get('pid') bgneal@285: if post_id is None: bgneal@285: return HttpResponseBadRequest('Missing post ID.') bgneal@285: bgneal@285: try: bgneal@285: post = Post.objects.get(pk=post_id) bgneal@285: except Post.DoesNotExist: bgneal@285: return HttpResponseNotFound("That post doesn't exist.") bgneal@286: bgneal@1037: attachments = Attachment.objects.filter(post=post).select_related('embed') bgneal@1037: data = [{'id': a.embed.id, 'html': a.embed.html} for a in attachments] bgneal@285: bgneal@285: return HttpResponse(json.dumps(data), content_type='application/json') bgneal@285: