Add P-sensor API
diff --git a/hiccup/settings.py b/hiccup/settings.py
index d459dde..349a47b 100644
--- a/hiccup/settings.py
+++ b/hiccup/settings.py
@@ -37,7 +37,9 @@
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'rest_framework',
     'crashreports',
+    'psensor',
 ]
 
 MIDDLEWARE_CLASSES = [
@@ -112,6 +114,12 @@
 USE_TZ = True
 
 
+REST_FRAMEWORK = {
+    'DEFAULT_PERMISSION_CLASSES': (
+        'rest_framework.permissions.IsAuthenticated',
+    )
+}
+
 # Static files (CSS, JavaScript, Images)
 # https://docs.djangoproject.com/en/1.9/howto/static-files/
 
diff --git a/hiccup/urls.py b/hiccup/urls.py
index 8a94215..c79f16a 100644
--- a/hiccup/urls.py
+++ b/hiccup/urls.py
@@ -4,5 +4,6 @@
 
 urlpatterns = [
     url(r'^admin/', admin.site.urls),
-    url(r'^', include('crashreports.urls')),
+    url(r'^psensor/', include('psensor.urls')),
+    url(r'^hiccup/', include('crashreports.urls')),
 ]
diff --git a/psensor/__init__.py b/psensor/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/psensor/__init__.py
diff --git a/psensor/admin.py b/psensor/admin.py
new file mode 100644
index 0000000..4228cfb
--- /dev/null
+++ b/psensor/admin.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from  models import PSensorSetting
+# Register your models here.
+
+@admin.register(PSensorSetting)
+class PSensorSettingAdmin(admin.ModelAdmin):
+    list_display = ['uuid', 'old_offset', 'old_near_threshold', 'old_far_threshold', 'new_offset', 'new_near_threshold', 'new_far_threshold',  'timestamp']
+    pass
diff --git a/psensor/apps.py b/psensor/apps.py
new file mode 100644
index 0000000..20f8fd6
--- /dev/null
+++ b/psensor/apps.py
@@ -0,0 +1,6 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+class PSensorStatus(AppConfig):
+    name = 'psensor'
diff --git a/psensor/migrations/0001_initial.py b/psensor/migrations/0001_initial.py
new file mode 100644
index 0000000..6dd0608
--- /dev/null
+++ b/psensor/migrations/0001_initial.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-25 08:26
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='PSensorSetting',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uuid', models.CharField(max_length=255)),
+                ('old_offset', models.IntegerField()),
+                ('old_near_threshold', models.IntegerField()),
+                ('old_far_threshold', models.IntegerField()),
+                ('new_offset', models.IntegerField()),
+                ('new_near_threshold', models.IntegerField()),
+                ('new_far_threshold', models.IntegerField()),
+                ('timestamp', models.DateTimeField()),
+            ],
+        ),
+    ]
diff --git a/psensor/migrations/__init__.py b/psensor/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/psensor/migrations/__init__.py
diff --git a/psensor/models.py b/psensor/models.py
new file mode 100644
index 0000000..fdd4eb3
--- /dev/null
+++ b/psensor/models.py
@@ -0,0 +1,12 @@
+    # -*- coding: utf-8 -*-
+from django.db import models
+
+class PSensorSetting(models.Model):
+    uuid = models.CharField(max_length=255)
+    old_offset = models.IntegerField()
+    old_near_threshold = models.IntegerField()
+    old_far_threshold = models.IntegerField()
+    new_offset = models.IntegerField()
+    new_near_threshold = models.IntegerField()
+    new_far_threshold = models.IntegerField()
+    timestamp = models.DateTimeField()
diff --git a/psensor/serializers.py b/psensor/serializers.py
new file mode 100644
index 0000000..2333458
--- /dev/null
+++ b/psensor/serializers.py
@@ -0,0 +1,9 @@
+from rest_framework import serializers
+from models import PSensorSetting
+from rest_framework import permissions
+
+class PSensorSettingSerializer(serializers.ModelSerializer):
+    permission_classes = (permissions.IsAuthenticated)
+    class Meta:
+        model = PSensorSetting
+        fields = ('pk','uuid', 'old_offset', 'old_near_threshold', 'old_far_threshold', 'new_offset', 'new_near_threshold', 'new_far_threshold',  'timestamp')
diff --git a/psensor/urls.py b/psensor/urls.py
new file mode 100644
index 0000000..1389736
--- /dev/null
+++ b/psensor/urls.py
@@ -0,0 +1,13 @@
+from django.conf.urls import url, include
+from . import views
+from rest_framework import routers
+
+router = routers.DefaultRouter()
+router.register(r'psensorsettings', views.PSensorSettingViewSet)
+
+# Wire up our API using automatic URL routing.
+# Additionally, we include login URLs for the browsable API.
+urlpatterns = [
+    url(r'^', include(router.urls)),
+    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
+]
diff --git a/psensor/views.py b/psensor/views.py
new file mode 100644
index 0000000..80c8f8f
--- /dev/null
+++ b/psensor/views.py
@@ -0,0 +1,23 @@
+from models import PSensorSetting
+from rest_framework import viewsets
+from serializers import PSensorSettingSerializer
+from rest_framework.decorators import detail_route, list_route
+from rest_framework.permissions import BasePermission
+
+class IsCreationOrIsAuthenticated(BasePermission):
+
+    def has_permission(self, request, view):
+        if not request.user.is_authenticated():
+            if view.action == 'create':
+                return True
+            else:
+                return False
+        else:
+            return True
+
+
+
+class PSensorSettingViewSet(viewsets.ModelViewSet):
+    queryset = PSensorSetting.objects.all()
+    serializer_class =  PSensorSettingSerializer
+    permission_classes = [IsCreationOrIsAuthenticated]