sync_with_server.py
37 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
|
r841 | import re | ||
import urllib | ||||
import httplib2 | ||||
from django.core.management import BaseCommand | ||||
from boards.models import GlobalId | ||||
__author__ = 'neko259' | ||||
REGEX_GLOBAL_ID = r'\[(\w+)\]\[(\w+)\]\[(\d+)\]' | ||||
class Command(BaseCommand): | ||||
help = 'Send a sync or get request to the server.' + \ | ||||
'sync_with_server <server_url> [post_global_id]' | ||||
def handle(self, *args, **options): | ||||
url = args[0] | ||||
if len(args) > 1: | ||||
global_id_str = args[1] | ||||
match = re.match(REGEX_GLOBAL_ID, global_id_str) | ||||
key_type = match.group(1) | ||||
key = match.group(2) | ||||
local_id = match.group(3) | ||||
global_id = GlobalId(key_type=key_type, key=key, | ||||
local_id=local_id) | ||||
xml = GlobalId.objects.generate_request_get([global_id]) | ||||
data = {'xml': xml} | ||||
body = urllib.urlencode(data) | ||||
h = httplib2.Http() | ||||
response, content = h.request(url, method="POST", body=body) | ||||
# TODO Parse content and get the model list | ||||
else: | ||||
raise Exception('Full sync is not supported yet.') | ||||