API v11 implemented: Study Templates support added

This commit is contained in:
drbeep 2015-06-15 13:45:06 -04:00
parent 9fb16c71a1
commit 4db1008890
9 changed files with 82 additions and 47 deletions

View File

@ -1,19 +1,24 @@
from django.http import HttpResponse
from model import models
import json
from datetime import datetime
import time
import common
from datetime import datetime
from model import models
from api.v11 import common
def processRequest(request):
parsedRequest = common.parseRequest(request)
if !(parsedRequest.error is None):
return parsedRequest.error
if parsedRequest['error'] is not None:
return parsedRequest['error']
clientId = parsedRequest.clientId
userId = parsedRequest.userId
if parsedRequest['response'] is not None:
return parsedRequest['response']
clientId = parsedRequest["clientId"]
userId = parsedRequest['userId']
chartId = request.GET.get('chart', '')

View File

@ -1,3 +1,7 @@
from django.http import HttpResponse
import json
def response(content):
result = HttpResponse(content)
result["Access-Control-Allow-Origin"] = "*"
@ -5,13 +9,12 @@ def response(content):
return result
def error(text):
return response(json.dumps({'status': 'error','message': text}))
def respondToOptionsRequest(requestHeaders):
result = common.response(json.dumps({'status': "ok"}))
result = response(json.dumps({'status': "ok"}))
result["Access-Control-Allow-Headers"] = requestHeaders["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"]
return result
@ -20,15 +23,19 @@ def parseRequest(request):
clientId = request.GET.get('client', '')
userId = request.GET.get('user', '')
err = ''
err = None
response = None
if (clientId == ''):
err = error('Wrong client id')
if (userId == ''):
elif (userId == ''):
err = error('Wrong user id')
if request.method == 'OPTIONS':
elif request.method == 'OPTIONS':
response = respondToOptionsRequest(request.META)
return dict(error=err, response=response, clientId=clientId, iserId=userId)
return {
"error": err,
"response": response,
"clientId": clientId,
"userId": userId
}

View File

@ -1,47 +1,47 @@
from django.http import HttpResponse
from model import models
import json
from datetime import datetime
import time
from . import common
from datetime import datetime
from model import models
from api.v11 import common
def processRequest(request):
parsedRequest = common.parseRequest(request)
if !(parsedRequest.error is None):
return parsedRequest.error
if parsedRequest['error'] is not None:
return parsedRequest['error']
clientId = parsedRequest.clientId
userId = parsedRequest.userId
templateId = request.GET.get('template', '')
if parsedRequest['response'] is not None:
return parsedRequest['response']
clientId = parsedRequest["clientId"]
userId = parsedRequest['userId']
templateName = request.GET.get('template', '')
if request.method == 'GET':
if templateId == '':
if templateName == '':
return getAllTemplatesList(clientId, userId)
else:
return getTemplate(clientId, userId, templateId)
return getTemplate(clientId, userId, templateName)
elif request.method == 'DELETE':
if templateId == '':
if templateName == '':
return common.error('Wrong template id')
else:
return removeTemplate(clientId, userId, templateId)
return removeTemplate(clientId, userId, templateName)
elif request.method == 'POST':
chartName = request.POST.get('name')
symbol = request.POST.get('symbol')
resoluion = request.POST.get('resolution')
templateName = request.POST.get('name')
content = request.POST.get('content')
if templateId == '':
return saveChart(clientId, userId, chartName, symbol, resoluion, content)
else:
return rewriteChart(clientId, userId, templateId, chartName, symbol, resoluion, content)
return createTemplate(clientId, userId, templateName, content)
else:
return common.error('Wrong request')
#-----------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------
@ -83,9 +83,9 @@ def createTemplate(clientId, userId, name, content):
return common.response(json.dumps({'status': 'ok'}))
def rewriteTemplate(clientId, userId, name, content):
def rewriteTemplate(clientId, userId, templateId, name, content):
try:
chart = models.StudyTemplate.objects.get(ownerSource = clientId, ownerId = userId, id = chartId)
chart = models.StudyTemplate.objects.get(ownerSource = clientId, ownerId = userId, id = templateId)
chart.lastModified = datetime.utcnow()
chart.content = content
chart.name = chartName

View File

@ -1,13 +1,10 @@
from django.conf.urls import patterns, url
import charts
import studyTemplates
from api.v11 import studyTemplates
from api.v11 import charts
from django.views.decorators.csrf import csrf_exempt
urlpatterns = patterns('',
url(r'^charts$', csrf_exempt(charts.processRequest)),
)
urlpatterns = patterns('',
url(r'^study_templates$', csrf_exempt(studyTemplates.processRequest)),
)

8
charting_library_charts/settings.py Normal file → Executable file
View File

@ -12,11 +12,11 @@ MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'charting_library_charts',
'NAME': 'charting_library',
'USER': 'postgres',
'PASSWORD': '12345', ### Put your Postgres password here
'PASSWORD': 'postgres', ### Put your Postgres password here
'HOST': 'localhost',
'PORT': '5433',
'PORT': '5432',
}
}
@ -120,7 +120,7 @@ INSTALLED_APPS = (
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'charts',
'model',
)
# A sample logging configuration. The only tangible logging

View File

@ -2,4 +2,5 @@ from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^1\.0/', include('api.v10.urls')),
url(r'^1\.1/', include('api.v11.urls')),
)

View File

@ -8,7 +8,7 @@ import datetime
class Migration(migrations.Migration):
dependencies = [
('charts', '0001_initial'),
('model', '0001_initial'),
]
operations = [

View File

@ -7,7 +7,7 @@ from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('charts', '0002_auto_20141007_1601'),
('model', '0002_auto_20141007_1601'),
]
operations = [

View File

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import jsonfield.fields
class Migration(migrations.Migration):
dependencies = [
('model', '0003_auto_20141008_1252'),
]
operations = [
migrations.CreateModel(
name='StudyTemplate',
fields=[
('id', models.AutoField(primary_key=True, auto_created=True, serialize=False, verbose_name='ID')),
('ownerSource', models.CharField(max_length=200)),
('ownerId', models.CharField(max_length=200)),
('name', models.CharField(max_length=200)),
('content', jsonfield.fields.JSONField()),
],
),
]