2014-10-07 06:07:00 -07:00
|
|
|
from django.http import HttpResponse
|
2015-05-25 10:50:46 -07:00
|
|
|
from model import models
|
2014-10-07 06:07:00 -07:00
|
|
|
import json
|
|
|
|
from datetime import datetime
|
|
|
|
import time
|
|
|
|
|
2014-10-09 07:20:35 -07:00
|
|
|
|
|
|
|
def response(content):
|
|
|
|
result = HttpResponse(content)
|
|
|
|
result["Access-Control-Allow-Origin"] = "*"
|
|
|
|
result["Access-Control-Allow-Methods"] = "GET, POST, DELETE, OPTIONS"
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
2014-10-07 06:07:00 -07:00
|
|
|
def error(text):
|
2014-10-09 07:20:35 -07:00
|
|
|
return response(json.dumps({'status': 'error','message': text}))
|
|
|
|
|
2014-10-07 06:07:00 -07:00
|
|
|
|
|
|
|
def doTheMagic(request):
|
|
|
|
clientId = request.GET.get('client', '')
|
|
|
|
|
|
|
|
if (clientId == ''):
|
|
|
|
return error('Wrong client id')
|
|
|
|
|
|
|
|
userId = request.GET.get('user', '')
|
|
|
|
|
|
|
|
if (userId == ''):
|
|
|
|
return error('Wrong user id')
|
|
|
|
|
|
|
|
chartId = request.GET.get('chart', '')
|
|
|
|
|
2014-10-09 07:20:35 -07:00
|
|
|
if request.method == 'OPTIONS':
|
|
|
|
return respondToOptionsRequest(request.META)
|
|
|
|
|
2014-10-07 06:07:00 -07:00
|
|
|
if request.method == 'GET':
|
|
|
|
if chartId == '':
|
|
|
|
return getAllUserCharts(clientId, userId)
|
|
|
|
else:
|
|
|
|
return getChartContent(clientId, userId, chartId)
|
|
|
|
|
|
|
|
elif request.method == 'DELETE':
|
|
|
|
if chartId == '':
|
|
|
|
return error('Wrong chart id')
|
|
|
|
else:
|
|
|
|
return removeChart(clientId, userId, chartId)
|
|
|
|
|
|
|
|
elif request.method == 'POST':
|
|
|
|
chartName = request.POST.get('name')
|
2014-10-09 07:20:35 -07:00
|
|
|
symbol = request.POST.get('symbol')
|
2018-07-23 04:53:21 -07:00
|
|
|
resolution = request.POST.get('resolution')
|
2014-10-07 06:07:00 -07:00
|
|
|
content = request.POST.get('content')
|
|
|
|
if chartId == '':
|
2018-07-23 04:53:21 -07:00
|
|
|
return saveChart(clientId, userId, chartName, symbol, resolution, content)
|
2014-10-07 06:07:00 -07:00
|
|
|
else:
|
2018-07-23 04:53:21 -07:00
|
|
|
return rewriteChart(clientId, userId, chartId, chartName, symbol, resolution, content)
|
2014-10-07 06:07:00 -07:00
|
|
|
|
|
|
|
else:
|
|
|
|
return error('Wrong request')
|
|
|
|
|
|
|
|
|
2014-10-09 07:20:35 -07:00
|
|
|
def respondToOptionsRequest(requestHeaders):
|
|
|
|
result = response(json.dumps({'status': "ok"}))
|
|
|
|
result["Access-Control-Allow-Headers"] = requestHeaders["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"]
|
2014-10-07 06:07:00 -07:00
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
|
|
def getAllUserCharts(clientId, userId):
|
|
|
|
chartsList = models.Chart.objects.filter(ownerSource = clientId, ownerId = userId)
|
2014-10-09 07:20:35 -07:00
|
|
|
result = map(lambda x : {'id': x.id, 'name': x.name, 'timestamp': time.mktime(x.lastModified.timetuple()), 'symbol': x.symbol, 'resolution': x.resolution} , chartsList)
|
2014-11-25 05:38:18 -08:00
|
|
|
return response(json.dumps({'status': "ok", 'data': list(result)}))
|
2014-10-07 06:07:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
def getChartContent(clientId, userId, chartId):
|
|
|
|
try:
|
|
|
|
chart = models.Chart.objects.get(ownerSource = clientId, ownerId = userId, id = chartId)
|
2014-10-09 07:20:35 -07:00
|
|
|
result = json.dumps({'status': 'ok', 'data': { 'id': chart.id, 'name': chart.name, 'timestamp': time.mktime(chart.lastModified.timetuple()), 'content': chart.content}})
|
2014-10-07 06:07:00 -07:00
|
|
|
return response(result)
|
|
|
|
except:
|
|
|
|
return error('Chart not found')
|
|
|
|
|
|
|
|
|
|
|
|
def removeChart(clientId, userId, chartId):
|
|
|
|
try:
|
|
|
|
chart = models.Chart.objects.get(ownerSource = clientId, ownerId = userId, id = chartId)
|
|
|
|
chart.delete()
|
|
|
|
return response(json.dumps({'status': 'ok'}))
|
|
|
|
except:
|
|
|
|
return error('Chart not found')
|
|
|
|
|
|
|
|
|
2014-10-09 07:20:35 -07:00
|
|
|
def saveChart(clientId, userId, chartName, symbol, resolution, content):
|
|
|
|
newChart = models.Chart(
|
|
|
|
ownerSource = clientId,
|
|
|
|
ownerId = userId,
|
|
|
|
name = chartName,
|
|
|
|
content = content,
|
2015-06-29 08:03:32 -07:00
|
|
|
lastModified = datetime.now(),
|
2014-10-09 07:20:35 -07:00
|
|
|
symbol = symbol,
|
|
|
|
resolution = resolution
|
|
|
|
)
|
|
|
|
|
2014-10-07 06:07:00 -07:00
|
|
|
newChart.save()
|
|
|
|
return response(json.dumps({'status': 'ok', 'id': newChart.id}))
|
|
|
|
|
|
|
|
|
2014-11-25 05:34:44 -08:00
|
|
|
def rewriteChart(clientId, userId, chartId, chartName, symbol, resolution, content):
|
2014-10-07 06:07:00 -07:00
|
|
|
try:
|
|
|
|
chart = models.Chart.objects.get(ownerSource = clientId, ownerId = userId, id = chartId)
|
|
|
|
chart.lastModified = datetime.utcnow()
|
|
|
|
chart.content = content
|
|
|
|
chart.name = chartName
|
2014-10-09 07:20:35 -07:00
|
|
|
chart.symbol = symbol
|
2014-11-25 05:34:44 -08:00
|
|
|
chart.resolution = resolution
|
2014-10-07 06:07:00 -07:00
|
|
|
|
|
|
|
chart.save()
|
|
|
|
return response(json.dumps({'status': 'ok'}))
|
|
|
|
except:
|
|
|
|
return error('Chart not found')
|