[Patchew-devel] [PATCH 11/16] www: Add /my-queues page
Fam Zheng
famz at redhat.com
Wed Nov 21 02:08:41 UTC 2018
This new page lists the user's queues and the patches added to them.
Signed-off-by: Fam Zheng <famz at redhat.com>
---
mods/maintainer.py | 17 ++++++++
www/templates/base.html | 3 ++
www/templates/my-queues.html | 82 ++++++++++++++++++++++++++++++++++++
3 files changed, 102 insertions(+)
create mode 100644 www/templates/my-queues.html
diff --git a/mods/maintainer.py b/mods/maintainer.py
index a92995f..665b074 100644
--- a/mods/maintainer.py
+++ b/mods/maintainer.py
@@ -14,6 +14,7 @@ from django.http import Http404, HttpResponseRedirect, HttpResponseBadRequest
from django.urls import reverse
from mod import PatchewModule
from api.models import Message, Queue, WatchedQuery
+from django.shortcuts import render
from api.search import SearchEngine
from event import register_handler
@@ -123,6 +124,21 @@ class MaintainerModule(PatchewModule):
self._drop_from_queue(request.user, m, queue)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
+ def www_view_my_queues(self, request):
+ if not request.user.is_authenticated:
+ raise PermissionDenied()
+ data = {}
+ for i in Queue.objects.filter(message__is_patch=True,
+ user=request.user).\
+ order_by("message__project", "name", "message__date"):
+ pn = i.message.project.name
+ qn = i.name
+ data.setdefault(pn, {})
+ data[pn].setdefault(qn, [])
+ data[pn][qn].append(i.message)
+
+ return render(request, "my-queues.html", context={"projects": data})
+
def render_page_hook(self, request, context_data):
if request.user.is_authenticated and context_data.get("is_search"):
q = WatchedQuery.objects.filter(user=request.user).first()
@@ -161,6 +177,7 @@ class MaintainerModule(PatchewModule):
urlpatterns.append(url(r"^drop-from-queue/(?P<queue>[^/]*)/(?P<message_id>.*)/",
self.www_view_drop_from_queue,
name="drop-from-queue"))
+ urlpatterns.append(url(r"^my-queues/", self.www_view_my_queues))
urlpatterns.append(url(r"^watch-query/", self.www_view_watch_query))
def prepare_message_hook(self, request, message, detailed):
diff --git a/www/templates/base.html b/www/templates/base.html
index 89dabcf..60e6178 100644
--- a/www/templates/base.html
+++ b/www/templates/base.html
@@ -74,6 +74,9 @@ crossorigin="anonymous"/>
Hi {{ user.username }} <span class="caret"></span>
</button>
<ul class="dropdown-menu">
+ {% if request.user.is_authenticated %}
+ <li><a href="/my-queues" target="blank">My queues</a></li>
+ {% endif %}
{% if request.user.is_staff %}
<li><a href="/admin" target="blank">Admin</a></li>
{% endif %}
diff --git a/www/templates/my-queues.html b/www/templates/my-queues.html
new file mode 100644
index 0000000..627dc5a
--- /dev/null
+++ b/www/templates/my-queues.html
@@ -0,0 +1,82 @@
+{% extends 'base.html' %}
+
+{% block header %}
+<link rel="stylesheet" href="/static/css/series-detail.css">
+<link rel="stylesheet" href="/static/highlight/default.css">
+<script src="/static/highlight/highlight.pack.js"></script>
+<link rel="stylesheet" href="/static/css/colorbox.css">
+<script src="/static/js/jquery.colorbox-min.js"></script>
+{% endblock %}
+
+{% block title %}My queues{% endblock %}
+
+{% block content %}
+
+<div class="series-detail" id="top"></div>
+
+<div class="col-lg-12">
+
+<div id="pre-fixed"></div>
+<div class="col-lg-2">
+ <div id="fixed" class="list-group">
+ <a href="#" class="list-group-item" id="btn-expand-all">Expand all</a>
+ <a href="#" class="list-group-item" id="btn-fold-all">Fold all</a>
+ </div>
+</div>
+
+{% if projects %}
+{% for p, queues in projects.items %}
+
+ <div class="col-lg-10">
+ {% for qn, msgs in queues.items %}
+ <h3>Queue: {{ qn }} [{{ p }}]</h3>
+ <ul class="panel" id="patches">
+ {% for patch in msgs %}
+ <li><a href="/{{ p }}/{{ patch.get_series_head.message_id }}/">
+ <span class="fa fa-lg {% if patch.has_replies %}fa-comment-o{% else %}fa-ellipsis-v{% endif %}"></span>
+ {{ patch.subject }}
+ </a></li>
+ {% endfor %}
+ </ul>
+ {% endfor %}
+ </div>
+
+{% endfor %}
+{% else %}
+<p>You haven't created any queue</p>
+{% endif %}
+
+<script type="text/javascript">
+
+function main() {
+ $(".timestamp").each(function (i, o) {
+ $(o).attr("title", new Date(1000 * $(o).attr("title")));
+ });
+ $("#btn-expand-all").click(function () {
+ $(".panel-collapse").collapse("show");
+ });
+ $("#btn-fold-all").click(function () {
+ $(".panel-collapse").collapse("hide");
+ });
+ $(document).ready(function() {
+ $('pre code').each(function(i, block) {
+ hljs.highlightBlock(block);
+ });
+ $(".cbox-log").colorbox({width:"90%", height: "80%", iframe: true,
+ href: function() {
+ link = $(this).data('link');
+ return link ? link : $(this).attr('href');
+ }, onComplete: function() {
+ setTimeout(function() {
+ $('.cboxIframe')[0].contentWindow.focus();
+ }, 400);
+ }});
+ });
+ add_fixed_scroll_events();
+}
+
+$(main);
+
+</script>
+
+{% endblock %}
--
2.17.2
More information about the Patchew-devel
mailing list