]> git.ipfire.org Git - pbs.git/commitdiff
events: Add some simple UI components
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 14 Jul 2022 10:35:48 +0000 (10:35 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 14 Jul 2022 10:35:48 +0000 (10:35 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/buildservice/events.py
src/templates/builds/show.html
src/templates/events/modules/list.html [new file with mode: 0644]
src/templates/events/modules/system-message.html [new file with mode: 0644]
src/templates/events/modules/user-message.html [new file with mode: 0644]
src/web/__init__.py
src/web/events.py [new file with mode: 0644]

index 787e3f8e8ae10f30c577565a1e79d1a9430e0fe1..b13473757095fa16137eefcc70717f17ddd813ce 100644 (file)
@@ -133,6 +133,7 @@ web_PYTHON = \
        src/web/builds.py \
        src/web/distributions.py \
        src/web/errors.py \
+       src/web/events.py \
        src/web/handlers.py \
        src/web/jobs.py \
        src/web/keys.py \
@@ -226,6 +227,15 @@ dist_templates_errors_DATA = \
 
 templates_errorsdir = $(templatesdir)/errors
 
+templates_eventsdir = $(templatesdir)/events
+
+dist_templates_events_modules_DATA = \
+       src/templates/events/modules/list.html \
+       src/templates/events/modules/system-message.html \
+       src/templates/events/modules/user-message.html
+
+templates_events_modulesdir = $(templates_eventsdir)/modules
+
 templates_messagesdir = $(templatesdir)/messages
 
 dist_templates_messages_builds_DATA = \
index 16bea54319b348a73dc18fd80a8cbbbb8cca5254..1be298c71f88b25c9552bc0e2527eaa3e62e4762 100644 (file)
@@ -95,3 +95,19 @@ class Event(base.Object):
 
        def __repr__(self):
                return "<%s %s>" % (self.__class__.__name__, self.type)
+
+       # Make Events accessible as mappings
+
+       def keys(self):
+               return self.data.keys()
+
+       def __getitem__(self, key):
+               return self.data[key]
+
+       # Make items accessible as attributes
+
+       def __getattr__(self, key):
+               try:
+                       return self.data[key]
+               except KeyError as e:
+                       raise AttributeError(key) from e
index 72465bcd557e49475ee15c758a56ac72b3a903c4..4114c52aeb2e1d8b39049159931e158aa322ea20 100644 (file)
@@ -93,4 +93,6 @@
        {% if build.jobs %}
                {% module JobsList(build.jobs, show_arch_only=True, show_packages=True) %}
        {% end %}
+
+       {% module EventsList(build.events) %}
 {% end block %}
diff --git a/src/templates/events/modules/list.html b/src/templates/events/modules/list.html
new file mode 100644 (file)
index 0000000..0485758
--- /dev/null
@@ -0,0 +1,7 @@
+{% for event in events %}
+       {% if event.by_user %}
+               {% module EventUserMessage(event) %}
+       {% else %}
+               {% module EventSystemMessage(event) %}
+       {% end %}
+{% end %}
diff --git a/src/templates/events/modules/system-message.html b/src/templates/events/modules/system-message.html
new file mode 100644 (file)
index 0000000..18b9266
--- /dev/null
@@ -0,0 +1,21 @@
+<div class="media-object">
+       {% block thumbnail %}{% end block %}
+
+       <div class="media-object-section main-section">
+               {% if event.type == "build-created" %}
+                       <p>
+                               {{ _("Build created") }}
+                       </p>
+               {% else %}
+                       <p>
+                               {{ _("- Unknown Event -") }}
+                       </p>
+               {% end %}
+
+               <small>
+                       {% block time %}
+                               {{ locale.format_date(event.t) }}
+                       {% end block %}
+               </small>
+       </div>
+</div>
diff --git a/src/templates/events/modules/user-message.html b/src/templates/events/modules/user-message.html
new file mode 100644 (file)
index 0000000..ddf902e
--- /dev/null
@@ -0,0 +1,19 @@
+{% extends "system-message.html" %}
+
+{% block thumbnail %}
+       <div class="media-object-section">
+               <div class="thumbnail">
+                       <img src="{{ event.by_user.avatar(96) }}" alt="{{ event.by_user }}">
+               </div>
+       </div>
+{% end block %}
+
+{% block time %}
+       {{ locale.format_date(event.t) }}
+
+       &dash;
+
+       <a href="/users/{{ event.by_user.name }}">
+               {{ _("by %s") % event.by_user }}
+       </a>
+{% end block %}
index 798257a10d27a15029b0cc42a5e2ba252a978e9e..3f928a7210eceffd7e5f42eb81394ad04f1f219e 100644 (file)
@@ -17,6 +17,7 @@ from . import builders
 from . import builds
 from . import distributions
 from . import errors
+from . import events
 from . import jobs
 from . import keys
 from . import mirrors
@@ -55,6 +56,11 @@ class Application(tornado.web.Application):
                                "BuildOffset"        : ui_modules.BuildOffsetModule,
                                "BuildTable"         : ui_modules.BuildTableModule,
 
+                               # Events
+                               "EventsList"         : events.ListModule,
+                               "EventSystemMessage" : events.SystemMessageModule,
+                               "EventUserMessage"   : events.UserMessageModule,
+
                                # Jobs
                                "JobsList"           : ui_modules.JobsListModule,
                                "JobsStatus"         : ui_modules.JobsStatusModule,
diff --git a/src/web/events.py b/src/web/events.py
new file mode 100644 (file)
index 0000000..79e1318
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/python3
+###############################################################################
+#                                                                             #
+# Pakfire - The IPFire package management system                              #
+# Copyright (C) 2022 Pakfire development team                                 #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+import tornado.web
+
+from . import ui_modules
+
+class ListModule(ui_modules.UIModule):
+       def render(self, events):
+               return self.render_string("events/modules/list.html", events=events)
+
+
+class UserMessageModule(ui_modules.UIModule):
+       def render(self, event):
+               return self.render_string("events/modules/user-message.html", event=event)
+
+
+class SystemMessageModule(ui_modules.UIModule):
+       def render(self, event):
+               return self.render_string("events/modules/system-message.html", event=event)