Skip to content
Snippets Groups Projects
Commit 76960128 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add notifications to dashboard

parent 461aaa4d
No related branches found
No related tags found
1 merge request!86Merge school-apps
......@@ -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())
......
......@@ -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
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)
# 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)),
],
),
]
......@@ -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
......@@ -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
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment