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 \
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 = \
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
{% if build.jobs %}
{% module JobsList(build.jobs, show_arch_only=True, show_packages=True) %}
{% end %}
+
+ {% module EventsList(build.events) %}
{% end block %}
--- /dev/null
+{% for event in events %}
+ {% if event.by_user %}
+ {% module EventUserMessage(event) %}
+ {% else %}
+ {% module EventSystemMessage(event) %}
+ {% end %}
+{% end %}
--- /dev/null
+<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>
--- /dev/null
+{% 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) }}
+
+ ‐
+
+ <a href="/users/{{ event.by_user.name }}">
+ {{ _("by %s") % event.by_user }}
+ </a>
+{% end block %}
from . import builds
from . import distributions
from . import errors
+from . import events
from . import jobs
from . import keys
from . import mirrors
"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,
--- /dev/null
+#!/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)