From a4d0d86591c422a66564da29d2cc40cb1219a101 Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Sat, 7 Nov 2015 13:32:54 +0100
Subject: [PATCH] Admin overview

---
 models/forms.py                  |  2 +-
 modules/admin.py                 | 24 +++++++++++++++----
 templates/admin_event_index.html |  8 ++++++-
 templates/admin_event_show.html  | 41 ++++++++++++++++++++++++++++++++
 templates/admin_index.html       | 22 ++++++++++++-----
 5 files changed, 84 insertions(+), 13 deletions(-)
 create mode 100644 templates/admin_event_show.html

diff --git a/models/forms.py b/models/forms.py
index a5166a3..c216999 100644
--- a/models/forms.py
+++ b/models/forms.py
@@ -32,4 +32,4 @@ class NewEventForm(Form):
 class NewTopicForm(Form):
     name = StringField("Name", validators=[InputRequired("Entering the name is required.")])
     mode = StringField("Mode", validators=[InputRequired("Entering the mode is required."), AnyOf(values=["balanced", "fifo"], message="Must be 'balanced' or 'fifo' atm.")])
-    event_id = HiddenField("Event_ID")
+    event_id = HiddenField("Event_id")
diff --git a/modules/admin.py b/modules/admin.py
index f3363e9..a9c6d67 100644
--- a/modules/admin.py
+++ b/modules/admin.py
@@ -15,8 +15,8 @@ admin = Blueprint("admin", __name__)
 @admin_permission.require()
 def index():
     users = User.query.limit(10).all()
-    topics = Topic.query.limit(10).all()
-    return render_layout("admin_index.html", users=users, topics=topics)
+    events = Event.query.limit(10).all()
+    return render_layout("admin_index.html", users=users, events=events)
 
 @admin.route("/user/")
 @login_required
@@ -74,6 +74,16 @@ def user_new():
 def event():
     events = Event.query.all()
     return render_layout("admin_event_index.html", events=events)
+        
+
+@admin.route("/even/show")
+@login_required
+@admin_permission.require()
+def event_show():
+    event_id = request.args.get("id", None)
+    if event_id is not None:
+        event = Event.query.filter_by(id=event_id).first()
+        return render_layout("admin_event_show.html", event=event)
 
 
 @admin.route("/event/new", methods=["GET", "POST"])
@@ -98,7 +108,7 @@ def event_new():
 def event_delete():
     event_id = request.args.get("id", None)
     if event_id is not None:
-        event  = Event.query.filter_by(id=event_id).first()
+        event = Event.query.filter_by(id=event_id).first()
         db.session.delete(event)
         db.session.commit()
         flash("Event deleted.", "alert-success")
@@ -111,9 +121,9 @@ def event_edit():
     event_id = request.args.get("id", None)
     if event_id is not None:
         event = db.session.query(Event).filter_by(id=event_id).first()
-        form = NewEventForm(obj=topic)
+        form = NewEventForm(obj=event)
         if form.validate_on_submit():
-            form.populate_obj(topic)
+            form.populate_obj(event)
             db.session.commit()
             return redirect(url_for(".index"))
         else:
@@ -135,6 +145,10 @@ def topic_new():
         db.session.add(topic)
         db.session.commit()
         return redirect(url_for(".topic"))
+    event_id = request.args.get("event_id", None)
+    if event_id is None:
+        return redirect(url_for(".index"))
+    form.event_id.data = event_id
     return render_layout("admin_topic_new.html", form=form)
 
 @admin.route("/topic/delete")
diff --git a/templates/admin_event_index.html b/templates/admin_event_index.html
index ebff41a..d6660b9 100644
--- a/templates/admin_event_index.html
+++ b/templates/admin_event_index.html
@@ -7,13 +7,19 @@
             <thead>
                 <tr>
                     <th class="mdl-data-table__cell--non-numeric">Name</th>
+                    <th class="mdl-data-table__cell--non-numeric">Edit</th>
                     <th class="mdl-data-table__cell--non-numeric">Delete</th>
                 </tr>
             </thead>
             <tbody>
             {% for event in events %}
                 <tr>
-                    <td class="mdl-data-table__cell--non-numeric"><a href="{{ url_for(".event_edit", id=event.id) }}">{{ event.name }}</a></td>
+                    <td class="mdl-data-table__cell--non-numeric"><a href="{{ url_for(".event_show", id=event.id) }}">{{ event.name }}</a></td>
+                    <td class="mdl-data-table__cell--non-numeric">
+                        <a href="{{ url_for(".event_edit", id=event.id) }}">
+                            <i class="material-icons">edit</i>
+                        </a>
+                    </td>
                     <td class="mdl-data-table__cell--non-numeric">
                         <a href="{{ url_for('.event_delete', id=event.id) }}">
                             <i class="material-icons">delete</i>
