From 4db1008890fb0509ea5e648f2e5ac4957f8d9742 Mon Sep 17 00:00:00 2001 From: drbeep Date: Mon, 15 Jun 2015 13:45:06 -0400 Subject: [PATCH] API v11 implemented: Study Templates support added --- api/v11/charts.py | 19 ++++++---- api/v11/common.py | 23 +++++++---- api/v11/studyTemplates.py | 42 ++++++++++----------- api/v11/urls.py | 7 +--- charting_library_charts/settings.py | 8 ++-- charting_library_charts/urls.py | 1 + model/migrations/0002_auto_20141007_1601.py | 2 +- model/migrations/0003_auto_20141008_1252.py | 2 +- model/migrations/0004_studytemplate.py | 25 ++++++++++++ 9 files changed, 82 insertions(+), 47 deletions(-) mode change 100644 => 100755 charting_library_charts/settings.py create mode 100644 model/migrations/0004_studytemplate.py diff --git a/api/v11/charts.py b/api/v11/charts.py index 4fdeca5..b60011c 100644 --- a/api/v11/charts.py +++ b/api/v11/charts.py @@ -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', '') diff --git a/api/v11/common.py b/api/v11/common.py index e6fe660..3cee36e 100644 --- a/api/v11/common.py +++ b/api/v11/common.py @@ -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 + } diff --git a/api/v11/studyTemplates.py b/api/v11/studyTemplates.py index d084421..b0037d3 100644 --- a/api/v11/studyTemplates.py +++ b/api/v11/studyTemplates.py @@ -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 diff --git a/api/v11/urls.py b/api/v11/urls.py index a8911ea..fff7647 100755 --- a/api/v11/urls.py +++ b/api/v11/urls.py @@ -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)), ) diff --git a/charting_library_charts/settings.py b/charting_library_charts/settings.py old mode 100644 new mode 100755 index d725822..446e84e --- a/charting_library_charts/settings.py +++ b/charting_library_charts/settings.py @@ -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 diff --git a/charting_library_charts/urls.py b/charting_library_charts/urls.py index 2b5905a..9355697 100644 --- a/charting_library_charts/urls.py +++ b/charting_library_charts/urls.py @@ -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')), ) diff --git a/model/migrations/0002_auto_20141007_1601.py b/model/migrations/0002_auto_20141007_1601.py index 444f446..0dcca1e 100755 --- a/model/migrations/0002_auto_20141007_1601.py +++ b/model/migrations/0002_auto_20141007_1601.py @@ -8,7 +8,7 @@ import datetime class Migration(migrations.Migration): dependencies = [ - ('charts', '0001_initial'), + ('model', '0001_initial'), ] operations = [ diff --git a/model/migrations/0003_auto_20141008_1252.py b/model/migrations/0003_auto_20141008_1252.py index 9b88df0..e9d0d26 100755 --- a/model/migrations/0003_auto_20141008_1252.py +++ b/model/migrations/0003_auto_20141008_1252.py @@ -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 = [ diff --git a/model/migrations/0004_studytemplate.py b/model/migrations/0004_studytemplate.py new file mode 100644 index 0000000..aa16cec --- /dev/null +++ b/model/migrations/0004_studytemplate.py @@ -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()), + ], + ), + ]