From 0ae18af9e49eb36e95b823f9b94fc0ca075c4716 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Fri, 15 Nov 2019 10:15:24 +0100
Subject: [PATCH] Include user views (draft, to be deprecated in favour of
 Vue.js)

---
 apimail/models/stored_message.py              |  5 ++-
 apimail/templates/apimail/message_detail.html |  1 +
 apimail/templates/apimail/message_list.html   |  4 +++
 apimail/urls.py                               | 32 +++++++++++++------
 apimail/views.py                              | 15 +++++++++
 5 files changed, 47 insertions(+), 10 deletions(-)
 create mode 100644 apimail/templates/apimail/message_detail.html
 create mode 100644 apimail/templates/apimail/message_list.html
 create mode 100644 apimail/views.py

diff --git a/apimail/models/stored_message.py b/apimail/models/stored_message.py
index d9ccade77..d00ed5d2e 100644
--- a/apimail/models/stored_message.py
+++ b/apimail/models/stored_message.py
@@ -32,7 +32,10 @@ class StoredMessage(models.Model):
         ordering = ['-datetimestamp',]
 
     def get_absolute_url(self):
-        return reverse('apimail:stored_message_detail', kwargs={'uuid': self.uuid})
+        return reverse('apimail:message_detail', kwargs={'uuid': self.uuid})
+
+    def get_absolute_url_api(self):
+        return reverse('apimail:api_stored_message_retrieve', kwargs={'uuid': self.uuid})
 
 
 class StoredMessageAttachment(models.Model):
diff --git a/apimail/templates/apimail/message_detail.html b/apimail/templates/apimail/message_detail.html
new file mode 100644
index 000000000..3cbd38cb7
--- /dev/null
+++ b/apimail/templates/apimail/message_detail.html
@@ -0,0 +1 @@
+{{ object }}
diff --git a/apimail/templates/apimail/message_list.html b/apimail/templates/apimail/message_list.html
new file mode 100644
index 000000000..e783b3cb9
--- /dev/null
+++ b/apimail/templates/apimail/message_list.html
@@ -0,0 +1,4 @@
+
+{% for message in object_list.all %}
+  {{ message }}
+{% endfor %}
diff --git a/apimail/urls.py b/apimail/urls.py
index a4e7b0cfd..31cf5fad6 100644
--- a/apimail/urls.py
+++ b/apimail/urls.py
@@ -4,30 +4,44 @@ __license__ = "AGPL v3"
 
 from django.urls import path
 
-from apimail.api import views
+from apimail.api import views as apiviews
+from . import views
 
 
 app_name = 'apimail'
 
 urlpatterns = [
-    path( # /apimail/api/events
+
+    # API
+
+    path( # /mail/api/events
         'api/events',
-        views.EventListAPIView.as_view(),
+        apiviews.EventListAPIView.as_view(),
         name='api_event_list'
     ),
-    path( # /apimail/api/event/<uuid>
+    path( # /mail/api/event/<uuid>
         'api/event/<uuid:uuid>',
-        views.EventRetrieveAPIView.as_view(),
+        apiviews.EventRetrieveAPIView.as_view(),
         name='api_event_retrieve'
     ),
-    path( # /apimail/api/stored_messages
+    path( # /mail/api/stored_messages
         'api/stored_messages',
-        views.StoredMessageListAPIView.as_view(),
+        apiviews.StoredMessageListAPIView.as_view(),
         name='api_stored_message_list'
     ),
-    path( # /apimail/api/stored_message/<uuid>
+    path( # /mail/api/stored_message/<uuid>
         'api/stored_message/<uuid:uuid>',
-        views.StoredMessageRetrieveAPIView.as_view(),
+        apiviews.StoredMessageRetrieveAPIView.as_view(),
         name='api_stored_message_retrieve'
     ),
+
+
+    # User views
+
+    path( # /mail/messages
+        'messages',
+        views.StoredMessageListView.as_view(),
+        name='message_list'
+    ),
+
 ]
diff --git a/apimail/views.py b/apimail/views.py
new file mode 100644
index 000000000..ca8cc813d
--- /dev/null
+++ b/apimail/views.py
@@ -0,0 +1,15 @@
+__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
+__license__ = "AGPL v3"
+
+
+from django.views.generic.list import ListView
+
+from .models import StoredMessage
+
+
+class StoredMessageListView(ListView):
+    model = StoredMessage
+    template_name = 'apimail/message_list.html'
+
+    def get_queryset(self):
+        return StoredMessage.objects.filter_for_user(self.request.user)
-- 
GitLab