##// END OF EJS Templates
Closing decentral branch, it is already merged into default
Closing decentral branch, it is already merged into default

File last commit:

r1511:ea51d39c decentral
r1548:25780d87 decentral
Show More
sync.py
61 lines | 1.6 KiB | text/x-python | PythonLexer
import xml.etree.ElementTree as et
import xml.dom.minidom
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()
xml_str = SyncManager.generate_response_get([post])
xml_repr = xml.dom.minidom.parseString(xml_str)
xml_repr = xml_repr.toprettyxml()
content = '=Global ID=\n%s\n\n=XML=\n%s' \
% (post.global_id, xml_repr)
return HttpResponse(
content_type='text/plain',
content=content,
)