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