From 461aaa4dab427c761dcc0ea3bec4581fdc48bfe5 Mon Sep 17 00:00:00 2001
From: HanseGucker <hansegucker@gmail.com>
Date: Fri, 22 Dec 2017 13:03:21 +0100
Subject: [PATCH] Add dashboard with last activities (look at README) [ADD
 UNVERSIONED FILES, MISTAKE]

---
 schoolapps/dashboard/__init__.py              |  0
 schoolapps/dashboard/admin.py                 |  6 +++++
 schoolapps/dashboard/apps.py                  |  6 +++++
 .../dashboard/migrations/0001_initial.py      | 22 ++++++++++++++++++
 .../migrations/0002_activity_user.py          | 21 +++++++++++++++++
 .../migrations/0003_activity_created_at.py    | 18 +++++++++++++++
 schoolapps/dashboard/migrations/__init__.py   |  0
 schoolapps/dashboard/models.py                | 23 +++++++++++++++++++
 schoolapps/dashboard/tests.py                 |  3 +++
 schoolapps/dashboard/views.py                 | 23 +++++++++++++++++++
 10 files changed, 122 insertions(+)
 create mode 100644 schoolapps/dashboard/__init__.py
 create mode 100644 schoolapps/dashboard/admin.py
 create mode 100644 schoolapps/dashboard/apps.py
 create mode 100644 schoolapps/dashboard/migrations/0001_initial.py
 create mode 100644 schoolapps/dashboard/migrations/0002_activity_user.py
 create mode 100644 schoolapps/dashboard/migrations/0003_activity_created_at.py
 create mode 100644 schoolapps/dashboard/migrations/__init__.py
 create mode 100644 schoolapps/dashboard/models.py
 create mode 100644 schoolapps/dashboard/tests.py
 create mode 100644 schoolapps/dashboard/views.py

diff --git a/schoolapps/dashboard/__init__.py b/schoolapps/dashboard/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/schoolapps/dashboard/admin.py b/schoolapps/dashboard/admin.py
new file mode 100644
index 000000000..fc4ef21f4
--- /dev/null
+++ b/schoolapps/dashboard/admin.py
@@ -0,0 +1,6 @@
+from django.contrib import admin
+from .models import Activity
+
+# Register your models here.
+
+admin.site.register(Activity)
diff --git a/schoolapps/dashboard/apps.py b/schoolapps/dashboard/apps.py
new file mode 100644
index 000000000..bc6084702
--- /dev/null
+++ b/schoolapps/dashboard/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class DashboardConfig(AppConfig):
+    name = 'dashboard'
+    verbose_name = "Dashboard"
diff --git a/schoolapps/dashboard/migrations/0001_initial.py b/schoolapps/dashboard/migrations/0001_initial.py
new file mode 100644
index 000000000..2b10c48c7
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0001_initial.py
@@ -0,0 +1,22 @@
+# Generated by Django 2.0 on 2017-12-22 11:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Activity',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('title', models.CharField(max_length=200)),
+                ('description', models.TextField(max_length=500)),
+                ('app', models.CharField(max_length=100)),
+            ],
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/0002_activity_user.py b/schoolapps/dashboard/migrations/0002_activity_user.py
new file mode 100644
index 000000000..18f9a636d
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0002_activity_user.py
@@ -0,0 +1,21 @@
+# Generated by Django 2.0 on 2017-12-22 11:33
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('dashboard', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='activity',
+            name='user',
+            field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE,
+                                    to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/0003_activity_created_at.py b/schoolapps/dashboard/migrations/0003_activity_created_at.py
new file mode 100644
index 000000000..c0ee7e6c9
--- /dev/null
+++ b/schoolapps/dashboard/migrations/0003_activity_created_at.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0 on 2017-12-22 11:36
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('dashboard', '0002_activity_user'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='activity',
+            name='created_at',
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+    ]
diff --git a/schoolapps/dashboard/migrations/__init__.py b/schoolapps/dashboard/migrations/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/schoolapps/dashboard/models.py b/schoolapps/dashboard/models.py
new file mode 100644
index 000000000..06a491be9
--- /dev/null
+++ b/schoolapps/dashboard/models.py
@@ -0,0 +1,23 @@
+from django.db import models
+from django.contrib.auth.models import User
+from django.utils import timezone
+
+
+def get_default_user():
+    User.objects.get_or_create(username='nouser')
+
+
+# Create your models here.
+
+class Activity(models.Model):
+    user = models.ForeignKey(User, models.CASCADE, default=get_default_user())
+
+    title = models.CharField(max_length=200)
+    description = models.TextField(max_length=500)
+
+    app = models.CharField(max_length=100)
+
+    created_at = models.DateTimeField(default=timezone.now)
+
+    def __str__(self):
+        return self.title
diff --git a/schoolapps/dashboard/tests.py b/schoolapps/dashboard/tests.py
new file mode 100644
index 000000000..7ce503c2d
--- /dev/null
+++ b/schoolapps/dashboard/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/schoolapps/dashboard/views.py b/schoolapps/dashboard/views.py
new file mode 100644
index 000000000..0622ce440
--- /dev/null
+++ b/schoolapps/dashboard/views.py
@@ -0,0 +1,23 @@
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import render
+from .models import Activity
+from .apps import DashboardConfig
+
+
+# Create your views here.
+
+@login_required
+def index(request):
+    # Register visit
+    act = Activity(title="Dashboard aufgerufen", description="Sie haben das Dashboard aufgerufen.",
+                   app=DashboardConfig.verbose_name, user=request.user)
+    act.save()
+
+    # Load activities
+    activities = Activity.objects.filter(user=request.user).order_by('-created_at')
+
+    context = {
+        'activities': activities
+    }
+
+    return render(request, 'index.html', context)
-- 
GitLab