From dec530e1b2fe7dbbabb5f2356f810c622290dc05 Mon Sep 17 00:00:00 2001
From: Martin Gummi <martin.gummi@teckids.org>
Date: Wed, 17 Jul 2019 01:34:27 +0200
Subject: [PATCH] Add person card

---
 biscuit/core/templates/core/person_card.html | 19 +++++++++++++++++++
 biscuit/core/urls.py                         |  1 +
 biscuit/core/views.py                        | 20 ++++++++++++++++++++
 3 files changed, 40 insertions(+)
 create mode 100644 biscuit/core/templates/core/person_card.html

diff --git a/biscuit/core/templates/core/person_card.html b/biscuit/core/templates/core/person_card.html
new file mode 100644
index 000000000..ee6a7715f
--- /dev/null
+++ b/biscuit/core/templates/core/person_card.html
@@ -0,0 +1,19 @@
+{% load bootstrap4 staticfiles i18n %}
+<div class="card mb-3">
+  <div class="row no-gutters">
+    <div class="col-md-4">
+      {% if person.jpeg_photo_url %}
+        <img class="person-img" src="{{ person.jpeg_photo_url }}" alt="{{ person.first_name }} {{ person.last_name }}" />
+      {% else %}
+        <img class="person-img" src="{% static 'img/fallback.png' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
+      {% endif %}
+    </div>
+    <div class="col-md-8">
+      <h3 class="card-header">{{ person.first_name }} {{ person.last_name }}</h3>
+      <div class="card-body">
+        <h5 class="card-text">!Group</h5>
+        <p class="card-text">{{ person.date_of_birth|date }}</p>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/biscuit/core/urls.py b/biscuit/core/urls.py
index 1fac42e09..cde54b7e5 100644
--- a/biscuit/core/urls.py
+++ b/biscuit/core/urls.py
@@ -10,6 +10,7 @@ urlpatterns = [
     path('admin/', admin.site.urls),
     path('accounts/', include('django.contrib.auth.urls')),
     path('persons', views.persons, name='persons'),
+    path('person_card/<int:id>', views.person_card, name='person_card_by_id'),
     path('', views.index, name='index'),
 ]
 
diff --git a/biscuit/core/views.py b/biscuit/core/views.py
index e4c0929c4..a62f6a477 100644
--- a/biscuit/core/views.py
+++ b/biscuit/core/views.py
@@ -1,6 +1,7 @@
 from django.contrib.auth.decorators import login_required
 from django.shortcuts import render
 from django_tables2 import RequestConfig
+from django.http import Http404
 from .models import Person
 from .tables import PersonsTable
 
@@ -21,3 +22,22 @@ def persons(request):
     context['persons_table'] = persons_table
 
     return render(request, 'core/persons.html', context)
+
+@login_required
+def person_card(request, id=None):
+    context = {}
+
+    # Raise Http404 if now id is given
+    if id is None:
+        raise Http404
+
+    # Get person and check access
+    try:
+        person = Person.objects.get(id=id)
+    except ObjectDoesNotExist as e:
+        # Turn not-found object into a 404 error
+        raise Http404 from e
+
+    context['person'] = person
+
+    return render(request, 'core/person_card.html', context)
-- 
GitLab