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_list(request): request_xml = request.body if request_xml is None or len(request_xml) == 0: return HttpResponse(content='Use the API') response_xml = SyncManager.generate_response_list() 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 or len(request_xml) == 0: 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() xml_str = SyncManager.generate_response_get([post]) return HttpResponse( content_type='text/xml; charset=utf-8', content=xml_str, )