diff --git a/templates/admin_event_show.html b/templates/admin_event_show.html
new file mode 100644
index 0000000..2d5a924
--- /dev/null
+++ b/templates/admin_event_show.html
@@ -0,0 +1,41 @@
+{% extends "admin_index.html" %}
+{% block admin_title %}Event - {{ event.name }}{% endblock %}
+
+{% block content %}
+    <div class="mdl-cell mdl-cell--3-col mdl-grid mdl-grid--no-spacing">
+        <table class="mdl-data-table mdl-js-table mdl-shadow--2dp mdl-cell mdl-cell--3-col">
+            <thead>
+                <tr>
+                    <th class="mdl-data-table__cell--non-numeric">Name</th>
+                    <th class="mdl-data-table__cell--non-numeric">Mode</th>
+                    <th class="mdl-data-table__cell--non-numeric">Edit</th>
+                    <th class="mdl-data-table__cell--non-numeric">Delete</th>
+                </tr>
+            </thead>
+            <tbody>
+            {% for topic in event.topics %}
+                <tr>
+                    <td class="mdl-data-table__cell--non-numeric"><a href="{{ url_for(".topic_show", id=topic.id) }}">{{ topic.name }}</a></td>
+                    <td class="mdl-data-table__cell--non-numeric">
+                        <a href="{{ url_for(".topic_edit", id=topic.id) }}">
+                            <i class="material-icons">edit</i>
+                        </a>
+                    </td>
+                    <td class="mdl-data-table__cell--non-numeric">
+                        <a href="{{ url_for('.topic_delete', id=topic.id) }}">
+                            <i class="material-icons">delete</i>
+                        </a>
+                    </td>
+                </tr>
+            {% endfor %}
+            </tbody>
+        </table>
+        <div class="rede-separator">
+            <div class="mdl-cell mdl-cell--1-col">
+                <a class="mdl-button mdl-button--colored mdl-js-button mdl-button--fab mdl-js-ripple-effect" href="{{ url_for('.topic_new', event_id=event.id) }}">
+                    <i class="material-icons">add</i>
+                </a>
+            </div>
+        </div>
+    </div>
+{% endblock %}
diff --git a/templates/admin_index.html b/templates/admin_index.html
index 9fc9134..4e1a658 100644
--- a/templates/admin_index.html
+++ b/templates/admin_index.html
@@ -32,21 +32,31 @@
             <thead>
                 <tr>
                     <th class="mdl-data-table__cell--non-numeric">Name</th>
-                    <th class="mdl-data-table__cell--non-numeric">Mode</th>
+                    <th class="mdl-data-table__cell--non-numeric">Edit</th>
+                    <th class="mdl-data-table__cell--non-numeric">Delete</th>
                 </tr>
             </thead>
             <tbody>
-            {% for topic in events %}
+            {% for event in events %}
                 <tr>
-                    <td class="mdl-data-table__cell--non-numeric"><a href="{{ url_for(".topic_edit", id=event.id) }}">{{ event.name }}</a></td>
-                    <td class="mdl-data-table__cell--non-numeric">{{ topic.mode }}</td>
+                    <td class="mdl-data-table__cell--non-numeric"><a href="{{ url_for(".event_show", id=event.id) }}">{{ event.name }}</a></td>
+                    <td class="mdl-data-table__cell--non-numeric">
+                        <a href="{{ url_for(".event_edit", id=event.id) }}">
+                            <i class="material-icons">edit</i>
+                        </a>
+                    </td>
+                    <td class="mdl-data-table__cell--non-numeric">
+                        <a href="{{ url_for(".event_delete", id=event.id) }}">
+                            <i class="material-icons">delete</i>
+                        </a>
+                    </td>
                 </tr>
             {% endfor %}
             </tbody>
         </table>
         <div class="mdl-cell mdl-cell--3-col mdl-cell--3-col-tablet mdl-cell--2-col-phone">
-            <a class="mdl-button mdl-button--colored mdl-js-button" href="{{ url_for(".topic") }}">
-                All topics
+            <a class="mdl-button mdl-button--colored mdl-js-button" href="{{ url_for(".event") }}">
+                All events
             </a>
         </div>
     </div>
-- 
GitLab