import xml.etree.ElementTree as et from django.http import HttpResponse, Http404 from boards.models import GlobalId, Post from boards.models.post.sync import SyncManager def response_pull(request): request_xml = request.body if request_xml is None: return HttpResponse(content='Use the API') response_xml = SyncManager.generate_response_pull() return HttpResponse(content=response_xml) def response_get(request): """ Processes a GET request with post ID list and returns the posts XML list. Request should contain an 'xml' post attribute with the actual request XML. """ request_xml = request.body if request_xml is None: return HttpResponse(content='Use the API') posts = [] root_tag = et.fromstring(request_xml) model_tag = root_tag[0] for id_tag in model_tag: global_id, exists = GlobalId.from_xml_element(id_tag) if exists: posts.append(Post.objects.get(global_id=global_id)) response_xml = SyncManager.generate_response_get(posts) return HttpResponse(content=response_xml) def get_post_sync_data(request, post_id): try: post = Post.objects.get(id=post_id) except Post.DoesNotExist: raise Http404() content = 'Global ID: %s\n\nXML: %s' \ % (post.global_id, SyncManager.generate_response_get([post])) return HttpResponse( content_type='text/plain', content=content, )