diff --git a/schoolapps/aub/models.py b/schoolapps/aub/models.py index 06e9cd2cf28bcf0fe8090e34abba7869a2b3bcb6..1e67c0d54431ec97bc029d1664c01beedf14449a 100644 --- a/schoolapps/aub/models.py +++ b/schoolapps/aub/models.py @@ -33,7 +33,6 @@ class Aub(models.Model): # Information description = models.TextField() - # Meta created_by = models.ForeignKey(User, related_name='aubs', on_delete=models.SET(get_default_user()), default=get_default_user()) diff --git a/schoolapps/dashboard/README.md b/schoolapps/dashboard/README.md index dde72cad3b3826ce45f8530c89825c978bc3883a..f6e57d32c9e6cfa5d11e7c9406daa78efb6a79b1 100644 --- a/schoolapps/dashboard/README.md +++ b/schoolapps/dashboard/README.md @@ -2,6 +2,8 @@ Das Dashboard dient dazu, den Benutzer zu begrüßen (> Startseite) und seine letzten Aktivitäten anzuzeigen. +Edit: Außerdem zeigt das Dashboard aktuelle Nachrichten für den Benutzer an. + ## Aktivität registrieren 1. Importieren @@ -11,4 +13,6 @@ und seine letzten Aktivitäten anzuzeigen. 2. Registrieren act = Activity(title="<Titel der Aktion>", description="<Beschreibung der Aktion>", app=<Meine App>Config.verbose_name, user=<Benutzer Objekt>) - act.save() \ No newline at end of file + act.save() + +## Nachricht „verschicken“ \ No newline at end of file diff --git a/schoolapps/dashboard/admin.py b/schoolapps/dashboard/admin.py index fc4ef21f431cbe731885eaabebf1a1f4bc546e27..384364155e2f4f26174574c1f12eb117f65cdda3 100644 --- a/schoolapps/dashboard/admin.py +++ b/schoolapps/dashboard/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin -from .models import Activity +from .models import Activity, Notification # Register your models here. admin.site.register(Activity) +admin.site.register(Notification) diff --git a/schoolapps/dashboard/migrations/0004_notification.py b/schoolapps/dashboard/migrations/0004_notification.py new file mode 100644 index 0000000000000000000000000000000000000000..97a6c3c80b9c3ab7ec11165c654a993c0fb625f1 --- /dev/null +++ b/schoolapps/dashboard/migrations/0004_notification.py @@ -0,0 +1,26 @@ +# Generated by Django 2.0 on 2017-12-22 14:07 + +from django.conf import settings +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('dashboard', '0003_activity_created_at'), + ] + + operations = [ + migrations.CreateModel( + name='Notification', + 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)), + ('created_at', models.DateTimeField(default=django.utils.timezone.now)), + ('to', models.ManyToManyField(to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/schoolapps/dashboard/models.py b/schoolapps/dashboard/models.py index 06a491be9135cf1d2cd151b6423a171dda9c65d0..8e1a33bac26d2585456aa457b12f18e40489c578 100644 --- a/schoolapps/dashboard/models.py +++ b/schoolapps/dashboard/models.py @@ -21,3 +21,17 @@ class Activity(models.Model): def __str__(self): return self.title + + +class Notification(models.Model): + to = models.ManyToManyField(User, related_name='notifications') + + 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/templates/index.html b/schoolapps/dashboard/templates/index.html index 21d54097e5de048e938d198e3b153ab407713510..f7bf8f066dfaec924b0434aeeac40f26895e333f 100644 --- a/schoolapps/dashboard/templates/index.html +++ b/schoolapps/dashboard/templates/index.html @@ -3,23 +3,54 @@ <main> <p class="flow-text">Willkommen bei SchoolApps!</p> - <h4>Letzte Aktivitäten</h4> - {% if activities %} - <ul class="collection"> - {% for activity in activities %} - <li class="collection-item"> - <span class="badge new">{{ activity.app }}</span> - <span class="title">{{ activity.title }} ({{ activity.created_at }})</span> - <p> - {{ activity.description }} - </p> - </li> - {% endfor %} - </ul> - {% else %} - <p>Noch keine Aktivitäten vorhanden.</p> - {% endif %} + <div class="row"> + <div class="col s12 m6"> + <h4>Letzte Aktivitäten</h4> + + {% if activities %} + <ul class="collection"> + {% for activity in activities %} + <li class="collection-item"> + <span class="badge new">{{ activity.app }}</span> + <span class="title">{{ activity.title }}</span> + <p> + <i class="material-icons left">access_time</i> {{ activity.created_at }} + </p> + <p> + {{ activity.description }} + </p> + </li> + {% endfor %} + </ul> + {% else %} + <p>Noch keine Aktivitäten vorhanden.</p> + {% endif %} + </div> + + <div class="col s12 m6"> + <h4>Letzte Benachrichtigungen</h4> + + {% if notifications %} + <ul class="collection"> + {% for notification in notifications %} + <li class="collection-item"> + <span class="badge new">{{ notification.app }}</span> + <span class="title">{{ notification.title }}</span> + <p> + <i class="material-icons left">access_time</i> {{ notification.created_at }} + </p> + <p> + {{ notification.description }} + </p> + </li> + {% endfor %} + </ul> + {% else %} + <p>Noch keine Benachrichtigungen vorhanden.</p> + {% endif %} + </div> + </div> </main> {% include 'partials/footer.html' %} \ No newline at end of file diff --git a/schoolapps/dashboard/views.py b/schoolapps/dashboard/views.py index 0622ce4406239e3cd6071fd7ced063c33304986e..844a3bed5295a5be0b7f5a4c18de833ee2e6bfeb 100644 --- a/schoolapps/dashboard/views.py +++ b/schoolapps/dashboard/views.py @@ -14,10 +14,12 @@ def index(request): act.save() # Load activities - activities = Activity.objects.filter(user=request.user).order_by('-created_at') + activities = Activity.objects.filter(user=request.user).order_by('-created_at')[:5] + notifications = request.user.notifications.all()[:5] context = { - 'activities': activities + 'activities': activities, + 'notifications': notifications, } return render(request, 'index.html', context)