From 6a917e09979b1e12ab73e2bcf591d826bd47264c Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Wed, 12 Oct 2016 01:06:17 +0200 Subject: [PATCH] [WarpAPI] Implemented API compliant to the specs 0.13, 0.12, 0.11, 0.9, 0.8. Closed #32 --- www/web/warpapi/admin.py | 7 +++++ www/web/warpapi/migrations/0001_initial.py | 24 +++++++++++++++++ .../migrations/0002_information_category.py | 21 +++++++++++++++ .../migrations/0003_auto_20161012_0058.py | 20 ++++++++++++++ .../migrations/0004_auto_20161012_0058.py | 20 ++++++++++++++ .../migrations/0005_auto_20161012_0059.py | 25 ++++++++++++++++++ www/web/warpapi/migrations/__init__.py | 0 www/web/warpapi/models.py | 14 ++++++++-- www/web/warpapi/views.py | 26 ++++++++++++++++--- 9 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 www/web/warpapi/migrations/0001_initial.py create mode 100644 www/web/warpapi/migrations/0002_information_category.py create mode 100644 www/web/warpapi/migrations/0003_auto_20161012_0058.py create mode 100644 www/web/warpapi/migrations/0004_auto_20161012_0058.py create mode 100644 www/web/warpapi/migrations/0005_auto_20161012_0059.py create mode 100644 www/web/warpapi/migrations/__init__.py diff --git a/www/web/warpapi/admin.py b/www/web/warpapi/admin.py index 8c38f3f..08dd63a 100644 --- a/www/web/warpapi/admin.py +++ b/www/web/warpapi/admin.py @@ -1,3 +1,10 @@ from django.contrib import admin +from warpapi.models import * # Register your models here. + +@admin.register(Information) +class InformationAdmin(admin.ModelAdmin): + pass + + diff --git a/www/web/warpapi/migrations/0001_initial.py b/www/web/warpapi/migrations/0001_initial.py new file mode 100644 index 0000000..25f4fc3 --- /dev/null +++ b/www/web/warpapi/migrations/0001_initial.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-10-12 00:34 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Information', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(max_length=100)), + ('value', models.CharField(max_length=250)), + ], + ), + ] diff --git a/www/web/warpapi/migrations/0002_information_category.py b/www/web/warpapi/migrations/0002_information_category.py new file mode 100644 index 0000000..806d348 --- /dev/null +++ b/www/web/warpapi/migrations/0002_information_category.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-10-12 00:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpapi', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='information', + name='category', + field=models.CharField(default='', max_length=100), + preserve_default=False, + ), + ] diff --git a/www/web/warpapi/migrations/0003_auto_20161012_0058.py b/www/web/warpapi/migrations/0003_auto_20161012_0058.py new file mode 100644 index 0000000..f373354 --- /dev/null +++ b/www/web/warpapi/migrations/0003_auto_20161012_0058.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-10-12 00:58 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpapi', '0002_information_category'), + ] + + operations = [ + migrations.AlterField( + model_name='information', + name='category', + field=models.CharField(max_length=100, null=True), + ), + ] diff --git a/www/web/warpapi/migrations/0004_auto_20161012_0058.py b/www/web/warpapi/migrations/0004_auto_20161012_0058.py new file mode 100644 index 0000000..a547c7e --- /dev/null +++ b/www/web/warpapi/migrations/0004_auto_20161012_0058.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-10-12 00:58 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpapi', '0003_auto_20161012_0058'), + ] + + operations = [ + migrations.AlterField( + model_name='information', + name='value', + field=models.CharField(max_length=250, null=True), + ), + ] diff --git a/www/web/warpapi/migrations/0005_auto_20161012_0059.py b/www/web/warpapi/migrations/0005_auto_20161012_0059.py new file mode 100644 index 0000000..633a3bd --- /dev/null +++ b/www/web/warpapi/migrations/0005_auto_20161012_0059.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2016-10-12 00:59 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('warpapi', '0004_auto_20161012_0058'), + ] + + operations = [ + migrations.AlterField( + model_name='information', + name='category', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AlterField( + model_name='information', + name='value', + field=models.CharField(blank=True, max_length=250, null=True), + ), + ] diff --git a/www/web/warpapi/migrations/__init__.py b/www/web/warpapi/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/www/web/warpapi/models.py b/www/web/warpapi/models.py index 0d091e5..c613153 100644 --- a/www/web/warpapi/models.py +++ b/www/web/warpapi/models.py @@ -1,3 +1,13 @@ -from __future__ import unicode_literals - from django.db import models + +class Information(models.Model): + key = models.CharField(max_length=100) + value = models.CharField(max_length=250, null=True, blank=True) + category = models.CharField(max_length=100, null=True, blank=True) + + def __str__(self): + if self.category: + return "["+self.category+"] "+ str(self.key) + ": " + str(self.value) + else: + return str(self.key) + ": " + str(self.value) + diff --git a/www/web/warpapi/views.py b/www/web/warpapi/views.py index 3f28217..0669ce0 100644 --- a/www/web/warpapi/views.py +++ b/www/web/warpapi/views.py @@ -1,11 +1,29 @@ from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status +from warpapi.models import Information @api_view(['GET']) def main(request): - if request.method == 'GET': - test = {"test":"value"} - return Response(test) - return Response() + ret= {} + information = Information.objects.all() + for info in information: + if info.category: + if info.category not in ret: + ret[info.category]={} + if info.value: + try: + ret[info.category][info.key] = float(info.value) + except: + ret[info.category][info.key] = info.value + else: + ret[info.category] = {info.key} + else: + ret[info.key] = info.value + + ret["open"] = False + + ret["state"] = {"open": False, "icon": { "open": str(ret["icon"]["open"]), "closed": str(ret["icon"]["closed"])}} + + return Response(ret) -- GitLab